{
  "contractName": "TransferList",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/TransferList.sol\":\"TransferList\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/TransferList.sol\":{\"keccak256\":\"0xa727d843e9e080cfb18db56d3743b43976e6088611fe9410116979c3445ba307\",\"urls\":[\"bzzr://85a66c643474d182af350b259820260ef87a94eeda0c3128209a42437452bc83\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x239546071316c89d3bbc9e61b2ccae270a4493bbd2f7c240052f533807d50ab7\",\"urls\":[\"bzzr://267bf48e0a30f7b671aa3c98a6b27ffe7bc64efd6533f49e54188b520baa94c5\"]}},\"version\":1}",
  "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820f51c935f380f89eec8ae0dc343b00acd05dbd2dc13e5c9b61c86bf3066afa7c00029",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820f51c935f380f89eec8ae0dc343b00acd05dbd2dc13e5c9b61c86bf3066afa7c00029",
  "sourceMap": "94:2998:18:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
  "deployedSourceMap": "94:2998:18:-;;;;;;;;",
  "source": "pragma solidity >=0.4.24;\n\nimport \"../math/SafeMath.sol\";\n\n/**\n * @dev 通证列表处理\n */\nlibrary TransferList {\n  using SafeMath for uint256;\n\n  // 通证定义\n  struct element {\n    // 发起地址\n    address from;\n    // chainid+issuer计算的hash, chainid遵循BIP44,issuer遵守TokenList中规定\n    bytes32 tokenHash;\n    // 数量，ERC20需要注意decimals\n    uint256 amount;\n    // 在数组中的索引\n    uint256 idx;\n    // 目的地址\n    string to;\n  }\n\n  struct transferMap {\n    // element hash => index\n    mapping(bytes32 => uint256) map;\n    // data array 单向增加\n    element[] list;\n  }\n\n  function getHash(element e) internal pure returns (bytes32) {\n    return\n      keccak256(abi.encodePacked(e.from, e.tokenHash, e.amount, e.idx, e.to));\n  }\n\n  function existByIdx(transferMap storage self, uint256 _idx)\n    internal\n    view\n    returns (bool)\n  {\n    if (_idx >= self.list.length) return false;\n    return true;\n  }\n\n  function existByHash(transferMap storage self, bytes32 _hash)\n    internal\n    view\n    returns (bool)\n  {\n    /**\n    如果没有这个长度判断，在第一次操作时会导致invalid opcode\n     */\n    if (self.list.length == 0) return false;\n    element storage e = self.list[self.map[_hash]];\n    return _hash == getHash(e);\n  }\n\n  // 增加跨链转账指令内容\n  function insert(\n    transferMap storage self,\n    address _from,\n    bytes32 _tokenHash,\n    uint256 _amount,\n    string _to\n  ) internal returns (bytes32) {\n    element memory e =\n      element({\n        from: _from,\n        tokenHash: _tokenHash,\n        amount: _amount,\n        idx: self.list.length,\n        to: _to\n      });\n\n    bytes32 _hash = getHash(e);\n    require(!existByHash(self, _hash), \"same transfer data exist\");\n\n    self.list.push(e);\n    self.map[_hash] = e.idx;\n\n    return _hash;\n  }\n\n  function count(transferMap storage self) internal view returns (uint256) {\n    return self.list.length;\n  }\n\n  function getByIdx(transferMap storage self, uint256 _idx)\n    internal\n    view\n    returns (TransferList.element)\n  {\n    require(existByIdx(self, _idx), \"index must small than current count\");\n    return self.list[_idx];\n  }\n\n  function getByHash(transferMap storage self, bytes32 _hash)\n    internal\n    view\n    returns (TransferList.element)\n  {\n    require(existByHash(self, _hash), \"hash does not exist\");\n    return self.list[self.map[_hash]];\n  }\n\n  /**\n  @dev 从指定位置返回多条（不多于count）地址记录,如果不足则空缺\n   */\n  function getList(\n    transferMap storage self,\n    uint256 from,\n    uint256 _count\n  ) internal view returns (TransferList.element[] memory) {\n    uint256 _idx = 0;\n    require(from >= self.list.length, \"from must small than count\");\n    require(_count > 0, \"return number must bigger than 0\");\n\n    TransferList.element[] memory res = new TransferList.element[](_count);\n\n    for (uint256 i = from; i < self.list.length; i++) {\n      if (_idx == _count) {\n        break;\n      }\n\n      res[_idx] = self.list[i];\n      _idx = _idx.add(1);\n    }\n\n    return res;\n  }\n}\n",
  "sourcePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/TransferList.sol",
  "ast": {
    "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/TransferList.sol",
    "exportedSymbols": {
      "TransferList": [
        5282
      ]
    },
    "id": 5283,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4975,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:18"
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/math/SafeMath.sol",
        "file": "../math/SafeMath.sol",
        "id": 4976,
        "nodeType": "ImportDirective",
        "scope": 5283,
        "sourceUnit": 5658,
        "src": "27:30:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": "@dev 通证列表处理",
        "fullyImplemented": true,
        "id": 5282,
        "linearizedBaseContracts": [
          5282
        ],
        "name": "TransferList",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4979,
            "libraryName": {
              "contractScope": null,
              "id": 4977,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5657,
              "src": "125:8:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$5657",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "119:27:18",
            "typeName": {
              "id": 4978,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "138:7:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "TransferList.element",
            "id": 4990,
            "members": [
              {
                "constant": false,
                "id": 4981,
                "name": "from",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "209:12:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4980,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "209:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4983,
                "name": "tokenHash",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "313:17:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 4982,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "313:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4985,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "378:14:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4984,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "378:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4987,
                "name": "idx",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "427:11:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4986,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "427:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4989,
                "name": "to",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "464:9:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 4988,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "464:6:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "element",
            "nodeType": "StructDefinition",
            "scope": 5282,
            "src": "168:310:18",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferList.transferMap",
            "id": 4998,
            "members": [
              {
                "constant": false,
                "id": 4994,
                "name": "map",
                "nodeType": "VariableDeclaration",
                "scope": 4998,
                "src": "536:31:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 4993,
                  "keyType": {
                    "id": 4991,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "536:27:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 4992,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "555:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4997,
                "name": "list",
                "nodeType": "VariableDeclaration",
                "scope": 4998,
                "src": "604:14:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                  "typeString": "struct TransferList.element[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 4995,
                    "name": "element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "604:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "id": 4996,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "604:9:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                    "typeString": "struct TransferList.element[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "transferMap",
            "nodeType": "StructDefinition",
            "scope": 5282,
            "src": "482:141:18",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5021,
              "nodeType": "Block",
              "src": "687:95:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5008,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "733:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5009,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "from",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4981,
                            "src": "733:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5010,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "741:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5011,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4983,
                            "src": "741:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5012,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "754:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5013,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4985,
                            "src": "754:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5014,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "764:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5015,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "idx",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4987,
                            "src": "764:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5016,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "771:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5017,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "to",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4989,
                            "src": "771:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5006,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9028,
                            "src": "716:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 5007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "716:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 5018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "716:60:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 5005,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9035,
                      "src": "706:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 5019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "706:71:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5004,
                  "id": 5020,
                  "nodeType": "Return",
                  "src": "693:84:18"
                }
              ]
            },
            "documentation": null,
            "id": 5022,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5000,
                  "name": "e",
                  "nodeType": "VariableDeclaration",
                  "scope": 5022,
                  "src": "644:9:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                    "typeString": "struct TransferList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4999,
                    "name": "element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "644:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "643:11:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5003,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5022,
                  "src": "678:7:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5002,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "678:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "677:9:18"
            },
            "scope": 5282,
            "src": "627:155:18",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5041,
              "nodeType": "Block",
              "src": "889:70:18",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5031,
                      "name": "_idx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5026,
                      "src": "899:4:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5032,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5024,
                          "src": "907:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5033,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "907:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5034,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "907:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "899:24:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5038,
                  "nodeType": "IfStatement",
                  "src": "895:42:18",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 5036,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "932:5:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 5030,
                    "id": 5037,
                    "nodeType": "Return",
                    "src": "925:12:18"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "950:4:18",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5030,
                  "id": 5040,
                  "nodeType": "Return",
                  "src": "943:11:18"
                }
              ]
            },
            "documentation": null,
            "id": 5042,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "existByIdx",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5024,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "806:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5023,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "806:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5026,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "832:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5025,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "832:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "805:40:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5029,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "881:4:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5028,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "881:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "880:6:18"
            },
            "scope": 5282,
            "src": "786:173:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5075,
              "nodeType": "Block",
              "src": "1068:232:18",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5051,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5044,
                          "src": "1176:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5052,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "1176:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5053,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1176:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5054,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1196:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1176:21:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5058,
                  "nodeType": "IfStatement",
                  "src": "1172:39:18",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 5056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1206:5:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 5050,
                    "id": 5057,
                    "nodeType": "Return",
                    "src": "1199:12:18"
                  }
                },
                {
                  "assignments": [
                    5060
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5060,
                      "name": "e",
                      "nodeType": "VariableDeclaration",
                      "scope": 5076,
                      "src": "1217:17:18",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                        "typeString": "struct TransferList.element"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5059,
                        "name": "element",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4990,
                        "src": "1217:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                          "typeString": "struct TransferList.element"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5068,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5061,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5044,
                        "src": "1237:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5062,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "1237:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5067,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5063,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5044,
                          "src": "1247:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5064,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "1247:8:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5066,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5065,
                        "name": "_hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5046,
                        "src": "1256:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1247:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1237:26:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage",
                      "typeString": "struct TransferList.element storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1217:46:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 5073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5069,
                      "name": "_hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5046,
                      "src": "1276:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5071,
                          "name": "e",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5060,
                          "src": "1293:1:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element storage pointer"
                          }
                        ],
                        "id": 5070,
                        "name": "getHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "1285:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_element_$4990_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (struct TransferList.element memory) pure returns (bytes32)"
                        }
                      },
                      "id": 5072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1285:10:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1276:19:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5050,
                  "id": 5074,
                  "nodeType": "Return",
                  "src": "1269:26:18"
                }
              ]
            },
            "documentation": null,
            "id": 5076,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "existByHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5044,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5076,
                  "src": "984:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5043,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "984:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5046,
                  "name": "_hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5076,
                  "src": "1010:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "983:41:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5049,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5076,
                  "src": "1060:4:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5048,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1060:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1059:6:18"
            },
            "scope": 5282,
            "src": "963:337:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5137,
              "nodeType": "Block",
              "src": "1497:351:18",
              "statements": [
                {
                  "assignments": [
                    5092
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5092,
                      "name": "e",
                      "nodeType": "VariableDeclaration",
                      "scope": 5138,
                      "src": "1503:16:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                        "typeString": "struct TransferList.element"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5091,
                        "name": "element",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4990,
                        "src": "1503:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                          "typeString": "struct TransferList.element"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5102,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5094,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5080,
                        "src": "1552:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5095,
                        "name": "_tokenHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5082,
                        "src": "1578:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5096,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5084,
                        "src": "1606:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5097,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5078,
                            "src": "1628:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            }
                          },
                          "id": 5098,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "list",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4997,
                          "src": "1628:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                            "typeString": "struct TransferList.element storage ref[] storage ref"
                          }
                        },
                        "id": 5099,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1628:16:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5100,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5086,
                        "src": "1658:3:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 5093,
                      "name": "element",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4990,
                      "src": "1528:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_element_$4990_storage_ptr_$",
                        "typeString": "type(struct TransferList.element storage pointer)"
                      }
                    },
                    "id": 5101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "from",
                      "tokenHash",
                      "amount",
                      "idx",
                      "to"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "1528:142:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_memory",
                      "typeString": "struct TransferList.element memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1503:167:18"
                },
                {
                  "assignments": [
                    5104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5104,
                      "name": "_hash",
                      "nodeType": "VariableDeclaration",
                      "scope": 5138,
                      "src": "1677:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5103,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1677:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5108,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5106,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5092,
                        "src": "1701:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      ],
                      "id": 5105,
                      "name": "getHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5022,
                      "src": "1693:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_element_$4990_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct TransferList.element memory) pure returns (bytes32)"
                      }
                    },
                    "id": 5107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1693:10:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1677:26:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1717:25:18",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5111,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5078,
                              "src": "1730:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                "typeString": "struct TransferList.transferMap storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5112,
                              "name": "_hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5104,
                              "src": "1736:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                "typeString": "struct TransferList.transferMap storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5110,
                            "name": "existByHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5076,
                            "src": "1718:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_transferMap_$4998_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (struct TransferList.transferMap storage pointer,bytes32) view returns (bool)"
                            }
                          },
                          "id": 5113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1718:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "73616d65207472616e736665722064617461206578697374",
                        "id": 5115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1744:26:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_14690a9b6ce301c324ea879c3452daab3187fd18d7ced238fe13c4650dcac968",
                          "typeString": "literal_string \"same transfer data exist\""
                        },
                        "value": "same transfer data exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_14690a9b6ce301c324ea879c3452daab3187fd18d7ced238fe13c4650dcac968",
                          "typeString": "literal_string \"same transfer data exist\""
                        }
                      ],
                      "id": 5109,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "1709:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1709:62:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5117,
                  "nodeType": "ExpressionStatement",
                  "src": "1709:62:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5123,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5092,
                        "src": "1793:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5118,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5078,
                          "src": "1778:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5121,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "1778:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1778:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_element_$4990_storage_$returns$_t_uint256_$",
                        "typeString": "function (struct TransferList.element storage ref) returns (uint256)"
                      }
                    },
                    "id": 5124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1778:17:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5125,
                  "nodeType": "ExpressionStatement",
                  "src": "1778:17:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5126,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5078,
                          "src": "1801:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5129,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "1801:8:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5130,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5128,
                        "name": "_hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5104,
                        "src": "1810:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1801:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5131,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5092,
                        "src": "1819:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      },
                      "id": 5132,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "idx",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4987,
                      "src": "1819:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1801:23:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5134,
                  "nodeType": "ExpressionStatement",
                  "src": "1801:23:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5135,
                    "name": "_hash",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5104,
                    "src": "1838:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5090,
                  "id": 5136,
                  "nodeType": "Return",
                  "src": "1831:12:18"
                }
              ]
            },
            "documentation": null,
            "id": 5138,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5078,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1361:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5077,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "1361:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5080,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1391:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5079,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1391:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5082,
                  "name": "_tokenHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1410:18:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5081,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5084,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1434:15:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5083,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1434:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5086,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1455:10:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5085,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1455:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1355:114:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5089,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1488:7:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5088,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1488:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1487:9:18"
            },
            "scope": 5282,
            "src": "1340:508:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5149,
              "nodeType": "Block",
              "src": "1925:34:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5145,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5140,
                        "src": "1938:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5146,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "1938:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5147,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1938:16:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5144,
                  "id": 5148,
                  "nodeType": "Return",
                  "src": "1931:23:18"
                }
              ]
            },
            "documentation": null,
            "id": 5150,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5141,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5140,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5150,
                  "src": "1867:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5139,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "1867:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1866:26:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5143,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5150,
                  "src": "1916:7:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5142,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1916:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1915:9:18"
            },
            "scope": 5282,
            "src": "1852:107:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5172,
              "nodeType": "Block",
              "src": "2080:109:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5161,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5152,
                            "src": "2105:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5162,
                            "name": "_idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5154,
                            "src": "2111:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5160,
                          "name": "existByIdx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5042,
                          "src": "2094:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_transferMap_$4998_storage_ptr_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (struct TransferList.transferMap storage pointer,uint256) view returns (bool)"
                          }
                        },
                        "id": 5163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2094:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e646578206d75737420736d616c6c207468616e2063757272656e7420636f756e74",
                        "id": 5164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2118:37:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ced05a9863658d26be4f7cbaeffebfa53821dabbe1077d21241580b1e9ea74c5",
                          "typeString": "literal_string \"index must small than current count\""
                        },
                        "value": "index must small than current count"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ced05a9863658d26be4f7cbaeffebfa53821dabbe1077d21241580b1e9ea74c5",
                          "typeString": "literal_string \"index must small than current count\""
                        }
                      ],
                      "id": 5159,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2086:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2086:70:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5166,
                  "nodeType": "ExpressionStatement",
                  "src": "2086:70:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5167,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5152,
                        "src": "2169:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5168,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "2169:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5170,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5169,
                      "name": "_idx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5154,
                      "src": "2179:4:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2169:15:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage",
                      "typeString": "struct TransferList.element storage ref"
                    }
                  },
                  "functionReturnParameters": 5158,
                  "id": 5171,
                  "nodeType": "Return",
                  "src": "2162:22:18"
                }
              ]
            },
            "documentation": null,
            "id": 5173,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByIdx",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5152,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5173,
                  "src": "1981:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5151,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "1981:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5154,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 5173,
                  "src": "2007:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2007:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1980:40:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5157,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5173,
                  "src": "2056:20:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                    "typeString": "struct TransferList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5156,
                    "name": "TransferList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "2056:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2055:22:18"
            },
            "scope": 5282,
            "src": "1963:226:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5198,
              "nodeType": "Block",
              "src": "2312:106:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5184,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5175,
                            "src": "2338:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5185,
                            "name": "_hash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5177,
                            "src": "2344:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 5183,
                          "name": "existByHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5076,
                          "src": "2326:11:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_transferMap_$4998_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct TransferList.transferMap storage pointer,bytes32) view returns (bool)"
                          }
                        },
                        "id": 5186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2326:24:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6861736820646f6573206e6f74206578697374",
                        "id": 5187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2352:21:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4a39a6700e1d49646e3d5a5390d2443980ac508cfa2a391abd92b7780a54779e",
                          "typeString": "literal_string \"hash does not exist\""
                        },
                        "value": "hash does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4a39a6700e1d49646e3d5a5390d2443980ac508cfa2a391abd92b7780a54779e",
                          "typeString": "literal_string \"hash does not exist\""
                        }
                      ],
                      "id": 5182,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2318:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2318:56:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5189,
                  "nodeType": "ExpressionStatement",
                  "src": "2318:56:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5190,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5175,
                        "src": "2387:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "2387:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5192,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5175,
                          "src": "2397:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5193,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "2397:8:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5195,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5194,
                        "name": "_hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5177,
                        "src": "2406:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2397:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2387:26:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage",
                      "typeString": "struct TransferList.element storage ref"
                    }
                  },
                  "functionReturnParameters": 5181,
                  "id": 5197,
                  "nodeType": "Return",
                  "src": "2380:33:18"
                }
              ]
            },
            "documentation": null,
            "id": 5199,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5175,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2212:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5174,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "2212:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5177,
                  "name": "_hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2238:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5176,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2211:41:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5180,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2288:20:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                    "typeString": "struct TransferList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5179,
                    "name": "TransferList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "2288:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2287:22:18"
            },
            "scope": 5282,
            "src": "2193:225:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5280,
              "nodeType": "Block",
              "src": "2666:424:18",
              "statements": [
                {
                  "assignments": [
                    5212
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5212,
                      "name": "_idx",
                      "nodeType": "VariableDeclaration",
                      "scope": 5281,
                      "src": "2672:12:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5211,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2672:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5214,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 5213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2687:1:18",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2672:16:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5216,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5203,
                          "src": "2702:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5217,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5201,
                              "src": "2710:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                "typeString": "struct TransferList.transferMap storage pointer"
                              }
                            },
                            "id": 5218,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4997,
                            "src": "2710:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                              "typeString": "struct TransferList.element storage ref[] storage ref"
                            }
                          },
                          "id": 5219,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2710:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2702:24:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66726f6d206d75737420736d616c6c207468616e20636f756e74",
                        "id": 5221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2728:28:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_62045c40c0d6857e7c764c5821815c487c1a867564aea0b600aba8a1ea44620d",
                          "typeString": "literal_string \"from must small than count\""
                        },
                        "value": "from must small than count"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_62045c40c0d6857e7c764c5821815c487c1a867564aea0b600aba8a1ea44620d",
                          "typeString": "literal_string \"from must small than count\""
                        }
                      ],
                      "id": 5215,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2694:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2694:63:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5223,
                  "nodeType": "ExpressionStatement",
                  "src": "2694:63:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5227,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5225,
                          "name": "_count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5205,
                          "src": "2771:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2780:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2771:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657475726e206e756d626572206d75737420626967676572207468616e2030",
                        "id": 5228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2783:34:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_77e7c3b7b2e897d6d61c9adadd03e672f46f1501428d9e7f585ea1fd64517a2b",
                          "typeString": "literal_string \"return number must bigger than 0\""
                        },
                        "value": "return number must bigger than 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_77e7c3b7b2e897d6d61c9adadd03e672f46f1501428d9e7f585ea1fd64517a2b",
                          "typeString": "literal_string \"return number must bigger than 0\""
                        }
                      ],
                      "id": 5224,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2763:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2763:55:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5230,
                  "nodeType": "ExpressionStatement",
                  "src": "2763:55:18"
                },
                {
                  "assignments": [
                    5235
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5235,
                      "name": "res",
                      "nodeType": "VariableDeclaration",
                      "scope": 5281,
                      "src": "2825:33:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                        "typeString": "struct TransferList.element[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 5233,
                          "name": "TransferList.element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4990,
                          "src": "2825:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element"
                          }
                        },
                        "id": 5234,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2825:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                          "typeString": "struct TransferList.element[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5241,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5239,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5205,
                        "src": "2888:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2861:26:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_element_$4990_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct TransferList.element memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 5236,
                          "name": "TransferList.element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4990,
                          "src": "2865:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element"
                          }
                        },
                        "id": 5237,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2865:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                          "typeString": "struct TransferList.element[]"
                        }
                      }
                    },
                    "id": 5240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2861:34:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory",
                      "typeString": "struct TransferList.element memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2825:70:18"
                },
                {
                  "body": {
                    "id": 5276,
                    "nodeType": "Block",
                    "src": "2952:117:18",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5254,
                            "name": "_idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5212,
                            "src": "2964:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5255,
                            "name": "_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5205,
                            "src": "2972:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2964:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5259,
                        "nodeType": "IfStatement",
                        "src": "2960:44:18",
                        "trueBody": {
                          "id": 5258,
                          "nodeType": "Block",
                          "src": "2980:24:18",
                          "statements": [
                            {
                              "id": 5257,
                              "nodeType": "Break",
                              "src": "2990:5:18"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5260,
                              "name": "res",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5235,
                              "src": "3012:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                                "typeString": "struct TransferList.element memory[] memory"
                              }
                            },
                            "id": 5262,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5261,
                              "name": "_idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5212,
                              "src": "3016:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3012:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_element_$4990_memory",
                              "typeString": "struct TransferList.element memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5263,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5201,
                                "src": "3024:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                  "typeString": "struct TransferList.transferMap storage pointer"
                                }
                              },
                              "id": 5264,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "list",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4997,
                              "src": "3024:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                                "typeString": "struct TransferList.element storage ref[] storage ref"
                              }
                            },
                            "id": 5266,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5265,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5243,
                              "src": "3034:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3024:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_element_$4990_storage",
                              "typeString": "struct TransferList.element storage ref"
                            }
                          },
                          "src": "3012:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_memory",
                            "typeString": "struct TransferList.element memory"
                          }
                        },
                        "id": 5268,
                        "nodeType": "ExpressionStatement",
                        "src": "3012:24:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5269,
                            "name": "_idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5212,
                            "src": "3044:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 5272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3060:1:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5270,
                                "name": "_idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5212,
                                "src": "3051:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5635,
                              "src": "3051:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3051:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3044:18:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5275,
                        "nodeType": "ExpressionStatement",
                        "src": "3044:18:18"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5246,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5243,
                      "src": "2925:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5247,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5201,
                          "src": "2929:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5248,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "2929:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5249,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2929:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2925:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5277,
                  "initializationExpression": {
                    "assignments": [
                      5243
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5243,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 5281,
                        "src": "2907:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5242,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2907:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5245,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 5244,
                      "name": "from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5203,
                      "src": "2919:4:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2907:16:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2947:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 5251,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5243,
                        "src": "2947:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5253,
                    "nodeType": "ExpressionStatement",
                    "src": "2947:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "2902:167:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5278,
                    "name": "res",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5235,
                    "src": "3082:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                      "typeString": "struct TransferList.element memory[] memory"
                    }
                  },
                  "functionReturnParameters": 5210,
                  "id": 5279,
                  "nodeType": "Return",
                  "src": "3075:10:18"
                }
              ]
            },
            "documentation": "@dev 从指定位置返回多条（不多于count）地址记录,如果不足则空缺",
            "id": 5281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5201,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2545:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5200,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "2545:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5203,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2575:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5202,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2575:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5205,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2593:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2593:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2539:72:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5209,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2635:22:18",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                    "typeString": "struct TransferList.element[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 5207,
                      "name": "TransferList.element",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4990,
                      "src": "2635:20:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                        "typeString": "struct TransferList.element"
                      }
                    },
                    "id": 5208,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2635:22:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                      "typeString": "struct TransferList.element[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2634:31:18"
            },
            "scope": 5282,
            "src": "2523:567:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 5283,
        "src": "94:2998:18"
      }
    ],
    "src": "0:3093:18"
  },
  "legacyAST": {
    "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/TransferList.sol",
    "exportedSymbols": {
      "TransferList": [
        5282
      ]
    },
    "id": 5283,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4975,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:18"
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/math/SafeMath.sol",
        "file": "../math/SafeMath.sol",
        "id": 4976,
        "nodeType": "ImportDirective",
        "scope": 5283,
        "sourceUnit": 5658,
        "src": "27:30:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": "@dev 通证列表处理",
        "fullyImplemented": true,
        "id": 5282,
        "linearizedBaseContracts": [
          5282
        ],
        "name": "TransferList",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4979,
            "libraryName": {
              "contractScope": null,
              "id": 4977,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5657,
              "src": "125:8:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$5657",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "119:27:18",
            "typeName": {
              "id": 4978,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "138:7:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "TransferList.element",
            "id": 4990,
            "members": [
              {
                "constant": false,
                "id": 4981,
                "name": "from",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "209:12:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 4980,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "209:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4983,
                "name": "tokenHash",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "313:17:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 4982,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "313:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4985,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "378:14:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4984,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "378:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4987,
                "name": "idx",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "427:11:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4986,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "427:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4989,
                "name": "to",
                "nodeType": "VariableDeclaration",
                "scope": 4990,
                "src": "464:9:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 4988,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "464:6:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "element",
            "nodeType": "StructDefinition",
            "scope": 5282,
            "src": "168:310:18",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferList.transferMap",
            "id": 4998,
            "members": [
              {
                "constant": false,
                "id": 4994,
                "name": "map",
                "nodeType": "VariableDeclaration",
                "scope": 4998,
                "src": "536:31:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 4993,
                  "keyType": {
                    "id": 4991,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "536:27:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 4992,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "555:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4997,
                "name": "list",
                "nodeType": "VariableDeclaration",
                "scope": 4998,
                "src": "604:14:18",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                  "typeString": "struct TransferList.element[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 4995,
                    "name": "element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "604:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "id": 4996,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "604:9:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                    "typeString": "struct TransferList.element[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "transferMap",
            "nodeType": "StructDefinition",
            "scope": 5282,
            "src": "482:141:18",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5021,
              "nodeType": "Block",
              "src": "687:95:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5008,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "733:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5009,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "from",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4981,
                            "src": "733:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5010,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "741:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5011,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4983,
                            "src": "741:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5012,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "754:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5013,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4985,
                            "src": "754:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5014,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "764:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5015,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "idx",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4987,
                            "src": "764:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5016,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5000,
                              "src": "771:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                                "typeString": "struct TransferList.element memory"
                              }
                            },
                            "id": 5017,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "to",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4989,
                            "src": "771:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5006,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9028,
                            "src": "716:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 5007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "716:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 5018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "716:60:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 5005,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9035,
                      "src": "706:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 5019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "706:71:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5004,
                  "id": 5020,
                  "nodeType": "Return",
                  "src": "693:84:18"
                }
              ]
            },
            "documentation": null,
            "id": 5022,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5000,
                  "name": "e",
                  "nodeType": "VariableDeclaration",
                  "scope": 5022,
                  "src": "644:9:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                    "typeString": "struct TransferList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4999,
                    "name": "element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "644:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "643:11:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5003,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5022,
                  "src": "678:7:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5002,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "678:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "677:9:18"
            },
            "scope": 5282,
            "src": "627:155:18",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5041,
              "nodeType": "Block",
              "src": "889:70:18",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5031,
                      "name": "_idx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5026,
                      "src": "899:4:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5032,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5024,
                          "src": "907:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5033,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "907:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5034,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "907:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "899:24:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5038,
                  "nodeType": "IfStatement",
                  "src": "895:42:18",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 5036,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "932:5:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 5030,
                    "id": 5037,
                    "nodeType": "Return",
                    "src": "925:12:18"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "950:4:18",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5030,
                  "id": 5040,
                  "nodeType": "Return",
                  "src": "943:11:18"
                }
              ]
            },
            "documentation": null,
            "id": 5042,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "existByIdx",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5024,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "806:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5023,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "806:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5026,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "832:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5025,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "832:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "805:40:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5029,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "881:4:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5028,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "881:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "880:6:18"
            },
            "scope": 5282,
            "src": "786:173:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5075,
              "nodeType": "Block",
              "src": "1068:232:18",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5051,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5044,
                          "src": "1176:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5052,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "1176:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5053,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1176:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5054,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1196:1:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1176:21:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5058,
                  "nodeType": "IfStatement",
                  "src": "1172:39:18",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 5056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1206:5:18",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 5050,
                    "id": 5057,
                    "nodeType": "Return",
                    "src": "1199:12:18"
                  }
                },
                {
                  "assignments": [
                    5060
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5060,
                      "name": "e",
                      "nodeType": "VariableDeclaration",
                      "scope": 5076,
                      "src": "1217:17:18",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                        "typeString": "struct TransferList.element"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5059,
                        "name": "element",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4990,
                        "src": "1217:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                          "typeString": "struct TransferList.element"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5068,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5061,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5044,
                        "src": "1237:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5062,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "1237:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5067,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5063,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5044,
                          "src": "1247:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5064,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "1247:8:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5066,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5065,
                        "name": "_hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5046,
                        "src": "1256:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1247:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1237:26:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage",
                      "typeString": "struct TransferList.element storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1217:46:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 5073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5069,
                      "name": "_hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5046,
                      "src": "1276:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5071,
                          "name": "e",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5060,
                          "src": "1293:1:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element storage pointer"
                          }
                        ],
                        "id": 5070,
                        "name": "getHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "1285:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_element_$4990_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (struct TransferList.element memory) pure returns (bytes32)"
                        }
                      },
                      "id": 5072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1285:10:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1276:19:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5050,
                  "id": 5074,
                  "nodeType": "Return",
                  "src": "1269:26:18"
                }
              ]
            },
            "documentation": null,
            "id": 5076,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "existByHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5044,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5076,
                  "src": "984:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5043,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "984:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5046,
                  "name": "_hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5076,
                  "src": "1010:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "983:41:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5049,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5076,
                  "src": "1060:4:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5048,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1060:4:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1059:6:18"
            },
            "scope": 5282,
            "src": "963:337:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5137,
              "nodeType": "Block",
              "src": "1497:351:18",
              "statements": [
                {
                  "assignments": [
                    5092
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5092,
                      "name": "e",
                      "nodeType": "VariableDeclaration",
                      "scope": 5138,
                      "src": "1503:16:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                        "typeString": "struct TransferList.element"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5091,
                        "name": "element",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4990,
                        "src": "1503:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                          "typeString": "struct TransferList.element"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5102,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5094,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5080,
                        "src": "1552:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5095,
                        "name": "_tokenHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5082,
                        "src": "1578:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5096,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5084,
                        "src": "1606:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5097,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5078,
                            "src": "1628:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            }
                          },
                          "id": 5098,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "list",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4997,
                          "src": "1628:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                            "typeString": "struct TransferList.element storage ref[] storage ref"
                          }
                        },
                        "id": 5099,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1628:16:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5100,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5086,
                        "src": "1658:3:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 5093,
                      "name": "element",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4990,
                      "src": "1528:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_element_$4990_storage_ptr_$",
                        "typeString": "type(struct TransferList.element storage pointer)"
                      }
                    },
                    "id": 5101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "from",
                      "tokenHash",
                      "amount",
                      "idx",
                      "to"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "1528:142:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_memory",
                      "typeString": "struct TransferList.element memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1503:167:18"
                },
                {
                  "assignments": [
                    5104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5104,
                      "name": "_hash",
                      "nodeType": "VariableDeclaration",
                      "scope": 5138,
                      "src": "1677:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5103,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1677:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5108,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5106,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5092,
                        "src": "1701:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      ],
                      "id": 5105,
                      "name": "getHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5022,
                      "src": "1693:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_element_$4990_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct TransferList.element memory) pure returns (bytes32)"
                      }
                    },
                    "id": 5107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1693:10:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1677:26:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1717:25:18",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5111,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5078,
                              "src": "1730:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                "typeString": "struct TransferList.transferMap storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5112,
                              "name": "_hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5104,
                              "src": "1736:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                "typeString": "struct TransferList.transferMap storage pointer"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5110,
                            "name": "existByHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5076,
                            "src": "1718:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_transferMap_$4998_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (struct TransferList.transferMap storage pointer,bytes32) view returns (bool)"
                            }
                          },
                          "id": 5113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1718:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "73616d65207472616e736665722064617461206578697374",
                        "id": 5115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1744:26:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_14690a9b6ce301c324ea879c3452daab3187fd18d7ced238fe13c4650dcac968",
                          "typeString": "literal_string \"same transfer data exist\""
                        },
                        "value": "same transfer data exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_14690a9b6ce301c324ea879c3452daab3187fd18d7ced238fe13c4650dcac968",
                          "typeString": "literal_string \"same transfer data exist\""
                        }
                      ],
                      "id": 5109,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "1709:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1709:62:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5117,
                  "nodeType": "ExpressionStatement",
                  "src": "1709:62:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5123,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5092,
                        "src": "1793:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5118,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5078,
                          "src": "1778:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5121,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "1778:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1778:14:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_element_$4990_storage_$returns$_t_uint256_$",
                        "typeString": "function (struct TransferList.element storage ref) returns (uint256)"
                      }
                    },
                    "id": 5124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1778:17:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5125,
                  "nodeType": "ExpressionStatement",
                  "src": "1778:17:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5126,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5078,
                          "src": "1801:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5129,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "1801:8:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5130,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5128,
                        "name": "_hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5104,
                        "src": "1810:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1801:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5131,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5092,
                        "src": "1819:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                          "typeString": "struct TransferList.element memory"
                        }
                      },
                      "id": 5132,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "idx",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4987,
                      "src": "1819:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1801:23:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5134,
                  "nodeType": "ExpressionStatement",
                  "src": "1801:23:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5135,
                    "name": "_hash",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5104,
                    "src": "1838:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5090,
                  "id": 5136,
                  "nodeType": "Return",
                  "src": "1831:12:18"
                }
              ]
            },
            "documentation": null,
            "id": 5138,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5078,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1361:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5077,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "1361:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5080,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1391:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5079,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1391:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5082,
                  "name": "_tokenHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1410:18:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5081,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5084,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1434:15:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5083,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1434:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5086,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1455:10:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5085,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1455:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1355:114:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5089,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5138,
                  "src": "1488:7:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5088,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1488:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1487:9:18"
            },
            "scope": 5282,
            "src": "1340:508:18",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5149,
              "nodeType": "Block",
              "src": "1925:34:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5145,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5140,
                        "src": "1938:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5146,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "1938:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5147,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1938:16:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5144,
                  "id": 5148,
                  "nodeType": "Return",
                  "src": "1931:23:18"
                }
              ]
            },
            "documentation": null,
            "id": 5150,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5141,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5140,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5150,
                  "src": "1867:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5139,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "1867:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1866:26:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5143,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5150,
                  "src": "1916:7:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5142,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1916:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1915:9:18"
            },
            "scope": 5282,
            "src": "1852:107:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5172,
              "nodeType": "Block",
              "src": "2080:109:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5161,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5152,
                            "src": "2105:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5162,
                            "name": "_idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5154,
                            "src": "2111:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5160,
                          "name": "existByIdx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5042,
                          "src": "2094:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_transferMap_$4998_storage_ptr_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (struct TransferList.transferMap storage pointer,uint256) view returns (bool)"
                          }
                        },
                        "id": 5163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2094:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e646578206d75737420736d616c6c207468616e2063757272656e7420636f756e74",
                        "id": 5164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2118:37:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ced05a9863658d26be4f7cbaeffebfa53821dabbe1077d21241580b1e9ea74c5",
                          "typeString": "literal_string \"index must small than current count\""
                        },
                        "value": "index must small than current count"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ced05a9863658d26be4f7cbaeffebfa53821dabbe1077d21241580b1e9ea74c5",
                          "typeString": "literal_string \"index must small than current count\""
                        }
                      ],
                      "id": 5159,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2086:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2086:70:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5166,
                  "nodeType": "ExpressionStatement",
                  "src": "2086:70:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5167,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5152,
                        "src": "2169:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5168,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "2169:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5170,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5169,
                      "name": "_idx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5154,
                      "src": "2179:4:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2169:15:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage",
                      "typeString": "struct TransferList.element storage ref"
                    }
                  },
                  "functionReturnParameters": 5158,
                  "id": 5171,
                  "nodeType": "Return",
                  "src": "2162:22:18"
                }
              ]
            },
            "documentation": null,
            "id": 5173,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByIdx",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5152,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5173,
                  "src": "1981:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5151,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "1981:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5154,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 5173,
                  "src": "2007:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2007:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1980:40:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5157,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5173,
                  "src": "2056:20:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                    "typeString": "struct TransferList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5156,
                    "name": "TransferList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "2056:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2055:22:18"
            },
            "scope": 5282,
            "src": "1963:226:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5198,
              "nodeType": "Block",
              "src": "2312:106:18",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5184,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5175,
                            "src": "2338:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5185,
                            "name": "_hash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5177,
                            "src": "2344:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                              "typeString": "struct TransferList.transferMap storage pointer"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 5183,
                          "name": "existByHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5076,
                          "src": "2326:11:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_transferMap_$4998_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (struct TransferList.transferMap storage pointer,bytes32) view returns (bool)"
                          }
                        },
                        "id": 5186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2326:24:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6861736820646f6573206e6f74206578697374",
                        "id": 5187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2352:21:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4a39a6700e1d49646e3d5a5390d2443980ac508cfa2a391abd92b7780a54779e",
                          "typeString": "literal_string \"hash does not exist\""
                        },
                        "value": "hash does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4a39a6700e1d49646e3d5a5390d2443980ac508cfa2a391abd92b7780a54779e",
                          "typeString": "literal_string \"hash does not exist\""
                        }
                      ],
                      "id": 5182,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2318:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2318:56:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5189,
                  "nodeType": "ExpressionStatement",
                  "src": "2318:56:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5190,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5175,
                        "src": "2387:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                          "typeString": "struct TransferList.transferMap storage pointer"
                        }
                      },
                      "id": 5191,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4997,
                      "src": "2387:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                        "typeString": "struct TransferList.element storage ref[] storage ref"
                      }
                    },
                    "id": 5196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5192,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5175,
                          "src": "2397:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5193,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "2397:8:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5195,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5194,
                        "name": "_hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5177,
                        "src": "2406:5:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2397:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2387:26:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage",
                      "typeString": "struct TransferList.element storage ref"
                    }
                  },
                  "functionReturnParameters": 5181,
                  "id": 5197,
                  "nodeType": "Return",
                  "src": "2380:33:18"
                }
              ]
            },
            "documentation": null,
            "id": 5199,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getByHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5175,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2212:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5174,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "2212:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5177,
                  "name": "_hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2238:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5176,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2211:41:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5180,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2288:20:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$4990_memory_ptr",
                    "typeString": "struct TransferList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5179,
                    "name": "TransferList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4990,
                    "src": "2288:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                      "typeString": "struct TransferList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2287:22:18"
            },
            "scope": 5282,
            "src": "2193:225:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5280,
              "nodeType": "Block",
              "src": "2666:424:18",
              "statements": [
                {
                  "assignments": [
                    5212
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5212,
                      "name": "_idx",
                      "nodeType": "VariableDeclaration",
                      "scope": 5281,
                      "src": "2672:12:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5211,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2672:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5214,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 5213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2687:1:18",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2672:16:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5216,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5203,
                          "src": "2702:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5217,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5201,
                              "src": "2710:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                "typeString": "struct TransferList.transferMap storage pointer"
                              }
                            },
                            "id": 5218,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4997,
                            "src": "2710:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                              "typeString": "struct TransferList.element storage ref[] storage ref"
                            }
                          },
                          "id": 5219,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2710:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2702:24:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66726f6d206d75737420736d616c6c207468616e20636f756e74",
                        "id": 5221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2728:28:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_62045c40c0d6857e7c764c5821815c487c1a867564aea0b600aba8a1ea44620d",
                          "typeString": "literal_string \"from must small than count\""
                        },
                        "value": "from must small than count"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_62045c40c0d6857e7c764c5821815c487c1a867564aea0b600aba8a1ea44620d",
                          "typeString": "literal_string \"from must small than count\""
                        }
                      ],
                      "id": 5215,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2694:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2694:63:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5223,
                  "nodeType": "ExpressionStatement",
                  "src": "2694:63:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5227,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5225,
                          "name": "_count",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5205,
                          "src": "2771:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2780:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2771:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657475726e206e756d626572206d75737420626967676572207468616e2030",
                        "id": 5228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2783:34:18",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_77e7c3b7b2e897d6d61c9adadd03e672f46f1501428d9e7f585ea1fd64517a2b",
                          "typeString": "literal_string \"return number must bigger than 0\""
                        },
                        "value": "return number must bigger than 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_77e7c3b7b2e897d6d61c9adadd03e672f46f1501428d9e7f585ea1fd64517a2b",
                          "typeString": "literal_string \"return number must bigger than 0\""
                        }
                      ],
                      "id": 5224,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "2763:7:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2763:55:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5230,
                  "nodeType": "ExpressionStatement",
                  "src": "2763:55:18"
                },
                {
                  "assignments": [
                    5235
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5235,
                      "name": "res",
                      "nodeType": "VariableDeclaration",
                      "scope": 5281,
                      "src": "2825:33:18",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                        "typeString": "struct TransferList.element[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 5233,
                          "name": "TransferList.element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4990,
                          "src": "2825:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element"
                          }
                        },
                        "id": 5234,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2825:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                          "typeString": "struct TransferList.element[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5241,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5239,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5205,
                        "src": "2888:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2861:26:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_element_$4990_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct TransferList.element memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 5236,
                          "name": "TransferList.element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4990,
                          "src": "2865:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                            "typeString": "struct TransferList.element"
                          }
                        },
                        "id": 5237,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2865:22:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                          "typeString": "struct TransferList.element[]"
                        }
                      }
                    },
                    "id": 5240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2861:34:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory",
                      "typeString": "struct TransferList.element memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2825:70:18"
                },
                {
                  "body": {
                    "id": 5276,
                    "nodeType": "Block",
                    "src": "2952:117:18",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5254,
                            "name": "_idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5212,
                            "src": "2964:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5255,
                            "name": "_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5205,
                            "src": "2972:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2964:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5259,
                        "nodeType": "IfStatement",
                        "src": "2960:44:18",
                        "trueBody": {
                          "id": 5258,
                          "nodeType": "Block",
                          "src": "2980:24:18",
                          "statements": [
                            {
                              "id": 5257,
                              "nodeType": "Break",
                              "src": "2990:5:18"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5260,
                              "name": "res",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5235,
                              "src": "3012:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                                "typeString": "struct TransferList.element memory[] memory"
                              }
                            },
                            "id": 5262,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5261,
                              "name": "_idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5212,
                              "src": "3016:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3012:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_element_$4990_memory",
                              "typeString": "struct TransferList.element memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5263,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5201,
                                "src": "3024:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                                  "typeString": "struct TransferList.transferMap storage pointer"
                                }
                              },
                              "id": 5264,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "list",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4997,
                              "src": "3024:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                                "typeString": "struct TransferList.element storage ref[] storage ref"
                              }
                            },
                            "id": 5266,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5265,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5243,
                              "src": "3034:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3024:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_element_$4990_storage",
                              "typeString": "struct TransferList.element storage ref"
                            }
                          },
                          "src": "3012:24:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_element_$4990_memory",
                            "typeString": "struct TransferList.element memory"
                          }
                        },
                        "id": 5268,
                        "nodeType": "ExpressionStatement",
                        "src": "3012:24:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5269,
                            "name": "_idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5212,
                            "src": "3044:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 5272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3060:1:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5270,
                                "name": "_idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5212,
                                "src": "3051:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5635,
                              "src": "3051:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3051:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3044:18:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5275,
                        "nodeType": "ExpressionStatement",
                        "src": "3044:18:18"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5246,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5243,
                      "src": "2925:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5247,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5201,
                          "src": "2929:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                            "typeString": "struct TransferList.transferMap storage pointer"
                          }
                        },
                        "id": 5248,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4997,
                        "src": "2929:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage",
                          "typeString": "struct TransferList.element storage ref[] storage ref"
                        }
                      },
                      "id": 5249,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2929:16:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2925:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5277,
                  "initializationExpression": {
                    "assignments": [
                      5243
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5243,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 5281,
                        "src": "2907:9:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5242,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2907:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 5245,
                    "initialValue": {
                      "argumentTypes": null,
                      "id": 5244,
                      "name": "from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5203,
                      "src": "2919:4:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2907:16:18"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2947:3:18",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 5251,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5243,
                        "src": "2947:1:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5253,
                    "nodeType": "ExpressionStatement",
                    "src": "2947:3:18"
                  },
                  "nodeType": "ForStatement",
                  "src": "2902:167:18"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5278,
                    "name": "res",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5235,
                    "src": "3082:3:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                      "typeString": "struct TransferList.element memory[] memory"
                    }
                  },
                  "functionReturnParameters": 5210,
                  "id": 5279,
                  "nodeType": "Return",
                  "src": "3075:10:18"
                }
              ]
            },
            "documentation": "@dev 从指定位置返回多条（不多于count）地址记录,如果不足则空缺",
            "id": 5281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5201,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2545:24:18",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                    "typeString": "struct TransferList.transferMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5200,
                    "name": "transferMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4998,
                    "src": "2545:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_transferMap_$4998_storage_ptr",
                      "typeString": "struct TransferList.transferMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5203,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2575:12:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5202,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2575:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5205,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2593:14:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2593:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2539:72:18"
            },
            "payable": false,
            "returnParameters": {
              "id": 5210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5209,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5281,
                  "src": "2635:22:18",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_element_$4990_memory_$dyn_memory_ptr",
                    "typeString": "struct TransferList.element[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 5207,
                      "name": "TransferList.element",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4990,
                      "src": "2635:20:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$4990_storage_ptr",
                        "typeString": "struct TransferList.element"
                      }
                    },
                    "id": 5208,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2635:22:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$4990_storage_$dyn_storage_ptr",
                      "typeString": "struct TransferList.element[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2634:31:18"
            },
            "scope": 5282,
            "src": "2523:567:18",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 5283,
        "src": "94:2998:18"
      }
    ],
    "src": "0:3093:18"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2021-03-06T09:30:01.020Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}