{
  "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"
    },
    {
      "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"
    }
  ],
  "bytecode": "0x60806040526200001d62000023640100000000026401000000009004565b62000309565b60006200003e6200015e640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a4544000000000000000081525090151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000e5578082015181840152602081019050620000c8565b50505050905090810190601f168015620001135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200015c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620001ab640100000000026401000000009004565b565b6000620001a67febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916620002f76401000000000262002344176401000000009004565b905090565b6000620001c66200015e640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515620002a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200026d57808201518184015260208101905062000250565b50505050905090810190601f1680156200029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620002f4817febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166200030264010000000002620023ac179091906401000000009004565b50565b600081549050919050565b8082555050565b61257580620003196000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac0146101175780632914b9bd1461014657806332f0a3b5146101ef5780634c3ba268146102465780637305341014610373578063737e7d4f1461042b5780637e7db6e11461053357806380afdea81461058e5780638129fc1c146105c15780638b3dd749146105d85780639a6fe50c146106035780639d4941d814610721578063a1658fad14610764578063a479e50814610810578063a7bdf16e14610867578063aa61924a14610900578063c36af46014610933578063c6d48e0d14610a25578063d4aae0c414610a50578063de4796ed14610aa7575b600080fd5b34801561012357600080fd5b5061012c610ad6565b604051808215151515815260200191505060405180910390f35b34801561015257600080fd5b506101ad600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b01565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101fb57600080fd5b50610204610c20565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025257600080fd5b506102966004803603810190808060600190600380602002604051908101604052809291908260036020028082843782019150505050509192919290505050610ccd565b6040518084600360200280838360005b838110156102c15780820151818401526020810190506102a6565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561033657808201518184015260208101905061031b565b50505050905090810190601f1680156103635780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561037f57600080fd5b506104296004803603810190808060600190600380602002604051908101604052809291908260036020028082843782019150505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d12565b005b34801561043757600080fd5b506104566004803603810190808035906020019092919050505061136d565b6040518084600360200280838360005b83811015610481578082015181840152602081019050610466565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561053f57600080fd5b50610574600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115bd565b604051808215151515815260200191505060405180910390f35b34801561059a57600080fd5b506105a36115c8565b60405180826000191660001916815260200191505060405180910390f35b3480156105cd57600080fd5b506105d66115ff565b005b3480156105e457600080fd5b506105ed6116fb565b6040518082815260200191505060405180910390f35b34801561060f57600080fd5b50610644600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611732565b6040518084600360200280838360005b8381101561066f578082015181840152602081019050610654565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106e45780820151818401526020810190506106c9565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561072d57600080fd5b50610762600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611793565b005b34801561077057600080fd5b506107f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611bc5565b604051808215151515815260200191505060405180910390f35b34801561081c57600080fd5b50610825611dcc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087357600080fd5b506108e660048036038101908080606001906003806020026040519081016040528092919082600360200280828437820191505050505091929192908060600190600380602002604051908101604052809291908260036020028082843782019150505050509192919290505050611ee7565b604051808215151515815260200191505060405180910390f35b34801561090c57600080fd5b50610915611ff4565b60405180826000191660001916815260200191505060405180910390f35b34801561093f57600080fd5b5061094861201b565b6040518084600360200280838360005b83811015610973578082015181840152602081019050610958565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109e85780820151818401526020810190506109cd565b50505050905090810190601f168015610a155780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b348015610a3157600080fd5b50610a3a612040565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a6561204d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ab357600080fd5b50610abc612084565b604051808215151515815260200191505060405180910390f35b600080610ae16116fb565b905060008114158015610afb575080610af86120b5565b10155b91505090565b6000610b0b611dcc565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b92578082015181840152602081019050610b77565b50505050905090810190601f168015610bbf5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6020811015610c0857600080fd5b81019080805190602001909291905050509050919050565b6000610c2a61204d565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050506040513d6020811015610cb757600080fd5b8101908080519060200190929190505050905090565b610cd56123b3565b60006060610d0560026000610ce9876120bd565b600019166000191681526020019081526020016000205461136d565b9250925092509193909250565b600080610d1d6123b3565b6000807f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8600102610d7f33826000604051908082528060200260200182016040528015610d795781602001602082028038833980820191505090505b50611bc5565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515610e5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e22578082015181840152602081019050610e07565b50505050905090810190601f168015610e4f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50879550600160005403945060008511156110d15760016000868152602001908152602001600020925082600001600380602002604051908101604052809291908260038015610eea576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610eb15790505b50505050509350600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f4e578260010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695505b8573ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ff15750826000016000600381101515610fb957fe5b601091828204019190066002029054906101000a900461ffff1661ffff16896000600381101515610fe657fe5b602002015161ffff16115b6040805190810160405280601481526020017f5245504f5f494e56414c49445f56455253494f4e0000000000000000000000008152509015156110cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611094578082015181840152602081019050611079565b50505050905090810190601f1680156110c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505b6110db848a611ee7565b6040805190810160405280601181526020017f5245504f5f494e56414c49445f42554d500000000000000000000000000000008152509015156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561117e578082015181840152602081019050611163565b50505050905090810190601f1680156111ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000808154809291906001019190505591506060604051908101604052808a81526020018773ffffffffffffffffffffffffffffffffffffffff16815260200188815250600160008481526020019081526020016000206000820151816000019060036112289291906123d6565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201908051906020019061128c929190612473565b50905050816002600061129e8c6120bd565b600019166000191681526020019081526020016000208190555081600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd828a6040518083815260200182600360200280838360005b8381101561134f578082015181840152602081019050611334565b505050509050019250505060405180910390a1505050505050505050565b6113756123b3565b600060606000808511801561138b575060005485105b6040805190810160405280601781526020017f5245504f5f494e4558495354454e545f56455253494f4e000000000000000000815250901515611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561142e578082015181840152602081019050611413565b50505050905090810190601f16801561145b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600160008681526020019081526020016000209050806000018160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826002018260038060200260405190810160405280929190826003801561150c576020028201916000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114d35790505b50505050509250808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115a85780601f1061157d576101008083540402835291602001916115a8565b820191906000526020600020905b81548152906001019060200180831161158b57829003601f168201915b50505050509050935093509350509193909250565b600060019050919050565b60006115fa7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6001026000191661220c565b905090565b60006116096116fb565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a454400000000000000008152509015156116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116ad578082015181840152602081019050611692565b50505050905090810190601f1680156116da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506116f1612217565b6001600081905550565b600061172d7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916612344565b905090565b61173a6123b3565b60006060611786600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461136d565b9250925092509193909250565b60008061179f836115bd565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f574544000000000000000000000000000081525090151561187d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611842578082015181840152602081019050611827565b50505050905090810190601f16801561186f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611886610c20565b91506118918261234f565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000081525090151561196f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611934578082015181840152602081019050611919565b50505050905090810190601f1680156119615780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a08578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611a02573d6000803e3d6000fd5b50611bc0565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611aa357600080fd5b505af1158015611ab7573d6000803e3d6000fd5b505050506040513d6020811015611acd57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b8357600080fd5b505af1158015611b97573d6000803e3d6000fd5b505050506040513d6020811015611bad57600080fd5b8101908080519060200190929190505050505b505050565b60008060606000611bd4610ad6565b1515611be35760009350611dc2565b611beb61204d565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c2b5760009350611dc2565b602085510290508491508082528273ffffffffffffffffffffffffffffffffffffffff1663fdef9106883089866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d35578082015181840152602081019050611d1a565b50505050905090810190601f168015611d625780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b810190808051906020019092919050505093505b5050509392505050565b600080611dd761204d565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b158015611ea357600080fd5b505af1158015611eb7573d6000803e3d6000fd5b505050506040513d6020811015611ecd57600080fd5b810190808051906020019092919050505090508091505090565b60008060008090505b6003811015611fe8578115611f2d5760008482600381101515611f0f57fe5b602002015161ffff16141515611f285760009250611fec565b611fdb565b8481600381101515611f3b57fe5b602002015161ffff168482600381101515611f5257fe5b602002015161ffff16141515611fda578381600381101515611f7057fe5b602002015161ffff168582600381101515611f8757fe5b602002015161ffff161180611fc7575060018582600381101515611fa757fe5b60200201518583600381101515611fba57fe5b60200201510361ffff1614155b15611fd55760009250611fec565b600191505b5b8080600101915050611ef0565b8192505b505092915050565b7f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d860010281565b6120236123b3565b6000606061203560016000540361136d565b925092509250909192565b6000600160005403905090565b600061207f7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b600102600019166123a1565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6120af6116fb565b14905090565b600043905090565b60008160006003811015156120ce57fe5b60200201518260016003811015156120e257fe5b60200201518360026003811015156120f657fe5b6020020151604051602001808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018361ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018261ffff1661ffff167e0100000000000000000000000000000000000000000000000000000000000002815260020193505050506040516020818303038152906040526040518082805190602001908083835b6020831015156121d857805182526020820191506020810190506020830392506121b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600081549050919050565b60006122216116fb565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156122c55780820151818401526020810190506122aa565b50505050905090810190601f1680156122f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061234261230c6120b5565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166123ac90919063ffffffff16565b565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612390576000915061239b565b823b90506000811191505b50919050565b600081549050919050565b8082555050565b606060405190810160405280600390602082028038833980820191505090505090565b826003600f016010900481019282156124625791602002820160005b8382111561243257835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026123f2565b80156124605782816101000a81549061ffff0219169055600201602081600101049283019260010302612432565b505b50905061246f91906124f3565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124b457805160ff19168380011785556124e2565b828001600101855582156124e2579182015b828111156124e15782518255916020019190600101906124c6565b5b5090506124ef9190612524565b5090565b61252191905b8082111561251d57600081816101000a81549061ffff0219169055506001016124f9565b5090565b90565b61254691905b8082111561254257600081600090555060010161252a565b5090565b905600a165627a7a72305820a8c2dc5506d891e5b9f710f1cd92a637dabe2007502b51e2cdd04bb784a45e690029",
  "deployedBytecode": "0x608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac0146101175780632914b9bd1461014657806332f0a3b5146101ef5780634c3ba268146102465780637305341014610373578063737e7d4f1461042b5780637e7db6e11461053357806380afdea81461058e5780638129fc1c146105c15780638b3dd749146105d85780639a6fe50c146106035780639d4941d814610721578063a1658fad14610764578063a479e50814610810578063a7bdf16e14610867578063aa61924a14610900578063c36af46014610933578063c6d48e0d14610a25578063d4aae0c414610a50578063de4796ed14610aa7575b600080fd5b34801561012357600080fd5b5061012c610ad6565b604051808215151515815260200191505060405180910390f35b34801561015257600080fd5b506101ad600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b01565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101fb57600080fd5b50610204610c20565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025257600080fd5b506102966004803603810190808060600190600380602002604051908101604052809291908260036020028082843782019150505050509192919290505050610ccd565b6040518084600360200280838360005b838110156102c15780820151818401526020810190506102a6565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561033657808201518184015260208101905061031b565b50505050905090810190601f1680156103635780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561037f57600080fd5b506104296004803603810190808060600190600380602002604051908101604052809291908260036020028082843782019150505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d12565b005b34801561043757600080fd5b506104566004803603810190808035906020019092919050505061136d565b6040518084600360200280838360005b83811015610481578082015181840152602081019050610466565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561053f57600080fd5b50610574600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115bd565b604051808215151515815260200191505060405180910390f35b34801561059a57600080fd5b506105a36115c8565b60405180826000191660001916815260200191505060405180910390f35b3480156105cd57600080fd5b506105d66115ff565b005b3480156105e457600080fd5b506105ed6116fb565b6040518082815260200191505060405180910390f35b34801561060f57600080fd5b50610644600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611732565b6040518084600360200280838360005b8381101561066f578082015181840152602081019050610654565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106e45780820151818401526020810190506106c9565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561072d57600080fd5b50610762600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611793565b005b34801561077057600080fd5b506107f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611bc5565b604051808215151515815260200191505060405180910390f35b34801561081c57600080fd5b50610825611dcc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087357600080fd5b506108e660048036038101908080606001906003806020026040519081016040528092919082600360200280828437820191505050505091929192908060600190600380602002604051908101604052809291908260036020028082843782019150505050509192919290505050611ee7565b604051808215151515815260200191505060405180910390f35b34801561090c57600080fd5b50610915611ff4565b60405180826000191660001916815260200191505060405180910390f35b34801561093f57600080fd5b5061094861201b565b6040518084600360200280838360005b83811015610973578082015181840152602081019050610958565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109e85780820151818401526020810190506109cd565b50505050905090810190601f168015610a155780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b348015610a3157600080fd5b50610a3a612040565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a6561204d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ab357600080fd5b50610abc612084565b604051808215151515815260200191505060405180910390f35b600080610ae16116fb565b905060008114158015610afb575080610af86120b5565b10155b91505090565b6000610b0b611dcc565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b92578082015181840152602081019050610b77565b50505050905090810190601f168015610bbf5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6020811015610c0857600080fd5b81019080805190602001909291905050509050919050565b6000610c2a61204d565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050506040513d6020811015610cb757600080fd5b8101908080519060200190929190505050905090565b610cd56123b3565b60006060610d0560026000610ce9876120bd565b600019166000191681526020019081526020016000205461136d565b9250925092509193909250565b600080610d1d6123b3565b6000807f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8600102610d7f33826000604051908082528060200260200182016040528015610d795781602001602082028038833980820191505090505b50611bc5565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515610e5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e22578082015181840152602081019050610e07565b50505050905090810190601f168015610e4f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50879550600160005403945060008511156110d15760016000868152602001908152602001600020925082600001600380602002604051908101604052809291908260038015610eea576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610eb15790505b50505050509350600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610f4e578260010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695505b8573ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ff15750826000016000600381101515610fb957fe5b601091828204019190066002029054906101000a900461ffff1661ffff16896000600381101515610fe657fe5b602002015161ffff16115b6040805190810160405280601481526020017f5245504f5f494e56414c49445f56455253494f4e0000000000000000000000008152509015156110cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611094578082015181840152602081019050611079565b50505050905090810190601f1680156110c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505b6110db848a611ee7565b6040805190810160405280601181526020017f5245504f5f494e56414c49445f42554d500000000000000000000000000000008152509015156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561117e578082015181840152602081019050611163565b50505050905090810190601f1680156111ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000808154809291906001019190505591506060604051908101604052808a81526020018773ffffffffffffffffffffffffffffffffffffffff16815260200188815250600160008481526020019081526020016000206000820151816000019060036112289291906123d6565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201908051906020019061128c929190612473565b50905050816002600061129e8c6120bd565b600019166000191681526020019081526020016000208190555081600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd828a6040518083815260200182600360200280838360005b8381101561134f578082015181840152602081019050611334565b505050509050019250505060405180910390a1505050505050505050565b6113756123b3565b600060606000808511801561138b575060005485105b6040805190810160405280601781526020017f5245504f5f494e4558495354454e545f56455253494f4e000000000000000000815250901515611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561142e578082015181840152602081019050611413565b50505050905090810190601f16801561145b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600160008681526020019081526020016000209050806000018160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826002018260038060200260405190810160405280929190826003801561150c576020028201916000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114d35790505b50505050509250808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115a85780601f1061157d576101008083540402835291602001916115a8565b820191906000526020600020905b81548152906001019060200180831161158b57829003601f168201915b50505050509050935093509350509193909250565b600060019050919050565b60006115fa7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6001026000191661220c565b905090565b60006116096116fb565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a454400000000000000008152509015156116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116ad578082015181840152602081019050611692565b50505050905090810190601f1680156116da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506116f1612217565b6001600081905550565b600061172d7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916612344565b905090565b61173a6123b3565b60006060611786600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461136d565b9250925092509193909250565b60008061179f836115bd565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f574544000000000000000000000000000081525090151561187d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611842578082015181840152602081019050611827565b50505050905090810190601f16801561186f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611886610c20565b91506118918261234f565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000081525090151561196f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611934578082015181840152602081019050611919565b50505050905090810190601f1680156119615780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a08578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611a02573d6000803e3d6000fd5b50611bc0565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611aa357600080fd5b505af1158015611ab7573d6000803e3d6000fd5b505050506040513d6020811015611acd57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b8357600080fd5b505af1158015611b97573d6000803e3d6000fd5b505050506040513d6020811015611bad57600080fd5b8101908080519060200190929190505050505b505050565b60008060606000611bd4610ad6565b1515611be35760009350611dc2565b611beb61204d565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c2b5760009350611dc2565b602085510290508491508082528273ffffffffffffffffffffffffffffffffffffffff1663fdef9106883089866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d35578082015181840152602081019050611d1a565b50505050905090810190601f168015611d625780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b810190808051906020019092919050505093505b5050509392505050565b600080611dd761204d565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b158015611ea357600080fd5b505af1158015611eb7573d6000803e3d6000fd5b505050506040513d6020811015611ecd57600080fd5b810190808051906020019092919050505090508091505090565b60008060008090505b6003811015611fe8578115611f2d5760008482600381101515611f0f57fe5b602002015161ffff16141515611f285760009250611fec565b611fdb565b8481600381101515611f3b57fe5b602002015161ffff168482600381101515611f5257fe5b602002015161ffff16141515611fda578381600381101515611f7057fe5b602002015161ffff168582600381101515611f8757fe5b602002015161ffff161180611fc7575060018582600381101515611fa757fe5b60200201518583600381101515611fba57fe5b60200201510361ffff1614155b15611fd55760009250611fec565b600191505b5b8080600101915050611ef0565b8192505b505092915050565b7f1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d860010281565b6120236123b3565b6000606061203560016000540361136d565b925092509250909192565b6000600160005403905090565b600061207f7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b600102600019166123a1565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6120af6116fb565b14905090565b600043905090565b60008160006003811015156120ce57fe5b60200201518260016003811015156120e257fe5b60200201518360026003811015156120f657fe5b6020020151604051602001808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018361ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018261ffff1661ffff167e0100000000000000000000000000000000000000000000000000000000000002815260020193505050506040516020818303038152906040526040518082805190602001908083835b6020831015156121d857805182526020820191506020810190506020830392506121b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600081549050919050565b60006122216116fb565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156122c55780820151818401526020810190506122aa565b50505050905090810190601f1680156122f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061234261230c6120b5565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166123ac90919063ffffffff16565b565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612390576000915061239b565b823b90506000811191505b50919050565b600081549050919050565b8082555050565b606060405190810160405280600390602082028038833980820191505090505090565b826003600f016010900481019282156124625791602002820160005b8382111561243257835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026123f2565b80156124605782816101000a81549061ffff0219169055600201602081600101049283019260010302612432565b505b50905061246f91906124f3565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124b457805160ff19168380011785556124e2565b828001600101855582156124e2579182015b828111156124e15782518255916020019190600101906124c6565b5b5090506124ef9190612524565b5090565b61252191905b8082111561251d57600081816101000a81549061ffff0219169055506001016124f9565b5090565b90565b61254691905b8082111561254257600081600090555060010161252a565b5090565b905600a165627a7a72305820a8c2dc5506d891e5b9f710f1cd92a637dabe2007502b51e2cdd04bb784a45e690029",
  "sourceMap": "136:4871:13:-;;;344:9:19;:7;;;:9;;;:::i;:::-;136:4871:13;;590:84:28;651:1:26;623:24;:22;;;:24;;;:::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;637:30:28;277:2;637:13;;;:30;;;:::i;:::-;590:84::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;;;;;:49;;;:::i;:::-;963:56;;889:137;:::o;1759:141::-;651:1;623:24;:22;;;:24;;;:::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1832:61;1880:12;353:66;1832:29;;:47;;;;;;;;;:61;;;;;:::i;:::-;1759:141;:::o;519:134:31:-;587:12;636:8;630:15;622:23;;620:27;;;:::o;1028:119::-;1134:4;1124:8;1117:22;1115:26;;:::o;136:4871:13:-;;;;;;;",
  "deployedSourceMap": "136:4871:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1136:208:26;;;;;;;;;;;;;;;;;;;;;;;;;;;733:179:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;733:179:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2466:229:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2466:229:18;;;;;;;;;;;;;;;;;;;;;;;;;;;3460:276:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3460:276:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3460:276:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3460:276:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1663:1340;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:1340:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3742:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3742:375:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3742:375:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3742:375:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:99:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1333:99:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:106:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1228:99:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1228:99:13;;;;;;889:137:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;889:137:26;;;;;;;;;;;;;;;;;;;;;;;3188:266:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3188:266:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3188:266:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3188:266:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;687:446:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;687:446:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:826:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1524:826:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:231:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:231:34;;;;;;;;;;;;;;;;;;;;;;;;;;;4232:600:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4232:600:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;299:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;299:112:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3009:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3009:173:13;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3009:173:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3009:173:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4123:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4123:103:13;;;;;;;;;;;;;;;;;;;;;;;674:116:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:17;;;;;;;;;;;;;;;;;;;;;;;;;;;287:117:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:28;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;1183:4;1199:27;1229:24;:22;:24::i;:::-;1199:54;;1293:1;1270:19;:24;;:67;;;;;1318:19;1298:16;:14;:16::i;:::-;:39;;1270:67;1263:74;;1136:208;;:::o;733:179:34:-;799:18;855:22;:20;:22::i;:::-;:40;;;896:7;855:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;855:49:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;855:49:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;855:49:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;855:49:34;;;;;;;;;;;;;;;;829:76;;733:179;;;:::o;2466:229:18:-;2515:7;2621:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2621:27:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2621:27:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2621:27:18;;;;;;;;;;;;;;;;2614:34;;2466:229;:::o;3460:276:13:-;3563:25;;:::i;:::-;3590:23;3615:16;3654:75;3669:20;:59;3690:37;3710:16;3690:19;:37::i;:::-;3669:59;;;;;;;;;;;;;;;;;;3654:14;:75::i;:::-;3647:82;;;;;;3460:276;;;;;:::o;1663:1340::-;1836:23;1888:24;1947:35;;:::i;:::-;2033:27;2660:17;345:66;1801:19;;873:47:18;884:10;896:5;917:1;903:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;903:16:18;;;;873:10;:47::i;:::-;922:17;;;;;;;;;;;;;;;;;;865:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;865:75:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:16:13;1836:42;;1935:1;1915:17;;:21;1888:48;;2016:1;1997:16;:20;1993:565;;;2063:8;:26;2072:16;2063:26;;;;;;;;;;;2033:56;;2124:11;:27;;2103:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2197:1;2170:29;;:15;:29;;;2166:113;;;2237:11;:27;;;;;;;;;;;;2219:45;;2166:113;2420:15;2389:46;;:11;:27;;;;;;;;;;;;:46;;;:105;;;;2464:11;:27;;2492:1;2464:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2439:55;;:19;2459:1;2439:22;;;;;;;;;;;;;:55;;;2389:105;2512:21;;;;;;;;;;;;;;;;;;2364:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2364:183:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1993:565;2576:52;2588:18;2608:19;2576:11;:52::i;:::-;2630:18;;;;;;;;;;;;;;;;;;2568:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2568:81:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2680:17;;:19;;;;;;;;;;;;2660:39;;2731:58;;;;;;;;;2739:19;2731:58;;;;2760:15;2731:58;;;;;;2777:11;2731:58;;;2709:8;:19;2718:9;2709:19;;;;;;;;;;;:80;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2864:9;2799:20;:62;2820:40;2840:19;2820;:40::i;:::-;2799:62;;;;;;;;;;;;;;;;;:74;;;;2929:9;2883:26;:43;2910:15;2883:43;;;;;;;;;;;;;;;:55;;;;2954:42;2965:9;2976:19;2954:42;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2954:42:13;;;;;;;;;;;;;;;;;1663:1340;;;;;;;;;:::o;3742:375::-;3804:25;;:::i;:::-;3831:23;3856:16;3977:23;3905:1;3892:10;:14;:48;;;;;3923:17;;3910:10;:30;3892:48;3942:24;;;;;;;;;;;;;;;;;;3884:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3884:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4003:8;:20;4012:10;4003:20;;;;;;;;;;;3977:46;;4041:7;:23;;4066:7;:23;;;;;;;;;;;;4091:7;:18;;4033:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3742:375;;;;;;:::o;1333:99:32:-;1398:4;1421;1414:11;;1333:99;;;:::o;796:106:17:-;834:7;860:35;601:66;860:15;;:33;;;;:35::i;:::-;853:42;;796:106;:::o;1228:99:13:-;651:1:26;623:24;:22;:24::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:13:13;:11;:13::i;:::-;1319:1;1299:17;:21;;;;1228:99::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;:49::i;:::-;963:56;;889:137;:::o;3188:266:13:-;3296:25;;:::i;:::-;3323:23;3348:16;3387:60;3402:26;:44;3429:16;3402:44;;;;;;;;;;;;;;;;3387:14;:60::i;:::-;3380:67;;;;;;3188:266;;;;;:::o;687:446:32:-;811:13;1019:14;755:27;775:6;755:19;:27::i;:::-;784:16;;;;;;;;;;;;;;;;;;747:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;747:54:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:18;:16;:18::i;:::-;811:34;;863:17;874:5;863:10;:17::i;:::-;882:24;;;;;;;;;;;;;;;;;;855:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;855:52:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:1:23;922:13:32;;:6;:13;;;918:209;;;951:5;:14;;:37;974:4;966:21;;;951:37;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;951:37:32;918:209;;;1042:6;1036:23;;;1060:4;1036:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:29:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1036:29:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1036:29:32;;;;;;;;;;;;;;;;1019:46;;1085:6;1079:22;;;1102:5;1109:6;1079:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1079:37:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1079:37:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1079:37:32;;;;;;;;;;;;;;;;;918:209;687:446;;;:::o;1524:826:18:-;1616:4;1702:20;2106:16;2132:18;1637:16;:14;:16::i;:::-;1636:17;1632:60;;;1676:5;1669:12;;;;1632:60;1725:8;:6;:8::i;:::-;1702:31;;1780:1;1747:35;;1755:12;1747:35;;;1743:78;;;1805:5;1798:12;;;;1743:78;2170:2;2153:7;:14;:19;2132:40;;2212:7;2205:14;;2244:10;2239:3;2232:23;2281:12;:26;;;2308:7;2325:4;2332:5;2339:3;2281:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2281:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:62:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2281:62:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2281:62:18;;;;;;;;;;;;;;;;2274:69;;1524:826;;;;;;;;;:::o;918:231:34:-;971:18;1001:20;1024:8;:6;:8::i;:::-;:15;;;1368:66:45;1040:25:34;;330:66:36;1067:25:34;;1024:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1024:69:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1024:69:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1024:69:34;;;;;;;;;;;;;;;;1001:92;;1129:12;1103:39;;918:231;;:::o;4232:600:13:-;4320:4;4336:14;4360:6;4369:1;4360:10;;4380:420;4391:1;4387;:5;4380:420;;;4412:9;4408:365;;;4463:1;4445:11;4457:1;4445:14;;;;;;;;;;;;;:19;;;;4441:78;;;4495:5;4488:12;;;;4441:78;4408:365;;;4561:11;4573:1;4561:14;;;;;;;;;;;;;4543:32;;:11;4555:1;4543:14;;;;;;;;;;;;;:32;;;;4539:234;;;4616:11;4628:1;4616:14;;;;;;;;;;;;;4599:31;;:11;4611:1;4599:14;;;;;;;;;;;;;:31;;;:71;;;;4669:1;4651:11;4663:1;4651:14;;;;;;;;;;;;;4634:11;4646:1;4634:14;;;;;;;;;;;;;:31;:36;;;;4599:71;4595:130;;;4701:5;4694:12;;;;4595:130;4754:4;4742:16;;4539:234;4408:365;4786:3;;;;;;;4380:420;;;4816:9;4809:16;;4232:600;;;;;;;:::o;299:112::-;345:66;299:112;;;:::o;3009:173::-;3051:25;;:::i;:::-;3078:23;3103:16;3138:37;3173:1;3153:17;;:21;3138:14;:37::i;:::-;3131:44;;;;;;3009:173;;;:::o;4123:103::-;4172:7;4218:1;4198:17;;:21;4191:28;;4123:103;:::o;674:116:17:-;713:7;747:35;485:66;747:15;;:33;;;;:35::i;:::-;732:51;;674:116;:::o;287:117:28:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;347:94:29:-;396:7;422:12;415:19;;347:94;:::o;4838:167:13:-;4909:7;4962;4970:1;4962:10;;;;;;;;;;;;;4974:7;4982:1;4974:10;;;;;;;;;;;;;4986:7;4994:1;4986:10;;;;;;;;;;;;;4945:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4945:52:13;;;4935:63;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4935:63:13;;;;;;;;;;;;;;;;4928:70;;4838:167;;;:::o;379:134:31:-;447:12;496:8;490:15;482:23;;480:27;;;:::o;1455:123:26:-;651:1;623:24;:22;:24::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506;1554:16;:14;:16::i;:::-;353:66;1506:29;;:47;;;;;:65;;;;:::i;:::-;1455:123::o;519:134:31:-;587:12;636:8;630:15;622:23;;620:27;;;:::o;426:244:27:-;486:4;576:12;525:1;506:21;;:7;: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;239:134:31:-;307:12;356:8;350:15;342:23;;340:27;;;:::o;1028:119::-;1134:4;1124:8;1117:22;1115:26;;:::o;136:4871:13:-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;136:4871:13;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "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 Initializes a Repo to be usable\n    */\n    function initialize() public onlyInit {\n        initialized();\n        versionsNextIndex = 1;\n    }\n\n    /**\n    * @notice Create new version for repo\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": [
        8091
      ]
    },
    "id": 8092,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7700,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 7701,
        "nodeType": "ImportDirective",
        "scope": 8092,
        "sourceUnit": 8476,
        "src": "25:31:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7702,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8475,
              "src": "153:9:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$8475",
                "typeString": "contract AragonApp"
              }
            },
            "id": 7703,
            "nodeType": "InheritanceSpecifier",
            "src": "153:9:13"
          }
        ],
        "contractDependencies": [
          7585,
          8347,
          8475,
          8488,
          8621,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9476,
          9503,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8091,
        "linearizedBaseContracts": [
          8091,
          8475,
          7585,
          9476,
          10769,
          9503,
          9066,
          8789,
          8621,
          8663,
          8488,
          8822,
          8761,
          8869,
          8347
        ],
        "name": "Repo",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 7706,
            "name": "CREATE_VERSION_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "299:112:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7704,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "299:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831663536636665636433353935613265366363316137653663623062323064663834636462643932656666326665653535346537306534653435613961376438",
              "id": 7705,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "345:66:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_14175082199951049120475530292950009820264027334869017275878805295387074209752_by_1",
                "typeString": "int_const 1417...(69 digits omitted)...9752"
              },
              "value": "0x1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7709,
            "name": "ERROR_INVALID_BUMP",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "418:64:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7707,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "418:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f42554d50",
              "id": 7708,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "463:19:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c0d2c819b356f0b10a55bac630c3c4d815e692fe9311b1cc8ba83e3426876fef",
                "typeString": "literal_string \"REPO_INVALID_BUMP\""
              },
              "value": "REPO_INVALID_BUMP"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7712,
            "name": "ERROR_INVALID_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "488:70:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7710,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "488:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f56455253494f4e",
              "id": 7711,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "536:22:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4cb22c000e9208b6bc05026718966e45afadcffb33436bfbd76270772bf274ce",
                "typeString": "literal_string \"REPO_INVALID_VERSION\""
              },
              "value": "REPO_INVALID_VERSION"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7715,
            "name": "ERROR_INEXISTENT_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "564:76:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7713,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "564:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e4558495354454e545f56455253494f4e",
              "id": 7714,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "615:25:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3852a5fcaceec25ac63b67717534646986c61c9e3305147343a4b721cbdc0f13",
                "typeString": "literal_string \"REPO_INEXISTENT_VERSION\""
              },
              "value": "REPO_INEXISTENT_VERSION"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Repo.Version",
            "id": 7724,
            "members": [
              {
                "constant": false,
                "id": 7719,
                "name": "semanticVersion",
                "nodeType": "VariableDeclaration",
                "scope": 7724,
                "src": "672:25:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                  "typeString": "uint16[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 7716,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "672:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 7718,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 7717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "679:1:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "672:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                    "typeString": "uint16[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 7721,
                "name": "contractAddress",
                "nodeType": "VariableDeclaration",
                "scope": 7724,
                "src": "707:23:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 7720,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "707:7:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 7723,
                "name": "contentURI",
                "nodeType": "VariableDeclaration",
                "scope": 7724,
                "src": "740:16:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 7722,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:5:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Version",
            "nodeType": "StructDefinition",
            "scope": 8091,
            "src": "647:116:13",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7726,
            "name": "versionsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "769:34:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 7725,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "769:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 7730,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "809:46:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
              "typeString": "mapping(uint256 => struct Repo.Version)"
            },
            "typeName": {
              "id": 7729,
              "keyType": {
                "id": 7727,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "818:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "809:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                "typeString": "mapping(uint256 => struct Repo.Version)"
              },
              "valueType": {
                "contractScope": null,
                "id": 7728,
                "name": "Version",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 7724,
                "src": "829:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                  "typeString": "struct Repo.Version"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 7734,
            "name": "versionIdForSemantic",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "861:58:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 7733,
              "keyType": {
                "id": 7731,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "870:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "861:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 7732,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "881:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 7738,
            "name": "latestVersionIdForContract",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "925:64:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 7737,
              "keyType": {
                "id": 7735,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "934:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "925:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 7736,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "945:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7746,
            "name": "NewVersion",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7740,
                  "indexed": false,
                  "name": "versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7746,
                  "src": "1013:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7739,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7744,
                  "indexed": false,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7746,
                  "src": "1032:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7741,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1032:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7743,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7742,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1039:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1032:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1012:46:13"
            },
            "src": "996:63:13"
          },
          {
            "body": {
              "id": 7758,
              "nodeType": "Block",
              "src": "1266:61:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7751,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "1276:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1276:13:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7753,
                  "nodeType": "ExpressionStatement",
                  "src": "1276:13:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7754,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "1299:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1319:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1299:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7757,
                  "nodeType": "ExpressionStatement",
                  "src": "1299:21:13"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initializes a Repo to be usable",
            "id": 7759,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7749,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7748,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "1257:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1257:8:13"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7747,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1247:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7750,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1266:0:13"
            },
            "scope": 8091,
            "src": "1228:99:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7876,
              "nodeType": "Block",
              "src": "1826:1177:13",
              "statements": [
                {
                  "assignments": [
                    7774
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7774,
                      "name": "contractAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "1836:23:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7773,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1836:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7776,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7775,
                    "name": "_contractAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7765,
                    "src": "1862:16:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1836:42:13"
                },
                {
                  "assignments": [
                    7778
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7778,
                      "name": "lastVersionIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "1888:24:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7777,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1888:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7782,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7779,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "1915:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7780,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1935:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1915:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1888:48:13"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7787,
                      "name": "lastSematicVersion",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "1947:35:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                        "typeString": "uint16[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7785,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1947:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 7786,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 7784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1954:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "1947:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                          "typeString": "uint16[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7788,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1947:35:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7789,
                      "name": "lastVersionIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7778,
                      "src": "1997:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7790,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2016:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1997:20:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7833,
                  "nodeType": "IfStatement",
                  "src": "1993:565:13",
                  "trueBody": {
                    "id": 7832,
                    "nodeType": "Block",
                    "src": "2019:539:13",
                    "statements": [
                      {
                        "assignments": [
                          7793
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7793,
                            "name": "lastVersion",
                            "nodeType": "VariableDeclaration",
                            "scope": 7877,
                            "src": "2033:27:13",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                              "typeString": "struct Repo.Version"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7792,
                              "name": "Version",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7724,
                              "src": "2033:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                "typeString": "struct Repo.Version"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7797,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7794,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7730,
                            "src": "2063:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                              "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                            }
                          },
                          "id": 7796,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7795,
                            "name": "lastVersionIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7778,
                            "src": "2072:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2063:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage",
                            "typeString": "struct Repo.Version storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2033:56:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7798,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7787,
                            "src": "2103:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7799,
                              "name": "lastVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7793,
                              "src": "2124:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                "typeString": "struct Repo.Version storage pointer"
                              }
                            },
                            "id": 7800,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "semanticVersion",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7719,
                            "src": "2124:27:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_storage",
                              "typeString": "uint16[3] storage ref"
                            }
                          },
                          "src": "2103:48:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        "id": 7802,
                        "nodeType": "ExpressionStatement",
                        "src": "2103:48:13"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7803,
                            "name": "contractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7774,
                            "src": "2170:15:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2197:1:13",
                                "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": 7804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2189:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 7806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2189:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2170:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7814,
                        "nodeType": "IfStatement",
                        "src": "2166:113:13",
                        "trueBody": {
                          "id": 7813,
                          "nodeType": "Block",
                          "src": "2201:78:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7808,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7774,
                                  "src": "2219:15:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7809,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7793,
                                    "src": "2237:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 7810,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7721,
                                  "src": "2237:27:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2219:45:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7812,
                              "nodeType": "ExpressionStatement",
                              "src": "2219:45:13"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 7828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7816,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7793,
                                    "src": "2389:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 7817,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7721,
                                  "src": "2389:27:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7818,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7774,
                                  "src": "2420:15:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2389:46:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 7827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7820,
                                    "name": "_newSemanticVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7763,
                                    "src": "2439:19:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 7822,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2459:1:13",
                                    "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": "2439:22:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7823,
                                      "name": "lastVersion",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7793,
                                      "src": "2464:11:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                        "typeString": "struct Repo.Version storage pointer"
                                      }
                                    },
                                    "id": 7824,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "semanticVersion",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7719,
                                    "src": "2464:27:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_storage",
                                      "typeString": "uint16[3] storage ref"
                                    }
                                  },
                                  "id": 7826,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2492:1:13",
                                    "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": "2464:30:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2439:55:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2389:105:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7829,
                              "name": "ERROR_INVALID_VERSION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7712,
                              "src": "2512:21:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7815,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12673,
                              12674
                            ],
                            "referencedDeclaration": 12674,
                            "src": "2364:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2364:183:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7831,
                        "nodeType": "ExpressionStatement",
                        "src": "2364:183:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7836,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7787,
                            "src": "2588:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7837,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7763,
                            "src": "2608:19:13",
                            "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": 7835,
                          "name": "isValidBump",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8065,
                          "src": "2576:11:13",
                          "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": 7838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2576:52:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7839,
                        "name": "ERROR_INVALID_BUMP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7709,
                        "src": "2630:18:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7834,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2568:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2568:81:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7841,
                  "nodeType": "ExpressionStatement",
                  "src": "2568:81:13"
                },
                {
                  "assignments": [
                    7843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7843,
                      "name": "versionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "2660:17:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7842,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2660:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7846,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2680:19:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 7844,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "2680:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2660:39:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7847,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7730,
                        "src": "2709:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                          "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                        }
                      },
                      "id": 7849,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7848,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7843,
                        "src": "2718:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2709:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$7724_storage",
                        "typeString": "struct Repo.Version storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7851,
                          "name": "_newSemanticVersion",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7763,
                          "src": "2739:19:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7852,
                          "name": "contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7774,
                          "src": "2760:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7853,
                          "name": "_contentURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7767,
                          "src": "2777:11:13",
                          "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": 7850,
                        "name": "Version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7724,
                        "src": "2731:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Version_$7724_storage_ptr_$",
                          "typeString": "type(struct Repo.Version storage pointer)"
                        }
                      },
                      "id": 7854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2731:58:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$7724_memory",
                        "typeString": "struct Repo.Version memory"
                      }
                    },
                    "src": "2709:80:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$7724_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "id": 7856,
                  "nodeType": "ExpressionStatement",
                  "src": "2709:80:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7857,
                        "name": "versionIdForSemantic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7734,
                        "src": "2799:20:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 7861,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7859,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7763,
                            "src": "2840:19:13",
                            "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": 7858,
                          "name": "semanticVersionHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8090,
                          "src": "2820:19:13",
                          "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": 7860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2820:40:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2799:62:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7862,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7843,
                      "src": "2864:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2799:74:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7864,
                  "nodeType": "ExpressionStatement",
                  "src": "2799:74:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7865,
                        "name": "latestVersionIdForContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7738,
                        "src": "2883:26:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 7867,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7866,
                        "name": "contractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7774,
                        "src": "2910:15:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2883:43:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7868,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7843,
                      "src": "2929:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2883:55:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7870,
                  "nodeType": "ExpressionStatement",
                  "src": "2883:55:13"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7872,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7843,
                        "src": "2965:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7873,
                        "name": "_newSemanticVersion",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7763,
                        "src": "2976:19:13",
                        "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": 7871,
                      "name": "NewVersion",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7746,
                      "src": "2954:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_array$_t_uint16_$3_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint16[3] memory)"
                      }
                    },
                    "id": 7874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2954:42:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7875,
                  "nodeType": "EmitStatement",
                  "src": "2949:47:13"
                }
              ]
            },
            "documentation": "@notice Create new version for repo\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": 7877,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7770,
                    "name": "CREATE_VERSION_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7706,
                    "src": "1801:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 7771,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7769,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "1796:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1796:25:13"
              }
            ],
            "name": "newVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7763,
                  "name": "_newSemanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7877,
                  "src": "1692:29:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7760,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1692:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7762,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7761,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1699:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1692:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7765,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7877,
                  "src": "1731:24:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7764,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1731:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7767,
                  "name": "_contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7877,
                  "src": "1765:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7766,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1765:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1682:106:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7772,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1826:0:13"
            },
            "scope": 8091,
            "src": "1663:1340:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7894,
              "nodeType": "Block",
              "src": "3121:61:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7889,
                          "name": "versionsNextIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7726,
                          "src": "3153:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3173:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3153:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7888,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7978,
                      "src": "3138:14:13",
                      "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": 7892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3138:37:13",
                    "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": 7887,
                  "id": 7893,
                  "nodeType": "Return",
                  "src": "3131:44:13"
                }
              ]
            },
            "documentation": null,
            "id": 7895,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7878,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3027:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7882,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7895,
                  "src": "3051:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7879,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3051:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7881,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3058:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3051:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7884,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7895,
                  "src": "3078:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7883,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3078:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7886,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7895,
                  "src": "3103:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7885,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3103:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3050:70:13"
            },
            "scope": 8091,
            "src": "3009:173:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7914,
              "nodeType": "Block",
              "src": "3370:84:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7909,
                          "name": "latestVersionIdForContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7738,
                          "src": "3402:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 7911,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7910,
                          "name": "_contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7897,
                          "src": "3429:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3402:44:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7908,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7978,
                      "src": "3387:14:13",
                      "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": 7912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3387:60:13",
                    "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": 7907,
                  "id": 7913,
                  "nodeType": "Return",
                  "src": "3380:67:13"
                }
              ]
            },
            "documentation": null,
            "id": 7915,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatestForContractAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7897,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3225:24:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3225:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3224:26:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7902,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3296:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7899,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3296:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7901,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3303:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3296:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7904,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3323:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7903,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3323:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7906,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3348:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7905,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3348:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3295:70:13"
            },
            "scope": 8091,
            "src": "3188:266:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7938,
              "nodeType": "Block",
              "src": "3637:99:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7931,
                          "name": "versionIdForSemantic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7734,
                          "src": "3669:20:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                          }
                        },
                        "id": 7935,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7933,
                              "name": "_semanticVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7919,
                              "src": "3710:16:13",
                              "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": 7932,
                            "name": "semanticVersionHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8090,
                            "src": "3690:19:13",
                            "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": 7934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3690:37:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3669:59:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7930,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7978,
                      "src": "3654:14:13",
                      "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": 7936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3654:75:13",
                    "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": 7929,
                  "id": 7937,
                  "nodeType": "Return",
                  "src": "3647:82:13"
                }
              ]
            },
            "documentation": null,
            "id": 7939,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBySemanticVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7919,
                  "name": "_semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3490:26:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7916,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3490:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7918,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7917,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3497:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3490:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3489:28:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7924,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3563:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7921,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3563:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7923,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7922,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3570:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3563:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7926,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3590:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7925,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3590:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7928,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3615:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7927,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3615:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3562:70:13"
            },
            "scope": 8091,
            "src": "3460:276:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7977,
              "nodeType": "Block",
              "src": "3874:243:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7953,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7941,
                            "src": "3892:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3905:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3892:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7956,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7941,
                            "src": "3910:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7957,
                            "name": "versionsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7726,
                            "src": "3923:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3910:30:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3892:48:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7960,
                        "name": "ERROR_INEXISTENT_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7715,
                        "src": "3942:24:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7952,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3884:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3884:83:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7962,
                  "nodeType": "ExpressionStatement",
                  "src": "3884:83:13"
                },
                {
                  "assignments": [
                    7964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7964,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 7978,
                      "src": "3977:23:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                        "typeString": "struct Repo.Version"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7963,
                        "name": "Version",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7724,
                        "src": "3977:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                          "typeString": "struct Repo.Version"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7968,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7965,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7730,
                      "src": "4003:8:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                        "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                      }
                    },
                    "id": 7967,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7966,
                      "name": "_versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7941,
                      "src": "4012:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4003:20:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$7724_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3977:46:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7969,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7964,
                          "src": "4041:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 7970,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "semanticVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7719,
                        "src": "4041:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage",
                          "typeString": "uint16[3] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7971,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7964,
                          "src": "4066:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 7972,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7721,
                        "src": "4066:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7973,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7964,
                          "src": "4091:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 7974,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contentURI",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7723,
                        "src": "4091:18:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "id": 7975,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4040:70:13",
                    "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": 7951,
                  "id": 7976,
                  "nodeType": "Return",
                  "src": "4033:77:13"
                }
              ]
            },
            "documentation": null,
            "id": 7978,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByVersionId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7941,
                  "name": "_versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3766:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7940,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3766:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3765:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7946,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3804:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7943,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3804:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7945,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3811:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3804:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7948,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3831:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3831:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7950,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3856:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7949,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3856:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3803:70:13"
            },
            "scope": 8091,
            "src": "3742:375:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7987,
              "nodeType": "Block",
              "src": "4181:45:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7983,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "4198:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4218:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "4198:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7982,
                  "id": 7986,
                  "nodeType": "Return",
                  "src": "4191:28:13"
                }
              ]
            },
            "documentation": null,
            "id": 7988,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getVersionsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4148:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7981,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7988,
                  "src": "4172:7:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7980,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4172:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4171:9:13"
            },
            "scope": 8091,
            "src": "4123:103:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8064,
              "nodeType": "Block",
              "src": "4326:506:13",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8002,
                      "name": "hasBumped",
                      "nodeType": "VariableDeclaration",
                      "scope": 8065,
                      "src": "4336:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8001,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4336:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8003,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4336:14:13"
                },
                {
                  "assignments": [
                    8005
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8005,
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "scope": 8065,
                      "src": "4360:6:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8004,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4360:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8007,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 8006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4369:1:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4360:10:13"
                },
                {
                  "body": {
                    "id": 8060,
                    "nodeType": "Block",
                    "src": "4394:406:13",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 8011,
                          "name": "hasBumped",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8002,
                          "src": "4412:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "id": 8028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8022,
                                "name": "_newVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7996,
                                "src": "4543:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 8024,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8023,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8005,
                                "src": "4555:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4543:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8025,
                                "name": "_oldVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7992,
                                "src": "4561:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 8027,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8026,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8005,
                                "src": "4573:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4561:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "4543:32:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 8055,
                          "nodeType": "IfStatement",
                          "src": "4539:234:13",
                          "trueBody": {
                            "id": 8054,
                            "nodeType": "Block",
                            "src": "4577:196:13",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 8045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 8035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8029,
                                        "name": "_oldVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7992,
                                        "src": "4599:11:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 8031,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8030,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8005,
                                        "src": "4611:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4599:14:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8032,
                                        "name": "_newVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7996,
                                        "src": "4616:11:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 8034,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8033,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8005,
                                        "src": "4628:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4616:14:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "src": "4599:31:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 8044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 8042,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 8036,
                                          "name": "_newVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7996,
                                          "src": "4634:11:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 8038,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 8037,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8005,
                                          "src": "4646:1:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4634:14:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 8039,
                                          "name": "_oldVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7992,
                                          "src": "4651:11:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 8041,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 8040,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8005,
                                          "src": "4663:1:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4651:14:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "4634:31:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 8043,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4669:1:13",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4634:36:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "4599:71:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 8049,
                                "nodeType": "IfStatement",
                                "src": "4595:130:13",
                                "trueBody": {
                                  "id": 8048,
                                  "nodeType": "Block",
                                  "src": "4672:53:13",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 8046,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4701:5:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "functionReturnParameters": 8000,
                                      "id": 8047,
                                      "nodeType": "Return",
                                      "src": "4694:12:13"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 8050,
                                    "name": "hasBumped",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8002,
                                    "src": "4742:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 8051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4754:4:13",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  "src": "4742:16:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 8053,
                                "nodeType": "ExpressionStatement",
                                "src": "4742:16:13"
                              }
                            ]
                          }
                        },
                        "id": 8056,
                        "nodeType": "IfStatement",
                        "src": "4408:365:13",
                        "trueBody": {
                          "id": 8021,
                          "nodeType": "Block",
                          "src": "4423:110:13",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 8016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8012,
                                    "name": "_newVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7996,
                                    "src": "4445:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 8014,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8013,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8005,
                                    "src": "4457:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4445:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 8015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4463:1:13",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4445:19:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 8020,
                              "nodeType": "IfStatement",
                              "src": "4441:78:13",
                              "trueBody": {
                                "id": 8019,
                                "nodeType": "Block",
                                "src": "4466:53:13",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 8017,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4495:5:13",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "functionReturnParameters": 8000,
                                    "id": 8018,
                                    "nodeType": "Return",
                                    "src": "4488:12:13"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4786:3:13",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 8057,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8005,
                            "src": "4786:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8059,
                        "nodeType": "ExpressionStatement",
                        "src": "4786:3:13"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8008,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8005,
                      "src": "4387:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 8009,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4391:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "4387:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8061,
                  "nodeType": "WhileStatement",
                  "src": "4380:420:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8062,
                    "name": "hasBumped",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8002,
                    "src": "4816:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8000,
                  "id": 8063,
                  "nodeType": "Return",
                  "src": "4809:16:13"
                }
              ]
            },
            "documentation": null,
            "id": 8065,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isValidBump",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7992,
                  "name": "_oldVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 8065,
                  "src": "4253:21:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7989,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4253:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7991,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4260:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4253:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7996,
                  "name": "_newVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 8065,
                  "src": "4276:21:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7993,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4276:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7995,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4283:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4276:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4252:46:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 8000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7999,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8065,
                  "src": "4320:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7998,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4320:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4319:6:13"
            },
            "scope": 8091,
            "src": "4232:600:13",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8089,
              "nodeType": "Block",
              "src": "4918:87:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8077,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8069,
                              "src": "4962:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 8079,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4970:1:13",
                              "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": "4962:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8080,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8069,
                              "src": "4974:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 8082,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 8081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4982:1:13",
                              "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": "4974:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8083,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8069,
                              "src": "4986:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 8085,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 8084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4994:1:13",
                              "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": "4986:10:13",
                            "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": 8075,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12657,
                            "src": "4945:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 8076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4945:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 8086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4945:52:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 8074,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12664,
                      "src": "4935:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 8087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4935:63:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8073,
                  "id": 8088,
                  "nodeType": "Return",
                  "src": "4928:70:13"
                }
              ]
            },
            "documentation": null,
            "id": 8090,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "semanticVersionHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8069,
                  "name": "version",
                  "nodeType": "VariableDeclaration",
                  "scope": 8090,
                  "src": "4867:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8066,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4867:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 8068,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 8067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4874:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4867:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4866:19:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 8073,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8072,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8090,
                  "src": "4909:7:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4909:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4908:9:13"
            },
            "scope": 8091,
            "src": "4838:167:13",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 8092,
        "src": "136:4871:13"
      }
    ],
    "src": "0:5008:13"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
    "exportedSymbols": {
      "Repo": [
        8091
      ]
    },
    "id": 8092,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7700,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:13"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 7701,
        "nodeType": "ImportDirective",
        "scope": 8092,
        "sourceUnit": 8476,
        "src": "25:31:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7702,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8475,
              "src": "153:9:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$8475",
                "typeString": "contract AragonApp"
              }
            },
            "id": 7703,
            "nodeType": "InheritanceSpecifier",
            "src": "153:9:13"
          }
        ],
        "contractDependencies": [
          7585,
          8347,
          8475,
          8488,
          8621,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9476,
          9503,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8091,
        "linearizedBaseContracts": [
          8091,
          8475,
          7585,
          9476,
          10769,
          9503,
          9066,
          8789,
          8621,
          8663,
          8488,
          8822,
          8761,
          8869,
          8347
        ],
        "name": "Repo",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 7706,
            "name": "CREATE_VERSION_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "299:112:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7704,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "299:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831663536636665636433353935613265366363316137653663623062323064663834636462643932656666326665653535346537306534653435613961376438",
              "id": 7705,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "345:66:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_14175082199951049120475530292950009820264027334869017275878805295387074209752_by_1",
                "typeString": "int_const 1417...(69 digits omitted)...9752"
              },
              "value": "0x1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7709,
            "name": "ERROR_INVALID_BUMP",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "418:64:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7707,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "418:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f42554d50",
              "id": 7708,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "463:19:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c0d2c819b356f0b10a55bac630c3c4d815e692fe9311b1cc8ba83e3426876fef",
                "typeString": "literal_string \"REPO_INVALID_BUMP\""
              },
              "value": "REPO_INVALID_BUMP"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7712,
            "name": "ERROR_INVALID_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "488:70:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7710,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "488:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e56414c49445f56455253494f4e",
              "id": 7711,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "536:22:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4cb22c000e9208b6bc05026718966e45afadcffb33436bfbd76270772bf274ce",
                "typeString": "literal_string \"REPO_INVALID_VERSION\""
              },
              "value": "REPO_INVALID_VERSION"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7715,
            "name": "ERROR_INEXISTENT_VERSION",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "564:76:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7713,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "564:6:13",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5245504f5f494e4558495354454e545f56455253494f4e",
              "id": 7714,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "615:25:13",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3852a5fcaceec25ac63b67717534646986c61c9e3305147343a4b721cbdc0f13",
                "typeString": "literal_string \"REPO_INEXISTENT_VERSION\""
              },
              "value": "REPO_INEXISTENT_VERSION"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Repo.Version",
            "id": 7724,
            "members": [
              {
                "constant": false,
                "id": 7719,
                "name": "semanticVersion",
                "nodeType": "VariableDeclaration",
                "scope": 7724,
                "src": "672:25:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                  "typeString": "uint16[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 7716,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "672:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 7718,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 7717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "679:1:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "672:9:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                    "typeString": "uint16[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 7721,
                "name": "contractAddress",
                "nodeType": "VariableDeclaration",
                "scope": 7724,
                "src": "707:23:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 7720,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "707:7:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 7723,
                "name": "contentURI",
                "nodeType": "VariableDeclaration",
                "scope": 7724,
                "src": "740:16:13",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 7722,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:5:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Version",
            "nodeType": "StructDefinition",
            "scope": 8091,
            "src": "647:116:13",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7726,
            "name": "versionsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "769:34:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 7725,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "769:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 7730,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "809:46:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
              "typeString": "mapping(uint256 => struct Repo.Version)"
            },
            "typeName": {
              "id": 7729,
              "keyType": {
                "id": 7727,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "818:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "809:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                "typeString": "mapping(uint256 => struct Repo.Version)"
              },
              "valueType": {
                "contractScope": null,
                "id": 7728,
                "name": "Version",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 7724,
                "src": "829:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                  "typeString": "struct Repo.Version"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 7734,
            "name": "versionIdForSemantic",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "861:58:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 7733,
              "keyType": {
                "id": 7731,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "870:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "861:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 7732,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "881:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 7738,
            "name": "latestVersionIdForContract",
            "nodeType": "VariableDeclaration",
            "scope": 8091,
            "src": "925:64:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 7737,
              "keyType": {
                "id": 7735,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "934:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "925:28:13",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 7736,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "945:7:13",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7746,
            "name": "NewVersion",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7740,
                  "indexed": false,
                  "name": "versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7746,
                  "src": "1013:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7739,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7744,
                  "indexed": false,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7746,
                  "src": "1032:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7741,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1032:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7743,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7742,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1039:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1032:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1012:46:13"
            },
            "src": "996:63:13"
          },
          {
            "body": {
              "id": 7758,
              "nodeType": "Block",
              "src": "1266:61:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7751,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "1276:11:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1276:13:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7753,
                  "nodeType": "ExpressionStatement",
                  "src": "1276:13:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7754,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "1299:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1319:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1299:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7757,
                  "nodeType": "ExpressionStatement",
                  "src": "1299:21:13"
                }
              ]
            },
            "documentation": "@dev Initialize can only be called once. It saves the block number in which it was initialized.\n@notice Initializes a Repo to be usable",
            "id": 7759,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7749,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7748,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "1257:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1257:8:13"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7747,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1247:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7750,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1266:0:13"
            },
            "scope": 8091,
            "src": "1228:99:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7876,
              "nodeType": "Block",
              "src": "1826:1177:13",
              "statements": [
                {
                  "assignments": [
                    7774
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7774,
                      "name": "contractAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "1836:23:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7773,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1836:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7776,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7775,
                    "name": "_contractAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7765,
                    "src": "1862:16:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1836:42:13"
                },
                {
                  "assignments": [
                    7778
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7778,
                      "name": "lastVersionIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "1888:24:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7777,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1888:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7782,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7779,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "1915:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7780,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1935:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1915:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1888:48:13"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7787,
                      "name": "lastSematicVersion",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "1947:35:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                        "typeString": "uint16[3]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7785,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1947:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 7786,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 7784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1954:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "3"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "1947:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                          "typeString": "uint16[3]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7788,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1947:35:13"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7789,
                      "name": "lastVersionIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7778,
                      "src": "1997:16:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7790,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2016:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1997:20:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7833,
                  "nodeType": "IfStatement",
                  "src": "1993:565:13",
                  "trueBody": {
                    "id": 7832,
                    "nodeType": "Block",
                    "src": "2019:539:13",
                    "statements": [
                      {
                        "assignments": [
                          7793
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7793,
                            "name": "lastVersion",
                            "nodeType": "VariableDeclaration",
                            "scope": 7877,
                            "src": "2033:27:13",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                              "typeString": "struct Repo.Version"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7792,
                              "name": "Version",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7724,
                              "src": "2033:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                "typeString": "struct Repo.Version"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7797,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7794,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7730,
                            "src": "2063:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                              "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                            }
                          },
                          "id": 7796,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7795,
                            "name": "lastVersionIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7778,
                            "src": "2072:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2063:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage",
                            "typeString": "struct Repo.Version storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2033:56:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7798,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7787,
                            "src": "2103:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7799,
                              "name": "lastVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7793,
                              "src": "2124:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                "typeString": "struct Repo.Version storage pointer"
                              }
                            },
                            "id": 7800,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "semanticVersion",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7719,
                            "src": "2124:27:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_storage",
                              "typeString": "uint16[3] storage ref"
                            }
                          },
                          "src": "2103:48:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        "id": 7802,
                        "nodeType": "ExpressionStatement",
                        "src": "2103:48:13"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7803,
                            "name": "contractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7774,
                            "src": "2170:15:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2197:1:13",
                                "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": 7804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2189:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 7806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2189:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2170:29:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7814,
                        "nodeType": "IfStatement",
                        "src": "2166:113:13",
                        "trueBody": {
                          "id": 7813,
                          "nodeType": "Block",
                          "src": "2201:78:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 7808,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7774,
                                  "src": "2219:15:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7809,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7793,
                                    "src": "2237:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 7810,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7721,
                                  "src": "2237:27:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2219:45:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7812,
                              "nodeType": "ExpressionStatement",
                              "src": "2219:45:13"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 7828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7816,
                                    "name": "lastVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7793,
                                    "src": "2389:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                      "typeString": "struct Repo.Version storage pointer"
                                    }
                                  },
                                  "id": 7817,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "contractAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7721,
                                  "src": "2389:27:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7818,
                                  "name": "contractAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7774,
                                  "src": "2420:15:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2389:46:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 7827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7820,
                                    "name": "_newSemanticVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7763,
                                    "src": "2439:19:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 7822,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2459:1:13",
                                    "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": "2439:22:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7823,
                                      "name": "lastVersion",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7793,
                                      "src": "2464:11:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                                        "typeString": "struct Repo.Version storage pointer"
                                      }
                                    },
                                    "id": 7824,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "semanticVersion",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7719,
                                    "src": "2464:27:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_storage",
                                      "typeString": "uint16[3] storage ref"
                                    }
                                  },
                                  "id": 7826,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2492:1:13",
                                    "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": "2464:30:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2439:55:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2389:105:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7829,
                              "name": "ERROR_INVALID_VERSION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7712,
                              "src": "2512:21:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7815,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              12673,
                              12674
                            ],
                            "referencedDeclaration": 12674,
                            "src": "2364:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2364:183:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7831,
                        "nodeType": "ExpressionStatement",
                        "src": "2364:183:13"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7836,
                            "name": "lastSematicVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7787,
                            "src": "2588:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                              "typeString": "uint16[3] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7837,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7763,
                            "src": "2608:19:13",
                            "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": 7835,
                          "name": "isValidBump",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8065,
                          "src": "2576:11:13",
                          "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": 7838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2576:52:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7839,
                        "name": "ERROR_INVALID_BUMP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7709,
                        "src": "2630:18:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7834,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2568:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2568:81:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7841,
                  "nodeType": "ExpressionStatement",
                  "src": "2568:81:13"
                },
                {
                  "assignments": [
                    7843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7843,
                      "name": "versionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7877,
                      "src": "2660:17:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7842,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2660:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7846,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2680:19:13",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 7844,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "2680:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2660:39:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7847,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7730,
                        "src": "2709:8:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                          "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                        }
                      },
                      "id": 7849,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7848,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7843,
                        "src": "2718:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2709:19:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$7724_storage",
                        "typeString": "struct Repo.Version storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7851,
                          "name": "_newSemanticVersion",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7763,
                          "src": "2739:19:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                            "typeString": "uint16[3] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7852,
                          "name": "contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7774,
                          "src": "2760:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 7853,
                          "name": "_contentURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7767,
                          "src": "2777:11:13",
                          "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": 7850,
                        "name": "Version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7724,
                        "src": "2731:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Version_$7724_storage_ptr_$",
                          "typeString": "type(struct Repo.Version storage pointer)"
                        }
                      },
                      "id": 7854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2731:58:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$7724_memory",
                        "typeString": "struct Repo.Version memory"
                      }
                    },
                    "src": "2709:80:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$7724_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "id": 7856,
                  "nodeType": "ExpressionStatement",
                  "src": "2709:80:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7857,
                        "name": "versionIdForSemantic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7734,
                        "src": "2799:20:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 7861,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7859,
                            "name": "_newSemanticVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7763,
                            "src": "2840:19:13",
                            "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": 7858,
                          "name": "semanticVersionHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8090,
                          "src": "2820:19:13",
                          "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": 7860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2820:40:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2799:62:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7862,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7843,
                      "src": "2864:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2799:74:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7864,
                  "nodeType": "ExpressionStatement",
                  "src": "2799:74:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7865,
                        "name": "latestVersionIdForContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7738,
                        "src": "2883:26:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 7867,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7866,
                        "name": "contractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7774,
                        "src": "2910:15:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2883:43:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7868,
                      "name": "versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7843,
                      "src": "2929:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2883:55:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7870,
                  "nodeType": "ExpressionStatement",
                  "src": "2883:55:13"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7872,
                        "name": "versionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7843,
                        "src": "2965:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7873,
                        "name": "_newSemanticVersion",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7763,
                        "src": "2976:19:13",
                        "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": 7871,
                      "name": "NewVersion",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7746,
                      "src": "2954:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_array$_t_uint16_$3_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,uint16[3] memory)"
                      }
                    },
                    "id": 7874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2954:42:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7875,
                  "nodeType": "EmitStatement",
                  "src": "2949:47:13"
                }
              ]
            },
            "documentation": "@notice Create new version for repo\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": 7877,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7770,
                    "name": "CREATE_VERSION_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7706,
                    "src": "1801:19:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 7771,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7769,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "1796:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1796:25:13"
              }
            ],
            "name": "newVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7763,
                  "name": "_newSemanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7877,
                  "src": "1692:29:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7760,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1692:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7762,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7761,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1699:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1692:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7765,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7877,
                  "src": "1731:24:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7764,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1731:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7767,
                  "name": "_contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7877,
                  "src": "1765:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7766,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1765:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1682:106:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7772,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1826:0:13"
            },
            "scope": 8091,
            "src": "1663:1340:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7894,
              "nodeType": "Block",
              "src": "3121:61:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7889,
                          "name": "versionsNextIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7726,
                          "src": "3153:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3173:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3153:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7888,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7978,
                      "src": "3138:14:13",
                      "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": 7892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3138:37:13",
                    "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": 7887,
                  "id": 7893,
                  "nodeType": "Return",
                  "src": "3131:44:13"
                }
              ]
            },
            "documentation": null,
            "id": 7895,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7878,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3027:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7882,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7895,
                  "src": "3051:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7879,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3051:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7881,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3058:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3051:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7884,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7895,
                  "src": "3078:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7883,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3078:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7886,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7895,
                  "src": "3103:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7885,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3103:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3050:70:13"
            },
            "scope": 8091,
            "src": "3009:173:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7914,
              "nodeType": "Block",
              "src": "3370:84:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7909,
                          "name": "latestVersionIdForContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7738,
                          "src": "3402:26:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 7911,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7910,
                          "name": "_contractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7897,
                          "src": "3429:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3402:44:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7908,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7978,
                      "src": "3387:14:13",
                      "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": 7912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3387:60:13",
                    "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": 7907,
                  "id": 7913,
                  "nodeType": "Return",
                  "src": "3380:67:13"
                }
              ]
            },
            "documentation": null,
            "id": 7915,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getLatestForContractAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7897,
                  "name": "_contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3225:24:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3225:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3224:26:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7902,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3296:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7899,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3296:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7901,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3303:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3296:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7904,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3323:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7903,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3323:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7906,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7915,
                  "src": "3348:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7905,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3348:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3295:70:13"
            },
            "scope": 8091,
            "src": "3188:266:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7938,
              "nodeType": "Block",
              "src": "3637:99:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7931,
                          "name": "versionIdForSemantic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7734,
                          "src": "3669:20:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                          }
                        },
                        "id": 7935,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7933,
                              "name": "_semanticVersion",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7919,
                              "src": "3710:16:13",
                              "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": 7932,
                            "name": "semanticVersionHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8090,
                            "src": "3690:19:13",
                            "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": 7934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3690:37:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3669:59:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7930,
                      "name": "getByVersionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7978,
                      "src": "3654:14:13",
                      "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": 7936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3654:75:13",
                    "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": 7929,
                  "id": 7937,
                  "nodeType": "Return",
                  "src": "3647:82:13"
                }
              ]
            },
            "documentation": null,
            "id": 7939,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBySemanticVersion",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7919,
                  "name": "_semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3490:26:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7916,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3490:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7918,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7917,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3497:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3490:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3489:28:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7924,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3563:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7921,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3563:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7923,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7922,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3570:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3563:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7926,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3590:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7925,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3590:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7928,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7939,
                  "src": "3615:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7927,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3615:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3562:70:13"
            },
            "scope": 8091,
            "src": "3460:276:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7977,
              "nodeType": "Block",
              "src": "3874:243:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7953,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7941,
                            "src": "3892:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3905:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3892:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7956,
                            "name": "_versionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7941,
                            "src": "3910:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7957,
                            "name": "versionsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7726,
                            "src": "3923:17:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3910:30:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3892:48:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7960,
                        "name": "ERROR_INEXISTENT_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7715,
                        "src": "3942:24:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7952,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3884:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3884:83:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7962,
                  "nodeType": "ExpressionStatement",
                  "src": "3884:83:13"
                },
                {
                  "assignments": [
                    7964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7964,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 7978,
                      "src": "3977:23:13",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                        "typeString": "struct Repo.Version"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7963,
                        "name": "Version",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7724,
                        "src": "3977:7:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                          "typeString": "struct Repo.Version"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7968,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7965,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7730,
                      "src": "4003:8:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Version_$7724_storage_$",
                        "typeString": "mapping(uint256 => struct Repo.Version storage ref)"
                      }
                    },
                    "id": 7967,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7966,
                      "name": "_versionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7941,
                      "src": "4012:10:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4003:20:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Version_$7724_storage",
                      "typeString": "struct Repo.Version storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3977:46:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7969,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7964,
                          "src": "4041:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 7970,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "semanticVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7719,
                        "src": "4041:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint16_$3_storage",
                          "typeString": "uint16[3] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7971,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7964,
                          "src": "4066:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 7972,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7721,
                        "src": "4066:23:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7973,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7964,
                          "src": "4091:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Version_$7724_storage_ptr",
                            "typeString": "struct Repo.Version storage pointer"
                          }
                        },
                        "id": 7974,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contentURI",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7723,
                        "src": "4091:18:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "id": 7975,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4040:70:13",
                    "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": 7951,
                  "id": 7976,
                  "nodeType": "Return",
                  "src": "4033:77:13"
                }
              ]
            },
            "documentation": null,
            "id": 7978,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByVersionId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7941,
                  "name": "_versionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3766:15:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7940,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3766:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3765:17:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7946,
                  "name": "semanticVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3804:25:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7943,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "3804:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7945,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3811:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3804:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7948,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3831:23:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3831:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7950,
                  "name": "contentURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 7978,
                  "src": "3856:16:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7949,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3856:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3803:70:13"
            },
            "scope": 8091,
            "src": "3742:375:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7987,
              "nodeType": "Block",
              "src": "4181:45:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7983,
                      "name": "versionsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7726,
                      "src": "4198:17:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4218:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "4198:21:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7982,
                  "id": 7986,
                  "nodeType": "Return",
                  "src": "4191:28:13"
                }
              ]
            },
            "documentation": null,
            "id": 7988,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getVersionsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4148:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 7982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7981,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7988,
                  "src": "4172:7:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7980,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4172:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4171:9:13"
            },
            "scope": 8091,
            "src": "4123:103:13",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8064,
              "nodeType": "Block",
              "src": "4326:506:13",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8002,
                      "name": "hasBumped",
                      "nodeType": "VariableDeclaration",
                      "scope": 8065,
                      "src": "4336:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8001,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4336:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8003,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4336:14:13"
                },
                {
                  "assignments": [
                    8005
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8005,
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "scope": 8065,
                      "src": "4360:6:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8004,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4360:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8007,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 8006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4369:1:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4360:10:13"
                },
                {
                  "body": {
                    "id": 8060,
                    "nodeType": "Block",
                    "src": "4394:406:13",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 8011,
                          "name": "hasBumped",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8002,
                          "src": "4412:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "id": 8028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8022,
                                "name": "_newVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7996,
                                "src": "4543:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 8024,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8023,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8005,
                                "src": "4555:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4543:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8025,
                                "name": "_oldVersion",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7992,
                                "src": "4561:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              },
                              "id": 8027,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8026,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8005,
                                "src": "4573:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4561:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "src": "4543:32:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 8055,
                          "nodeType": "IfStatement",
                          "src": "4539:234:13",
                          "trueBody": {
                            "id": 8054,
                            "nodeType": "Block",
                            "src": "4577:196:13",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 8045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 8035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8029,
                                        "name": "_oldVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7992,
                                        "src": "4599:11:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 8031,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8030,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8005,
                                        "src": "4611:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4599:14:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8032,
                                        "name": "_newVersion",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7996,
                                        "src": "4616:11:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      },
                                      "id": 8034,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8033,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8005,
                                        "src": "4628:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4616:14:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "src": "4599:31:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 8044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "id": 8042,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 8036,
                                          "name": "_newVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7996,
                                          "src": "4634:11:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 8038,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 8037,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8005,
                                          "src": "4646:1:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4634:14:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 8039,
                                          "name": "_oldVersion",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7992,
                                          "src": "4651:11:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                            "typeString": "uint16[3] memory"
                                          }
                                        },
                                        "id": 8041,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 8040,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8005,
                                          "src": "4663:1:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4651:14:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "4634:31:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 8043,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4669:1:13",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4634:36:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "4599:71:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": null,
                                "id": 8049,
                                "nodeType": "IfStatement",
                                "src": "4595:130:13",
                                "trueBody": {
                                  "id": 8048,
                                  "nodeType": "Block",
                                  "src": "4672:53:13",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 8046,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4701:5:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "functionReturnParameters": 8000,
                                      "id": 8047,
                                      "nodeType": "Return",
                                      "src": "4694:12:13"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 8050,
                                    "name": "hasBumped",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8002,
                                    "src": "4742:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 8051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4754:4:13",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  "src": "4742:16:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 8053,
                                "nodeType": "ExpressionStatement",
                                "src": "4742:16:13"
                              }
                            ]
                          }
                        },
                        "id": 8056,
                        "nodeType": "IfStatement",
                        "src": "4408:365:13",
                        "trueBody": {
                          "id": 8021,
                          "nodeType": "Block",
                          "src": "4423:110:13",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                "id": 8016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8012,
                                    "name": "_newVersion",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7996,
                                    "src": "4445:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                      "typeString": "uint16[3] memory"
                                    }
                                  },
                                  "id": 8014,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8013,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8005,
                                    "src": "4457:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4445:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 8015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4463:1:13",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4445:19:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 8020,
                              "nodeType": "IfStatement",
                              "src": "4441:78:13",
                              "trueBody": {
                                "id": 8019,
                                "nodeType": "Block",
                                "src": "4466:53:13",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "hexValue": "66616c7365",
                                      "id": 8017,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4495:5:13",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "functionReturnParameters": 8000,
                                    "id": 8018,
                                    "nodeType": "Return",
                                    "src": "4488:12:13"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4786:3:13",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 8057,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8005,
                            "src": "4786:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8059,
                        "nodeType": "ExpressionStatement",
                        "src": "4786:3:13"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8008,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8005,
                      "src": "4387:1:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 8009,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4391:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "4387:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8061,
                  "nodeType": "WhileStatement",
                  "src": "4380:420:13"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8062,
                    "name": "hasBumped",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8002,
                    "src": "4816:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8000,
                  "id": 8063,
                  "nodeType": "Return",
                  "src": "4809:16:13"
                }
              ]
            },
            "documentation": null,
            "id": 8065,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isValidBump",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7992,
                  "name": "_oldVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 8065,
                  "src": "4253:21:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7989,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4253:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7991,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4260:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4253:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7996,
                  "name": "_newVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 8065,
                  "src": "4276:21:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7993,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4276:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7995,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 7994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4283:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4276:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4252:46:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 8000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7999,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8065,
                  "src": "4320:4:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7998,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4320:4:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4319:6:13"
            },
            "scope": 8091,
            "src": "4232:600:13",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8089,
              "nodeType": "Block",
              "src": "4918:87:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8077,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8069,
                              "src": "4962:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 8079,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4970:1:13",
                              "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": "4962:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8080,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8069,
                              "src": "4974:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 8082,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 8081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4982:1:13",
                              "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": "4974:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8083,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8069,
                              "src": "4986:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                "typeString": "uint16[3] memory"
                              }
                            },
                            "id": 8085,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 8084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4994:1:13",
                              "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": "4986:10:13",
                            "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": 8075,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12657,
                            "src": "4945:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 8076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4945:16:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 8086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4945:52:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 8074,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12664,
                      "src": "4935:9:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 8087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4935:63:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 8073,
                  "id": 8088,
                  "nodeType": "Return",
                  "src": "4928:70:13"
                }
              ]
            },
            "documentation": null,
            "id": 8090,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "semanticVersionHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8069,
                  "name": "version",
                  "nodeType": "VariableDeclaration",
                  "scope": 8090,
                  "src": "4867:17:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                    "typeString": "uint16[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 8066,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4867:6:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 8068,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 8067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4874:1:13",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "4867:9:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$3_storage_ptr",
                      "typeString": "uint16[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4866:19:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 8073,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8072,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8090,
                  "src": "4909:7:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4909:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4908:9:13"
            },
            "scope": 8091,
            "src": "4838:167:13",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 8092,
        "src": "136:4871:13"
      }
    ],
    "src": "0:5008:13"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.496Z",
  "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": "Initializes a Repo to be usable"
      },
      "newVersion(uint16[3],address,bytes)": {
        "notice": "Create new version for repo"
      },
      "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."
      }
    }
  }
}