{
  "contractName": "StellarCreditCustodian",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "add",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_prevTypeID",
          "type": "uint256"
        }
      ],
      "name": "remove",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "linklist",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "assets",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_credit",
          "type": "address"
        },
        {
          "name": "_threshold",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        }
      ],
      "name": "Migrate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Unlock",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Lock",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        }
      ],
      "name": "AddedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        }
      ],
      "name": "RemovedAsset",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "migrationVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "lock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "unlock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.0+commit.1d4f565a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"add\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_prevTypeID\",\"type\":\"uint256\"}],\"name\":\"remove\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"linklist\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"migrationVote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"assets\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_credit\",\"type\":\"address\"},{\"name\":\"_threshold\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Migrate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Unlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"}],\"name\":\"AddedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"}],\"name\":\"RemovedAsset\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"add(uint256)\":{\"params\":{\"_typeID\":\"the ID of credit being added\"}},\"lock(uint256,uint256)\":{\"params\":{\"_typeID\":\"the ID of credit to be locked\",\"_value\":\"amount of tokens to be locked\"}},\"migrationVote(address)\":{\"params\":{\"_to\":\"the new contract to replace this contract\"}},\"remove(uint256,uint256)\":{\"params\":{\"_prevTypeID\":\"the prior credit ID in the linklist\",\"_typeID\":\"the ID of credit being removed\"}},\"unlock(uint256,uint256)\":{\"params\":{\"_typeID\":\"the ID of credit to be transferred\",\"_value\":\"amount of tokens to be transferred\"}}}},\"userdoc\":{\"methods\":{\"add(uint256)\":{\"notice\":\"Add a new asset the whitelist asset database\"},\"lock(uint256,uint256)\":{\"notice\":\"Lock user token the same amount of token will be unlocked on the stellar\"},\"migrationVote(address)\":{\"notice\":\"makes a migration vote to migrate credit contract binding to a new contract also triggers the migration process when the migration vote threshold has reached\"},\"remove(uint256,uint256)\":{\"notice\":\"remove an asset from the whitelist asset database\"},\"unlock(uint256,uint256)\":{\"notice\":\"Transfers some valid token to the destination address. The same amount of token on the stellar will be locked in the stellar lock up account.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/100x/Evrynetlabs/warp-contract/contracts/StellarCreditCustodian.sol\":\"StellarCreditCustodian\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/100x/Evrynetlabs/warp-contract/contracts/ICreditCustodian.sol\":{\"keccak256\":\"0x670aac841c9f839ba580cb00fc9686420a405eaf4d2b1c40e3433e376ec88e6b\",\"urls\":[\"bzzr://cc584593ba8781050bcace5e1104d19b8444b810de32b0be03922d4bad84e786\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/IMetadata.sol\":{\"keccak256\":\"0xc8def8625e9e47bcb14c84cf3413ff505de7befe9f6f553eec623f0318a91ec9\",\"urls\":[\"bzzr://aa4ab5607ca5f7d02d89e5dda48e819e05b3425d2af389d220514acee04ca7fd\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/Metadata.sol\":{\"keccak256\":\"0xcece9f02355b9542ca20bf8dc75a5c4caa7da537596e6ffdc21ecc8e8266608c\",\"urls\":[\"bzzr://c10e4871b1fc49087b86fcd86cb5d0f48090e6c58db52056565e2826d08bd695\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/StellarCreditCustodian.sol\":{\"keccak256\":\"0xeb142324c1ff02987a6a5b76bb2e1c18b9257ed3391abe3dbd59b8bb6516e438\",\"urls\":[\"bzzr://84c7b1c0a5f831f5a32de23fd0110ab8446f83755d10e7be8e61eb4660246634\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol\":{\"keccak256\":\"0xc44d63f8fb3919a9f1ca6f3bb312e5e40b2b27f0bda144940418bf43c3a511e2\",\"urls\":[\"bzzr://63566f9ab6372d1f3ff503eecc8a02255930aa378e5ac9b98170d405935c4707\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/lib/Convert.sol\":{\"keccak256\":\"0x0e099e28785ae2480834c18d444b439c760a5eb96c783a3bf6b0ade9be24a19f\",\"urls\":[\"bzzr://53b0181609a4227f28d9d57a2a17f90f338dee97c96b442db4a8760f8ef0bdb2\"]},\"@evrynetlabs/credit-contract/contracts/EER2A.sol\":{\"keccak256\":\"0xf587547e337ca82e02112b697f9f6575fa2b216b1bdf99bc8f31301e37c9040f\",\"urls\":[\"bzzr://98cea014b451ffecaffd9067997955f5aa82e230c2147dbe8cad4fe1fe45b15a\"]},\"@evrynetlabs/credit-contract/contracts/EER2B.sol\":{\"keccak256\":\"0xd8be5ffa39877c2bb907033c961a3cd297aeb9401bb4b11cdd7816427a85a2f5\",\"urls\":[\"bzzr://1b66a991c02ecd4a20a923dc05fc5560a27c37f20d9941d73ea3d4a6449f3764\"]},\"@evrynetlabs/credit-contract/contracts/IEER2A.sol\":{\"keccak256\":\"0xa966511cbbb94eb21ae8b492f5189deb44d05827b73432bf46dd9e1a5260b4dc\",\"urls\":[\"bzzr://c878777f49799664ac6e583aacde59ea97e894f6a57c3822615f5f7ed8ee26d5\"]},\"@evrynetlabs/credit-contract/contracts/IEER2B.sol\":{\"keccak256\":\"0xfea74ab98ddc2254ae89edd408586a0e8d855cef9ca46f116862ce85f069e214\",\"urls\":[\"bzzr://eac5d51e127ff328ef72b817b946202843d282c36ec49696fb24168d95ea08f3\"]},\"@evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol\":{\"keccak256\":\"0x788e5351918d81c8afe4465fcf2624947e7b2261d85f2f539fea413d85c9128e\",\"urls\":[\"bzzr://df72bbeb95755ea0298775633a45d7e78fffe3c619b2e168309f47d4cc8e07db\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzzr://fc2ba15143ce3a00268ecd15fc98eb2469b18bfe27a64bbab0ac6446f161c739\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xd1804d04fb39689453f673601429a99a0c68c422a981fc338773df9a59180fe9\",\"urls\":[\"bzzr://a7dfb6fc259d0074da840a848461487567e2a6309105dd5c050a4e025f0fa7cb\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzzr://f7f6da60a184233fd666ac44e6fb2bd51ca6ebdc4867a310d368049aa4e62786\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051604080610fa48339810180604052604081101561003057600080fd5b50805160209091015160028054600160a060020a031916600160a060020a039093169290921760a060020a61ffff0219167401000000000000000000000000000000000000000061ffff90921691909102179055610f11806100936000396000f3fe6080604052600436106100665760003560e01c63ffffffff1680631003e2d21461006b5780631338736f146100975780635bfadb24146100c75780636526db7a146100f757806371bc35ab146101275780637ede856414610163578063cf35bdd014610196575b600080fd5b34801561007757600080fd5b506100956004803603602081101561008e57600080fd5b50356101d4565b005b3480156100a357600080fd5b50610095600480360360408110156100ba57600080fd5b50803590602001356106a9565b3480156100d357600080fd5b50610095600480360360408110156100ea57600080fd5b508035906020013561088f565b34801561010357600080fd5b506100956004803603604081101561011a57600080fd5b5080359060200135610af1565b34801561013357600080fd5b506101516004803603602081101561014a57600080fd5b5035610c51565b60408051918252519081900360200190f35b34801561016f57600080fd5b506100956004803603602081101561018657600080fd5b5035600160a060020a0316610c63565b3480156101a257600080fd5b506101c0600480360360208110156101b957600080fd5b5035610ed0565b604080519115158252519081900360200190f35b60008181526020819052604090205460ff1615610287576040805160e560020a62461bcd02815260206004820152604c60248201527f57686974656c6973744173736574733a2063616e6e6f7420616464207468652060448201527f617373657420746861742068617320616c7265616479206265656e20696e207460648201527f68652077686974656c6973740000000000000000000000000000000000000000608482015290519081900360a40190fd5b801515610304576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517f01c376a0000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916301c376a091602480820192600092909190829003018186803b15801561036957600080fd5b505afa15801561037d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156103a657600080fd5b8101908080516401000000008111156103be57600080fd5b820160208101848111156103d157600080fd5b81516401000000008111828201871017156103eb57600080fd5b50506040517f7e4115ba00000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835173__Convert_______________________________9750637e4115ba96509394509283926044019185019080838360005b8381101561046e578181015183820152602001610456565b50505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156104b857600080fd5b505af41580156104cc573d6000803e3d6000fd5b505050506040513d60208110156104e257600080fd5b5051604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2ad5032c0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a03909216916301ffc9a791602480820192602092909190829003018186803b15801561056557600080fd5b505afa158015610579573d6000803e3d6000fd5b505050506040513d602081101561058f57600080fd5b50511515610633576040805160e560020a62461bcd02815260206004820152604160248201527f57686974656c6973744173736574733a20746865206d6574616461746120636f60448201527f6e7472616374206973206e6f7420737570706f7274656420696e74657266616360648201527f6500000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600081815260208181526040808320805460ff191660019081179091559091527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb498054828420558280528390555182917f808590b2e92602ac21a55184174c55027e40248219525b4fbe0f637f5f3a346c91a250565b600082815260208190526040902054829060ff161515610739576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517fbeafd19f00000000000000000000000000000000000000000000000000000000815260048101869052336024820152604481018590529051600160a060020a039092169163beafd19f9160648082019260009290919082900301818387803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050508233600160a060020a031630600160a060020a03167fda16e0e36c9314946d6174ade0a7a5df06ffaf49c5c56d3f01193d53db0ace988560206040519081016040528060008152506040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561084f578181015183820152602001610837565b50505050905090810190601f16801561087c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b600082815260208190526040902054829060ff16151561091f576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805160018082528183019092526060916020808301908038833950506040805160018082528183019092529293506060929150602080830190803883390190505090503382600081518110151561097457fe5b600160a060020a03909216602092830290910190910152805184908290600090811061099c57fe5b60209081029091018101919091526002546040517f78b2722100000000000000000000000000000000000000000000000000000000815260048101888152606060248301908152865160648401528651600160a060020a03909416946378b27221948b948994899490939092604483019260840191878101910280838360005b83811015610a34578181015183820152602001610a1c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610a73578181015183820152602001610a5b565b5050505090500195505050505050600060405180830381600087803b158015610a9b57600080fd5b505af1158015610aaf573d6000803e3d6000fd5b50506040805187815290518893503392507ff7870c5b224cbc19873599e46ccfc7103934650509b1af0c3ce90138377c20049181900360200190a35050505050565b811515610b6e576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600160205260409020548214610bf9576040805160e560020a62461bcd02815260206004820152602860248201527f57686974656c6973744173736574733a20696e76616c69642072656d6f76652060448201527f617267756d656e74000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260208181526040808320805460ff1916905560019091528082208054848452828420558483528290555183917fd8a3abf4ebfa76253e2780cdc5ec4857e8e40886cdcd10b169ecb18052d6ce2291a25050565b60016020526000908152604090205481565b600160a060020a0381166000908152600360209081526040808320338452918290529091205460ff16151560011415610d0c576040805160e560020a62461bcd02815260206004820152602d60248201527f4d6967726174696f6e3a2053656e6465722068617320616c7265616479206d6160448201527f646520612070726f706f73616c00000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152602082905260409020805460ff19166001908117909155818101805461ffff808216909301831661ffff1990911617908190556002547401000000000000000000000000000000000000000090048216911610610ecc576000805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495482905b8015610e9557600254604080517fa048046b00000000000000000000000000000000000000000000000000000000815260048101849052600160a060020a0387811660248301529151919092169163a048046b91604480830192600092919082900301818387803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b5050505081600160a060020a0316631003e2d2826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e6957600080fd5b505af1158015610e7d573d6000803e3d6000fd5b50505060009182525060016020526040902054610d97565b50604051600160a060020a038416907fd58a618a39de682696ea37dd9a6bf9c793afa426fa1438e75c3966e3b541e45a90600090a2505b5050565b60006020819052908152604090205460ff168156fea165627a7a7230582054329811b4671406a4143859d423e43745328e7bc05c6cdd47c9e3ba708e79f70029",
  "deployedBytecode": "0x6080604052600436106100665760003560e01c63ffffffff1680631003e2d21461006b5780631338736f146100975780635bfadb24146100c75780636526db7a146100f757806371bc35ab146101275780637ede856414610163578063cf35bdd014610196575b600080fd5b34801561007757600080fd5b506100956004803603602081101561008e57600080fd5b50356101d4565b005b3480156100a357600080fd5b50610095600480360360408110156100ba57600080fd5b50803590602001356106a9565b3480156100d357600080fd5b50610095600480360360408110156100ea57600080fd5b508035906020013561088f565b34801561010357600080fd5b506100956004803603604081101561011a57600080fd5b5080359060200135610af1565b34801561013357600080fd5b506101516004803603602081101561014a57600080fd5b5035610c51565b60408051918252519081900360200190f35b34801561016f57600080fd5b506100956004803603602081101561018657600080fd5b5035600160a060020a0316610c63565b3480156101a257600080fd5b506101c0600480360360208110156101b957600080fd5b5035610ed0565b604080519115158252519081900360200190f35b60008181526020819052604090205460ff1615610287576040805160e560020a62461bcd02815260206004820152604c60248201527f57686974656c6973744173736574733a2063616e6e6f7420616464207468652060448201527f617373657420746861742068617320616c7265616479206265656e20696e207460648201527f68652077686974656c6973740000000000000000000000000000000000000000608482015290519081900360a40190fd5b801515610304576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517f01c376a0000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916301c376a091602480820192600092909190829003018186803b15801561036957600080fd5b505afa15801561037d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156103a657600080fd5b8101908080516401000000008111156103be57600080fd5b820160208101848111156103d157600080fd5b81516401000000008111828201871017156103eb57600080fd5b50506040517f7e4115ba00000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835173__Convert_______________________________9750637e4115ba96509394509283926044019185019080838360005b8381101561046e578181015183820152602001610456565b50505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156104b857600080fd5b505af41580156104cc573d6000803e3d6000fd5b505050506040513d60208110156104e257600080fd5b5051604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2ad5032c0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a03909216916301ffc9a791602480820192602092909190829003018186803b15801561056557600080fd5b505afa158015610579573d6000803e3d6000fd5b505050506040513d602081101561058f57600080fd5b50511515610633576040805160e560020a62461bcd02815260206004820152604160248201527f57686974656c6973744173736574733a20746865206d6574616461746120636f60448201527f6e7472616374206973206e6f7420737570706f7274656420696e74657266616360648201527f6500000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600081815260208181526040808320805460ff191660019081179091559091527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb498054828420558280528390555182917f808590b2e92602ac21a55184174c55027e40248219525b4fbe0f637f5f3a346c91a250565b600082815260208190526040902054829060ff161515610739576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517fbeafd19f00000000000000000000000000000000000000000000000000000000815260048101869052336024820152604481018590529051600160a060020a039092169163beafd19f9160648082019260009290919082900301818387803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050508233600160a060020a031630600160a060020a03167fda16e0e36c9314946d6174ade0a7a5df06ffaf49c5c56d3f01193d53db0ace988560206040519081016040528060008152506040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561084f578181015183820152602001610837565b50505050905090810190601f16801561087c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b600082815260208190526040902054829060ff16151561091f576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805160018082528183019092526060916020808301908038833950506040805160018082528183019092529293506060929150602080830190803883390190505090503382600081518110151561097457fe5b600160a060020a03909216602092830290910190910152805184908290600090811061099c57fe5b60209081029091018101919091526002546040517f78b2722100000000000000000000000000000000000000000000000000000000815260048101888152606060248301908152865160648401528651600160a060020a03909416946378b27221948b948994899490939092604483019260840191878101910280838360005b83811015610a34578181015183820152602001610a1c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610a73578181015183820152602001610a5b565b5050505090500195505050505050600060405180830381600087803b158015610a9b57600080fd5b505af1158015610aaf573d6000803e3d6000fd5b50506040805187815290518893503392507ff7870c5b224cbc19873599e46ccfc7103934650509b1af0c3ce90138377c20049181900360200190a35050505050565b811515610b6e576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600160205260409020548214610bf9576040805160e560020a62461bcd02815260206004820152602860248201527f57686974656c6973744173736574733a20696e76616c69642072656d6f76652060448201527f617267756d656e74000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260208181526040808320805460ff1916905560019091528082208054848452828420558483528290555183917fd8a3abf4ebfa76253e2780cdc5ec4857e8e40886cdcd10b169ecb18052d6ce2291a25050565b60016020526000908152604090205481565b600160a060020a0381166000908152600360209081526040808320338452918290529091205460ff16151560011415610d0c576040805160e560020a62461bcd02815260206004820152602d60248201527f4d6967726174696f6e3a2053656e6465722068617320616c7265616479206d6160448201527f646520612070726f706f73616c00000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152602082905260409020805460ff19166001908117909155818101805461ffff808216909301831661ffff1990911617908190556002547401000000000000000000000000000000000000000090048216911610610ecc576000805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495482905b8015610e9557600254604080517fa048046b00000000000000000000000000000000000000000000000000000000815260048101849052600160a060020a0387811660248301529151919092169163a048046b91604480830192600092919082900301818387803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b5050505081600160a060020a0316631003e2d2826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e6957600080fd5b505af1158015610e7d573d6000803e3d6000fd5b50505060009182525060016020526040902054610d97565b50604051600160a060020a038416907fd58a618a39de682696ea37dd9a6bf9c793afa426fa1438e75c3966e3b541e45a90600090a2505b5050565b60006020819052908152604090205460ff168156fea165627a7a7230582054329811b4671406a4143859d423e43745328e7bc05c6cdd47c9e3ba708e79f70029",
  "sourceMap": "92:2626:6:-;;;549:119;8:9:-1;5:2;;;30:1;27;20:12;5:2;549:119:6;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;549:119:6;;;;;;;591:6:7;:23;;-1:-1:-1;;;;;;591:23:7;-1:-1:-1;;;;;591:23:7;;;;;;;-1:-1:-1;;;;;;639:22:6;;;;;;;;;;;;;92:2626;;;-1:-1:-1;92:2626:6;;",
  "deployedSourceMap": "92:2626:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1054:667:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1054:667:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1054:667:7;;;;;1847:226:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1847:226:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1847:226:6;;;;;;;;2360:356;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2360:356:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2360:356:6;;;;;;;;2081:396:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2081:396:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2081:396:7;;;;;;;;395:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:43:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;395:43:7;;;;;;;;;;;;;;;;;;;957:690:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;957:690:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;957:690:6;-1:-1:-1;;;;;957:690:6;;;351:38:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;351:38:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;351:38:7;;;;;;;;;;;;;;;;;;;;;1054:667;1124:6;:15;;;;;;;;;;;;;:24;1103:147;;;;;-1:-1:-1;;;;;1103:147:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1268:12;;;1260:70;;;;;-1:-1:-1;;;;;1260:70:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1369:6;;:25;;;;;;;;;;;;;;-1:-1:-1;;;;;1369:6:7;;;;:16;;:25;;;;;:6;;:25;;;;;;;;:6;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;1369:25:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1369:25:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1369:25:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;1369:25:7;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;1369:37:7;;;;;;;;;;;;;;;;;;;;:35;;-1:-1:-1;1369:35:7;;-1:-1:-1;1369:25:7;;-1:-1:-1;1369:37:7;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1369:37:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1369:37:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:37:7;1361:124;;;;;;1443:28;1361:124;;;;;;-1:-1:-1;;;;;1361:64:7;;;;;;:124;;;;;1369:37;;1361:124;;;;;;;;:64;:124;;;5:2:-1;;;;30:1;27;20:12;5:2;1361:124:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1361:124:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1361:124:7;1340:236;;;;;;;-1:-1:-1;;;;;1340:236:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:6;:15;;;;;;;;;;;:22;;-1:-1:-1;;1586:22:7;1604:4;1586:22;;;;;;1638:11;;;;;;1618:17;;;:31;1659:11;;;:21;;;1695:19;1586:15;;1695:19;;;1054:667;:::o;1847:226:6:-;693:6:7;:15;;;;;;;;;;;1925:7:6;;693:15:7;;685:69;;;;;;;-1:-1:-1;;;;;685:69:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1944:6:6;;:48;;;;;;;;;;;;1973:10;1944:48;;;;;;;;;;;;-1:-1:-1;;;;;1944:6:6;;;;:19;;:48;;;;;:6;;:48;;;;;;;;:6;;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;1944:48:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1944:48:6;;;;2039:7;2027:10;-1:-1:-1;;;;;2007:59:6;2020:4;-1:-1:-1;;;;;2007:59:6;;2048:6;2056:9;;;;;;;;;;;;;2007:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2007:59:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1847:226;;;:::o;2360:356::-;693:6:7;:15;;;;;;;;;;;2440:7:6;;693:15:7;;685:69;;;;;;;-1:-1:-1;;;;;685:69:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2482:16:6;;;2496:1;2482:16;;;;;;;;;2459:20;;2482:16;;;;;;105:10:-1;2482:16:6;88:34:-1;-1:-1;;2534:16:6;;;2548:1;2534:16;;;;;;;;;2459:39;;-1:-1:-1;2508:23:6;;2534:16;-1:-1:-1;2534:16:6;;;;;;105:10:-1;2534:16:6;88:34:-1;136:17;;-1:-1;2534:16:6;2508:42;;2569:10;2560:3;2564:1;2560:6;;;;;;;;;;-1:-1:-1;;;;;2560:19:6;;;:6;;;;;;;;;;:19;2589:9;;2601:6;;2589;;2596:1;;2589:9;;;;;;;;;;;;;;;:18;;;;2618:6;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2618:6:6;;;;:19;;2638:7;;2647:3;;2652:6;;2618:41;;;;;;;;;;;;;;;;;;;:6;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2618:41:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2618:41:6;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2618:41:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2674:35:6;;;;;;;;2693:7;;-1:-1:-1;2681:10:6;;-1:-1:-1;2674:35:6;;;;;;;;;764:1:7;;2360:356:6;;;:::o;2081:396:7:-;2162:12;;;2154:70;;;;;-1:-1:-1;;;;;2154:70:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2242:21;;;;:8;:21;;;;;;:32;;2234:85;;;;;-1:-1:-1;;;;;2234:85:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:5;2329:15;;;;;;;;;;;:23;;-1:-1:-1;;2329:23:7;;;;2386:17;;;;;;;;2362:21;;;;;;:41;2413:17;;;:21;;;2449;2336:7;;2449:21;;;2081:396;;:::o;395:43::-;;;;;;;;;;;;;:::o;957:690:6:-;-1:-1:-1;;;;;1047:14:6;;1012:32;1047:14;;;:9;:14;;;;;;;;1111:10;1092:30;;;;;;;;;;;;:38;;:30;:38;;1071:130;;;;;-1:-1:-1;;;;;1071:130:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1230:10;1211:18;:30;;;;;;;;;;:37;;-1:-1:-1;;1211:37:6;1244:4;1211:37;;;;;;1275:14;;;;;;;;;:18;;;1258:35;;-1:-1:-1;;1258:35:6;;;;;;;;1325:9;;;;;;;1307:14;;:27;1303:338;;1350:25;1436:11;;:8;:11;;;;1394:3;;1412:188;1449:13;;1412:188;;1513:6;;:31;;;;;;;;;;;;-1:-1:-1;;;;;1513:31:6;;;;;;;;;:6;;;;;:16;;:31;;;;;:6;;:31;;;;;;;:6;;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;1513:31:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1513:31:6;;;;1562:9;-1:-1:-1;;;;;1562:13:6;;1576:8;1562:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1562:23:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;1475:18:6;;;;-1:-1:-1;1475:8:6;:18;;;;;;1412:188;;;-1:-1:-1;1618:12:6;;-1:-1:-1;;;;;1618:12:6;;;;;;;;1303:338;;957:690;;:::o;351:38:7:-;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"./WhitelistAssets.sol\";\nimport \"./ICreditCustodian.sol\";\n\n\ncontract StellarCreditCustodian is WhitelistAssets, ICreditCustodian {\n    struct MigrateProposal {\n        // mapping of signer to sign state\n        mapping(address => bool) signature;\n        // accumulated signature counter on the proposal\n        uint16 count;\n    }\n    uint16 private threshold;\n    // mapping of a new contract to a mapping of credit contract to the migration proposal\n    mapping(address => MigrateProposal) private proposals;\n\n    constructor(address _credit, uint16 _threshold) public WhitelistAssets(_credit) {\n        threshold = _threshold;\n    }\n\n    event Migrate(address indexed to);\n\n    /// @notice makes a migration vote to migrate credit contract binding to a new contract\n    /// also triggers the migration process when the migration vote threshold has reached\n    /// @param _to the new contract to replace this contract\n    function migrationVote(address _to) external {\n        MigrateProposal storage proposal = proposals[_to];\n        require(\n            proposal.signature[msg.sender] != true,\n            \"Migration: Sender has already made a proposal\"\n        );\n        proposal.signature[msg.sender] = true;\n        proposal.count = proposal.count + 1;\n        if (proposal.count >= threshold) {\n            WhitelistAssets whitelist = WhitelistAssets(_to);\n            for (uint256 creditID = linklist[0]; creditID != 0; creditID = linklist[creditID]) {\n                credit.setMinter(creditID, _to);\n                whitelist.add(creditID);\n            }\n            emit Migrate(_to);\n        }\n    }\n\n    /// @notice Lock user token the same amount of token will be unlocked on the stellar\n    /// @param _typeID the ID of credit to be locked\n    /// @param _value amount of tokens to be locked\n    function lock(uint256 _typeID, uint256 _value) external onlyWhitelistedAssets(_typeID) {\n        credit.burnFungible(_typeID, msg.sender, _value);\n        emit Lock(address(this), msg.sender, _typeID, _value, bytes(\"\"));\n    }\n\n    /// @notice Transfers some valid token to the destination address. The same amount of token on the stellar\n    /// will be locked in the stellar lock up account.\n    /// @param _typeID the ID of credit to be transferred\n    /// @param _value amount of tokens to be transferred\n    function unlock(uint256 _typeID, uint256 _value) external onlyWhitelistedAssets(_typeID) {\n        address[] memory tos = new address[](1);\n        uint256[] memory values = new uint256[](1);\n        tos[0] = msg.sender;\n        values[0] = _value;\n\n        credit.mintFungible(_typeID, tos, values);\n        emit Unlock(msg.sender, _typeID, _value);\n    }\n}\n",
  "sourcePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/StellarCreditCustodian.sol",
  "ast": {
    "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/StellarCreditCustodian.sol",
    "exportedSymbols": {
      "StellarCreditCustodian": [
        643
      ]
    },
    "id": 644,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 425,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol",
        "file": "./WhitelistAssets.sol",
        "id": 426,
        "nodeType": "ImportDirective",
        "scope": 644,
        "sourceUnit": 809,
        "src": "25:31:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/ICreditCustodian.sol",
        "file": "./ICreditCustodian.sol",
        "id": 427,
        "nodeType": "ImportDirective",
        "scope": 644,
        "sourceUnit": 202,
        "src": "57:32:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 428,
              "name": "WhitelistAssets",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 808,
              "src": "127:15:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                "typeString": "contract WhitelistAssets"
              }
            },
            "id": 429,
            "nodeType": "InheritanceSpecifier",
            "src": "127:15:6"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 430,
              "name": "ICreditCustodian",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 201,
              "src": "144:16:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICreditCustodian_$201",
                "typeString": "contract ICreditCustodian"
              }
            },
            "id": 431,
            "nodeType": "InheritanceSpecifier",
            "src": "144:16:6"
          }
        ],
        "contractDependencies": [
          201,
          808
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 643,
        "linearizedBaseContracts": [
          643,
          201,
          808
        ],
        "name": "StellarCreditCustodian",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "StellarCreditCustodian.MigrateProposal",
            "id": 438,
            "members": [
              {
                "constant": false,
                "id": 435,
                "name": "signature",
                "nodeType": "VariableDeclaration",
                "scope": 438,
                "src": "243:34:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 434,
                  "keyType": {
                    "id": 432,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "251:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "243:24:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 433,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "262:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 437,
                "name": "count",
                "nodeType": "VariableDeclaration",
                "scope": 438,
                "src": "344:12:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 436,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "344:6:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "MigrateProposal",
            "nodeType": "StructDefinition",
            "scope": 643,
            "src": "167:196:6",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 440,
            "name": "threshold",
            "nodeType": "VariableDeclaration",
            "scope": 643,
            "src": "368:24:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 439,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 444,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 643,
            "src": "489:53:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MigrateProposal_$438_storage_$",
              "typeString": "mapping(address => struct StellarCreditCustodian.MigrateProposal)"
            },
            "typeName": {
              "id": 443,
              "keyType": {
                "id": 441,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "497:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "489:35:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MigrateProposal_$438_storage_$",
                "typeString": "mapping(address => struct StellarCreditCustodian.MigrateProposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 442,
                "name": "MigrateProposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 438,
                "src": "508:15:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                  "typeString": "struct StellarCreditCustodian.MigrateProposal"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 458,
              "nodeType": "Block",
              "src": "629:39:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 454,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 440,
                      "src": "639:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 455,
                      "name": "_threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 448,
                      "src": "651:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "639:22:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 457,
                  "nodeType": "ExpressionStatement",
                  "src": "639:22:6"
                }
              ]
            },
            "documentation": null,
            "id": 459,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 451,
                    "name": "_credit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 446,
                    "src": "620:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 452,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 450,
                  "name": "WhitelistAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 808,
                  "src": "604:15:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_WhitelistAssets_$808_$",
                    "typeString": "type(contract WhitelistAssets)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "604:24:6"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 449,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 446,
                  "name": "_credit",
                  "nodeType": "VariableDeclaration",
                  "scope": 459,
                  "src": "561:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 445,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "561:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 448,
                  "name": "_threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 459,
                  "src": "578:17:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 447,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "578:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "560:36:6"
            },
            "returnParameters": {
              "id": 453,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "629:0:6"
            },
            "scope": 643,
            "src": "549:119:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 463,
            "name": "Migrate",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 461,
                  "indexed": true,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 463,
                  "src": "688:18:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "688:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "687:20:6"
            },
            "src": "674:34:6"
          },
          {
            "body": {
              "id": 549,
              "nodeType": "Block",
              "src": "1002:645:6",
              "statements": [
                {
                  "assignments": [
                    469
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 469,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 549,
                      "src": "1012:32:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                        "typeString": "struct StellarCreditCustodian.MigrateProposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 468,
                        "name": "MigrateProposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 438,
                        "src": "1012:15:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                          "typeString": "struct StellarCreditCustodian.MigrateProposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 473,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 470,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 444,
                      "src": "1047:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MigrateProposal_$438_storage_$",
                        "typeString": "mapping(address => struct StellarCreditCustodian.MigrateProposal storage ref)"
                      }
                    },
                    "id": 472,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 471,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 465,
                      "src": "1057:3:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1047:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MigrateProposal_$438_storage",
                      "typeString": "struct StellarCreditCustodian.MigrateProposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1012:49:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 481,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 475,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 469,
                              "src": "1092:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                                "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                              }
                            },
                            "id": 476,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 435,
                            "src": "1092:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 479,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 477,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "1111:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1111:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1092:30:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1126:4:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "1092:38:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e3a2053656e6465722068617320616c7265616479206d61646520612070726f706f73616c",
                        "id": 482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1144:47:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ec1776277a2887bb06f89f37ccea7b37949c93ea434f8a4ced915ce6d85fab60",
                          "typeString": "literal_string \"Migration: Sender has already made a proposal\""
                        },
                        "value": "Migration: Sender has already made a proposal"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ec1776277a2887bb06f89f37ccea7b37949c93ea434f8a4ced915ce6d85fab60",
                          "typeString": "literal_string \"Migration: Sender has already made a proposal\""
                        }
                      ],
                      "id": 474,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1071:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1071:130:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 484,
                  "nodeType": "ExpressionStatement",
                  "src": "1071:130:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 485,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 469,
                          "src": "1211:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                            "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                          }
                        },
                        "id": 489,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signature",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 435,
                        "src": "1211:18:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 490,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 487,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "1230:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1230:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1211:30:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1244:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1211:37:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 493,
                  "nodeType": "ExpressionStatement",
                  "src": "1211:37:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 494,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "1258:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                          "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                        }
                      },
                      "id": 496,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 437,
                      "src": "1258:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "id": 500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 497,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 469,
                          "src": "1275:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                            "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                          }
                        },
                        "id": 498,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "count",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 437,
                        "src": "1275:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1292:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "1275:18:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "1258:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 502,
                  "nodeType": "ExpressionStatement",
                  "src": "1258:35:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 503,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "1307:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                          "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                        }
                      },
                      "id": 504,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 437,
                      "src": "1307:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 505,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 440,
                      "src": "1325:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "1307:27:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 548,
                  "nodeType": "IfStatement",
                  "src": "1303:338:6",
                  "trueBody": {
                    "id": 547,
                    "nodeType": "Block",
                    "src": "1336:305:6",
                    "statements": [
                      {
                        "assignments": [
                          508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 508,
                            "name": "whitelist",
                            "nodeType": "VariableDeclaration",
                            "scope": 547,
                            "src": "1350:25:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                              "typeString": "contract WhitelistAssets"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 507,
                              "name": "WhitelistAssets",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 808,
                              "src": "1350:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                                "typeString": "contract WhitelistAssets"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 512,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 510,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 465,
                              "src": "1394:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 509,
                            "name": "WhitelistAssets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 808,
                            "src": "1378:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_WhitelistAssets_$808_$",
                              "typeString": "type(contract WhitelistAssets)"
                            }
                          },
                          "id": 511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1378:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                            "typeString": "contract WhitelistAssets"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1350:48:6"
                      },
                      {
                        "body": {
                          "id": 541,
                          "nodeType": "Block",
                          "src": "1495:105:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 531,
                                    "name": "creditID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 514,
                                    "src": "1530:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 532,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 465,
                                    "src": "1540:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 528,
                                    "name": "credit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 662,
                                    "src": "1513:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_EER2B_$2558",
                                      "typeString": "contract EER2B"
                                    }
                                  },
                                  "id": 530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setMinter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2557,
                                  "src": "1513:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$",
                                    "typeString": "function (uint256,address) external"
                                  }
                                },
                                "id": 533,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1513:31:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 534,
                              "nodeType": "ExpressionStatement",
                              "src": "1513:31:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 538,
                                    "name": "creditID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 514,
                                    "src": "1576:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 535,
                                    "name": "whitelist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 508,
                                    "src": "1562:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                                      "typeString": "contract WhitelistAssets"
                                    }
                                  },
                                  "id": 537,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 755,
                                  "src": "1562:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) external"
                                  }
                                },
                                "id": 539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1562:23:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 540,
                              "nodeType": "ExpressionStatement",
                              "src": "1562:23:6"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 519,
                            "name": "creditID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 514,
                            "src": "1449:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1461:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1449:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 542,
                        "initializationExpression": {
                          "assignments": [
                            514
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 514,
                              "name": "creditID",
                              "nodeType": "VariableDeclaration",
                              "scope": 542,
                              "src": "1417:16:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 513,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1417:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 518,
                          "initialValue": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 515,
                              "name": "linklist",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "1436:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 517,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1445:1:6",
                              "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": "1436:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1417:30:6"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 522,
                              "name": "creditID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 514,
                              "src": "1464:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 523,
                                "name": "linklist",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "1475:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 525,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 524,
                                "name": "creditID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 514,
                                "src": "1484:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1475:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1464:29:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 527,
                          "nodeType": "ExpressionStatement",
                          "src": "1464:29:6"
                        },
                        "nodeType": "ForStatement",
                        "src": "1412:188:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 544,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 465,
                              "src": "1626:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 543,
                            "name": "Migrate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1618:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1618:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 546,
                        "nodeType": "EmitStatement",
                        "src": "1613:17:6"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice makes a migration vote to migrate credit contract binding to a new contract\n also triggers the migration process when the migration vote threshold has reached\n @param _to the new contract to replace this contract",
            "id": 550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrationVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 465,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 550,
                  "src": "980:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 464,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "979:13:6"
            },
            "returnParameters": {
              "id": 467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1002:0:6"
            },
            "scope": 643,
            "src": "957:690:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 582,
              "nodeType": "Block",
              "src": "1934:139:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 563,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 552,
                        "src": "1964:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 564,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "1973:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1973:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 566,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 554,
                        "src": "1985:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 560,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "1944:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "burnFungible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2526,
                      "src": "1944:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256) external"
                      }
                    },
                    "id": 567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1944:48:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 568,
                  "nodeType": "ExpressionStatement",
                  "src": "1944:48:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 571,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3039,
                            "src": "2020:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_StellarCreditCustodian_$643",
                              "typeString": "contract StellarCreditCustodian"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_StellarCreditCustodian_$643",
                              "typeString": "contract StellarCreditCustodian"
                            }
                          ],
                          "id": 570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2012:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2012:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 573,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "2027:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2027:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 575,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 552,
                        "src": "2039:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 576,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 554,
                        "src": "2048:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2062:2:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2056:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2056:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 569,
                      "name": "Lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 186,
                      "src": "2007:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2007:59:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 581,
                  "nodeType": "EmitStatement",
                  "src": "2002:64:6"
                }
              ]
            },
            "documentation": "@notice Lock user token the same amount of token will be unlocked on the stellar\n @param _typeID the ID of credit to be locked\n @param _value amount of tokens to be locked",
            "id": 583,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 557,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 552,
                    "src": "1925:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 558,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 556,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "1903:21:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1903:30:6"
              }
            ],
            "name": "lock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 552,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 583,
                  "src": "1861:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 551,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1861:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 554,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 583,
                  "src": "1878:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1878:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1860:33:6"
            },
            "returnParameters": {
              "id": 559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1934:0:6"
            },
            "scope": 643,
            "src": "1847:226:6",
            "stateMutability": "nonpayable",
            "superFunction": 200,
            "visibility": "external"
          },
          {
            "body": {
              "id": 641,
              "nodeType": "Block",
              "src": "2449:267:6",
              "statements": [
                {
                  "assignments": [
                    596
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 596,
                      "name": "tos",
                      "nodeType": "VariableDeclaration",
                      "scope": 641,
                      "src": "2459:20:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2459:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 595,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2459:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 602,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2496:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2482:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 597,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2486:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 598,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2486:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2482:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2459:39:6"
                },
                {
                  "assignments": [
                    606
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 606,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 641,
                      "src": "2508:23:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2508:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 605,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2508:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 612,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2548:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2534:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 607,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2538:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 608,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2538:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2534:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2508:42:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 613,
                        "name": "tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 596,
                        "src": "2560:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 615,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2564:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2560:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 616,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "2569:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2569:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2560:19:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 619,
                  "nodeType": "ExpressionStatement",
                  "src": "2560:19:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 620,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 606,
                        "src": "2589:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 622,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2596:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2589:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 623,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 587,
                      "src": "2601:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2589:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 625,
                  "nodeType": "ExpressionStatement",
                  "src": "2589:18:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 629,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 585,
                        "src": "2638:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 630,
                        "name": "tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 596,
                        "src": "2647:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 631,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 606,
                        "src": "2652:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 626,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "2618:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 628,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mintFungible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2354,
                      "src": "2618:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address[] memory,uint256[] memory) external"
                      }
                    },
                    "id": 632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2618:41:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 633,
                  "nodeType": "ExpressionStatement",
                  "src": "2618:41:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 635,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "2681:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2681:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 637,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 585,
                        "src": "2693:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 638,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 587,
                        "src": "2702:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 634,
                      "name": "Unlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 174,
                      "src": "2674:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2674:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 640,
                  "nodeType": "EmitStatement",
                  "src": "2669:40:6"
                }
              ]
            },
            "documentation": "@notice Transfers some valid token to the destination address. The same amount of token on the stellar\n will be locked in the stellar lock up account.\n @param _typeID the ID of credit to be transferred\n @param _value amount of tokens to be transferred",
            "id": 642,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 590,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 585,
                    "src": "2440:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 591,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 589,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "2418:21:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2418:30:6"
              }
            ],
            "name": "unlock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 585,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 642,
                  "src": "2376:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 584,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2376:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 587,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 642,
                  "src": "2393:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 586,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2393:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2375:33:6"
            },
            "returnParameters": {
              "id": 592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2449:0:6"
            },
            "scope": 643,
            "src": "2360:356:6",
            "stateMutability": "nonpayable",
            "superFunction": 193,
            "visibility": "external"
          }
        ],
        "scope": 644,
        "src": "92:2626:6"
      }
    ],
    "src": "0:2719:6"
  },
  "legacyAST": {
    "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/StellarCreditCustodian.sol",
    "exportedSymbols": {
      "StellarCreditCustodian": [
        643
      ]
    },
    "id": 644,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 425,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol",
        "file": "./WhitelistAssets.sol",
        "id": 426,
        "nodeType": "ImportDirective",
        "scope": 644,
        "sourceUnit": 809,
        "src": "25:31:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/ICreditCustodian.sol",
        "file": "./ICreditCustodian.sol",
        "id": 427,
        "nodeType": "ImportDirective",
        "scope": 644,
        "sourceUnit": 202,
        "src": "57:32:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 428,
              "name": "WhitelistAssets",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 808,
              "src": "127:15:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                "typeString": "contract WhitelistAssets"
              }
            },
            "id": 429,
            "nodeType": "InheritanceSpecifier",
            "src": "127:15:6"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 430,
              "name": "ICreditCustodian",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 201,
              "src": "144:16:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICreditCustodian_$201",
                "typeString": "contract ICreditCustodian"
              }
            },
            "id": 431,
            "nodeType": "InheritanceSpecifier",
            "src": "144:16:6"
          }
        ],
        "contractDependencies": [
          201,
          808
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 643,
        "linearizedBaseContracts": [
          643,
          201,
          808
        ],
        "name": "StellarCreditCustodian",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "StellarCreditCustodian.MigrateProposal",
            "id": 438,
            "members": [
              {
                "constant": false,
                "id": 435,
                "name": "signature",
                "nodeType": "VariableDeclaration",
                "scope": 438,
                "src": "243:34:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 434,
                  "keyType": {
                    "id": 432,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "251:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "243:24:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 433,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "262:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 437,
                "name": "count",
                "nodeType": "VariableDeclaration",
                "scope": 438,
                "src": "344:12:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 436,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "344:6:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "MigrateProposal",
            "nodeType": "StructDefinition",
            "scope": 643,
            "src": "167:196:6",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 440,
            "name": "threshold",
            "nodeType": "VariableDeclaration",
            "scope": 643,
            "src": "368:24:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint16",
              "typeString": "uint16"
            },
            "typeName": {
              "id": 439,
              "name": "uint16",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_uint16",
                "typeString": "uint16"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 444,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 643,
            "src": "489:53:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MigrateProposal_$438_storage_$",
              "typeString": "mapping(address => struct StellarCreditCustodian.MigrateProposal)"
            },
            "typeName": {
              "id": 443,
              "keyType": {
                "id": 441,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "497:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "489:35:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MigrateProposal_$438_storage_$",
                "typeString": "mapping(address => struct StellarCreditCustodian.MigrateProposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 442,
                "name": "MigrateProposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 438,
                "src": "508:15:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                  "typeString": "struct StellarCreditCustodian.MigrateProposal"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 458,
              "nodeType": "Block",
              "src": "629:39:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 454,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 440,
                      "src": "639:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 455,
                      "name": "_threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 448,
                      "src": "651:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "639:22:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 457,
                  "nodeType": "ExpressionStatement",
                  "src": "639:22:6"
                }
              ]
            },
            "documentation": null,
            "id": 459,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 451,
                    "name": "_credit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 446,
                    "src": "620:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 452,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 450,
                  "name": "WhitelistAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 808,
                  "src": "604:15:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_WhitelistAssets_$808_$",
                    "typeString": "type(contract WhitelistAssets)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "604:24:6"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 449,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 446,
                  "name": "_credit",
                  "nodeType": "VariableDeclaration",
                  "scope": 459,
                  "src": "561:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 445,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "561:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 448,
                  "name": "_threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 459,
                  "src": "578:17:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 447,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "578:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "560:36:6"
            },
            "returnParameters": {
              "id": 453,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "629:0:6"
            },
            "scope": 643,
            "src": "549:119:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 463,
            "name": "Migrate",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 461,
                  "indexed": true,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 463,
                  "src": "688:18:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "688:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "687:20:6"
            },
            "src": "674:34:6"
          },
          {
            "body": {
              "id": 549,
              "nodeType": "Block",
              "src": "1002:645:6",
              "statements": [
                {
                  "assignments": [
                    469
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 469,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 549,
                      "src": "1012:32:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                        "typeString": "struct StellarCreditCustodian.MigrateProposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 468,
                        "name": "MigrateProposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 438,
                        "src": "1012:15:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                          "typeString": "struct StellarCreditCustodian.MigrateProposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 473,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 470,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 444,
                      "src": "1047:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MigrateProposal_$438_storage_$",
                        "typeString": "mapping(address => struct StellarCreditCustodian.MigrateProposal storage ref)"
                      }
                    },
                    "id": 472,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 471,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 465,
                      "src": "1057:3:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1047:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MigrateProposal_$438_storage",
                      "typeString": "struct StellarCreditCustodian.MigrateProposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1012:49:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 481,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 475,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 469,
                              "src": "1092:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                                "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                              }
                            },
                            "id": 476,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 435,
                            "src": "1092:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 479,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 477,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "1111:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1111:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1092:30:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1126:4:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "1092:38:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e3a2053656e6465722068617320616c7265616479206d61646520612070726f706f73616c",
                        "id": 482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1144:47:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ec1776277a2887bb06f89f37ccea7b37949c93ea434f8a4ced915ce6d85fab60",
                          "typeString": "literal_string \"Migration: Sender has already made a proposal\""
                        },
                        "value": "Migration: Sender has already made a proposal"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ec1776277a2887bb06f89f37ccea7b37949c93ea434f8a4ced915ce6d85fab60",
                          "typeString": "literal_string \"Migration: Sender has already made a proposal\""
                        }
                      ],
                      "id": 474,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1071:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1071:130:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 484,
                  "nodeType": "ExpressionStatement",
                  "src": "1071:130:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 485,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 469,
                          "src": "1211:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                            "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                          }
                        },
                        "id": 489,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signature",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 435,
                        "src": "1211:18:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 490,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 487,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "1230:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1230:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1211:30:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1244:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1211:37:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 493,
                  "nodeType": "ExpressionStatement",
                  "src": "1211:37:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 494,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "1258:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                          "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                        }
                      },
                      "id": 496,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 437,
                      "src": "1258:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "id": 500,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 497,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 469,
                          "src": "1275:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                            "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                          }
                        },
                        "id": 498,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "count",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 437,
                        "src": "1275:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1292:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "1275:18:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "1258:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 502,
                  "nodeType": "ExpressionStatement",
                  "src": "1258:35:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 503,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "1307:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MigrateProposal_$438_storage_ptr",
                          "typeString": "struct StellarCreditCustodian.MigrateProposal storage pointer"
                        }
                      },
                      "id": 504,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 437,
                      "src": "1307:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 505,
                      "name": "threshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 440,
                      "src": "1325:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "1307:27:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 548,
                  "nodeType": "IfStatement",
                  "src": "1303:338:6",
                  "trueBody": {
                    "id": 547,
                    "nodeType": "Block",
                    "src": "1336:305:6",
                    "statements": [
                      {
                        "assignments": [
                          508
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 508,
                            "name": "whitelist",
                            "nodeType": "VariableDeclaration",
                            "scope": 547,
                            "src": "1350:25:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                              "typeString": "contract WhitelistAssets"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 507,
                              "name": "WhitelistAssets",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 808,
                              "src": "1350:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                                "typeString": "contract WhitelistAssets"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 512,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 510,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 465,
                              "src": "1394:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 509,
                            "name": "WhitelistAssets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 808,
                            "src": "1378:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_WhitelistAssets_$808_$",
                              "typeString": "type(contract WhitelistAssets)"
                            }
                          },
                          "id": 511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1378:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                            "typeString": "contract WhitelistAssets"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1350:48:6"
                      },
                      {
                        "body": {
                          "id": 541,
                          "nodeType": "Block",
                          "src": "1495:105:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 531,
                                    "name": "creditID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 514,
                                    "src": "1530:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 532,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 465,
                                    "src": "1540:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 528,
                                    "name": "credit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 662,
                                    "src": "1513:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_EER2B_$2558",
                                      "typeString": "contract EER2B"
                                    }
                                  },
                                  "id": 530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setMinter",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2557,
                                  "src": "1513:16:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$",
                                    "typeString": "function (uint256,address) external"
                                  }
                                },
                                "id": 533,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1513:31:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 534,
                              "nodeType": "ExpressionStatement",
                              "src": "1513:31:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 538,
                                    "name": "creditID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 514,
                                    "src": "1576:8:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 535,
                                    "name": "whitelist",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 508,
                                    "src": "1562:9:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                                      "typeString": "contract WhitelistAssets"
                                    }
                                  },
                                  "id": 537,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 755,
                                  "src": "1562:13:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) external"
                                  }
                                },
                                "id": 539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1562:23:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 540,
                              "nodeType": "ExpressionStatement",
                              "src": "1562:23:6"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 519,
                            "name": "creditID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 514,
                            "src": "1449:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1461:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1449:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 542,
                        "initializationExpression": {
                          "assignments": [
                            514
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 514,
                              "name": "creditID",
                              "nodeType": "VariableDeclaration",
                              "scope": 542,
                              "src": "1417:16:6",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 513,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1417:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 518,
                          "initialValue": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 515,
                              "name": "linklist",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "1436:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 517,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1445:1:6",
                              "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": "1436:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1417:30:6"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 522,
                              "name": "creditID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 514,
                              "src": "1464:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 523,
                                "name": "linklist",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "1475:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 525,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 524,
                                "name": "creditID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 514,
                                "src": "1484:8:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1475:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1464:29:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 527,
                          "nodeType": "ExpressionStatement",
                          "src": "1464:29:6"
                        },
                        "nodeType": "ForStatement",
                        "src": "1412:188:6"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 544,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 465,
                              "src": "1626:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 543,
                            "name": "Migrate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1618:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1618:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 546,
                        "nodeType": "EmitStatement",
                        "src": "1613:17:6"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice makes a migration vote to migrate credit contract binding to a new contract\n also triggers the migration process when the migration vote threshold has reached\n @param _to the new contract to replace this contract",
            "id": 550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrationVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 465,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 550,
                  "src": "980:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 464,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "979:13:6"
            },
            "returnParameters": {
              "id": 467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1002:0:6"
            },
            "scope": 643,
            "src": "957:690:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 582,
              "nodeType": "Block",
              "src": "1934:139:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 563,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 552,
                        "src": "1964:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 564,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "1973:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1973:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 566,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 554,
                        "src": "1985:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 560,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "1944:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "burnFungible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2526,
                      "src": "1944:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256) external"
                      }
                    },
                    "id": 567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1944:48:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 568,
                  "nodeType": "ExpressionStatement",
                  "src": "1944:48:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 571,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3039,
                            "src": "2020:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_StellarCreditCustodian_$643",
                              "typeString": "contract StellarCreditCustodian"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_StellarCreditCustodian_$643",
                              "typeString": "contract StellarCreditCustodian"
                            }
                          ],
                          "id": 570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2012:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2012:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 573,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "2027:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2027:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 575,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 552,
                        "src": "2039:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 576,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 554,
                        "src": "2048:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2062:2:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2056:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2056:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 569,
                      "name": "Lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 186,
                      "src": "2007:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2007:59:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 581,
                  "nodeType": "EmitStatement",
                  "src": "2002:64:6"
                }
              ]
            },
            "documentation": "@notice Lock user token the same amount of token will be unlocked on the stellar\n @param _typeID the ID of credit to be locked\n @param _value amount of tokens to be locked",
            "id": 583,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 557,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 552,
                    "src": "1925:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 558,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 556,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "1903:21:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1903:30:6"
              }
            ],
            "name": "lock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 552,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 583,
                  "src": "1861:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 551,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1861:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 554,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 583,
                  "src": "1878:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1878:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1860:33:6"
            },
            "returnParameters": {
              "id": 559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1934:0:6"
            },
            "scope": 643,
            "src": "1847:226:6",
            "stateMutability": "nonpayable",
            "superFunction": 200,
            "visibility": "external"
          },
          {
            "body": {
              "id": 641,
              "nodeType": "Block",
              "src": "2449:267:6",
              "statements": [
                {
                  "assignments": [
                    596
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 596,
                      "name": "tos",
                      "nodeType": "VariableDeclaration",
                      "scope": 641,
                      "src": "2459:20:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2459:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 595,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2459:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 602,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2496:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2482:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 597,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2486:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 598,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2486:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2482:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2459:39:6"
                },
                {
                  "assignments": [
                    606
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 606,
                      "name": "values",
                      "nodeType": "VariableDeclaration",
                      "scope": 641,
                      "src": "2508:23:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2508:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 605,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2508:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 612,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2548:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2534:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 607,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2538:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 608,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2538:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2534:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2508:42:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 613,
                        "name": "tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 596,
                        "src": "2560:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 615,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2564:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2560:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 616,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "2569:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2569:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2560:19:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 619,
                  "nodeType": "ExpressionStatement",
                  "src": "2560:19:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 620,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 606,
                        "src": "2589:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 622,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2596:1:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2589:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 623,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 587,
                      "src": "2601:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2589:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 625,
                  "nodeType": "ExpressionStatement",
                  "src": "2589:18:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 629,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 585,
                        "src": "2638:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 630,
                        "name": "tos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 596,
                        "src": "2647:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 631,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 606,
                        "src": "2652:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 626,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "2618:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 628,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mintFungible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2354,
                      "src": "2618:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address[] memory,uint256[] memory) external"
                      }
                    },
                    "id": 632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2618:41:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 633,
                  "nodeType": "ExpressionStatement",
                  "src": "2618:41:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 635,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "2681:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2681:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 637,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 585,
                        "src": "2693:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 638,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 587,
                        "src": "2702:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 634,
                      "name": "Unlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 174,
                      "src": "2674:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2674:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 640,
                  "nodeType": "EmitStatement",
                  "src": "2669:40:6"
                }
              ]
            },
            "documentation": "@notice Transfers some valid token to the destination address. The same amount of token on the stellar\n will be locked in the stellar lock up account.\n @param _typeID the ID of credit to be transferred\n @param _value amount of tokens to be transferred",
            "id": 642,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 590,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 585,
                    "src": "2440:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 591,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 589,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "2418:21:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2418:30:6"
              }
            ],
            "name": "unlock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 585,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 642,
                  "src": "2376:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 584,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2376:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 587,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 642,
                  "src": "2393:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 586,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2393:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2375:33:6"
            },
            "returnParameters": {
              "id": 592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2449:0:6"
            },
            "scope": 643,
            "src": "2360:356:6",
            "stateMutability": "nonpayable",
            "superFunction": 193,
            "visibility": "external"
          }
        ],
        "scope": 644,
        "src": "92:2626:6"
      }
    ],
    "src": "0:2719:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.19",
  "updatedAt": "2020-04-10T07:42:01.208Z",
  "devdoc": {
    "methods": {
      "add(uint256)": {
        "params": {
          "_typeID": "the ID of credit being added"
        }
      },
      "lock(uint256,uint256)": {
        "params": {
          "_typeID": "the ID of credit to be locked",
          "_value": "amount of tokens to be locked"
        }
      },
      "migrationVote(address)": {
        "params": {
          "_to": "the new contract to replace this contract"
        }
      },
      "remove(uint256,uint256)": {
        "params": {
          "_prevTypeID": "the prior credit ID in the linklist",
          "_typeID": "the ID of credit being removed"
        }
      },
      "unlock(uint256,uint256)": {
        "params": {
          "_typeID": "the ID of credit to be transferred",
          "_value": "amount of tokens to be transferred"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "add(uint256)": {
        "notice": "Add a new asset the whitelist asset database"
      },
      "lock(uint256,uint256)": {
        "notice": "Lock user token the same amount of token will be unlocked on the stellar"
      },
      "migrationVote(address)": {
        "notice": "makes a migration vote to migrate credit contract binding to a new contract also triggers the migration process when the migration vote threshold has reached"
      },
      "remove(uint256,uint256)": {
        "notice": "remove an asset from the whitelist asset database"
      },
      "unlock(uint256,uint256)": {
        "notice": "Transfers some valid token to the destination address. The same amount of token on the stellar will be locked in the stellar lock up account."
      }
    }
  }
}