{
  "contractName": "WhitelistAssets",
  "abi": [
    {
      "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"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": "_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"
    }
  ],
  "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\":\"_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\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\"}},\"remove(uint256,uint256)\":{\"params\":{\"_prevTypeID\":\"the prior credit ID in the linklist\",\"_typeID\":\"the ID of credit being removed\"}}}},\"userdoc\":{\"methods\":{\"add(uint256)\":{\"notice\":\"Add a new asset the whitelist asset database\"},\"remove(uint256,uint256)\":{\"notice\":\"remove an asset from the whitelist asset database\"}},\"notice\":\"WhitelistAssets keeps a whitelist assets record which warp allows to move cross chain\"}},\"settings\":{\"compilationTarget\":{\"/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol\":\"WhitelistAssets\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/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/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": "0x608060405234801561001057600080fd5b506040516020806108228339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a039092169190911790556107c2806100606000396000f3fe6080604052600436106100455760003560e01c63ffffffff1680631003e2d21461004a5780636526db7a1461007657806371bc35ab146100a6578063cf35bdd0146100e2575b600080fd5b34801561005657600080fd5b506100746004803603602081101561006d57600080fd5b5035610120565b005b34801561008257600080fd5b506100746004803603604081101561009957600080fd5b508035906020013561060f565b3480156100b257600080fd5b506100d0600480360360208110156100c957600080fd5b503561076f565b60408051918252519081900360200190f35b3480156100ee57600080fd5b5061010c6004803603602081101561010557600080fd5b5035610781565b604080519115158252519081900360200190f35b60008181526020819052604090205460ff16156101d3576040805160e560020a62461bcd02815260206004820152604c60248201527f57686974656c6973744173736574733a2063616e6e6f7420616464207468652060448201527f617373657420746861742068617320616c7265616479206265656e20696e207460648201527f68652077686974656c6973740000000000000000000000000000000000000000608482015290519081900360a40190fd5b801515610250576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517f01c376a000000000000000000000000000000000000000000000000000000000815260048101849052905173ffffffffffffffffffffffffffffffffffffffff909216916301c376a091602480820192600092909190829003018186803b1580156102c257600080fd5b505afa1580156102d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156102ff57600080fd5b81019080805164010000000081111561031757600080fd5b8201602081018481111561032a57600080fd5b815164010000000081118282018710171561034457600080fd5b50506040517f7e4115ba00000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835173__Convert_______________________________9750637e4115ba96509394509283926044019185019080838360005b838110156103c75781810151838201526020016103af565b50505050905090810190601f1680156103f45780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561041157600080fd5b505af4158015610425573d6000803e3d6000fd5b505050506040513d602081101561043b57600080fd5b5051604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2ad5032c000000000000000000000000000000000000000000000000000000006004820152905173ffffffffffffffffffffffffffffffffffffffff909216916301ffc9a791602480820192602092909190829003018186803b1580156104cb57600080fd5b505afa1580156104df573d6000803e3d6000fd5b505050506040513d60208110156104f557600080fd5b50511515610599576040805160e560020a62461bcd02815260206004820152604160248201527f57686974656c6973744173736574733a20746865206d6574616461746120636f60448201527f6e7472616374206973206e6f7420737570706f7274656420696e74657266616360648201527f6500000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600081815260208181526040808320805460ff191660019081179091559091527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb498054828420558280528390555182917f808590b2e92602ac21a55184174c55027e40248219525b4fbe0f637f5f3a346c91a250565b81151561068c576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600160205260409020548214610717576040805160e560020a62461bcd02815260206004820152602860248201527f57686974656c6973744173736574733a20696e76616c69642072656d6f76652060448201527f617267756d656e74000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260208181526040808320805460ff1916905560019091528082208054848452828420558483528290555183917fd8a3abf4ebfa76253e2780cdc5ec4857e8e40886cdcd10b169ecb18052d6ce2291a25050565b60016020526000908152604090205481565b60006020819052908152604090205460ff168156fea165627a7a72305820ce97699c54a19ec2604034323cbec30feaa03f1a8fa9897d80084bfe98fe56270029",
  "deployedBytecode": "0x6080604052600436106100455760003560e01c63ffffffff1680631003e2d21461004a5780636526db7a1461007657806371bc35ab146100a6578063cf35bdd0146100e2575b600080fd5b34801561005657600080fd5b506100746004803603602081101561006d57600080fd5b5035610120565b005b34801561008257600080fd5b506100746004803603604081101561009957600080fd5b508035906020013561060f565b3480156100b257600080fd5b506100d0600480360360208110156100c957600080fd5b503561076f565b60408051918252519081900360200190f35b3480156100ee57600080fd5b5061010c6004803603602081101561010557600080fd5b5035610781565b604080519115158252519081900360200190f35b60008181526020819052604090205460ff16156101d3576040805160e560020a62461bcd02815260206004820152604c60248201527f57686974656c6973744173736574733a2063616e6e6f7420616464207468652060448201527f617373657420746861742068617320616c7265616479206265656e20696e207460648201527f68652077686974656c6973740000000000000000000000000000000000000000608482015290519081900360a40190fd5b801515610250576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517f01c376a000000000000000000000000000000000000000000000000000000000815260048101849052905173ffffffffffffffffffffffffffffffffffffffff909216916301c376a091602480820192600092909190829003018186803b1580156102c257600080fd5b505afa1580156102d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156102ff57600080fd5b81019080805164010000000081111561031757600080fd5b8201602081018481111561032a57600080fd5b815164010000000081118282018710171561034457600080fd5b50506040517f7e4115ba00000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835173__Convert_______________________________9750637e4115ba96509394509283926044019185019080838360005b838110156103c75781810151838201526020016103af565b50505050905090810190601f1680156103f45780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561041157600080fd5b505af4158015610425573d6000803e3d6000fd5b505050506040513d602081101561043b57600080fd5b5051604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2ad5032c000000000000000000000000000000000000000000000000000000006004820152905173ffffffffffffffffffffffffffffffffffffffff909216916301ffc9a791602480820192602092909190829003018186803b1580156104cb57600080fd5b505afa1580156104df573d6000803e3d6000fd5b505050506040513d60208110156104f557600080fd5b50511515610599576040805160e560020a62461bcd02815260206004820152604160248201527f57686974656c6973744173736574733a20746865206d6574616461746120636f60448201527f6e7472616374206973206e6f7420737570706f7274656420696e74657266616360648201527f6500000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600081815260208181526040808320805460ff191660019081179091559091527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb498054828420558280528390555182917f808590b2e92602ac21a55184174c55027e40248219525b4fbe0f637f5f3a346c91a250565b81151561068c576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600160205260409020548214610717576040805160e560020a62461bcd02815260206004820152602860248201527f57686974656c6973744173736574733a20696e76616c69642072656d6f76652060448201527f617267756d656e74000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260208181526040808320805460ff1916905560019091528082208054848452828420558483528290555183917fd8a3abf4ebfa76253e2780cdc5ec4857e8e40886cdcd10b169ecb18052d6ce2291a25050565b60016020526000908152604090205481565b60006020819052908152604090205460ff168156fea165627a7a72305820ce97699c54a19ec2604034323cbec30feaa03f1a8fa9897d80084bfe98fe56270029",
  "sourceMap": "289:2190:7:-;;;545:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;545:76:7;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;545:76:7;591:6;:23;;-1:-1:-1;;;;;;591:23:7;-1:-1:-1;;;;;591:23:7;;;;;;;;;289:2190;;;-1:-1:-1;289:2190:7;;",
  "deployedSourceMap": "289:2190:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1054:667;;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;;;;;2081:396;;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;;;;;;;;;;;;;;;;;;;351:38;;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;;;;;;;;;;;;;;:6;;;;;: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;;;;;;:64;;;;;;;: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;2081:396::-;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;351:38::-;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"./Metadata.sol\";\nimport \"./lib/Convert.sol\";\nimport \"@evrynetlabs/credit-contract/contracts/EER2B.sol\";\nimport \"@openzeppelin/contracts/introspection/IERC165.sol\";\n\n\n/// WhitelistAssets keeps a whitelist assets record which warp allows to move cross chain\ncontract WhitelistAssets {\n    using Convert for string;\n\n    mapping(uint256 => bool) public assets;\n    mapping(uint256 => uint256) public linklist;\n\n    EER2B internal credit;\n\n    bytes4 private constant INTERFACE_SIGNATURE_METADATA = 0x2ad5032c;\n\n    constructor(address _credit) public {\n        credit = EER2B(_credit);\n    }\n\n    modifier onlyWhitelistedAssets(uint256 _typeID) {\n        require(assets[_typeID], \"WhitelistAssets: the credit is prohibited\");\n        _;\n    }\n\n    /// @dev AddedAsset MUST emit when credit ID is added to the whitelist\n    /// @param typeID the ID of the added credit\n    event AddedAsset(uint256 indexed typeID);\n\n    /// Add a new asset the whitelist asset database\n    /// @param _typeID the ID of credit being added\n    function add(uint256 _typeID) external {\n        require(\n            assets[_typeID] == false,\n            \"WhitelistAssets: cannot add the asset that has already been in the whitelist\"\n        );\n        require(_typeID != 0, \"WhitelistAssets: the credit id cannot be zero\");\n        require(\n            IERC165(credit.metalinks(_typeID).toAddress()).supportsInterface(\n                INTERFACE_SIGNATURE_METADATA\n            ),\n            \"WhitelistAssets: the metadata contract is not supported interface\"\n        );\n        assets[_typeID] = true;\n        linklist[_typeID] = linklist[0];\n        linklist[0] = _typeID;\n        emit AddedAsset(_typeID);\n    }\n\n    /// @dev RemovedAsset MUST emit when credit ID is removed to the whitelist\n    /// @param typeID the ID of the removed credit\n    event RemovedAsset(uint256 indexed typeID);\n\n    /// remove an asset from the whitelist asset database\n    /// @param _typeID the ID of credit being removed\n    /// @param _prevTypeID the prior credit ID in the linklist\n    function remove(uint256 _typeID, uint256 _prevTypeID) external {\n        require(_typeID != 0, \"WhitelistAssets: the credit id cannot be zero\");\n        require(linklist[_prevTypeID] == _typeID, \"WhitelistAssets: invalid remove argument\");\n        assets[_typeID] = false;\n        linklist[_prevTypeID] = linklist[_typeID];\n        linklist[_typeID] = 0;\n        emit RemovedAsset(_typeID);\n    }\n}\n",
  "sourcePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol",
  "ast": {
    "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol",
    "exportedSymbols": {
      "WhitelistAssets": [
        808
      ]
    },
    "id": 809,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 645,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:7"
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/Metadata.sol",
        "file": "./Metadata.sol",
        "id": 646,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 308,
        "src": "25:24:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/lib/Convert.sol",
        "file": "./lib/Convert.sol",
        "id": 647,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 1077,
        "src": "50:27:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@evrynetlabs/credit-contract/contracts/EER2B.sol",
        "file": "@evrynetlabs/credit-contract/contracts/EER2B.sol",
        "id": 648,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 2559,
        "src": "78:58:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/introspection/IERC165.sol",
        "file": "@openzeppelin/contracts/introspection/IERC165.sol",
        "id": 649,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 2828,
        "src": "137:59:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "WhitelistAssets keeps a whitelist assets record which warp allows to move cross chain",
        "fullyImplemented": true,
        "id": 808,
        "linearizedBaseContracts": [
          808
        ],
        "name": "WhitelistAssets",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 652,
            "libraryName": {
              "contractScope": null,
              "id": 650,
              "name": "Convert",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1076,
              "src": "326:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Convert_$1076",
                "typeString": "library Convert"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "320:25:7",
            "typeName": {
              "id": 651,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "338:6:7",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            }
          },
          {
            "constant": false,
            "id": 656,
            "name": "assets",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "351:38:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
              "typeString": "mapping(uint256 => bool)"
            },
            "typeName": {
              "id": 655,
              "keyType": {
                "id": 653,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "359:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "351:24:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                "typeString": "mapping(uint256 => bool)"
              },
              "valueType": {
                "id": 654,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "370:4:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 660,
            "name": "linklist",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "395:43:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 659,
              "keyType": {
                "id": 657,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "403:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "395:27:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 658,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "414:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 662,
            "name": "credit",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "445:21:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EER2B_$2558",
              "typeString": "contract EER2B"
            },
            "typeName": {
              "contractScope": null,
              "id": 661,
              "name": "EER2B",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2558,
              "src": "445:5:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EER2B_$2558",
                "typeString": "contract EER2B"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 665,
            "name": "INTERFACE_SIGNATURE_METADATA",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "473:65:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 663,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "473:6:7",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783261643530333263",
              "id": 664,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "528:10:7",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_718603052_by_1",
                "typeString": "int_const 718603052"
              },
              "value": "0x2ad5032c"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 676,
              "nodeType": "Block",
              "src": "581:40:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 670,
                      "name": "credit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 662,
                      "src": "591:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EER2B_$2558",
                        "typeString": "contract EER2B"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 672,
                          "name": "_credit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 667,
                          "src": "606:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 671,
                        "name": "EER2B",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2558,
                        "src": "600:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EER2B_$2558_$",
                          "typeString": "type(contract EER2B)"
                        }
                      },
                      "id": 673,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "600:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EER2B_$2558",
                        "typeString": "contract EER2B"
                      }
                    },
                    "src": "591:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EER2B_$2558",
                      "typeString": "contract EER2B"
                    }
                  },
                  "id": 675,
                  "nodeType": "ExpressionStatement",
                  "src": "591:23:7"
                }
              ]
            },
            "documentation": null,
            "id": 677,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 667,
                  "name": "_credit",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "557:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "557:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "556:17:7"
            },
            "returnParameters": {
              "id": 669,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "581:0:7"
            },
            "scope": 808,
            "src": "545:76:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 689,
              "nodeType": "Block",
              "src": "675:97:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 682,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "693:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                            "typeString": "mapping(uint256 => bool)"
                          }
                        },
                        "id": 684,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 683,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 679,
                          "src": "700:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "693:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206372656469742069732070726f68696269746564",
                        "id": 685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "710:43:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6aa7204c79c26b860d68d2282ff3329a74a55c99f0e16a98134ab5ff1231b9b3",
                          "typeString": "literal_string \"WhitelistAssets: the credit is prohibited\""
                        },
                        "value": "WhitelistAssets: the credit is prohibited"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6aa7204c79c26b860d68d2282ff3329a74a55c99f0e16a98134ab5ff1231b9b3",
                          "typeString": "literal_string \"WhitelistAssets: the credit is prohibited\""
                        }
                      ],
                      "id": 681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "685:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "685:69:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 687,
                  "nodeType": "ExpressionStatement",
                  "src": "685:69:7"
                },
                {
                  "id": 688,
                  "nodeType": "PlaceholderStatement",
                  "src": "764:1:7"
                }
              ]
            },
            "documentation": null,
            "id": 690,
            "name": "onlyWhitelistedAssets",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 680,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 679,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 690,
                  "src": "658:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:17:7"
            },
            "src": "627:145:7",
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": "@dev AddedAsset MUST emit when credit ID is added to the whitelist\n @param typeID the ID of the added credit",
            "id": 694,
            "name": "AddedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 692,
                  "indexed": true,
                  "name": "typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 694,
                  "src": "919:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "919:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "918:24:7"
            },
            "src": "902:41:7"
          },
          {
            "body": {
              "id": 754,
              "nodeType": "Block",
              "src": "1093:628:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 700,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 656,
                            "src": "1124:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                              "typeString": "mapping(uint256 => bool)"
                            }
                          },
                          "id": 702,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 701,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "1131:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1124:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1143:5:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "1124:24:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a2063616e6e6f74206164642074686520617373657420746861742068617320616c7265616479206265656e20696e207468652077686974656c697374",
                        "id": 705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1162:78:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_db630f02f8fdaf369c9d3c2601657cb171f25f6f0ad1d274a0dfe91a58c35a0b",
                          "typeString": "literal_string \"WhitelistAssets: cannot add the asset that has already been in the whitelist\""
                        },
                        "value": "WhitelistAssets: cannot add the asset that has already been in the whitelist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_db630f02f8fdaf369c9d3c2601657cb171f25f6f0ad1d274a0dfe91a58c35a0b",
                          "typeString": "literal_string \"WhitelistAssets: cannot add the asset that has already been in the whitelist\""
                        }
                      ],
                      "id": 699,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1103:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1103:147:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 707,
                  "nodeType": "ExpressionStatement",
                  "src": "1103:147:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 709,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 696,
                          "src": "1268:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1279:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1268:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206372656469742069642063616e6e6f74206265207a65726f",
                        "id": 712,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1282:47:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        },
                        "value": "WhitelistAssets: the credit id cannot be zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        }
                      ],
                      "id": 708,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1260:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1260:70:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 714,
                  "nodeType": "ExpressionStatement",
                  "src": "1260:70:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 725,
                            "name": "INTERFACE_SIGNATURE_METADATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 665,
                            "src": "1443:28:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 719,
                                        "name": "_typeID",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 696,
                                        "src": "1386:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 717,
                                        "name": "credit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 662,
                                        "src": "1369:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_EER2B_$2558",
                                          "typeString": "contract EER2B"
                                        }
                                      },
                                      "id": 718,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "metalinks",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1131,
                                      "src": "1369:16:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_string_memory_$",
                                        "typeString": "function (uint256) view external returns (string memory)"
                                      }
                                    },
                                    "id": 720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1369:25:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1075,
                                  "src": "1369:35:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_delegatecall_pure$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (address)"
                                  }
                                },
                                "id": 722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1369:37:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 716,
                              "name": "IERC165",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2827,
                              "src": "1361:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC165_$2827_$",
                                "typeString": "type(contract IERC165)"
                              }
                            },
                            "id": 723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1361:46:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC165_$2827",
                              "typeString": "contract IERC165"
                            }
                          },
                          "id": 724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2826,
                          "src": "1361:64:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view external returns (bool)"
                          }
                        },
                        "id": 726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1361:124:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206d6574616461746120636f6e7472616374206973206e6f7420737570706f7274656420696e74657266616365",
                        "id": 727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1499:67:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5fd74338c4331e7c1fd1e09d6fc3172dcfb4f6b99911db10fc36b1b193595e8b",
                          "typeString": "literal_string \"WhitelistAssets: the metadata contract is not supported interface\""
                        },
                        "value": "WhitelistAssets: the metadata contract is not supported interface"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5fd74338c4331e7c1fd1e09d6fc3172dcfb4f6b99911db10fc36b1b193595e8b",
                          "typeString": "literal_string \"WhitelistAssets: the metadata contract is not supported interface\""
                        }
                      ],
                      "id": 715,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1340:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1340:236:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 729,
                  "nodeType": "ExpressionStatement",
                  "src": "1340:236:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 730,
                        "name": "assets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 656,
                        "src": "1586:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                          "typeString": "mapping(uint256 => bool)"
                        }
                      },
                      "id": 732,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 731,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 696,
                        "src": "1593:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1586:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1604:4:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1586:22:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 735,
                  "nodeType": "ExpressionStatement",
                  "src": "1586:22:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 736,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "1618:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 738,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 737,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 696,
                        "src": "1627:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1618:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 739,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "1638:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 741,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1647:1:7",
                        "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": "1638:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1618:31:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 743,
                  "nodeType": "ExpressionStatement",
                  "src": "1618:31:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 744,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "1659:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 746,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1668:1:7",
                        "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": "1659:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 747,
                      "name": "_typeID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 696,
                      "src": "1673:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1659:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 749,
                  "nodeType": "ExpressionStatement",
                  "src": "1659:21:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 751,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 696,
                        "src": "1706:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 750,
                      "name": "AddedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 694,
                      "src": "1695:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1695:19:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 753,
                  "nodeType": "EmitStatement",
                  "src": "1690:24:7"
                }
              ]
            },
            "documentation": "Add a new asset the whitelist asset database\n @param _typeID the ID of credit being added",
            "id": 755,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 696,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 755,
                  "src": "1067:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 695,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1067:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1066:17:7"
            },
            "returnParameters": {
              "id": 698,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1093:0:7"
            },
            "scope": 808,
            "src": "1054:667:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "anonymous": false,
            "documentation": "@dev RemovedAsset MUST emit when credit ID is removed to the whitelist\n @param typeID the ID of the removed credit",
            "id": 759,
            "name": "RemovedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 757,
                  "indexed": true,
                  "name": "typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "1876:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 756,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1876:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1875:24:7"
            },
            "src": "1857:43:7"
          },
          {
            "body": {
              "id": 806,
              "nodeType": "Block",
              "src": "2144:333:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 767,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 761,
                          "src": "2162:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2173:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2162:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206372656469742069642063616e6e6f74206265207a65726f",
                        "id": 770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2176:47:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        },
                        "value": "WhitelistAssets: the credit id cannot be zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        }
                      ],
                      "id": 766,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "2154:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2154:70:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 772,
                  "nodeType": "ExpressionStatement",
                  "src": "2154:70:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 774,
                            "name": "linklist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 660,
                            "src": "2242:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 776,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 775,
                            "name": "_prevTypeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 763,
                            "src": "2251:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2242:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 777,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 761,
                          "src": "2267:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2242:32:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20696e76616c69642072656d6f766520617267756d656e74",
                        "id": 779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2276:42:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_15354644bdadea30f55666d8ef800d51bec08664b684fa351c783332f0e26938",
                          "typeString": "literal_string \"WhitelistAssets: invalid remove argument\""
                        },
                        "value": "WhitelistAssets: invalid remove argument"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_15354644bdadea30f55666d8ef800d51bec08664b684fa351c783332f0e26938",
                          "typeString": "literal_string \"WhitelistAssets: invalid remove argument\""
                        }
                      ],
                      "id": 773,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "2234:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2234:85:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 781,
                  "nodeType": "ExpressionStatement",
                  "src": "2234:85:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 782,
                        "name": "assets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 656,
                        "src": "2329:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                          "typeString": "mapping(uint256 => bool)"
                        }
                      },
                      "id": 784,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 783,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2336:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2329:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2347:5:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "2329:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 787,
                  "nodeType": "ExpressionStatement",
                  "src": "2329:23:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 788,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "2362:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 790,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 789,
                        "name": "_prevTypeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 763,
                        "src": "2371:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2362:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 791,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "2386:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 793,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 792,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2395:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2386:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2362:41:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 795,
                  "nodeType": "ExpressionStatement",
                  "src": "2362:41:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 796,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "2413:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 798,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 797,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2422:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2413:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2433:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2413:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 801,
                  "nodeType": "ExpressionStatement",
                  "src": "2413:21:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 803,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2462:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 802,
                      "name": "RemovedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 759,
                      "src": "2449:12:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2449:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 805,
                  "nodeType": "EmitStatement",
                  "src": "2444:26:7"
                }
              ]
            },
            "documentation": "remove an asset from the whitelist asset database\n @param _typeID the ID of credit being removed\n @param _prevTypeID the prior credit ID in the linklist",
            "id": 807,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 761,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 807,
                  "src": "2097:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2097:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 763,
                  "name": "_prevTypeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 807,
                  "src": "2114:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2114:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2096:38:7"
            },
            "returnParameters": {
              "id": 765,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2144:0:7"
            },
            "scope": 808,
            "src": "2081:396:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 809,
        "src": "289:2190:7"
      }
    ],
    "src": "0:2480:7"
  },
  "legacyAST": {
    "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol",
    "exportedSymbols": {
      "WhitelistAssets": [
        808
      ]
    },
    "id": 809,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 645,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:7"
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/Metadata.sol",
        "file": "./Metadata.sol",
        "id": 646,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 308,
        "src": "25:24:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/lib/Convert.sol",
        "file": "./lib/Convert.sol",
        "id": 647,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 1077,
        "src": "50:27:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@evrynetlabs/credit-contract/contracts/EER2B.sol",
        "file": "@evrynetlabs/credit-contract/contracts/EER2B.sol",
        "id": 648,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 2559,
        "src": "78:58:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/introspection/IERC165.sol",
        "file": "@openzeppelin/contracts/introspection/IERC165.sol",
        "id": 649,
        "nodeType": "ImportDirective",
        "scope": 809,
        "sourceUnit": 2828,
        "src": "137:59:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "WhitelistAssets keeps a whitelist assets record which warp allows to move cross chain",
        "fullyImplemented": true,
        "id": 808,
        "linearizedBaseContracts": [
          808
        ],
        "name": "WhitelistAssets",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 652,
            "libraryName": {
              "contractScope": null,
              "id": 650,
              "name": "Convert",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1076,
              "src": "326:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Convert_$1076",
                "typeString": "library Convert"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "320:25:7",
            "typeName": {
              "id": 651,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "338:6:7",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            }
          },
          {
            "constant": false,
            "id": 656,
            "name": "assets",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "351:38:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
              "typeString": "mapping(uint256 => bool)"
            },
            "typeName": {
              "id": 655,
              "keyType": {
                "id": 653,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "359:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "351:24:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                "typeString": "mapping(uint256 => bool)"
              },
              "valueType": {
                "id": 654,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "370:4:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 660,
            "name": "linklist",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "395:43:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 659,
              "keyType": {
                "id": 657,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "403:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "395:27:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 658,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "414:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 662,
            "name": "credit",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "445:21:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EER2B_$2558",
              "typeString": "contract EER2B"
            },
            "typeName": {
              "contractScope": null,
              "id": 661,
              "name": "EER2B",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2558,
              "src": "445:5:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EER2B_$2558",
                "typeString": "contract EER2B"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 665,
            "name": "INTERFACE_SIGNATURE_METADATA",
            "nodeType": "VariableDeclaration",
            "scope": 808,
            "src": "473:65:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 663,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "473:6:7",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783261643530333263",
              "id": 664,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "528:10:7",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_718603052_by_1",
                "typeString": "int_const 718603052"
              },
              "value": "0x2ad5032c"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 676,
              "nodeType": "Block",
              "src": "581:40:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 670,
                      "name": "credit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 662,
                      "src": "591:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EER2B_$2558",
                        "typeString": "contract EER2B"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 672,
                          "name": "_credit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 667,
                          "src": "606:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 671,
                        "name": "EER2B",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2558,
                        "src": "600:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EER2B_$2558_$",
                          "typeString": "type(contract EER2B)"
                        }
                      },
                      "id": 673,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "600:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EER2B_$2558",
                        "typeString": "contract EER2B"
                      }
                    },
                    "src": "591:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EER2B_$2558",
                      "typeString": "contract EER2B"
                    }
                  },
                  "id": 675,
                  "nodeType": "ExpressionStatement",
                  "src": "591:23:7"
                }
              ]
            },
            "documentation": null,
            "id": 677,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 667,
                  "name": "_credit",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "557:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "557:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "556:17:7"
            },
            "returnParameters": {
              "id": 669,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "581:0:7"
            },
            "scope": 808,
            "src": "545:76:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 689,
              "nodeType": "Block",
              "src": "675:97:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 682,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 656,
                          "src": "693:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                            "typeString": "mapping(uint256 => bool)"
                          }
                        },
                        "id": 684,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 683,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 679,
                          "src": "700:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "693:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206372656469742069732070726f68696269746564",
                        "id": 685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "710:43:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6aa7204c79c26b860d68d2282ff3329a74a55c99f0e16a98134ab5ff1231b9b3",
                          "typeString": "literal_string \"WhitelistAssets: the credit is prohibited\""
                        },
                        "value": "WhitelistAssets: the credit is prohibited"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6aa7204c79c26b860d68d2282ff3329a74a55c99f0e16a98134ab5ff1231b9b3",
                          "typeString": "literal_string \"WhitelistAssets: the credit is prohibited\""
                        }
                      ],
                      "id": 681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "685:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "685:69:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 687,
                  "nodeType": "ExpressionStatement",
                  "src": "685:69:7"
                },
                {
                  "id": 688,
                  "nodeType": "PlaceholderStatement",
                  "src": "764:1:7"
                }
              ]
            },
            "documentation": null,
            "id": 690,
            "name": "onlyWhitelistedAssets",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 680,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 679,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 690,
                  "src": "658:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:17:7"
            },
            "src": "627:145:7",
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": "@dev AddedAsset MUST emit when credit ID is added to the whitelist\n @param typeID the ID of the added credit",
            "id": 694,
            "name": "AddedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 692,
                  "indexed": true,
                  "name": "typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 694,
                  "src": "919:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "919:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "918:24:7"
            },
            "src": "902:41:7"
          },
          {
            "body": {
              "id": 754,
              "nodeType": "Block",
              "src": "1093:628:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 700,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 656,
                            "src": "1124:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                              "typeString": "mapping(uint256 => bool)"
                            }
                          },
                          "id": 702,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 701,
                            "name": "_typeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "1131:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1124:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1143:5:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "1124:24:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a2063616e6e6f74206164642074686520617373657420746861742068617320616c7265616479206265656e20696e207468652077686974656c697374",
                        "id": 705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1162:78:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_db630f02f8fdaf369c9d3c2601657cb171f25f6f0ad1d274a0dfe91a58c35a0b",
                          "typeString": "literal_string \"WhitelistAssets: cannot add the asset that has already been in the whitelist\""
                        },
                        "value": "WhitelistAssets: cannot add the asset that has already been in the whitelist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_db630f02f8fdaf369c9d3c2601657cb171f25f6f0ad1d274a0dfe91a58c35a0b",
                          "typeString": "literal_string \"WhitelistAssets: cannot add the asset that has already been in the whitelist\""
                        }
                      ],
                      "id": 699,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1103:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1103:147:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 707,
                  "nodeType": "ExpressionStatement",
                  "src": "1103:147:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 709,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 696,
                          "src": "1268:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1279:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1268:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206372656469742069642063616e6e6f74206265207a65726f",
                        "id": 712,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1282:47:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        },
                        "value": "WhitelistAssets: the credit id cannot be zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        }
                      ],
                      "id": 708,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1260:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1260:70:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 714,
                  "nodeType": "ExpressionStatement",
                  "src": "1260:70:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 725,
                            "name": "INTERFACE_SIGNATURE_METADATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 665,
                            "src": "1443:28:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 719,
                                        "name": "_typeID",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 696,
                                        "src": "1386:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 717,
                                        "name": "credit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 662,
                                        "src": "1369:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_EER2B_$2558",
                                          "typeString": "contract EER2B"
                                        }
                                      },
                                      "id": 718,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "metalinks",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1131,
                                      "src": "1369:16:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_string_memory_$",
                                        "typeString": "function (uint256) view external returns (string memory)"
                                      }
                                    },
                                    "id": 720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1369:25:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1075,
                                  "src": "1369:35:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_delegatecall_pure$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (address)"
                                  }
                                },
                                "id": 722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1369:37:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 716,
                              "name": "IERC165",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2827,
                              "src": "1361:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC165_$2827_$",
                                "typeString": "type(contract IERC165)"
                              }
                            },
                            "id": 723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1361:46:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC165_$2827",
                              "typeString": "contract IERC165"
                            }
                          },
                          "id": 724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2826,
                          "src": "1361:64:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view external returns (bool)"
                          }
                        },
                        "id": 726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1361:124:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206d6574616461746120636f6e7472616374206973206e6f7420737570706f7274656420696e74657266616365",
                        "id": 727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1499:67:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5fd74338c4331e7c1fd1e09d6fc3172dcfb4f6b99911db10fc36b1b193595e8b",
                          "typeString": "literal_string \"WhitelistAssets: the metadata contract is not supported interface\""
                        },
                        "value": "WhitelistAssets: the metadata contract is not supported interface"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5fd74338c4331e7c1fd1e09d6fc3172dcfb4f6b99911db10fc36b1b193595e8b",
                          "typeString": "literal_string \"WhitelistAssets: the metadata contract is not supported interface\""
                        }
                      ],
                      "id": 715,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "1340:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1340:236:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 729,
                  "nodeType": "ExpressionStatement",
                  "src": "1340:236:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 730,
                        "name": "assets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 656,
                        "src": "1586:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                          "typeString": "mapping(uint256 => bool)"
                        }
                      },
                      "id": 732,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 731,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 696,
                        "src": "1593:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1586:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1604:4:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1586:22:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 735,
                  "nodeType": "ExpressionStatement",
                  "src": "1586:22:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 736,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "1618:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 738,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 737,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 696,
                        "src": "1627:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1618:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 739,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "1638:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 741,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1647:1:7",
                        "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": "1638:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1618:31:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 743,
                  "nodeType": "ExpressionStatement",
                  "src": "1618:31:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 744,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "1659:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 746,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1668:1:7",
                        "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": "1659:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 747,
                      "name": "_typeID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 696,
                      "src": "1673:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1659:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 749,
                  "nodeType": "ExpressionStatement",
                  "src": "1659:21:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 751,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 696,
                        "src": "1706:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 750,
                      "name": "AddedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 694,
                      "src": "1695:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1695:19:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 753,
                  "nodeType": "EmitStatement",
                  "src": "1690:24:7"
                }
              ]
            },
            "documentation": "Add a new asset the whitelist asset database\n @param _typeID the ID of credit being added",
            "id": 755,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 696,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 755,
                  "src": "1067:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 695,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1067:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1066:17:7"
            },
            "returnParameters": {
              "id": 698,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1093:0:7"
            },
            "scope": 808,
            "src": "1054:667:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "anonymous": false,
            "documentation": "@dev RemovedAsset MUST emit when credit ID is removed to the whitelist\n @param typeID the ID of the removed credit",
            "id": 759,
            "name": "RemovedAsset",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 757,
                  "indexed": true,
                  "name": "typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "1876:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 756,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1876:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1875:24:7"
            },
            "src": "1857:43:7"
          },
          {
            "body": {
              "id": 806,
              "nodeType": "Block",
              "src": "2144:333:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 767,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 761,
                          "src": "2162:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2173:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2162:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20746865206372656469742069642063616e6e6f74206265207a65726f",
                        "id": 770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2176:47:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        },
                        "value": "WhitelistAssets: the credit id cannot be zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6890524808e6aeebb724078f47b50bac4a882472bdc0635b5035ffad2985a746",
                          "typeString": "literal_string \"WhitelistAssets: the credit id cannot be zero\""
                        }
                      ],
                      "id": 766,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "2154:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2154:70:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 772,
                  "nodeType": "ExpressionStatement",
                  "src": "2154:70:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 774,
                            "name": "linklist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 660,
                            "src": "2242:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 776,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 775,
                            "name": "_prevTypeID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 763,
                            "src": "2251:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2242:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 777,
                          "name": "_typeID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 761,
                          "src": "2267:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2242:32:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "57686974656c6973744173736574733a20696e76616c69642072656d6f766520617267756d656e74",
                        "id": 779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2276:42:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_15354644bdadea30f55666d8ef800d51bec08664b684fa351c783332f0e26938",
                          "typeString": "literal_string \"WhitelistAssets: invalid remove argument\""
                        },
                        "value": "WhitelistAssets: invalid remove argument"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_15354644bdadea30f55666d8ef800d51bec08664b684fa351c783332f0e26938",
                          "typeString": "literal_string \"WhitelistAssets: invalid remove argument\""
                        }
                      ],
                      "id": 773,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2997,
                        2998
                      ],
                      "referencedDeclaration": 2998,
                      "src": "2234:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2234:85:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 781,
                  "nodeType": "ExpressionStatement",
                  "src": "2234:85:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 782,
                        "name": "assets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 656,
                        "src": "2329:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                          "typeString": "mapping(uint256 => bool)"
                        }
                      },
                      "id": 784,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 783,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2336:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2329:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2347:5:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "2329:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 787,
                  "nodeType": "ExpressionStatement",
                  "src": "2329:23:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 788,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "2362:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 790,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 789,
                        "name": "_prevTypeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 763,
                        "src": "2371:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2362:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 791,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "2386:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 793,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 792,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2395:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2386:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2362:41:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 795,
                  "nodeType": "ExpressionStatement",
                  "src": "2362:41:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 796,
                        "name": "linklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "2413:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 798,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 797,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2422:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2413:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2433:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2413:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 801,
                  "nodeType": "ExpressionStatement",
                  "src": "2413:21:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 803,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 761,
                        "src": "2462:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 802,
                      "name": "RemovedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 759,
                      "src": "2449:12:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2449:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 805,
                  "nodeType": "EmitStatement",
                  "src": "2444:26:7"
                }
              ]
            },
            "documentation": "remove an asset from the whitelist asset database\n @param _typeID the ID of credit being removed\n @param _prevTypeID the prior credit ID in the linklist",
            "id": 807,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 761,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 807,
                  "src": "2097:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2097:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 763,
                  "name": "_prevTypeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 807,
                  "src": "2114:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2114:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2096:38:7"
            },
            "returnParameters": {
              "id": 765,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2144:0:7"
            },
            "scope": 808,
            "src": "2081:396:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 809,
        "src": "289:2190:7"
      }
    ],
    "src": "0:2480:7"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.19",
  "updatedAt": "2020-04-10T07:42:01.213Z",
  "devdoc": {
    "methods": {
      "add(uint256)": {
        "params": {
          "_typeID": "the ID of credit being added"
        }
      },
      "remove(uint256,uint256)": {
        "params": {
          "_prevTypeID": "the prior credit ID in the linklist",
          "_typeID": "the ID of credit being removed"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "add(uint256)": {
        "notice": "Add a new asset the whitelist asset database"
      },
      "remove(uint256,uint256)": {
        "notice": "remove an asset from the whitelist asset database"
      }
    },
    "notice": "WhitelistAssets keeps a whitelist assets record which warp allows to move cross chain"
  }
}