{
  "contractName": "Repo",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CREATE_VERSION_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "versionId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "semanticVersion",
          "type": "uint16[3]"
        }
      ],
      "name": "NewVersion",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newSemanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "_contractAddress",
          "type": "address"
        },
        {
          "name": "_contentURI",
          "type": "bytes"
        }
      ],
      "name": "newVersion",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLatest",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_contractAddress",
          "type": "address"
        }
      ],
      "name": "getLatestForContractAddress",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_semanticVersion",
          "type": "uint16[3]"
        }
      ],
      "name": "getBySemanticVersion",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_versionId",
          "type": "uint256"
        }
      ],
      "name": "getByVersionId",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getVersionsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_oldVersion",
          "type": "uint16[3]"
        },
        {
          "name": "_newVersion",
          "type": "uint16[3]"
        }
      ],
      "name": "isValidBump",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"hasInitialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_script\",\"type\":\"bytes\"}],\"name\":\"getEVMScriptExecutor\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRecoveryVault\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_semanticVersion\",\"type\":\"uint16[3]\"}],\"name\":\"getBySemanticVersion\",\"outputs\":[{\"name\":\"semanticVersion\",\"type\":\"uint16[3]\"},{\"name\":\"contractAddress\",\"type\":\"address\"},{\"name\":\"contentURI\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newSemanticVersion\",\"type\":\"uint16[3]\"},{\"name\":\"_contractAddress\",\"type\":\"address\"},{\"name\":\"_contentURI\",\"type\":\"bytes\"}],\"name\":\"newVersion\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_versionId\",\"type\":\"uint256\"}],\"name\":\"getByVersionId\",\"outputs\":[{\"name\":\"semanticVersion\",\"type\":\"uint16[3]\"},{\"name\":\"contractAddress\",\"type\":\"address\"},{\"name\":\"contentURI\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowRecoverability\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"appId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitializationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"getLatestForContractAddress\",\"outputs\":[{\"name\":\"semanticVersion\",\"type\":\"uint16[3]\"},{\"name\":\"contractAddress\",\"type\":\"address\"},{\"name\":\"contentURI\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"transferToVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_sender\",\"type\":\"address\"},{\"name\":\"_role\",\"type\":\"bytes32\"},{\"name\":\"_params\",\"type\":\"uint256[]\"}],\"name\":\"canPerform\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEVMScriptRegistry\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_oldVersion\",\"type\":\"uint16[3]\"},{\"name\":\"_newVersion\",\"type\":\"uint16[3]\"}],\"name\":\"isValidBump\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CREATE_VERSION_ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLatest\",\"outputs\":[{\"name\":\"semanticVersion\",\"type\":\"uint16[3]\"},{\"name\":\"contractAddress\",\"type\":\"address\"},{\"name\":\"contentURI\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionsCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kernel\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPetrified\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"versionId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"semanticVersion\",\"type\":\"uint16[3]\"}],\"name\":\"NewVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"script\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"input\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"ScriptResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RecoverToVault\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowRecoverability(address)\":{\"details\":\"By default deriving from AragonApp makes it recoverable\",\"params\":{\"token\":\"Token address that would be recovered\"},\"return\":\"bool whether the app allows the recovery\"},\"canPerform(address,bytes32,uint256[])\":{\"details\":\"Check whether an action can be performed by a sender for a particular role on this app\",\"params\":{\"_params\":\"Permission params for the role\",\"_role\":\"Role on this app\",\"_sender\":\"Sender of the call\"},\"return\":\"Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet.\"},\"getInitializationBlock()\":{\"return\":\"Block number in which the contract was initialized\"},\"getRecoveryVault()\":{\"details\":\"Get the recovery vault for the app\",\"return\":\"Recovery vault address for the app\"},\"hasInitialized()\":{\"return\":\"Whether the contract has been initialized by the time of the current block\"},\"initialize()\":{\"details\":\"Initialize can only be called once. It saves the block number in which it was initialized.\"},\"newVersion(uint16[3],address,bytes)\":{\"params\":{\"_contentURI\":\"External URI for fetching new version's content\",\"_contractAddress\":\"address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)\",\"_newSemanticVersion\":\"Semantic version for new repo version\"}},\"transferToVault(address)\":{\"params\":{\"_token\":\"Token balance to be sent to recovery vault.\"}}}},\"userdoc\":{\"methods\":{\"initialize()\":{\"notice\":\"Initialize this Repo\"},\"newVersion(uint16[3],address,bytes)\":{\"notice\":\"Create new version with contract `_contractAddress` and content `@fromHex(_contentURI)`\"},\"transferToVault(address)\":{\"notice\":\"Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them.\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/apm/Repo.sol\":\"Repo\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/acl/ACLSyntaxSugar.sol\":{\"keccak256\":\"0x519915c14576b679b5ed5767d6b21b44a13aa7ae2fe7b33664ca364fafc33e00\",\"urls\":[\"bzzr://8d899afdbf161eaa5e6ce6a68d9ea420c3f98a00a71d70b293e8de8771e6aa62\"]},\"@aragon/os/contracts/acl/IACL.sol\":{\"keccak256\":\"0xe3492bc29d2482e65d2e39c96487b5388f6181f6bcdc6fe6329b8206b84c0cf1\",\"urls\":[\"bzzr://3af0b7e423c7ff4100a3b5868203ec169c866328f2d93d3b6a2111e916cdc411\"]},\"@aragon/os/contracts/apm/Repo.sol\":{\"keccak256\":\"0x4df44671f92e5410aa0fca7f515b562784a8da63e21e8872fdf275835d5c2dd1\",\"urls\":[\"bzzr://31ea9c115b16797b6f3c4c2620da057912eafe14e7382bfb5520c9451b863490\"]},\"@aragon/os/contracts/apps/AppStorage.sol\":{\"keccak256\":\"0xb1c8eb71d1bdfe1241cc1714b280b46bbfc5bcb1e8499d42c24d3f5f5e8130f1\",\"urls\":[\"bzzr://503beec9e0e19834cb685a1d037eb9caaa412e3709d90bf6e53f51d143d58029\"]},\"@aragon/os/contracts/apps/AragonApp.sol\":{\"keccak256\":\"0xba456000d65bea8d9d82e9f1789086c3777df68fe364f8f397973b6d579f3a2a\",\"urls\":[\"bzzr://85ae9658277830a9454e34e319f8fbcb27d4e015d3bb1219c4d42ec33b9a184e\"]},\"@aragon/os/contracts/common/Autopetrified.sol\":{\"keccak256\":\"0x216e6ecbdcf45d90e8846ab2773072bd82180558a7dcf0c5425ed13b0188c5f3\",\"urls\":[\"bzzr://95b7ec6b2e8d3d8cd8c02f9be8b17d715c48a35445ba194429cca5264bfd0435\"]},\"@aragon/os/contracts/common/ConversionHelpers.sol\":{\"keccak256\":\"0x9872383d458352f5c68fa5afd1fc84ab6b172cbee33359cfa57655b8eda92416\",\"urls\":[\"bzzr://4636d13fecb497561ff5a2c54bb936a0339308bffa4e71a988b8ce00dcc249f3\"]},\"@aragon/os/contracts/common/EtherTokenConstant.sol\":{\"keccak256\":\"0xb18d16ad5127519251d9759349bf0ce1e5cfc861a776c5297b91a625c84d0363\",\"urls\":[\"bzzr://42b57d455cdbf7a8ab1383eb977c55d1826870a488cfc0cbc906a3d0f9ad2328\"]},\"@aragon/os/contracts/common/IVaultRecoverable.sol\":{\"keccak256\":\"0xd7cb66ee5d01be69a6abab04583cc86755bf63c2f1fd03b519a876162f52b323\",\"urls\":[\"bzzr://acb75e2637639bbc83b95032a822a54a588889f203b188e97cd78292cc0ee7f5\"]},\"@aragon/os/contracts/common/Initializable.sol\":{\"keccak256\":\"0xc559fdbee1c0ee18b6f2f866c28ed6eb96859b2c88f75867ca11f25ebd00b090\",\"urls\":[\"bzzr://3d3bca8b35030fc12f94bb52a162be9520868b27ff2cb32f09179d67b6ffdf93\"]},\"@aragon/os/contracts/common/IsContract.sol\":{\"keccak256\":\"0xb76e263e3532883fe32dfe4b1447eb487a570e121c5cce01cee604dd9e44a075\",\"urls\":[\"bzzr://4a7dd7aafff496a2c6403a7e9f4e74562088b5a38e2f6e2670e38dab11b9cd8f\"]},\"@aragon/os/contracts/common/Petrifiable.sol\":{\"keccak256\":\"0xb69f9d6de8ff6f2a084aca2e0228c9008a8776482a70bcab16f46a693ec77be6\",\"urls\":[\"bzzr://ca1d7bb504b8d9d75c162f5edc8588ac86934b69f765f2010d603027dc534375\"]},\"@aragon/os/contracts/common/ReentrancyGuard.sol\":{\"keccak256\":\"0x2b2014de57620aedded6365e742e17b9a23492d754e48dfeefa56f7e5bcf5645\",\"urls\":[\"bzzr://1aa2b79808ccb14b6c2d68f9283bd40300877c749b44edf0f66d78f0c1d17708\"]},\"@aragon/os/contracts/common/SafeERC20.sol\":{\"keccak256\":\"0xd251a1207e1faa4c41500bf927310bb739b1fbc0bf880f236f8e0a9236d6a03a\",\"urls\":[\"bzzr://b2d0f5981950b4e90eaee65c85050ac4f86a79f579f4ef38e6b281c0de980b2b\"]},\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]},\"@aragon/os/contracts/common/UnstructuredStorage.sol\":{\"keccak256\":\"0xe0d627fc7a7716409389f34cfe49366ba7871309d3a73262ec9608ef73e47591\",\"urls\":[\"bzzr://9742204494402cdecc66b266f0e420fcfe2677ba710db7651c40f96a63940bef\"]},\"@aragon/os/contracts/common/VaultRecoverable.sol\":{\"keccak256\":\"0x4f4de2c27ea7df731ad7d9babc37965a805282fed16b422f46a35d9d2ef931a1\",\"urls\":[\"bzzr://02d492884e6b1cf7c0869974219c40453d23cf2021cc1deaa6895e0f1b4404b9\"]},\"@aragon/os/contracts/evmscript/EVMScriptRunner.sol\":{\"keccak256\":\"0xcb6b5f7d2610321882cdc86819f1a51341c33b510fff7c60936ac7d7a015d7be\",\"urls\":[\"bzzr://bc430c1487d75909dc059de848123822c257ea9e7c812a7252c10986be253e21\"]},\"@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol\":{\"keccak256\":\"0x9cab64cd2f10148d4e20433ecd11679e69be1fbde112892c48db94f92e48c571\",\"urls\":[\"bzzr://b4bf9f4fc41e6e7791a84d0847410677fc0066ed393872186d90f819f5f22cc0\"]},\"@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol\":{\"keccak256\":\"0x00d98507ec160cb7cc814cc9bdebd01a414353636d6045720fe6d1592277694b\",\"urls\":[\"bzzr://170505211d1846fe24b89cfceea7f5b59a587527f68f89e8f36fed8e08b02db4\"]},\"@aragon/os/contracts/kernel/IKernel.sol\":{\"keccak256\":\"0xd02b98282ccd271b0caa86f2c249986f1619dcf41811f5dadce520b32610b68e\",\"urls\":[\"bzzr://e77000fc50cf4cfb160518af1cfb612e6cbbc06cb4357b1e03ff492fd17d8d2e\"]},\"@aragon/os/contracts/kernel/KernelConstants.sol\":{\"keccak256\":\"0x95e46be2becfb4c8952880909cd32adf5dcfa8c2e0fdf4ae054bbf83ef7f53cd\",\"urls\":[\"bzzr://68d3ce6cda841600d1e5724c0752314a084e4eeebc1fdcb6bc22c92d77c9a3db\"]},\"@aragon/os/contracts/lib/token/ERC20.sol\":{\"keccak256\":\"0xa2e319fde92f9e70912f09bf6e99bbf8b9b798961d54ffcba59d347d37bde1b7\",\"urls\":[\"bzzr://8c9a4aec8e185884f26ffb125975bd52c2363359b9adff481649c59cfe15660f\"]}},\"version\":1}",
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062001fba833981519152640100000000620018436200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062001fba8339815191528264010000000062001b3f6200023782021704565b50565b5490565b9055565b611d6f806200024b6000396000f3006080604052600436106101115763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101165780632914b9bd1461013f57806332f0a3b5146101c15780634c3ba268146101d657806373053410146102ed578063737e7d4f1461038a5780637e7db6e1146103a257806380afdea8146103d05780638129fc1c146103f75780638b3dd7491461040c5780639a6fe50c146104215780639d4941d81461044f578063a1658fad1461047d578063a479e508146104f1578063a7bdf16e14610506578063aa61924a1461056f578063c36af46014610584578063c6d48e0d14610599578063d4aae0c4146105ae578063de4796ed146105c3575b600080fd5b34801561012257600080fd5b5061012b6105d8565b604080519115158252519081900360200190f35b34801561014b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101989436949293602493928401919081908401838280828437509497506106029650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101cd57600080fd5b5061019861070e565b3480156101e257600080fd5b506040805160608181019092526102199136916004916064919083906003908390839080828437509396506107ad95505050505050565b6040518084606080838360005b8381101561023e578181015183820152602001610226565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102b0578181015183820152602001610298565b50505050905090810190601f1680156102dd5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3480156102f957600080fd5b50604080516060818101909252610388913691600491606491908390600390839083908082843750506040805160208781013589018035601f81018390048302840183018552808452979a893573ffffffffffffffffffffffffffffffffffffffff169a9099909894019650919450908101925081908401838280828437509497506107ec9650505050505050565b005b34801561039657600080fd5b50610219600435610cbf565b3480156103ae57600080fd5b5061012b73ffffffffffffffffffffffffffffffffffffffff60043516610ec0565b3480156103dc57600080fd5b506103e5610ec6565b60408051918252519081900360200190f35b34801561040357600080fd5b50610388610ef6565b34801561041857600080fd5b506103e5610faa565b34801561042d57600080fd5b5061021973ffffffffffffffffffffffffffffffffffffffff60043516610fd5565b34801561045b57600080fd5b5061038873ffffffffffffffffffffffffffffffffffffffff6004351661100f565b34801561048957600080fd5b50604080516020600460443581810135838102808601850190965280855261012b95833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506113319650505050505050565b3480156104fd57600080fd5b506101986114c1565b34801561051257600080fd5b5060408051606081810190925261012b913691600491606491908390600390839083908082843750506040805160608181019092529497969581810195945092506003915083908390808284375093965061158395505050505050565b34801561057b57600080fd5b506103e5611672565b34801561059057600080fd5b50610219611696565b3480156105a557600080fd5b506103e56116bb565b3480156105ba57600080fd5b506101986116e3565b3480156105cf57600080fd5b5061012b61170e565b6000806105e3610faa565b905080158015906105fb5750806105f861173f565b10155b91505b5090565b600061060c6114c1565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610690578181015183820152602001610678565b50505050905090810190601f1680156106bd5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b505050506040513d602081101561070657600080fd5b505192915050565b60006107186116e3565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b505190505b90565b6107b5611bc2565b600060606107df600260006107c987611743565b8152602081019190915260400160002054610cbf565b9250925092509193909250565b6000806107f7611bc2565b6040805160008082526020820190925281907f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8906108389033908390611331565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108d65781810151838201526020016108be565b50505050905090810190601f1680156109035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5087955060016000540394506000851115610a9a57600085815260016020526040808220815160608101928390529095509185916003918390855b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161094c579050509397505050505073ffffffffffffffffffffffffffffffffffffffff861615156109c757600183015473ffffffffffffffffffffffffffffffffffffffff1695505b600183015473ffffffffffffffffffffffffffffffffffffffff878116911614806109fb57508254895161ffff9182169116115b60408051808201909152601481527f5245504f5f494e56414c49445f56455253494f4e0000000000000000000000006020820152901515610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b505b610aa4848a611583565b60408051808201909152601181527f5245504f5f494e56414c49445f42554d500000000000000000000000000000006020820152901515610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b506000805460018082018355604080516060810182528d815273ffffffffffffffffffffffffffffffffffffffff8b166020808301919091528183018d905284865292909252909220825191945090610b9d9082906003611be1565b506020828101516001830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408301518051610c019260028501920190611c73565b509050508160026000610c138c611743565b8152602080820192909252604090810160009081209390935573ffffffffffffffffffffffffffffffffffffffff8916835260038252808320859055518481527e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd9285928d92919082019083906060908190849084905b83811015610ca1578181015183820152602001610c89565b505050509050019250505060405180910390a1505050505050505050565b610cc7611bc2565b6000606060008085118015610cdd575060005485105b60408051808201909152601781527f5245504f5f494e4558495354454e545f56455253494f4e0000000000000000006020820152901515610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b5050600084815260016020819052604080832091820154815160608101928390529293849373ffffffffffffffffffffffffffffffffffffffff9092169260028501929185916003918390855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610dc7575050855460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152969950879550935085019150839050828015610eab5780601f10610e8057610100808354040283529160200191610eab565b820191906000526020600020905b815481529060010190602001808311610e8e57829003601f168201915b50505050509050935093509350509193909250565b50600190565b6000610ef17fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b611843565b905090565b610efe610faa565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b50610fa3611847565b6001600055565b6000610ef17febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e611843565b610fdd611bc2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120546060906107df90610cbf565b600080600061101d84610ec0565b60408051808201909152601281527f5245434f5645525f444953414c4c4f574544000000000000000000000000000060208201529015156110ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b506110c361070e565b92506110ce8361192a565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e5452414354000000000000602082015290151561116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b5073ffffffffffffffffffffffffffffffffffffffff841615156111d6576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156111d0573d6000803e3d6000fd5b506112c6565b50826111fe73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61196416565b915061122773ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff611a9d16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156112c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061133c6105d8565b151561134b57600091506114b9565b6113536116e3565b905073ffffffffffffffffffffffffffffffffffffffff8116151561137b57600091506114b9565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef91068630876113a388611b35565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561143b578181015183820152602001611423565b50505050905090810190601f1680156114685780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b505191505b509392505050565b6000806114cc6116e3565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156106dc57600080fd5b600080805b60038110156116665781156115bf578381600381106115a357fe5b602002015161ffff16156115ba576000925061166a565b61165e565b8481600381106115cb57fe5b602002015161ffff168482600381106115e057fe5b602002015161ffff161461165e578381600381106115fa57fe5b602002015161ffff1685826003811061160f57fe5b602002015161ffff16118061164b575084816003811061162b57fe5b602002015184826003811061163c57fe5b60200201510361ffff16600114155b15611659576000925061166a565b600191505b600101611588565b8192505b505092915050565b7f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d881565b61169e611bc2565b600060606116b0600160005403610cbf565b925092509250909192565b6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000610ef17f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b611843565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611739610faa565b14905090565b4390565b805160208083015160408085015181517e0100000000000000000000000000000000000000000000000000000000000061ffff9687168102828701529386168402602282015294169091026024840152805160068185030181526026909301908190528251600093928291908401908083835b602083106117f357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016117b6565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052604051920182900390912095945050505050565b5490565b61184f610faa565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156118eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b506119246118f761173f565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff611b3f16565b565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515611953576000915061195e565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806119f18684611b43565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052600090611b2c8582611b74565b95945050505050565b8051602002815290565b9055565b6000806000806040516020818751602089018a5afa92506000831115611b6857805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115611bb8573d8015611ba55760208114611bae57611bb6565b60019350611bb6565b600183511493505b505b5090949350505050565b6060604051908101604052806003906020820280388339509192915050565b600183019183908215611c675791602002820160005b83821115611c3757835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302611bf7565b8015611c655782816101000a81549061ffff0219169055600201602081600101049283019260010302611c37565b505b506105fe929150611ced565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cb457805160ff1916838001178555611ce1565b82800160010185558215611ce1579182015b82811115611ce1578251825591602001919060010190611cc6565b506105fe929150611d29565b6107aa91905b808211156105fe5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168155600101611cf3565b6107aa91905b808211156105fe5760008155600101611d2f5600a165627a7a723058204b0f88bbfb7dea17df7a192f64cbee210f4561f74a520368d8c1cbcb554c40d20029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106101115763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146101165780632914b9bd1461013f57806332f0a3b5146101c15780634c3ba268146101d657806373053410146102ed578063737e7d4f1461038a5780637e7db6e1146103a257806380afdea8146103d05780638129fc1c146103f75780638b3dd7491461040c5780639a6fe50c146104215780639d4941d81461044f578063a1658fad1461047d578063a479e508146104f1578063a7bdf16e14610506578063aa61924a1461056f578063c36af46014610584578063c6d48e0d14610599578063d4aae0c4146105ae578063de4796ed146105c3575b600080fd5b34801561012257600080fd5b5061012b6105d8565b604080519115158252519081900360200190f35b34801561014b57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101989436949293602493928401919081908401838280828437509497506106029650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101cd57600080fd5b5061019861070e565b3480156101e257600080fd5b506040805160608181019092526102199136916004916064919083906003908390839080828437509396506107ad95505050505050565b6040518084606080838360005b8381101561023e578181015183820152602001610226565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102b0578181015183820152602001610298565b50505050905090810190601f1680156102dd5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3480156102f957600080fd5b50604080516060818101909252610388913691600491606491908390600390839083908082843750506040805160208781013589018035601f81018390048302840183018552808452979a893573ffffffffffffffffffffffffffffffffffffffff169a9099909894019650919450908101925081908401838280828437509497506107ec9650505050505050565b005b34801561039657600080fd5b50610219600435610cbf565b3480156103ae57600080fd5b5061012b73ffffffffffffffffffffffffffffffffffffffff60043516610ec0565b3480156103dc57600080fd5b506103e5610ec6565b60408051918252519081900360200190f35b34801561040357600080fd5b50610388610ef6565b34801561041857600080fd5b506103e5610faa565b34801561042d57600080fd5b5061021973ffffffffffffffffffffffffffffffffffffffff60043516610fd5565b34801561045b57600080fd5b5061038873ffffffffffffffffffffffffffffffffffffffff6004351661100f565b34801561048957600080fd5b50604080516020600460443581810135838102808601850190965280855261012b95833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506113319650505050505050565b3480156104fd57600080fd5b506101986114c1565b34801561051257600080fd5b5060408051606081810190925261012b913691600491606491908390600390839083908082843750506040805160608181019092529497969581810195945092506003915083908390808284375093965061158395505050505050565b34801561057b57600080fd5b506103e5611672565b34801561059057600080fd5b50610219611696565b3480156105a557600080fd5b506103e56116bb565b3480156105ba57600080fd5b506101986116e3565b3480156105cf57600080fd5b5061012b61170e565b6000806105e3610faa565b905080158015906105fb5750806105f861173f565b10155b91505b5090565b600061060c6114c1565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610690578181015183820152602001610678565b50505050905090810190601f1680156106bd5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b505050506040513d602081101561070657600080fd5b505192915050565b60006107186116e3565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b505190505b90565b6107b5611bc2565b600060606107df600260006107c987611743565b8152602081019190915260400160002054610cbf565b9250925092509193909250565b6000806107f7611bc2565b6040805160008082526020820190925281907f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8906108389033908390611331565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108d65781810151838201526020016108be565b50505050905090810190601f1680156109035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5087955060016000540394506000851115610a9a57600085815260016020526040808220815160608101928390529095509185916003918390855b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161094c579050509397505050505073ffffffffffffffffffffffffffffffffffffffff861615156109c757600183015473ffffffffffffffffffffffffffffffffffffffff1695505b600183015473ffffffffffffffffffffffffffffffffffffffff878116911614806109fb57508254895161ffff9182169116115b60408051808201909152601481527f5245504f5f494e56414c49445f56455253494f4e0000000000000000000000006020820152901515610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b505b610aa4848a611583565b60408051808201909152601181527f5245504f5f494e56414c49445f42554d500000000000000000000000000000006020820152901515610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b506000805460018082018355604080516060810182528d815273ffffffffffffffffffffffffffffffffffffffff8b166020808301919091528183018d905284865292909252909220825191945090610b9d9082906003611be1565b506020828101516001830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408301518051610c019260028501920190611c73565b509050508160026000610c138c611743565b8152602080820192909252604090810160009081209390935573ffffffffffffffffffffffffffffffffffffffff8916835260038252808320859055518481527e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd9285928d92919082019083906060908190849084905b83811015610ca1578181015183820152602001610c89565b505050509050019250505060405180910390a1505050505050505050565b610cc7611bc2565b6000606060008085118015610cdd575060005485105b60408051808201909152601781527f5245504f5f494e4558495354454e545f56455253494f4e0000000000000000006020820152901515610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b5050600084815260016020819052604080832091820154815160608101928390529293849373ffffffffffffffffffffffffffffffffffffffff9092169260028501929185916003918390855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610dc7575050855460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152969950879550935085019150839050828015610eab5780601f10610e8057610100808354040283529160200191610eab565b820191906000526020600020905b815481529060010190602001808311610e8e57829003601f168201915b50505050509050935093509350509193909250565b50600190565b6000610ef17fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b611843565b905090565b610efe610faa565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b50610fa3611847565b6001600055565b6000610ef17febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e611843565b610fdd611bc2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120546060906107df90610cbf565b600080600061101d84610ec0565b60408051808201909152601281527f5245434f5645525f444953414c4c4f574544000000000000000000000000000060208201529015156110ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b506110c361070e565b92506110ce8361192a565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e5452414354000000000000602082015290151561116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b5073ffffffffffffffffffffffffffffffffffffffff841615156111d6576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156111d0573d6000803e3d6000fd5b506112c6565b50826111fe73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61196416565b915061122773ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff611a9d16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156112c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061133c6105d8565b151561134b57600091506114b9565b6113536116e3565b905073ffffffffffffffffffffffffffffffffffffffff8116151561137b57600091506114b9565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef91068630876113a388611b35565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561143b578181015183820152602001611423565b50505050905090810190601f1680156114685780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b505191505b509392505050565b6000806114cc6116e3565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156106dc57600080fd5b600080805b60038110156116665781156115bf578381600381106115a357fe5b602002015161ffff16156115ba576000925061166a565b61165e565b8481600381106115cb57fe5b602002015161ffff168482600381106115e057fe5b602002015161ffff161461165e578381600381106115fa57fe5b602002015161ffff1685826003811061160f57fe5b602002015161ffff16118061164b575084816003811061162b57fe5b602002015184826003811061163c57fe5b60200201510361ffff16600114155b15611659576000925061166a565b600191505b600101611588565b8192505b505092915050565b7f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d881565b61169e611bc2565b600060606116b0600160005403610cbf565b925092509250909192565b6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000610ef17f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b611843565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611739610faa565b14905090565b4390565b805160208083015160408085015181517e0100000000000000000000000000000000000000000000000000000000000061ffff9687168102828701529386168402602282015294169091026024840152805160068185030181526026909301908190528251600093928291908401908083835b602083106117f357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016117b6565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052604051920182900390912095945050505050565b5490565b61184f610faa565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156118eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b506119246118f761173f565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff611b3f16565b565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515611953576000915061195e565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806119f18684611b43565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156108d65781810151838201526020016108be565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052600090611b2c8582611b74565b95945050505050565b8051602002815290565b9055565b6000806000806040516020818751602089018a5afa92506000831115611b6857805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115611bb8573d8015611ba55760208114611bae57611bb6565b60019350611bb6565b600183511493505b505b5090949350505050565b6060604051908101604052806003906020820280388339509192915050565b600183019183908215611c675791602002820160005b83821115611c3757835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302611bf7565b8015611c655782816101000a81549061ffff0219169055600201602081600101049283019260010302611c37565b505b506105fe929150611ced565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cb457805160ff1916838001178555611ce1565b82800160010185558215611ce1579182015b82811115611ce1578251825591602001919060010190611cc6565b506105fe929150611d29565b6107aa91905b808211156105fe5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168155600101611cf3565b6107aa91905b808211156105fe5760008155600101611d2f5600a165627a7a723058204b0f88bbfb7dea17df7a192f64cbee210f4561f74a520368d8c1cbcb554c40d20029",
  "sourceMap": "136:4920:16:-;;;344:9:22;:7;;;;:9;:::i;:::-;136:4920:16;;590:84:32;615:24:30;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;607:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:32;-1:-1:-1;;637:13:32;;;;:30;:::i;:::-;590:84::o;881:137:30:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:30;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;-1:-1:-1;1824:61:30;-1:-1:-1;;;;;;;;;;;1872:12:30;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:37:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;136:4920:16:-;;;;;;;",
  "deployedSourceMap": "136:4920:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:30;;;;;;;;;;;;;;;;;;;;;;795:179:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:40;;-1:-1:-1;795:179:40;;-1:-1:-1;;;;;;;795:179:40;;;;;;;;;;;;;;;;;;;;2253:229:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:21;;;;3509:276:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3509:276:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3509:276:16;;-1:-1:-1;3509:276:16;;-1:-1:-1;;;;;;3509:276:16;;;;;;;;;;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;3509:276:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3509:276:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1712:1340;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1712:1340:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1712:1340:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1712:1340:16;;-1:-1:-1;1712:1340:16;;;;-1:-1:-1;1712:1340:16;;;;;;;;;;-1:-1:-1;1712:1340:16;;-1:-1:-1;1712:1340:16;;-1:-1:-1;;;;;;;1712:1340:16;;;3791:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3791:375:16;;;;;1659:99:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:38;;;;;;;796:106:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:20;;;;;;;;;;;;;;;;;;;;1217:99:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1217:99:16;;;;881:137:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:30;;;;3237:266:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3237:266:16;;;;;;;836:623:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:38;;;;;;;1641:496:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:21;;-1:-1:-1;1641:496:21;;-1:-1:-1;;;;;;;1641:496:21;980:231:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:40;;;;4281:600:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4281:600:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4281:600:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;4281:600:16;-1:-1:-1;4281:600:16;;-1:-1:-1;4281:600:16;;;;;;;;-1:-1:-1;4281:600:16;;-1:-1:-1;4281:600:16;;-1:-1:-1;;;;;;4281:600:16;299:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;299:112:16;;;;3058:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3058:173:16;;;;4172:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4172:103:16;;;;674:116:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:20;;;;287:117:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:32;;;;1128:208:30;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:30;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;;:::o;795:179:40:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;917:49:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:40;;795:179;-1:-1:-1;;795:179:40:o;2253:229:21:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:21;;-1:-1:-1;2253:229:21;;:::o;3509:276:16:-;3612:25;;:::i;:::-;3639:23;3664:16;3703:75;3718:20;:59;3739:37;3759:16;3739:19;:37::i;:::-;3718:59;;;;;;;;;;;;;;3703:14;:75::i;:::-;3696:82;;;;;;3509:276;;;;;:::o;1712:1340::-;1885:23;1937:24;1996:35;;:::i;:::-;1020:16:21;;;2082:27:16;1020:16:21;;;;;;;;;2082:27:16;;345:66;;990:47:21;;1001:10;;345:66:16;;990:10:21;:47::i;:::-;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;982:75:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1911:16:16;1885:42;;1984:1;1964:17;;:21;1937:48;;2065:1;2046:16;:20;2042:565;;;2112:26;;;;:8;:26;;;;;;2152:48;;;;;;;;;2112:26;;-1:-1:-1;2152:48:16;2112:26;;2152:48;;2112:26;;2152:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2152:48:16;;-1:-1:-1;;;;;2219:29:16;;;;2215:113;;;2286:27;;;;;;;-1:-1:-1;2215:113:16;2438:27;;;;:46;;;;:27;;:46;;:105;;-1:-1:-1;2513:30:16;;2488:22;;2513:30;;;;2488:55;;;2438:105;2561:21;;;;;;;;;;;;;;;;;;2413:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2413:183:16;;2042:565;2625:52;2637:18;2657:19;2625:11;:52::i;:::-;2679:18;;;;;;;;;;;;;;;;;;2617:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2617:81:16;-1:-1:-1;2729:17:16;:19;;;;;;;;2780:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;2758:19;;;;;;;;;;:80;;2729:19;;-1:-1:-1;2758:19:16;:80;;:19;;:80;;:::i;:::-;-1:-1:-1;2758:80:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2913:9;2848:20;:62;2869:40;2889:19;2869;:40::i;:::-;2848:62;;;;;;;;;;;;;;;;;;:74;;;;2932:43;;;;;:26;:43;;;;;:55;;;3003:42;;;;;;2978:9;;3025:19;;3003:42;;;;;3025:19;;3003:42;;;;;;3025:19;;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;3003:42:16;;;;;;;;;;;;;;;;;1712:1340;;;;;;;;;:::o;3791:375::-;3853:25;;:::i;:::-;3880:23;3905:16;4026:23;3954:1;3941:10;:14;:48;;;;;3972:17;;3959:10;:30;3941:48;3991:24;;;;;;;;;;;;;;;;;;3933:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3933:83:16;-1:-1:-1;;4052:20:16;;;;:8;:20;;;;;;;;4115:23;;;;4082:77;;;;;;;;;4052:20;;;;4115:23;;;;;4140:18;;;;4082:77;4052:20;;4082:77;;4052:20;;4082:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4082:77:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4082:77:16;;-1:-1:-1;4082:77:16;-1:-1:-1;4082:77:16;;;-1:-1:-1;4082:77:16;;-1:-1:-1;4082:77:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:375;;;;;;:::o;1659:99:38:-;-1:-1:-1;1747:4:38;;1659:99::o;796:106:20:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;1217:99:16:-;615:24:30;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;1265:13:16;:11;:13::i;:::-;1308:1;1288:17;:21;1217:99::o;881:137:30:-;936:7;962:49;345:66;962:47;:49::i;3237:266:16:-;3345:25;;:::i;:::-;3451:44;;;3372:23;3451:44;;;:26;:44;;;;;;3397:16;;3436:60;;:14;:60::i;836:623:38:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:38;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:38;-1:-1:-1;1096:13:38;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:38;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:38;1092:307;;;-1:-1:-1;1244:6:38;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:38;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:38;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;1641:496:21:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:21;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-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;1955:175:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:21;;-1:-1:-1;1641:496:21;;;;;;;:::o;980:231:40:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:51;1086:69:40;;;;330:66:42;1086:69:40;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;4281:600:16;4369:4;;;4429:420;4440:1;4436;:5;4429:420;;;4461:9;4457:365;;;4494:11;4506:1;4494:14;;;;;;;;;;;:19;;;4490:78;;4544:5;4537:12;;;;4490:78;4457:365;;;4610:11;4622:1;4610:14;;;;;;;;;;;4592:32;;:11;4604:1;4592:14;;;;;;;;;;;:32;;;4588:234;;4665:11;4677:1;4665:14;;;;;;;;;;;4648:31;;:11;4660:1;4648:14;;;;;;;;;;;:31;;;:71;;;-1:-1:-1;4700:11:16;4712:1;4700:14;;;;;;;;;;;4683:11;4695:1;4683:14;;;;;;;;;;;:31;:36;;4718:1;4683:36;;4648:71;4644:130;;;4750:5;4743:12;;;;4644:130;4803:4;4791:16;;4588:234;4835:3;;4429:420;;;4865:9;4858:16;;4281:600;;;;;;;:::o;299:112::-;345:66;299:112;:::o;3058:173::-;3100:25;;:::i;:::-;3127:23;3152:16;3187:37;3222:1;3202:17;;:21;3187:14;:37::i;:::-;3180:44;;;;;;3058:173;;;:::o;4172:103::-;4221:7;4247:17;:21;;4172:103;:::o;674:116:20:-;713:7;747:35;485:66;747:33;:35::i;287:117:32:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;347:94:35:-;422:12;347:94;:::o;4887:167:16:-;5011:10;;;5023;;;;5035;;;;;4994:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;4994:52:16;;;;;;;;4984:63;;-1:-1:-1;;4994:52:16;;;4984:63;;;;;4994:52;4984:63;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;246:30;;311:9;;295:26;;;340:21;;377:20;;;;365:33;;4984:63:16;;;;;;;;;;;;-1:-1:-1;;;;;4887:167:16:o;379:134:37:-;490:15;;480:27::o;1447:123:30:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;:::-;1447:123::o;519:134:37:-;630:15;;620:27::o;426:244:31:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:34:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:34;;;;;;;;25:18:-1;;61:17;;4708:91:34;182:15:-1;4744:25:34;179:29:-1;160:49;;4656:7:34;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:34;-1:-1:-1;4898:46:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:34;-1:-1:-1;4962:12:34;4578:403;-1:-1:-1;;;;;4578:403:34:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:34;;;;;;;;25:18:-1;;61:17;;3232:101:34;182:15:-1;3268:17:34;179:29:-1;160:49;;3184:4:34;;3350:47;3372:6;3232:101;3350:21;:47::i;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:34:o;142:539:23:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;1028:119:37:-;1117:22;;1115:26::o;2148:774:34:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:34;;2911:3;;-1:-1:-1;2148:774:34;-1:-1:-1;;;2148:774:34:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:34;;800:1342;-1:-1:-1;;;;800:1342:34:o;136:4920:16:-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;136:4920:16;;;-1:-1:-1;;136:4920:16:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;136:4920:16;;;-1:-1:-1;136:4920:16;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;136:4920:16;;;-1:-1:-1;136:4920:16;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity 0.4.24;\n\nimport \"../apps/AragonApp.sol\";\n\n\n/* solium-disable function-order */\n// Allow public initialize() to be first\ncontract Repo is AragonApp {\n    /* Hardcoded constants to save gas\n    bytes32 public constant CREATE_VERSION_ROLE = keccak256(\"CREATE_VERSION_ROLE\");\n    */\n    bytes32 public constant CREATE_VERSION_ROLE = 0x1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8;\n\n    string private constant ERROR_INVALID_BUMP = \"REPO_INVALID_BUMP\";\n    string private constant ERROR_INVALID_VERSION = \"REPO_INVALID_VERSION\";\n    string private constant ERROR_INEXISTENT_VERSION = \"REPO_INEXISTENT_VERSION\";\n\n    struct Version {\n        uint16[3] semanticVersion;\n        address contractAddress;\n        bytes contentURI;\n    }\n\n    uint256 internal versionsNextIndex;\n    mapping (uint256 => Version) internal versions;\n    mapping (bytes32 => uint256) internal versionIdForSemantic;\n    mapping (address => uint256) internal latestVersionIdForContract;\n\n    event NewVersion(uint256 versionId, uint16[3] semanticVersion);\n\n    /**\n    * @dev Initialize can only be called once. It saves the block number in which it was initialized.\n    * @notice Initialize this Repo\n    */\n    function initialize() public onlyInit {\n        initialized();\n        versionsNextIndex = 1;\n    }\n\n    /**\n    * @notice Create new version with contract `_contractAddress` and content `@fromHex(_contentURI)`\n    * @param _newSemanticVersion Semantic version for new repo version\n    * @param _contractAddress address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)\n    * @param _contentURI External URI for fetching new version's content\n    */\n    function newVersion(\n        uint16[3] _newSemanticVersion,\n        address _contractAddress,\n        bytes _contentURI\n    ) public auth(CREATE_VERSION_ROLE)\n    {\n        address contractAddress = _contractAddress;\n        uint256 lastVersionIndex = versionsNextIndex - 1;\n\n        uint16[3] memory lastSematicVersion;\n\n        if (lastVersionIndex > 0) {\n            Version storage lastVersion = versions[lastVersionIndex];\n            lastSematicVersion = lastVersion.semanticVersion;\n\n            if (contractAddress == address(0)) {\n                contractAddress = lastVersion.contractAddress;\n            }\n            // Only allows smart contract change on major version bumps\n            require(\n                lastVersion.contractAddress == contractAddress || _newSemanticVersion[0] > lastVersion.semanticVersion[0],\n                ERROR_INVALID_VERSION\n            );\n        }\n\n        require(isValidBump(lastSematicVersion, _newSemanticVersion), ERROR_INVALID_BUMP);\n\n        uint256 versionId = versionsNextIndex++;\n        versions[versionId] = Version(_newSemanticVersion, contractAddress, _contentURI);\n        versionIdForSemantic[semanticVersionHash(_newSemanticVersion)] = versionId;\n        latestVersionIdForContract[contractAddress] = versionId;\n\n        emit NewVersion(versionId, _newSemanticVersion);\n    }\n\n    function getLatest() public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) {\n        return getByVersionId(versionsNextIndex - 1);\n    }\n\n    function getLatestForContractAddress(address _contractAddress)\n        public\n        view\n        returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI)\n    {\n        return getByVersionId(latestVersionIdForContract[_contractAddress]);\n    }\n\n    function getBySemanticVersion(uint16[3] _semanticVersion)\n        public\n        view\n        returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI)\n    {\n        return getByVersionId(versionIdForSemantic[semanticVersionHash(_semanticVersion)]);\n    }\n\n    function getByVersionId(uint _versionId) public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) {\n        require(_versionId > 0 && _versionId < versionsNextIndex, ERROR_INEXISTENT_VERSION);\n        Version storage version = versions[_versionId];\n        return (version.semanticVersion, version.contractAddress, version.contentURI);\n    }\n\n    function getVersionsCount() public view returns (uint256) {\n        return versionsNextIndex - 1;\n    }\n\n    function isValidBump(uint16[3] _oldVersion, uint16[3] _newVersion) public pure returns (bool) {\n        bool hasBumped;\n        uint i = 0;\n        while (i < 3) {\n            if (hasBumped) {\n                if (_newVersion[i] != 0) {\n                    return false;\n                }\n            } else if (_newVersion[i] != _oldVersion[i]) {\n                if (_oldVersion[i] > _newVersion[i] || _newVersion[i] - _oldVersion[i] != 1) {\n                    return false;\n                }\n                hasBumped = true;\n            }\n            i++;\n        }\n        return hasBumped;\n    }\n\n    function semanticVersionHash(uint16[3] version) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(version[0], version[1], version[2]));\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/apm/Repo.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
    "exportedSymbols": {
      "Repo": [
        5740
      ]
    },
    "id": 5741,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5349,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:16"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 5350,
        "nodeType": "ImportDirective",
        "scope": 5741,
        "sourceUnit": 6121,
        "src": "25:31:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5351,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6120,
              "src": "153:9:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$6120",
                "typeString": "contract AragonApp"
              }
            },
            "id": 5352,
            "nodeType": "InheritanceSpecifier",
            "src": "153:9:16"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6120,
          6133,
          6293,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5740,
        "linearizedBaseContracts": [
          5740,
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996
        ],
        "name": "Repo",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 5355,
            "name": "CREATE_VERSION_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "299:112:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 5353,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "299:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831663536636665636433353935613265366363316137653663623062323064663834636462643932656666326665653535346537306534653435613961376438",
              "id": 5354,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "345:66:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_14175082199951049120475530292950009820264027334869017275878805295387074209752_by_1",
                "typeString": "int_const 1417...(69 digits omitted)...9752"
              },
              "value": "0x1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 5358,
            "name": "ERROR_INVALID_BUMP",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "418:64:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5356,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "418:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f42554d50",
              "id": 5357,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "463:19:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c0d2c819b356f0b10a55bac630c3c4d815e692fe9311b1cc8ba83e3426876fef",
                "typeString": "literal_string \"REPO_INVALID_BUMP\""
              },
              "value": "REPO_INVALID_BUMP"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 5361,
            "name": "ERROR_INVALID_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "488:70:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5359,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "488:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f56455253494f4e",
              "id": 5360,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "536:22:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4cb22c000e9208b6bc05026718966e45afadcffb33436bfbd76270772bf274ce",
                "typeString": "literal_string \"REPO_INVALID_VERSION\""
              },
              "value": "REPO_INVALID_VERSION"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 5364,
            "name": "ERROR_INEXISTENT_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "564:76:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5362,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "564:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e4558495354454e545f56455253494f4e",
              "id": 5363,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "615:25:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3852a5fcaceec25ac63b67717534646986c61c9e3305147343a4b721cbdc0f13",
                "typeString": "literal_string \"REPO_INEXISTENT_VERSION\""
              },
              "value": "REPO_INEXISTENT_VERSION"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Repo.Version",
            "id": 5373,
            "members": [
              {
                "constant": false,
                "id": 5368,
                "name": "semanticVersion",
                "nodeType": "VariableDeclaration",
                "scope": 5373,
                "src": "672:25:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                  "typeString": "uint16[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 5365,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "672:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 5367,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 5366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "679:1:16",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "672:9:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                    "typeString": "uint16[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5370,
                "name": "contractAddress",
                "nodeType": "VariableDeclaration",
                "scope": 5373,
                "src": "707:23:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5369,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "707:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5372,
                "name": "contentURI",
                "nodeType": "VariableDeclaration",
                "scope": 5373,
                "src": "740:16:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 5371,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:5:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Version",
            "nodeType": "StructDefinition",
            "scope": 5740,
            "src": "647:116:16",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5375,
            "name": "versionsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "769:34:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5374,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "769:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5379,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "809:46:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
              "typeString": "mapping(uint256 => struct Repo.Version)"
            },
            "typeName": {
              "id": 5378,
              "keyType": {
                "id": 5376,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "818:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "809:28:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                "typeString": "mapping(uint256 => struct Repo.Version)"
              },
              "valueType": {
                "contractScope": null,
                "id": 5377,
                "name": "Version",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5373,
                "src": "829:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                  "typeString": "struct Repo.Version"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5383,
            "name": "versionIdForSemantic",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "861:58:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 5382,
              "keyType": {
                "id": 5380,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "870:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "861:28:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 5381,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "881:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5387,
            "name": "latestVersionIdForContract",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "925:64:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 5386,
              "keyType": {
                "id": 5384,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "934:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "925:28:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 5385,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "945:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5395,
            "name": "NewVersion",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5389,
                  "indexed": false,
                  "name": "versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5395,
                  "src": "1013:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5388,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5393,
                  "indexed": false,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5395,
                  "src": "1032:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5390,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1032:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5392,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1039:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1032:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1012:46:16"
            },
            "src": "996:63:16"
          },
          {
            "body": {
              "id": 5407,
              "nodeType": "Block",
              "src": "1255:61:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5400,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "1265:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 5401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1265:13:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5402,
                  "nodeType": "ExpressionStatement",
                  "src": "1265:13:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5403,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "1288:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1308:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1288:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5406,
                  "nodeType": "ExpressionStatement",
                  "src": "1288:21:16"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initialize this Repo",
            "id": 5408,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 5398,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5397,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "1246:8:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1246:8:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5396,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1236:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5399,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1255:0:16"
            },
            "scope": 5740,
            "src": "1217:99:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5525,
              "nodeType": "Block",
              "src": "1875:1177:16",
              "statements": [
                {
                  "assignments": [
                    5423
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5423,
                      "name": "contractAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "1885:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5422,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1885:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5425,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 5424,
                    "name": "_contractAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5414,
                    "src": "1911:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1885:42:16"
                },
                {
                  "assignments": [
                    5427
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5427,
                      "name": "lastVersionIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "1937:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5426,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1937:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5431,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5428,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "1964:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1984:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1964:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1937:48:16"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5436,
                      "name": "lastSematicVersion",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "1996:35:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                        "typeString": "uint16[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5434,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1996:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 5435,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2003:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "1996:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                          "typeString": "uint16[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5437,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1996:35:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5438,
                      "name": "lastVersionIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5427,
                      "src": "2046:16:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2065:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2046:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5482,
                  "nodeType": "IfStatement",
                  "src": "2042:565:16",
                  "trueBody": {
                    "id": 5481,
                    "nodeType": "Block",
                    "src": "2068:539:16",
                    "statements": [
                      {
                        "assignments": [
                          5442
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5442,
                            "name": "lastVersion",
                            "nodeType": "VariableDeclaration",
                            "scope": 5526,
                            "src": "2082:27:16",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                              "typeString": "struct Repo.Version"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5441,
                              "name": "Version",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 5373,
                              "src": "2082:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                "typeString": "struct Repo.Version"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5446,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5443,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5379,
                            "src": "2112:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                              "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                            }
                          },
                          "id": 5445,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5444,
                            "name": "lastVersionIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5427,
                            "src": "2121:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2112:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage",
                            "typeString": "struct Repo.Version storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2082:56:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5447,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5436,
                            "src": "2152:18:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5448,
                              "name": "lastVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5442,
                              "src": "2173:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                "typeString": "struct Repo.Version storage pointer"
                              }
                            },
                            "id": 5449,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "semanticVersion",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5368,
                            "src": "2173:27:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_storage",
                              "typeString": "uint16[3] storage ref"
                            }
                          },
                          "src": "2152:48:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        "id": 5451,
                        "nodeType": "ExpressionStatement",
                        "src": "2152:48:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5452,
                            "name": "contractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5423,
                            "src": "2219:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2246:1:16",
                                "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": 5453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2238:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2238:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2219:29:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5463,
                        "nodeType": "IfStatement",
                        "src": "2215:113:16",
                        "trueBody": {
                          "id": 5462,
                          "nodeType": "Block",
                          "src": "2250:78:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5457,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5423,
                                  "src": "2268:15:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5458,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5442,
                                    "src": "2286:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 5459,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5370,
                                  "src": "2286:27:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2268:45:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5461,
                              "nodeType": "ExpressionStatement",
                              "src": "2268:45:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 5468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5465,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5442,
                                    "src": "2438:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 5466,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5370,
                                  "src": "2438:27:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 5467,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5423,
                                  "src": "2469:15:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2438:46:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5469,
                                    "name": "_newSemanticVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5412,
                                    "src": "2488:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 5471,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2508:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2488:22:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5472,
                                      "name": "lastVersion",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5442,
                                      "src": "2513:11:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                        "typeString": "struct Repo.Version storage pointer"
                                      }
                                    },
                                    "id": 5473,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "semanticVersion",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5368,
                                    "src": "2513:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_storage",
                                      "typeString": "uint16[3] storage ref"
                                    }
                                  },
                                  "id": 5475,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5474,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2541:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2513:30:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2488:55:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2438:105:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5478,
                              "name": "ERROR_INVALID_VERSION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5361,
                              "src": "2561:21:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 5464,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10407,
                              10408
                            ],
                            "referencedDeclaration": 10408,
                            "src": "2413:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2413:183:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5480,
                        "nodeType": "ExpressionStatement",
                        "src": "2413:183:16"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5485,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5436,
                            "src": "2637:18:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5486,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5412,
                            "src": "2657:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          ],
                          "id": 5484,
                          "name": "isValidBump",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5714,
                          "src": "2625:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint16_$3_memory_ptr_$_t_array$_t_uint16_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (uint16[3] memory,uint16[3] memory) pure returns (bool)"
                          }
                        },
                        "id": 5487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2625:52:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5488,
                        "name": "ERROR_INVALID_BUMP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5358,
                        "src": "2679:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5483,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "2617:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2617:81:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5490,
                  "nodeType": "ExpressionStatement",
                  "src": "2617:81:16"
                },
                {
                  "assignments": [
                    5492
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5492,
                      "name": "versionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "2709:17:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5491,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2709:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5495,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 5494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2729:19:16",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 5493,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "2729:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2709:39:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5496,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5379,
                        "src": "2758:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                          "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                        }
                      },
                      "id": 5498,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5497,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5492,
                        "src": "2767:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2758:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$5373_storage",
                        "typeString": "struct Repo.Version storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5500,
                          "name": "_newSemanticVersion",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5412,
                          "src": "2788:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5501,
                          "name": "contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5423,
                          "src": "2809:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5502,
                          "name": "_contentURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5416,
                          "src": "2826:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 5499,
                        "name": "Version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5373,
                        "src": "2780:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Version_$5373_storage_ptr_$",
                          "typeString": "type(struct Repo.Version storage pointer)"
                        }
                      },
                      "id": 5503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2780:58:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$5373_memory",
                        "typeString": "struct Repo.Version memory"
                      }
                    },
                    "src": "2758:80:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$5373_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "id": 5505,
                  "nodeType": "ExpressionStatement",
                  "src": "2758:80:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5506,
                        "name": "versionIdForSemantic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5383,
                        "src": "2848:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5510,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5508,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5412,
                            "src": "2889:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          ],
                          "id": 5507,
                          "name": "semanticVersionHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5739,
                          "src": "2869:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint16_$3_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (uint16[3] memory) pure returns (bytes32)"
                          }
                        },
                        "id": 5509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2869:40:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2848:62:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5511,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5492,
                      "src": "2913:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2848:74:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5513,
                  "nodeType": "ExpressionStatement",
                  "src": "2848:74:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5514,
                        "name": "latestVersionIdForContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5387,
                        "src": "2932:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5516,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5515,
                        "name": "contractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5423,
                        "src": "2959:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2932:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5517,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5492,
                      "src": "2978:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2932:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5519,
                  "nodeType": "ExpressionStatement",
                  "src": "2932:55:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5521,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5492,
                        "src": "3014:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5522,
                        "name": "_newSemanticVersion",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5412,
                        "src": "3025:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                          "typeString": "uint16[3] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                          "typeString": "uint16[3] memory"
                        }
                      ],
                      "id": 5520,
                      "name": "NewVersion",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5395,
                      "src": "3003:10:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_array$_t_uint16_$3_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint16[3] memory)"
                      }
                    },
                    "id": 5523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3003:42:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5524,
                  "nodeType": "EmitStatement",
                  "src": "2998:47:16"
                }
              ]
            },
            "documentation": "@notice Create new version with contract `_contractAddress` and content `@fromHex(_contentURI)`\n@param _newSemanticVersion Semantic version for new repo version\n@param _contractAddress address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)\n@param _contentURI External URI for fetching new version's content",
            "id": 5526,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5419,
                    "name": "CREATE_VERSION_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5355,
                    "src": "1850:19:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5420,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5418,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "1845:4:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1845:25:16"
              }
            ],
            "name": "newVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5412,
                  "name": "_newSemanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5526,
                  "src": "1741:29:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5409,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1741:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5411,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5410,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1748:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1741:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5414,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5526,
                  "src": "1780:24:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1780:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5416,
                  "name": "_contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5526,
                  "src": "1814:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5415,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1814:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1731:106:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5421,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1875:0:16"
            },
            "scope": 5740,
            "src": "1712:1340:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5543,
              "nodeType": "Block",
              "src": "3170:61:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5538,
                          "name": "versionsNextIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5375,
                          "src": "3202:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3222:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3202:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5537,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5627,
                      "src": "3187:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) view returns (uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "id": 5541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3187:37:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 5536,
                  "id": 5542,
                  "nodeType": "Return",
                  "src": "3180:44:16"
                }
              ]
            },
            "documentation": null,
            "id": 5544,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5527,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3076:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5531,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5544,
                  "src": "3100:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5528,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3100:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5530,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3107:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3100:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5533,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5544,
                  "src": "3127:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5532,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3127:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5535,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5544,
                  "src": "3152:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5534,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3152:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3099:70:16"
            },
            "scope": 5740,
            "src": "3058:173:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5563,
              "nodeType": "Block",
              "src": "3419:84:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5558,
                          "name": "latestVersionIdForContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5387,
                          "src": "3451:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 5560,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5559,
                          "name": "_contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5546,
                          "src": "3478:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3451:44:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5557,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5627,
                      "src": "3436:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) view returns (uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "id": 5561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3436:60:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 5556,
                  "id": 5562,
                  "nodeType": "Return",
                  "src": "3429:67:16"
                }
              ]
            },
            "documentation": null,
            "id": 5564,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatestForContractAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5546,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3274:24:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5545,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3274:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3273:26:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5551,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3345:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5548,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3345:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5550,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3352:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3345:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5553,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3372:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5552,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3372:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5555,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3397:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5554,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3397:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3344:70:16"
            },
            "scope": 5740,
            "src": "3237:266:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5587,
              "nodeType": "Block",
              "src": "3686:99:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5580,
                          "name": "versionIdForSemantic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5383,
                          "src": "3718:20:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                          }
                        },
                        "id": 5584,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5582,
                              "name": "_semanticVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5568,
                              "src": "3759:16:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            ],
                            "id": 5581,
                            "name": "semanticVersionHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5739,
                            "src": "3739:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint16_$3_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (uint16[3] memory) pure returns (bytes32)"
                            }
                          },
                          "id": 5583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3739:37:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3718:59:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5579,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5627,
                      "src": "3703:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) view returns (uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "id": 5585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3703:75:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 5578,
                  "id": 5586,
                  "nodeType": "Return",
                  "src": "3696:82:16"
                }
              ]
            },
            "documentation": null,
            "id": 5588,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBySemanticVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5568,
                  "name": "_semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3539:26:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5565,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3539:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5567,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5566,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3546:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3539:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3538:28:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5573,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3612:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5570,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3612:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5572,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3619:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3612:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5575,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3639:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3639:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5577,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3664:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5576,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3664:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3611:70:16"
            },
            "scope": 5740,
            "src": "3509:276:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5626,
              "nodeType": "Block",
              "src": "3923:243:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5602,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5590,
                            "src": "3941:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3954:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3941:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5605,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5590,
                            "src": "3959:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5606,
                            "name": "versionsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5375,
                            "src": "3972:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3959:30:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3941:48:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5609,
                        "name": "ERROR_INEXISTENT_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5364,
                        "src": "3991:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5601,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3933:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3933:83:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5611,
                  "nodeType": "ExpressionStatement",
                  "src": "3933:83:16"
                },
                {
                  "assignments": [
                    5613
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5613,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 5627,
                      "src": "4026:23:16",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                        "typeString": "struct Repo.Version"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5612,
                        "name": "Version",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5373,
                        "src": "4026:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                          "typeString": "struct Repo.Version"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5617,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5614,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5379,
                      "src": "4052:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                        "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                      }
                    },
                    "id": 5616,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5615,
                      "name": "_versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5590,
                      "src": "4061:10:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4052:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$5373_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4026:46:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5618,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5613,
                          "src": "4090:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 5619,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "semanticVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5368,
                        "src": "4090:23:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage",
                          "typeString": "uint16[3] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5620,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5613,
                          "src": "4115:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 5621,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5370,
                        "src": "4115:23:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5622,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5613,
                          "src": "4140:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 5623,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contentURI",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5372,
                        "src": "4140:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "id": 5624,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4089:70:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_storage_$_t_address_$_t_bytes_storage_$",
                      "typeString": "tuple(uint16[3] storage ref,address,bytes storage ref)"
                    }
                  },
                  "functionReturnParameters": 5600,
                  "id": 5625,
                  "nodeType": "Return",
                  "src": "4082:77:16"
                }
              ]
            },
            "documentation": null,
            "id": 5627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByVersionId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5590,
                  "name": "_versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3815:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5589,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3815:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3814:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5595,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3853:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5592,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3853:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5594,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5593,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3860:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3853:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5597,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3880:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3880:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5599,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3905:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5598,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3905:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3852:70:16"
            },
            "scope": 5740,
            "src": "3791:375:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5636,
              "nodeType": "Block",
              "src": "4230:45:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5632,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "4247:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4267:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "4247:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5631,
                  "id": 5635,
                  "nodeType": "Return",
                  "src": "4240:28:16"
                }
              ]
            },
            "documentation": null,
            "id": 5637,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getVersionsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5628,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4197:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5630,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5637,
                  "src": "4221:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5629,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4221:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4220:9:16"
            },
            "scope": 5740,
            "src": "4172:103:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5713,
              "nodeType": "Block",
              "src": "4375:506:16",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5651,
                      "name": "hasBumped",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "4385:14:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5650,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4385:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5652,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4385:14:16"
                },
                {
                  "assignments": [
                    5654
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5654,
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "4409:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5653,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4409:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5656,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 5655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4418:1:16",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4409:10:16"
                },
                {
                  "body": {
                    "id": 5709,
                    "nodeType": "Block",
                    "src": "4443:406:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 5660,
                          "name": "hasBumped",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5651,
                          "src": "4461:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "id": 5677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5671,
                                "name": "_newVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5645,
                                "src": "4592:11:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 5673,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5672,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "4604:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4592:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5674,
                                "name": "_oldVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5641,
                                "src": "4610:11:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 5676,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5675,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "4622:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4610:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "4592:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 5704,
                          "nodeType": "IfStatement",
                          "src": "4588:234:16",
                          "trueBody": {
                            "id": 5703,
                            "nodeType": "Block",
                            "src": "4626:196:16",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 5694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 5684,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5678,
                                        "name": "_oldVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5641,
                                        "src": "4648:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 5680,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5679,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5654,
                                        "src": "4660:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4648:14:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5681,
                                        "name": "_newVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5645,
                                        "src": "4665:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 5683,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5682,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5654,
                                        "src": "4677:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4665:14:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "src": "4648:31:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 5693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 5691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 5685,
                                          "name": "_newVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5645,
                                          "src": "4683:11:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 5687,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 5686,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5654,
                                          "src": "4695:1:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4683:14:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 5688,
                                          "name": "_oldVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5641,
                                          "src": "4700:11:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 5690,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 5689,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5654,
                                          "src": "4712:1:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4700:14:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "4683:31:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 5692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4718:1:16",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4683:36:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "4648:71:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 5698,
                                "nodeType": "IfStatement",
                                "src": "4644:130:16",
                                "trueBody": {
                                  "id": 5697,
                                  "nodeType": "Block",
                                  "src": "4721:53:16",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 5695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4750:5:16",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "functionReturnParameters": 5649,
                                      "id": 5696,
                                      "nodeType": "Return",
                                      "src": "4743:12:16"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 5699,
                                    "name": "hasBumped",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5651,
                                    "src": "4791:9:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 5700,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4803:4:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  "src": "4791:16:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 5702,
                                "nodeType": "ExpressionStatement",
                                "src": "4791:16:16"
                              }
                            ]
                          }
                        },
                        "id": 5705,
                        "nodeType": "IfStatement",
                        "src": "4457:365:16",
                        "trueBody": {
                          "id": 5670,
                          "nodeType": "Block",
                          "src": "4472:110:16",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5661,
                                    "name": "_newVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5645,
                                    "src": "4494:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 5663,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5662,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5654,
                                    "src": "4506:1:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4494:14:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 5664,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4512:1:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4494:19:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 5669,
                              "nodeType": "IfStatement",
                              "src": "4490:78:16",
                              "trueBody": {
                                "id": 5668,
                                "nodeType": "Block",
                                "src": "4515:53:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 5666,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4544:5:16",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "functionReturnParameters": 5649,
                                    "id": 5667,
                                    "nodeType": "Return",
                                    "src": "4537:12:16"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4835:3:16",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5706,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5654,
                            "src": "4835:1:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5708,
                        "nodeType": "ExpressionStatement",
                        "src": "4835:3:16"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5657,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5654,
                      "src": "4436:1:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4440:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "4436:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5710,
                  "nodeType": "WhileStatement",
                  "src": "4429:420:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5711,
                    "name": "hasBumped",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5651,
                    "src": "4865:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5649,
                  "id": 5712,
                  "nodeType": "Return",
                  "src": "4858:16:16"
                }
              ]
            },
            "documentation": null,
            "id": 5714,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isValidBump",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5641,
                  "name": "_oldVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5714,
                  "src": "4302:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5638,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4302:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5640,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4309:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4302:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5645,
                  "name": "_newVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5714,
                  "src": "4325:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5642,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4325:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5644,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5643,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4332:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4325:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4301:46:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5648,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5714,
                  "src": "4369:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5647,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4369:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4368:6:16"
            },
            "scope": 5740,
            "src": "4281:600:16",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5738,
              "nodeType": "Block",
              "src": "4967:87:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5726,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5718,
                              "src": "5011:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 5728,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5019:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5011:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5729,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5718,
                              "src": "5023:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 5731,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 5730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5031:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5023:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5732,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5718,
                              "src": "5035:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 5734,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 5733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5043:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5035:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5724,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10391,
                            "src": "4994:3:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 5725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4994:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 5735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4994:52:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 5723,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10398,
                      "src": "4984:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 5736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4984:63:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5722,
                  "id": 5737,
                  "nodeType": "Return",
                  "src": "4977:70:16"
                }
              ]
            },
            "documentation": null,
            "id": 5739,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "semanticVersionHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5718,
                  "name": "version",
                  "nodeType": "VariableDeclaration",
                  "scope": 5739,
                  "src": "4916:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5715,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4916:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5717,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5716,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4923:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4916:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4915:19:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5721,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5739,
                  "src": "4958:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5720,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4958:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4957:9:16"
            },
            "scope": 5740,
            "src": "4887:167:16",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 5741,
        "src": "136:4920:16"
      }
    ],
    "src": "0:5057:16"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
    "exportedSymbols": {
      "Repo": [
        5740
      ]
    },
    "id": 5741,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5349,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:16"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 5350,
        "nodeType": "ImportDirective",
        "scope": 5741,
        "sourceUnit": 6121,
        "src": "25:31:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5351,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6120,
              "src": "153:9:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$6120",
                "typeString": "contract AragonApp"
              }
            },
            "id": 5352,
            "nodeType": "InheritanceSpecifier",
            "src": "153:9:16"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6120,
          6133,
          6293,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5740,
        "linearizedBaseContracts": [
          5740,
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996
        ],
        "name": "Repo",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 5355,
            "name": "CREATE_VERSION_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "299:112:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 5353,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "299:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831663536636665636433353935613265366363316137653663623062323064663834636462643932656666326665653535346537306534653435613961376438",
              "id": 5354,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "345:66:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_14175082199951049120475530292950009820264027334869017275878805295387074209752_by_1",
                "typeString": "int_const 1417...(69 digits omitted)...9752"
              },
              "value": "0x1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 5358,
            "name": "ERROR_INVALID_BUMP",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "418:64:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5356,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "418:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f42554d50",
              "id": 5357,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "463:19:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c0d2c819b356f0b10a55bac630c3c4d815e692fe9311b1cc8ba83e3426876fef",
                "typeString": "literal_string \"REPO_INVALID_BUMP\""
              },
              "value": "REPO_INVALID_BUMP"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 5361,
            "name": "ERROR_INVALID_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "488:70:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5359,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "488:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f56455253494f4e",
              "id": 5360,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "536:22:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4cb22c000e9208b6bc05026718966e45afadcffb33436bfbd76270772bf274ce",
                "typeString": "literal_string \"REPO_INVALID_VERSION\""
              },
              "value": "REPO_INVALID_VERSION"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 5364,
            "name": "ERROR_INEXISTENT_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "564:76:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5362,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "564:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e4558495354454e545f56455253494f4e",
              "id": 5363,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "615:25:16",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3852a5fcaceec25ac63b67717534646986c61c9e3305147343a4b721cbdc0f13",
                "typeString": "literal_string \"REPO_INEXISTENT_VERSION\""
              },
              "value": "REPO_INEXISTENT_VERSION"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Repo.Version",
            "id": 5373,
            "members": [
              {
                "constant": false,
                "id": 5368,
                "name": "semanticVersion",
                "nodeType": "VariableDeclaration",
                "scope": 5373,
                "src": "672:25:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                  "typeString": "uint16[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 5365,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "672:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 5367,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 5366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "679:1:16",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "672:9:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                    "typeString": "uint16[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5370,
                "name": "contractAddress",
                "nodeType": "VariableDeclaration",
                "scope": 5373,
                "src": "707:23:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5369,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "707:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5372,
                "name": "contentURI",
                "nodeType": "VariableDeclaration",
                "scope": 5373,
                "src": "740:16:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 5371,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:5:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Version",
            "nodeType": "StructDefinition",
            "scope": 5740,
            "src": "647:116:16",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5375,
            "name": "versionsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "769:34:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5374,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "769:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5379,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "809:46:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
              "typeString": "mapping(uint256 => struct Repo.Version)"
            },
            "typeName": {
              "id": 5378,
              "keyType": {
                "id": 5376,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "818:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "809:28:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                "typeString": "mapping(uint256 => struct Repo.Version)"
              },
              "valueType": {
                "contractScope": null,
                "id": 5377,
                "name": "Version",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5373,
                "src": "829:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                  "typeString": "struct Repo.Version"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5383,
            "name": "versionIdForSemantic",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "861:58:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 5382,
              "keyType": {
                "id": 5380,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "870:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "861:28:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 5381,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "881:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5387,
            "name": "latestVersionIdForContract",
            "nodeType": "VariableDeclaration",
            "scope": 5740,
            "src": "925:64:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 5386,
              "keyType": {
                "id": 5384,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "934:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "925:28:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 5385,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "945:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5395,
            "name": "NewVersion",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5389,
                  "indexed": false,
                  "name": "versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5395,
                  "src": "1013:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5388,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5393,
                  "indexed": false,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5395,
                  "src": "1032:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5390,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1032:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5392,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1039:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1032:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1012:46:16"
            },
            "src": "996:63:16"
          },
          {
            "body": {
              "id": 5407,
              "nodeType": "Block",
              "src": "1255:61:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5400,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "1265:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 5401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1265:13:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5402,
                  "nodeType": "ExpressionStatement",
                  "src": "1265:13:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5403,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "1288:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1308:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1288:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5406,
                  "nodeType": "ExpressionStatement",
                  "src": "1288:21:16"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initialize this Repo",
            "id": 5408,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 5398,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5397,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "1246:8:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1246:8:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5396,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1236:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5399,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1255:0:16"
            },
            "scope": 5740,
            "src": "1217:99:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5525,
              "nodeType": "Block",
              "src": "1875:1177:16",
              "statements": [
                {
                  "assignments": [
                    5423
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5423,
                      "name": "contractAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "1885:23:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5422,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1885:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5425,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 5424,
                    "name": "_contractAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5414,
                    "src": "1911:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1885:42:16"
                },
                {
                  "assignments": [
                    5427
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5427,
                      "name": "lastVersionIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "1937:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5426,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1937:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5431,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5428,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "1964:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1984:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1964:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1937:48:16"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5436,
                      "name": "lastSematicVersion",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "1996:35:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                        "typeString": "uint16[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5434,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1996:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 5435,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2003:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "1996:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                          "typeString": "uint16[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5437,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1996:35:16"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5438,
                      "name": "lastVersionIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5427,
                      "src": "2046:16:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5439,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2065:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2046:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5482,
                  "nodeType": "IfStatement",
                  "src": "2042:565:16",
                  "trueBody": {
                    "id": 5481,
                    "nodeType": "Block",
                    "src": "2068:539:16",
                    "statements": [
                      {
                        "assignments": [
                          5442
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5442,
                            "name": "lastVersion",
                            "nodeType": "VariableDeclaration",
                            "scope": 5526,
                            "src": "2082:27:16",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                              "typeString": "struct Repo.Version"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5441,
                              "name": "Version",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 5373,
                              "src": "2082:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                "typeString": "struct Repo.Version"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5446,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5443,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5379,
                            "src": "2112:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                              "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                            }
                          },
                          "id": 5445,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5444,
                            "name": "lastVersionIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5427,
                            "src": "2121:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2112:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage",
                            "typeString": "struct Repo.Version storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2082:56:16"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5447,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5436,
                            "src": "2152:18:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5448,
                              "name": "lastVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5442,
                              "src": "2173:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                "typeString": "struct Repo.Version storage pointer"
                              }
                            },
                            "id": 5449,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "semanticVersion",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5368,
                            "src": "2173:27:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_storage",
                              "typeString": "uint16[3] storage ref"
                            }
                          },
                          "src": "2152:48:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        "id": 5451,
                        "nodeType": "ExpressionStatement",
                        "src": "2152:48:16"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5452,
                            "name": "contractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5423,
                            "src": "2219:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5454,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2246:1:16",
                                "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": 5453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2238:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 5455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2238:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2219:29:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5463,
                        "nodeType": "IfStatement",
                        "src": "2215:113:16",
                        "trueBody": {
                          "id": 5462,
                          "nodeType": "Block",
                          "src": "2250:78:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5457,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5423,
                                  "src": "2268:15:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5458,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5442,
                                    "src": "2286:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 5459,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5370,
                                  "src": "2286:27:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2268:45:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5461,
                              "nodeType": "ExpressionStatement",
                              "src": "2268:45:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 5468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5465,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5442,
                                    "src": "2438:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 5466,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5370,
                                  "src": "2438:27:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 5467,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5423,
                                  "src": "2469:15:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2438:46:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5469,
                                    "name": "_newSemanticVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5412,
                                    "src": "2488:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 5471,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2508:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2488:22:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5472,
                                      "name": "lastVersion",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5442,
                                      "src": "2513:11:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                                        "typeString": "struct Repo.Version storage pointer"
                                      }
                                    },
                                    "id": 5473,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "semanticVersion",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5368,
                                    "src": "2513:27:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_storage",
                                      "typeString": "uint16[3] storage ref"
                                    }
                                  },
                                  "id": 5475,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5474,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2541:1:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2513:30:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2488:55:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2438:105:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5478,
                              "name": "ERROR_INVALID_VERSION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5361,
                              "src": "2561:21:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 5464,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              10407,
                              10408
                            ],
                            "referencedDeclaration": 10408,
                            "src": "2413:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2413:183:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5480,
                        "nodeType": "ExpressionStatement",
                        "src": "2413:183:16"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5485,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5436,
                            "src": "2637:18:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5486,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5412,
                            "src": "2657:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          ],
                          "id": 5484,
                          "name": "isValidBump",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5714,
                          "src": "2625:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint16_$3_memory_ptr_$_t_array$_t_uint16_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (uint16[3] memory,uint16[3] memory) pure returns (bool)"
                          }
                        },
                        "id": 5487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2625:52:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5488,
                        "name": "ERROR_INVALID_BUMP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5358,
                        "src": "2679:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5483,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "2617:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2617:81:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5490,
                  "nodeType": "ExpressionStatement",
                  "src": "2617:81:16"
                },
                {
                  "assignments": [
                    5492
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5492,
                      "name": "versionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 5526,
                      "src": "2709:17:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5491,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2709:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5495,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 5494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2729:19:16",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 5493,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "2729:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2709:39:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5496,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5379,
                        "src": "2758:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                          "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                        }
                      },
                      "id": 5498,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5497,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5492,
                        "src": "2767:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2758:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$5373_storage",
                        "typeString": "struct Repo.Version storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5500,
                          "name": "_newSemanticVersion",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5412,
                          "src": "2788:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5501,
                          "name": "contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5423,
                          "src": "2809:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5502,
                          "name": "_contentURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5416,
                          "src": "2826:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 5499,
                        "name": "Version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5373,
                        "src": "2780:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Version_$5373_storage_ptr_$",
                          "typeString": "type(struct Repo.Version storage pointer)"
                        }
                      },
                      "id": 5503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2780:58:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$5373_memory",
                        "typeString": "struct Repo.Version memory"
                      }
                    },
                    "src": "2758:80:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$5373_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "id": 5505,
                  "nodeType": "ExpressionStatement",
                  "src": "2758:80:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5506,
                        "name": "versionIdForSemantic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5383,
                        "src": "2848:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5510,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5508,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5412,
                            "src": "2889:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          ],
                          "id": 5507,
                          "name": "semanticVersionHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5739,
                          "src": "2869:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint16_$3_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (uint16[3] memory) pure returns (bytes32)"
                          }
                        },
                        "id": 5509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2869:40:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2848:62:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5511,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5492,
                      "src": "2913:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2848:74:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5513,
                  "nodeType": "ExpressionStatement",
                  "src": "2848:74:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5514,
                        "name": "latestVersionIdForContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5387,
                        "src": "2932:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 5516,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5515,
                        "name": "contractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5423,
                        "src": "2959:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2932:43:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5517,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5492,
                      "src": "2978:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2932:55:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5519,
                  "nodeType": "ExpressionStatement",
                  "src": "2932:55:16"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5521,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5492,
                        "src": "3014:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5522,
                        "name": "_newSemanticVersion",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5412,
                        "src": "3025:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                          "typeString": "uint16[3] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                          "typeString": "uint16[3] memory"
                        }
                      ],
                      "id": 5520,
                      "name": "NewVersion",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5395,
                      "src": "3003:10:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_array$_t_uint16_$3_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint16[3] memory)"
                      }
                    },
                    "id": 5523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3003:42:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5524,
                  "nodeType": "EmitStatement",
                  "src": "2998:47:16"
                }
              ]
            },
            "documentation": "@notice Create new version with contract `_contractAddress` and content `@fromHex(_contentURI)`\n@param _newSemanticVersion Semantic version for new repo version\n@param _contractAddress address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)\n@param _contentURI External URI for fetching new version's content",
            "id": 5526,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5419,
                    "name": "CREATE_VERSION_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5355,
                    "src": "1850:19:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5420,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5418,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "1845:4:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1845:25:16"
              }
            ],
            "name": "newVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5412,
                  "name": "_newSemanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5526,
                  "src": "1741:29:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5409,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1741:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5411,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5410,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1748:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1741:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5414,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5526,
                  "src": "1780:24:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1780:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5416,
                  "name": "_contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5526,
                  "src": "1814:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5415,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1814:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1731:106:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5421,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1875:0:16"
            },
            "scope": 5740,
            "src": "1712:1340:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5543,
              "nodeType": "Block",
              "src": "3170:61:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5538,
                          "name": "versionsNextIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5375,
                          "src": "3202:17:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3222:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3202:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5537,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5627,
                      "src": "3187:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) view returns (uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "id": 5541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3187:37:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 5536,
                  "id": 5542,
                  "nodeType": "Return",
                  "src": "3180:44:16"
                }
              ]
            },
            "documentation": null,
            "id": 5544,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5527,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3076:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5531,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5544,
                  "src": "3100:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5528,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3100:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5530,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3107:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3100:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5533,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5544,
                  "src": "3127:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5532,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3127:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5535,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5544,
                  "src": "3152:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5534,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3152:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3099:70:16"
            },
            "scope": 5740,
            "src": "3058:173:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5563,
              "nodeType": "Block",
              "src": "3419:84:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5558,
                          "name": "latestVersionIdForContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5387,
                          "src": "3451:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 5560,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5559,
                          "name": "_contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5546,
                          "src": "3478:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3451:44:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5557,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5627,
                      "src": "3436:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) view returns (uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "id": 5561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3436:60:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 5556,
                  "id": 5562,
                  "nodeType": "Return",
                  "src": "3429:67:16"
                }
              ]
            },
            "documentation": null,
            "id": 5564,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatestForContractAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5546,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3274:24:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5545,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3274:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3273:26:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5551,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3345:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5548,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3345:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5550,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3352:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3345:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5553,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3372:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5552,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3372:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5555,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5564,
                  "src": "3397:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5554,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3397:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3344:70:16"
            },
            "scope": 5740,
            "src": "3237:266:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5587,
              "nodeType": "Block",
              "src": "3686:99:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5580,
                          "name": "versionIdForSemantic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5383,
                          "src": "3718:20:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                          }
                        },
                        "id": 5584,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5582,
                              "name": "_semanticVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5568,
                              "src": "3759:16:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            ],
                            "id": 5581,
                            "name": "semanticVersionHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5739,
                            "src": "3739:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint16_$3_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (uint16[3] memory) pure returns (bytes32)"
                            }
                          },
                          "id": 5583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3739:37:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3718:59:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5579,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5627,
                      "src": "3703:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) view returns (uint16[3] memory,address,bytes memory)"
                      }
                    },
                    "id": 5585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3703:75:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(uint16[3] memory,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 5578,
                  "id": 5586,
                  "nodeType": "Return",
                  "src": "3696:82:16"
                }
              ]
            },
            "documentation": null,
            "id": 5588,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBySemanticVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5568,
                  "name": "_semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3539:26:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5565,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3539:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5567,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5566,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3546:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3539:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3538:28:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5573,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3612:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5570,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3612:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5572,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3619:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3612:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5575,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3639:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3639:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5577,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5588,
                  "src": "3664:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5576,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3664:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3611:70:16"
            },
            "scope": 5740,
            "src": "3509:276:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5626,
              "nodeType": "Block",
              "src": "3923:243:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5602,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5590,
                            "src": "3941:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3954:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3941:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5605,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5590,
                            "src": "3959:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5606,
                            "name": "versionsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5375,
                            "src": "3972:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3959:30:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3941:48:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5609,
                        "name": "ERROR_INEXISTENT_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5364,
                        "src": "3991:24:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5601,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3933:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3933:83:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5611,
                  "nodeType": "ExpressionStatement",
                  "src": "3933:83:16"
                },
                {
                  "assignments": [
                    5613
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5613,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 5627,
                      "src": "4026:23:16",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                        "typeString": "struct Repo.Version"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5612,
                        "name": "Version",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5373,
                        "src": "4026:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                          "typeString": "struct Repo.Version"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5617,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5614,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5379,
                      "src": "4052:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$5373_storage_$",
                        "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                      }
                    },
                    "id": 5616,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5615,
                      "name": "_versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5590,
                      "src": "4061:10:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4052:20:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$5373_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4026:46:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5618,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5613,
                          "src": "4090:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 5619,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "semanticVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5368,
                        "src": "4090:23:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage",
                          "typeString": "uint16[3] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5620,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5613,
                          "src": "4115:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 5621,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5370,
                        "src": "4115:23:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5622,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5613,
                          "src": "4140:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$5373_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 5623,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contentURI",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5372,
                        "src": "4140:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "id": 5624,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4089:70:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_uint16_$3_storage_$_t_address_$_t_bytes_storage_$",
                      "typeString": "tuple(uint16[3] storage ref,address,bytes storage ref)"
                    }
                  },
                  "functionReturnParameters": 5600,
                  "id": 5625,
                  "nodeType": "Return",
                  "src": "4082:77:16"
                }
              ]
            },
            "documentation": null,
            "id": 5627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByVersionId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5590,
                  "name": "_versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3815:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5589,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3815:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3814:17:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5595,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3853:25:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5592,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3853:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5594,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5593,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3860:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3853:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5597,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3880:23:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3880:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5599,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5627,
                  "src": "3905:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5598,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3905:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3852:70:16"
            },
            "scope": 5740,
            "src": "3791:375:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5636,
              "nodeType": "Block",
              "src": "4230:45:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5632,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5375,
                      "src": "4247:17:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 5633,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4267:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "4247:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5631,
                  "id": 5635,
                  "nodeType": "Return",
                  "src": "4240:28:16"
                }
              ]
            },
            "documentation": null,
            "id": 5637,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getVersionsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5628,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4197:2:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5630,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5637,
                  "src": "4221:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5629,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4221:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4220:9:16"
            },
            "scope": 5740,
            "src": "4172:103:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5713,
              "nodeType": "Block",
              "src": "4375:506:16",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5651,
                      "name": "hasBumped",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "4385:14:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5650,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4385:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5652,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4385:14:16"
                },
                {
                  "assignments": [
                    5654
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5654,
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "4409:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5653,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4409:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5656,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 5655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4418:1:16",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4409:10:16"
                },
                {
                  "body": {
                    "id": 5709,
                    "nodeType": "Block",
                    "src": "4443:406:16",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 5660,
                          "name": "hasBumped",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5651,
                          "src": "4461:9:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "id": 5677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5671,
                                "name": "_newVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5645,
                                "src": "4592:11:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 5673,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5672,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "4604:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4592:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5674,
                                "name": "_oldVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5641,
                                "src": "4610:11:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 5676,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 5675,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "4622:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4610:14:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "4592:32:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 5704,
                          "nodeType": "IfStatement",
                          "src": "4588:234:16",
                          "trueBody": {
                            "id": 5703,
                            "nodeType": "Block",
                            "src": "4626:196:16",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 5694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 5684,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5678,
                                        "name": "_oldVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5641,
                                        "src": "4648:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 5680,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5679,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5654,
                                        "src": "4660:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4648:14:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5681,
                                        "name": "_newVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5645,
                                        "src": "4665:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 5683,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5682,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5654,
                                        "src": "4677:1:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4665:14:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "src": "4648:31:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 5693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 5691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 5685,
                                          "name": "_newVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5645,
                                          "src": "4683:11:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 5687,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 5686,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5654,
                                          "src": "4695:1:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4683:14:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 5688,
                                          "name": "_oldVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5641,
                                          "src": "4700:11:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 5690,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 5689,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5654,
                                          "src": "4712:1:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4700:14:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "4683:31:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 5692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4718:1:16",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4683:36:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "4648:71:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 5698,
                                "nodeType": "IfStatement",
                                "src": "4644:130:16",
                                "trueBody": {
                                  "id": 5697,
                                  "nodeType": "Block",
                                  "src": "4721:53:16",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 5695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4750:5:16",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "functionReturnParameters": 5649,
                                      "id": 5696,
                                      "nodeType": "Return",
                                      "src": "4743:12:16"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 5699,
                                    "name": "hasBumped",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5651,
                                    "src": "4791:9:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 5700,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4803:4:16",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  "src": "4791:16:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 5702,
                                "nodeType": "ExpressionStatement",
                                "src": "4791:16:16"
                              }
                            ]
                          }
                        },
                        "id": 5705,
                        "nodeType": "IfStatement",
                        "src": "4457:365:16",
                        "trueBody": {
                          "id": 5670,
                          "nodeType": "Block",
                          "src": "4472:110:16",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 5665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5661,
                                    "name": "_newVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5645,
                                    "src": "4494:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 5663,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5662,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5654,
                                    "src": "4506:1:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4494:14:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 5664,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4512:1:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4494:19:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 5669,
                              "nodeType": "IfStatement",
                              "src": "4490:78:16",
                              "trueBody": {
                                "id": 5668,
                                "nodeType": "Block",
                                "src": "4515:53:16",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 5666,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4544:5:16",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "functionReturnParameters": 5649,
                                    "id": 5667,
                                    "nodeType": "Return",
                                    "src": "4537:12:16"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4835:3:16",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5706,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5654,
                            "src": "4835:1:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5708,
                        "nodeType": "ExpressionStatement",
                        "src": "4835:3:16"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5657,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5654,
                      "src": "4436:1:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4440:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "4436:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5710,
                  "nodeType": "WhileStatement",
                  "src": "4429:420:16"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5711,
                    "name": "hasBumped",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5651,
                    "src": "4865:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5649,
                  "id": 5712,
                  "nodeType": "Return",
                  "src": "4858:16:16"
                }
              ]
            },
            "documentation": null,
            "id": 5714,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isValidBump",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5641,
                  "name": "_oldVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5714,
                  "src": "4302:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5638,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4302:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5640,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4309:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4302:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5645,
                  "name": "_newVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 5714,
                  "src": "4325:21:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5642,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4325:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5644,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5643,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4332:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4325:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4301:46:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5648,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5714,
                  "src": "4369:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5647,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4369:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4368:6:16"
            },
            "scope": 5740,
            "src": "4281:600:16",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5738,
              "nodeType": "Block",
              "src": "4967:87:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5726,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5718,
                              "src": "5011:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 5728,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5019:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5011:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5729,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5718,
                              "src": "5023:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 5731,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 5730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5031:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5023:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5732,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5718,
                              "src": "5035:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 5734,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 5733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5043:1:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5035:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5724,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10391,
                            "src": "4994:3:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 5725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4994:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 5735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4994:52:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 5723,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10398,
                      "src": "4984:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 5736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4984:63:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5722,
                  "id": 5737,
                  "nodeType": "Return",
                  "src": "4977:70:16"
                }
              ]
            },
            "documentation": null,
            "id": 5739,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "semanticVersionHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5718,
                  "name": "version",
                  "nodeType": "VariableDeclaration",
                  "scope": 5739,
                  "src": "4916:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5715,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4916:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 5717,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 5716,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4923:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4916:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4915:19:16"
            },
            "payable": false,
            "returnParameters": {
              "id": 5722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5721,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5739,
                  "src": "4958:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5720,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4958:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4957:9:16"
            },
            "scope": 5740,
            "src": "4887:167:16",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 5741,
        "src": "136:4920:16"
      }
    ],
    "src": "0:5057:16"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.560Z",
  "devdoc": {
    "methods": {
      "allowRecoverability(address)": {
        "details": "By default deriving from AragonApp makes it recoverable",
        "params": {
          "token": "Token address that would be recovered"
        },
        "return": "bool whether the app allows the recovery"
      },
      "canPerform(address,bytes32,uint256[])": {
        "details": "Check whether an action can be performed by a sender for a particular role on this app",
        "params": {
          "_params": "Permission params for the role",
          "_role": "Role on this app",
          "_sender": "Sender of the call"
        },
        "return": "Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet."
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the recovery vault for the app",
        "return": "Recovery vault address for the app"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "initialize()": {
        "details": "Initialize can only be called once. It saves the block number in which it was initialized."
      },
      "newVersion(uint16[3],address,bytes)": {
        "params": {
          "_contentURI": "External URI for fetching new version's content",
          "_contractAddress": "address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)",
          "_newSemanticVersion": "Semantic version for new repo version"
        }
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "initialize()": {
        "notice": "Initialize this Repo"
      },
      "newVersion(uint16[3],address,bytes)": {
        "notice": "Create new version with contract `_contractAddress` and content `@fromHex(_contentURI)`"
      },
      "transferToVault(address)": {
        "notice": "Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them."
      }
    }
  }
}