{
  "contractName": "ConversionPathFinder",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "_registry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_prevOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "OwnerUpdate",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "anchorToken",
      "outputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "newOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "onlyOwnerCanUpdateRegistry",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "prevRegistry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "restoreRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_onlyOwnerCanUpdateRegistry",
          "type": "bool"
        }
      ],
      "name": "restrictRegistryUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_anchorToken",
          "type": "address"
        }
      ],
      "name": "setAnchorToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_sourceToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Token",
          "name": "_targetToken",
          "type": "address"
        }
      ],
      "name": "findPath",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"anchorToken\",\"outputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_sourceToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Token\",\"name\":\"_targetToken\",\"type\":\"address\"}],\"name\":\"findPath\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_anchorToken\",\"type\":\"address\"}],\"name\":\"setAnchorToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The ConversionPathFinder contract allows generating a conversion path between any token pair in the Bancor Network. The path can then be used in various functions in the BancorNetwork contract. See the BancorNetwork contract for conversion path format.\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"constructor\":{\"details\":\"initializes a new ConversionPathFinder instance\",\"params\":{\"_registry\":\"address of a contract registry contract\"}},\"findPath(address,address)\":{\"details\":\"generates a conversion path between a given pair of tokens in the Bancor Network\",\"params\":{\"_sourceToken\":\"address of the source token\",\"_targetToken\":\"address of the target token\"},\"returns\":{\"_0\":\"a path from the source token to the target token\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"setAnchorToken(address)\":{\"details\":\"updates the anchor token\",\"params\":{\"_anchorToken\":\"address of the anchor token\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/ConversionPathFinder.sol\":\"ConversionPathFinder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/ConversionPathFinder.sol\":{\"keccak256\":\"0x871b9cdd5219e84cdbb34d3c6ce58f7debed7d352bf1d10c34491512a4823817\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9b041bd28c964c898204a6a59423335db04d13428edff9eed584d180e43f54e9\",\"dweb:/ipfs/QmetR7aSeGYHsUUhrHB6yZV5aRcuwUvN4EmcZzDoAPSLtQ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/IConversionPathFinder.sol\":{\"keccak256\":\"0x2d0f5b57bc448581a6e2296486ca618851138f40928049d75220623605915d7b\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://2182eb05da8442792a5f3f4d8cdb2cf0bf9e952ca02638f3880cc59d5fd6dcb6\",\"dweb:/ipfs/QmSH9uWh6zTQkcBgD7VGGSzYW9DjdBDkUZUZ6zhzPWPPDz\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol\":{\"keccak256\":\"0x18b0d73a3d5ee951ede1b3f840ed35b40570e34975703079a4451555f4dd089b\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1cd7263f1ef60793e3929509150420037df9a1194c3d0f40bb2ff5516d6a373f\",\"dweb:/ipfs/QmNUbsZt2rzWPjStYycgz3vMbNP4VrAqZPRAK39QNqUoos\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol\":{\"keccak256\":\"0x9448cdbe90293fb5c1a0808b77af8754a1025b59c45f432eee01f659361a6115\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1ef2bb2e1543c9324daf7f3fd086a57efb45b89f3d62b9d7a9fc78c138d24dbc\",\"dweb:/ipfs/QmVcXDib3K6xYJMBNxawmo4krJGiDfxb5oL64Lc3pi14XK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol\":{\"keccak256\":\"0x827d22d6c52b3e5128595090a3694847e9c54a760abf0e47a8870a7235537723\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://edae6c2f9f6fde390032189dda1b7f720521a31df5eb98e001d04bbf44dcfa02\",\"dweb:/ipfs/QmRz2EG3tcKeKXwHizciEr19ZEH2SidtQ9rkprKc6iR5Tz\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol\":{\"keccak256\":\"0x3551889a83738b621c29ed66f1ecb6a843cca4217e54c9357198559b9cc92259\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://231a59c8f2665adeda8c7e6930832409c9b991fd27ad84b3a24335e7bf269bbe\",\"dweb:/ipfs/QmeJJbn1EAUbZenruTEdJAnwUn3dxsVNeJvxPe81qKEGqL\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IWhitelist.sol\":{\"keccak256\":\"0x356ad553ceeaea04d7cb8f0d6a5663c47dfccb2bd82517348128f032416ee34a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9ea3bbb9945144ead2c1392351f2f9f7444af78569f2b95da2e68bb6b919db52\",\"dweb:/ipfs/QmPyUAk44Kj7nJB4tzYqeSXWHyYP51mRNynEmWra9m4eKS\"]}},\"version\":1}",
  "bytecode": "[encoded data, 8528 characters]",
  "deployedBytecode": "[encoded data, 8048 characters]",
  "immutableReferences": {},
  "sourceMap": "614:5672:1:-:0;;;893:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;893:90:1;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;893:90:1;;594:23:64;893:90:1;594:13:64;:23::i;:::-;-1:-1:-1;2122:8:56::1;:39:::0;;-1:-1:-1;;;;;2122:39:56;;::::1;-1:-1:-1::0;;;;;;2122:39:56;;::::1;::::0;::::1;::::0;;;2172:12:::1;:43:::0;;;;::::1;;::::0;;-1:-1:-1;614:5672:1;;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;614:5672:1:-;;;;;;;",
  "deployedSourceMap": "614:5672:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;1113:112:1;;;;;;;;;;;;;;;;-1:-1:-1;1113:112:1;-1:-1:-1;;;;;1113:112:1;;:::i;1333:38:56:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;2300:925;;;:::i;1243:37::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1243:37:56;;;;;;;;;;;;;;1422:217:57;;;:::i;1154:33:56:-;;;:::i;219:29:57:-;;;:::i;1543:446:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1543:446:1;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3304:137:56;;;:::i;255:23:57:-;;;:::i;700:30:1:-;;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;3655:224:56:-;726:12:57;:10;:12::i;:::-;3815:26:56::1;:56:::0;;;::::1;;-1:-1:-1::0;;;3815:56:56::1;-1:-1:-1::0;;;;3815:56:56;;::::1;::::0;;;::::1;::::0;;3655:224::o;1113:112:1:-;726:12:57;:10;:12::i;:::-;1191:11:1::1;:26:::0;;-1:-1:-1;;;;;;1191:26:1::1;-1:-1:-1::0;;;;;1191:26:1;;;::::1;::::0;;;::::1;::::0;;1113:112::o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;2300:925::-;2417:5;;-1:-1:-1;;;;;2417:5:56;2403:10;:19;;:50;;-1:-1:-1;2427:26:56;;-1:-1:-1;;;2427:26:56;;;;2426:27;2403:50;2395:80;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;;;;2530:29;2580:28;-1:-1:-1;;;2580:9:56;:28::i;:::-;2721:8;;2530:79;;-1:-1:-1;;;;;;2706:23:56;;;2721:8;;2706:23;;;;:61;;-1:-1:-1;;;;;;2733:34:56;;;;2706:61;2698:94;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;;;;2959:1;-1:-1:-1;;;;;2907:54:56;:11;-1:-1:-1;;;;;2907:21:56;;-1:-1:-1;;;2907:40:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:40:56;-1:-1:-1;;;;;2907:54:56;;;2899:87;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;;;;3093:8;;;3078:12;:23;;-1:-1:-1;;;;;3093:8:56;;;-1:-1:-1;;;;;;3078:23:56;;;;;;;3195:22;;;;;;;;;;;2300:925::o;1243:37::-;;;-1:-1:-1;;;;;1243:37:56;;:::o;1422:217:57:-;1498:8;;-1:-1:-1;;;;;1498:8:57;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:57;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:57;;;-1:-1:-1;;;;;1591:8:57;;1583:16;;;;1610:21;;;1422:217::o;1154:33:56:-;;;-1:-1:-1;;;;;1154:33:56;;:::o;219:29:57:-;;;-1:-1:-1;;;;;219:29:57;;:::o;1543:446:1:-;1645:16;1674:36;1732:29;1742:18;1732:9;:29::i;:::-;1674:88;;1773:27;1803:40;1811:12;1825:17;1803:7;:40::i;:::-;1773:70;;1854:27;1884:40;1892:12;1906:17;1884:7;:40::i;:::-;1854:70;;1942:39;1958:10;1970;1942:15;:39::i;:::-;1935:46;;;;;1543:446;;;;;:::o;3304:137:56:-;726:12:57;:10;:12::i;:::-;3421::56::1;::::0;3410:8:::1;:23:::0;;-1:-1:-1;;;;;;3410:23:56::1;-1:-1:-1::0;;;;;3421:12:56;;::::1;3410:23:::0;;;::::1;::::0;;3304:137::o;255:23:57:-;;;-1:-1:-1;;;;;255:23:57;;:::o;700:30:1:-;;;-1:-1:-1;;;;;700:30:1;;:::o;1164:167:57:-;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:57;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:57;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:57;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:57::1;-1:-1:-1::0;;;;;1303:20:57;;;::::1;::::0;;;::::1;::::0;;1164:167::o;813:104::-;882:5;;-1:-1:-1;;;;;882:5:57;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;;;;813:104::o;4077:133:56:-;4169:8;;:33;;;-1:-1:-1;;;4169:33:56;;;;;;;;;;4142:7;;-1:-1:-1;;;;;4169:8:56;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4169:33:56;;4077:133;-1:-1:-1;;4077:133:56:o;2311:1176:1:-;2452:11;;2409:16;;-1:-1:-1;;;;;2442:21:1;;;2452:11;;2442:21;2438:79;;;2485:32;2509:6;2485:15;:32::i;:::-;2478:39;;;;2438:79;2530:24;2569:18;-1:-1:-1;;;;;2569:27:1;;2605:6;2569:44;;;;;;;;;;;;;-1:-1:-1;;;;;2569:44:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2569:44:1;2565:197;;;2638:32;2662:6;2638:15;:32::i;:::-;2628:42;;2565:197;;;2709:18;-1:-1:-1;;;;;2709:45:1;;2755:6;2709:53;;;;;;;;;;;;;-1:-1:-1;;;;;2709:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2709:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2709:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2699:63;;2565:197;2780:9;2775:669;2799:7;:14;2795:1;:18;2775:669;;;2835:20;2894:7;2902:1;2894:10;;;;;;;;;;;;;;-1:-1:-1;;;;;2877:34:1;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2877:36:1;2960:31;;;-1:-1:-1;;;2960:31:1;;;;2877:36;;-1:-1:-1;2930:27:1;;-1:-1:-1;;;;;2960:29:1;;;;;:31;;;;;2877:36;;2960:31;;;;;;;:29;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2960:31:1;2930:61;;;-1:-1:-1;3011:9:1;3006:427;3030:19;3026:1;:23;3006:427;;;3075:26;3104:9;-1:-1:-1;;;;;3104:25:1;;3130:1;3104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3104:28:1;;-1:-1:-1;;;;;;3155:24:1;;;;;;;3151:267;;3204:21;3228:43;3236:14;3252:18;3228:7;:43::i;:::-;3298:11;;3204:67;;-1:-1:-1;3298:15:1;3294:104;;3347:51;3372:6;3381:7;3389:1;3381:10;;;;;;;;;;;;;;3393:4;3347:16;:51::i;:::-;3340:58;;;;;;;;;;;3294:104;3151:267;;-1:-1:-1;3051:3:1;;3006:427;;;-1:-1:-1;;;2815:3:1;;2775:669;;;-1:-1:-1;3463:16:1;;;3477:1;3463:16;;;;;;;;;;;-1:-1:-1;3456:23:1;2311:1176;-1:-1:-1;;;;2311:1176:1:o;3730:1114::-;3837:16;3891:1;3870:11;:18;:22;:48;;;;;3917:1;3896:11;:18;:22;3870:48;3866:935;;;3947:18;;3992;;4025:127;4036:1;4032;:5;:14;;;;;4045:1;4041;:5;4032:14;:58;;;;;4072:11;4088:1;4084;:5;4072:18;;;;;;;;;;;;;;-1:-1:-1;;;;;4050:40:1;:11;4066:1;4062;:5;4050:18;;;;;;;;;;;;;;-1:-1:-1;;;;;4050:40:1;;4032:58;4025:127;;;-1:-1:-1;;4111:3:1;;;;4133;4025:127;;;4168:21;4210:1;4206;:5;4214:1;4206:9;4192:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4192:24:1;;4168:48;;4236:9;4231:74;4256:1;4251;:6;4231:74;;4291:11;4303:1;4291:14;;;;;;;;;;;;;;4281:4;4286:1;4281:7;;;;;;;;-1:-1:-1;;;;;4281:24:1;;;:7;;;;;;;;;;;:24;4259:3;;4231:74;;;-1:-1:-1;4337:1:1;4320:91;4340:5;;4320:91;;4393:11;4409:1;4405;:5;4393:18;;;;;;;;;;;;;;4369:4;4388:1;4374:4;:11;:15;4369:21;;;;;;;;-1:-1:-1;;;;;4369:42:1;;;:21;;;;;;;;;;;:42;-1:-1:-1;;4347:3:1;4320:91;;;;4428:14;4466:9;4461:276;4485:4;:11;4481:1;:15;4461:276;;;4546:1;4542:5;;4525:154;4571:1;4567;:5;4553:4;:11;:19;4549:1;:23;4525:154;;;4620:4;4625:1;4620:7;;;;;;;;;;;;;;-1:-1:-1;;;;;4609:18:1;:4;4614:1;4609:7;;;;;;;;;;;;;;-1:-1:-1;;;;;4609:18:1;;4605:54;;;4658:1;4654:5;;4605:54;4579:1;4574:6;4525:154;;;;4714:4;4719:1;4714:7;;;;;;;;;;;;;;4697:4;4702:8;;;;;;4697:14;;;;;;;;-1:-1:-1;;;;;4697:24:1;;;:14;;;;;;;;;;;:24;4503:1;4498:6;4461:276;;;;4760:29;4776:4;4782:6;4760:15;:29::i;:::-;4753:36;;;;;;;;3866:935;4820:16;;;4834:1;4820:16;;;;;;;;;;;-1:-1:-1;4813:23:1;3730:1114;-1:-1:-1;;;3730:1114:1:o;5004:190::-;5120:16;;;5134:1;5120:16;;;;;;;;;5066;;;;5120;;;;;;;;;;;;-1:-1:-1;5120:16:1;5095:41;;5158:5;5147;5153:1;5147:8;;;;;;;;-1:-1:-1;;;;;5147:16:1;;;:8;;;;;;;;;;;:16;5181:5;-1:-1:-1;5004:190:1;;;:::o;5437:370::-;5542:16;5571:22;5614:6;:13;5610:1;:17;5596:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5596:32:1;;5571:57;;5650:6;5639:5;5645:1;5639:8;;;;;;;;;;;;;:17;-1:-1:-1;;;;;5639:17:1;;;-1:-1:-1;;;;;5639:17:1;;;;;5678:6;5667:5;5673:1;5667:8;;;;;;;;;;;;;:17;-1:-1:-1;;;;;5667:17:1;;;-1:-1:-1;;;;;5667:17:1;;;;;5700:9;5695:81;5719:6;:13;5715:1;:17;5695:81;;;5767:6;5774:1;5767:9;;;;;;;;;;;;;;5752:5;5762:1;5758;:5;5752:12;;;;;;;;-1:-1:-1;;;;;5752:24:1;;;:12;;;;;;;;;;;:24;5734:3;;5695:81;;6005:278;6094:16;6123:22;6162:7;6148:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6148:22:1;;6123:47;;6186:9;6181:71;6205:7;6201:1;:11;6181:71;;;6243:6;6250:1;6243:9;;;;;;;;;;;;;;6232:5;6238:1;6232:8;;;;;;;;-1:-1:-1;;;;;6232:20:1;;;:8;;;;;;;;;;;:20;6214:3;;6181:71;",
  "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./IConversionPathFinder.sol\";\r\nimport \"./utility/ContractRegistryClient.sol\";\r\nimport \"./converter/interfaces/IConverter.sol\";\r\nimport \"./converter/interfaces/IConverterAnchor.sol\";\r\nimport \"./converter/interfaces/IConverterRegistry.sol\";\r\n\r\n/**\r\n  * @dev The ConversionPathFinder contract allows generating a conversion path between any token pair in the Bancor Network.\r\n  * The path can then be used in various functions in the BancorNetwork contract.\r\n  *\r\n  * See the BancorNetwork contract for conversion path format.\r\n*/\r\ncontract ConversionPathFinder is IConversionPathFinder, ContractRegistryClient {\r\n    IERC20Token public anchorToken;\r\n\r\n    /**\r\n      * @dev initializes a new ConversionPathFinder instance\r\n      *\r\n      * @param _registry address of a contract registry contract\r\n    */\r\n    constructor(IContractRegistry _registry) ContractRegistryClient(_registry) public {\r\n    }\r\n\r\n    /**\r\n      * @dev updates the anchor token\r\n      *\r\n      * @param _anchorToken address of the anchor token\r\n    */\r\n    function setAnchorToken(IERC20Token _anchorToken) public ownerOnly {\r\n        anchorToken = _anchorToken;\r\n    }\r\n\r\n    /**\r\n      * @dev generates a conversion path between a given pair of tokens in the Bancor Network\r\n      *\r\n      * @param _sourceToken address of the source token\r\n      * @param _targetToken address of the target token\r\n      *\r\n      * @return a path from the source token to the target token\r\n    */\r\n    function findPath(IERC20Token _sourceToken, IERC20Token _targetToken) external view override returns (address[] memory) {\r\n        IConverterRegistry converterRegistry = IConverterRegistry(addressOf(CONVERTER_REGISTRY));\r\n        address[] memory sourcePath = getPath(_sourceToken, converterRegistry);\r\n        address[] memory targetPath = getPath(_targetToken, converterRegistry);\r\n        return getShortestPath(sourcePath, targetPath);\r\n    }\r\n\r\n    /**\r\n      * @dev generates a conversion path between a given token and the anchor token\r\n      *\r\n      * @param _token               address of the token\r\n      * @param _converterRegistry   address of the converter registry\r\n      *\r\n      * @return a path from the input token to the anchor token\r\n    */\r\n    function getPath(IERC20Token _token, IConverterRegistry _converterRegistry) private view returns (address[] memory) {\r\n        if (_token == anchorToken)\r\n            return getInitialArray(address(_token));\r\n\r\n        address[] memory anchors;\r\n        if (_converterRegistry.isAnchor(address(_token)))\r\n            anchors = getInitialArray(address(_token));\r\n        else\r\n            anchors = _converterRegistry.getConvertibleTokenAnchors(_token);\r\n\r\n        for (uint256 n = 0; n < anchors.length; n++) {\r\n            IConverter converter = IConverter(payable(IConverterAnchor(anchors[n]).owner()));\r\n            uint256 connectorTokenCount = converter.connectorTokenCount();\r\n            for (uint256 i = 0; i < connectorTokenCount; i++) {\r\n                IERC20Token connectorToken = converter.connectorTokens(i);\r\n                if (connectorToken != _token) {\r\n                    address[] memory path = getPath(connectorToken, _converterRegistry);\r\n                    if (path.length > 0)\r\n                        return getExtendedArray(address(_token), anchors[n], path);\r\n                }\r\n            }\r\n        }\r\n\r\n        return new address[](0);\r\n    }\r\n\r\n    /**\r\n      * @dev merges two paths with a common suffix into one\r\n      *\r\n      * @param _sourcePath address of the source path\r\n      * @param _targetPath address of the target path\r\n      *\r\n      * @return merged path\r\n    */\r\n    function getShortestPath(address[] memory _sourcePath, address[] memory _targetPath) private pure returns (address[] memory) {\r\n        if (_sourcePath.length > 0 && _targetPath.length > 0) {\r\n            uint256 i = _sourcePath.length;\r\n            uint256 j = _targetPath.length;\r\n            while (i > 0 && j > 0 && _sourcePath[i - 1] == _targetPath[j - 1]) {\r\n                i--;\r\n                j--;\r\n            }\r\n\r\n            address[] memory path = new address[](i + j + 1);\r\n            for (uint256 m = 0; m <= i; m++)\r\n                path[m] = _sourcePath[m];\r\n            for (uint256 n = j; n > 0; n--)\r\n                path[path.length - n] = _targetPath[n - 1];\r\n\r\n            uint256 length = 0;\r\n            for (uint256 p = 0; p < path.length; p += 1) {\r\n                for (uint256 q = p + 2; q < path.length - p % 2; q += 2) {\r\n                    if (path[p] == path[q])\r\n                        p = q;\r\n                }\r\n                path[length++] = path[p];\r\n            }\r\n\r\n            return getPartialArray(path, length);\r\n        }\r\n\r\n        return new address[](0);\r\n    }\r\n\r\n    /**\r\n      * @dev creates a new array containing a single item\r\n      *\r\n      * @param _item item\r\n      *\r\n      * @return initial array\r\n    */\r\n    function getInitialArray(address _item) private pure returns (address[] memory) {\r\n        address[] memory array = new address[](1);\r\n        array[0] = _item;\r\n        return array;\r\n    }\r\n\r\n    /**\r\n      * @dev prepends two items to the beginning of an array\r\n      *\r\n      * @param _item0 first item\r\n      * @param _item1 second item\r\n      * @param _array initial array\r\n      *\r\n      * @return extended array\r\n    */\r\n    function getExtendedArray(address _item0, address _item1, address[] memory _array) private pure returns (address[] memory) {\r\n        address[] memory array = new address[](2 + _array.length);\r\n        array[0] = _item0;\r\n        array[1] = _item1;\r\n        for (uint256 i = 0; i < _array.length; i++)\r\n            array[2 + i] = _array[i];\r\n        return array;\r\n    }\r\n\r\n    /**\r\n      * @dev extracts the prefix of a given array\r\n      *\r\n      * @param _array given array\r\n      * @param _length prefix length\r\n      *\r\n      * @return partial array\r\n    */\r\n    function getPartialArray(address[] memory _array, uint256 _length) private pure returns (address[] memory) {\r\n        address[] memory array = new address[](_length);\r\n        for (uint256 i = 0; i < _length; i++)\r\n            array[i] = _array[i];\r\n        return array;\r\n    }\r\n}\r\n",
  "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/ConversionPathFinder.sol",
  "ast": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/ConversionPathFinder.sol",
    "exportedSymbols": {
      "ConversionPathFinder": [
        2532
      ]
    },
    "id": 2533,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1978,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:1"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/IConversionPathFinder.sol",
        "file": "./IConversionPathFinder.sol",
        "id": 1979,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 2547,
        "src": "77:37:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "./utility/ContractRegistryClient.sol",
        "id": 1980,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 21720,
        "src": "116:46:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
        "file": "./converter/interfaces/IConverter.sol",
        "id": 1981,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 13341,
        "src": "164:47:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol",
        "file": "./converter/interfaces/IConverterAnchor.sol",
        "id": 1982,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 13350,
        "src": "213:53:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol",
        "file": "./converter/interfaces/IConverterRegistry.sol",
        "id": 1983,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 13502,
        "src": "268:55:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1985,
              "name": "IConversionPathFinder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2546,
              "src": "647:21:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConversionPathFinder_$2546",
                "typeString": "contract IConversionPathFinder"
              }
            },
            "id": 1986,
            "nodeType": "InheritanceSpecifier",
            "src": "647:21:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1987,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "670:22:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 1988,
            "nodeType": "InheritanceSpecifier",
            "src": "670:22:1"
          }
        ],
        "contractDependencies": [
          2546,
          21719,
          21818,
          22661,
          22847
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 1984,
          "nodeType": "StructuredDocumentation",
          "src": "327:285:1",
          "text": " @dev The ConversionPathFinder contract allows generating a conversion path between any token pair in the Bancor Network.\n The path can then be used in various functions in the BancorNetwork contract.\n See the BancorNetwork contract for conversion path format."
        },
        "fullyImplemented": true,
        "id": 2532,
        "linearizedBaseContracts": [
          2532,
          21719,
          22661,
          21818,
          22847,
          2546
        ],
        "name": "ConversionPathFinder",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "e1c4c966",
            "id": 1990,
            "mutability": "mutable",
            "name": "anchorToken",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2532,
            "src": "700:30:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Token_$21127",
              "typeString": "contract IERC20Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 1989,
              "name": "IERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21127,
              "src": "700:11:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1999,
              "nodeType": "Block",
              "src": "975:8:1",
              "statements": []
            },
            "documentation": {
              "id": 1991,
              "nodeType": "StructuredDocumentation",
              "src": "739:148:1",
              "text": " @dev initializes a new ConversionPathFinder instance\n @param _registry address of a contract registry contract"
            },
            "id": 2000,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1996,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1993,
                    "src": "957:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 1997,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1995,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "934:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "934:33:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1993,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2000,
                  "src": "905:27:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1992,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "905:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "904:29:1"
            },
            "returnParameters": {
              "id": 1998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "975:0:1"
            },
            "scope": 2532,
            "src": "893:90:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2012,
              "nodeType": "Block",
              "src": "1180:45:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2008,
                      "name": "anchorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1990,
                      "src": "1191:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2009,
                      "name": "_anchorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2003,
                      "src": "1205:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "src": "1191:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 2011,
                  "nodeType": "ExpressionStatement",
                  "src": "1191:26:1"
                }
              ]
            },
            "documentation": {
              "id": 2001,
              "nodeType": "StructuredDocumentation",
              "src": "991:116:1",
              "text": " @dev updates the anchor token\n @param _anchorToken address of the anchor token"
            },
            "functionSelector": "2f167f05",
            "id": 2013,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2006,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2005,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "1170:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1170:9:1"
              }
            ],
            "name": "setAnchorToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2003,
                  "mutability": "mutable",
                  "name": "_anchorToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2013,
                  "src": "1137:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2002,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "1137:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1136:26:1"
            },
            "returnParameters": {
              "id": 2007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1180:0:1"
            },
            "scope": 2532,
            "src": "1113:112:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2545
            ],
            "body": {
              "id": 2058,
              "nodeType": "Block",
              "src": "1663:326:1",
              "statements": [
                {
                  "assignments": [
                    2026
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2026,
                      "mutability": "mutable",
                      "name": "converterRegistry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2058,
                      "src": "1674:36:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                        "typeString": "contract IConverterRegistry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2025,
                        "name": "IConverterRegistry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13501,
                        "src": "1674:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2032,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2029,
                            "name": "CONVERTER_REGISTRY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21545,
                            "src": "1742:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2028,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "1732:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 2030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1732:29:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2027,
                      "name": "IConverterRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13501,
                      "src": "1713:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistry_$13501_$",
                        "typeString": "type(contract IConverterRegistry)"
                      }
                    },
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1713:49:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                      "typeString": "contract IConverterRegistry"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1674:88:1"
                },
                {
                  "assignments": [
                    2037
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2037,
                      "mutability": "mutable",
                      "name": "sourcePath",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2058,
                      "src": "1773:27:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1773:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2036,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1773:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2042,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2039,
                        "name": "_sourceToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2016,
                        "src": "1811:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2040,
                        "name": "converterRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2026,
                        "src": "1825:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      ],
                      "id": 2038,
                      "name": "getPath",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2202,
                      "src": "1803:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterRegistry_$13501_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token,contract IConverterRegistry) view returns (address[] memory)"
                      }
                    },
                    "id": 2041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1803:40:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1773:70:1"
                },
                {
                  "assignments": [
                    2047
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2047,
                      "mutability": "mutable",
                      "name": "targetPath",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2058,
                      "src": "1854:27:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2045,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2046,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1854:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2052,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2049,
                        "name": "_targetToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2018,
                        "src": "1892:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2050,
                        "name": "converterRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2026,
                        "src": "1906:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      ],
                      "id": 2048,
                      "name": "getPath",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2202,
                      "src": "1884:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterRegistry_$13501_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token,contract IConverterRegistry) view returns (address[] memory)"
                      }
                    },
                    "id": 2051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1884:40:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1854:70:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2054,
                        "name": "sourcePath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2037,
                        "src": "1958:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2055,
                        "name": "targetPath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2047,
                        "src": "1970:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 2053,
                      "name": "getShortestPath",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2392,
                      "src": "1942:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (address[] memory,address[] memory) pure returns (address[] memory)"
                      }
                    },
                    "id": 2056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1942:39:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2024,
                  "id": 2057,
                  "nodeType": "Return",
                  "src": "1935:46:1"
                }
              ]
            },
            "documentation": {
              "id": 2014,
              "nodeType": "StructuredDocumentation",
              "src": "1233:304:1",
              "text": " @dev generates a conversion path between a given pair of tokens in the Bancor Network\n @param _sourceToken address of the source token\n @param _targetToken address of the target token\n @return a path from the source token to the target token"
            },
            "functionSelector": "a1c421cd",
            "id": 2059,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "findPath",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2020,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1627:8:1"
            },
            "parameters": {
              "id": 2019,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2016,
                  "mutability": "mutable",
                  "name": "_sourceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2059,
                  "src": "1561:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2015,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "1561:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2018,
                  "mutability": "mutable",
                  "name": "_targetToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2059,
                  "src": "1587:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2017,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "1587:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1560:52:1"
            },
            "returnParameters": {
              "id": 2024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2059,
                  "src": "1645:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2021,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1645:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2022,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1645:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1644:18:1"
            },
            "scope": 2532,
            "src": "1543:446:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2201,
              "nodeType": "Block",
              "src": "2427:1060:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    },
                    "id": 2072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2070,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2062,
                      "src": "2442:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2071,
                      "name": "anchorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1990,
                      "src": "2452:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "src": "2442:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2080,
                  "nodeType": "IfStatement",
                  "src": "2438:79:1",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2076,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2062,
                              "src": "2509:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            ],
                            "id": 2075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2501:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2074,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2501:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2501:15:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2073,
                        "name": "getInitialArray",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2421,
                        "src": "2485:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                          "typeString": "function (address) pure returns (address[] memory)"
                        }
                      },
                      "id": 2078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2485:32:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "functionReturnParameters": 2069,
                    "id": 2079,
                    "nodeType": "Return",
                    "src": "2478:39:1"
                  }
                },
                {
                  "assignments": [
                    2085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2085,
                      "mutability": "mutable",
                      "name": "anchors",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2201,
                      "src": "2530:24:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2530:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2084,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2530:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2086,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2530:24:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2091,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2062,
                            "src": "2605:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          ],
                          "id": 2090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2597:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2089,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2597:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 2092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2597:15:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2087,
                        "name": "_converterRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2064,
                        "src": "2569:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      },
                      "id": 2088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isAnchor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13417,
                      "src": "2569:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 2093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2569:44:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2108,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2103,
                        "name": "anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2085,
                        "src": "2699:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2106,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2062,
                            "src": "2755:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2104,
                            "name": "_converterRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2064,
                            "src": "2709:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                              "typeString": "contract IConverterRegistry"
                            }
                          },
                          "id": 2105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getConvertibleTokenAnchors",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13482,
                          "src": "2709:45:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "function (contract IERC20Token) view external returns (address[] memory)"
                          }
                        },
                        "id": 2107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2709:53:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "src": "2699:63:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 2109,
                    "nodeType": "ExpressionStatement",
                    "src": "2699:63:1"
                  },
                  "id": 2110,
                  "nodeType": "IfStatement",
                  "src": "2565:197:1",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2085,
                        "src": "2628:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2098,
                                "name": "_token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2062,
                                "src": "2662:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              ],
                              "id": 2097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2654:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2096,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2654:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2654:15:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2095,
                          "name": "getInitialArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2421,
                          "src": "2638:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "function (address) pure returns (address[] memory)"
                          }
                        },
                        "id": 2100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2638:32:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "src": "2628:42:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 2102,
                    "nodeType": "ExpressionStatement",
                    "src": "2628:42:1"
                  }
                },
                {
                  "body": {
                    "id": 2193,
                    "nodeType": "Block",
                    "src": "2820:624:1",
                    "statements": [
                      {
                        "assignments": [
                          2123
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2123,
                            "mutability": "mutable",
                            "name": "converter",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2193,
                            "src": "2835:20:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2122,
                              "name": "IConverter",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 13340,
                              "src": "2835:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2136,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2128,
                                            "name": "anchors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2085,
                                            "src": "2894:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                              "typeString": "address[] memory"
                                            }
                                          },
                                          "id": 2130,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 2129,
                                            "name": "n",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2112,
                                            "src": "2902:1:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2894:10:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2127,
                                        "name": "IConverterAnchor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13349,
                                        "src": "2877:16:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                                          "typeString": "type(contract IConverterAnchor)"
                                        }
                                      },
                                      "id": 2131,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2877:28:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                        "typeString": "contract IConverterAnchor"
                                      }
                                    },
                                    "id": 2132,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22838,
                                    "src": "2877:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 2133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2877:36:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2869:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 2125,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2869:8:1",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2869:45:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2124,
                            "name": "IConverter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13340,
                            "src": "2858:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                              "typeString": "type(contract IConverter)"
                            }
                          },
                          "id": 2135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2858:57:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2835:80:1"
                      },
                      {
                        "assignments": [
                          2138
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2138,
                            "mutability": "mutable",
                            "name": "connectorTokenCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2193,
                            "src": "2930:27:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2137,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2930:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2142,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2139,
                              "name": "converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2123,
                              "src": "2960:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 2140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokenCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13339,
                            "src": "2960:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                              "typeString": "function () view external returns (uint16)"
                            }
                          },
                          "id": 2141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2960:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2930:61:1"
                      },
                      {
                        "body": {
                          "id": 2191,
                          "nodeType": "Block",
                          "src": "3056:377:1",
                          "statements": [
                            {
                              "assignments": [
                                2154
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2154,
                                  "mutability": "mutable",
                                  "name": "connectorToken",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2191,
                                  "src": "3075:26:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 2153,
                                    "name": "IERC20Token",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 21127,
                                    "src": "3075:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2159,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2157,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2144,
                                    "src": "3130:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2155,
                                    "name": "converter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2123,
                                    "src": "3104:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "id": 2156,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "connectorTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13334,
                                  "src": "3104:25:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                                    "typeString": "function (uint256) view external returns (contract IERC20Token)"
                                  }
                                },
                                "id": 2158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3104:28:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3075:57:1"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                },
                                "id": 2162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2160,
                                  "name": "connectorToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2154,
                                  "src": "3155:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2161,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2062,
                                  "src": "3173:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  }
                                },
                                "src": "3155:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2190,
                              "nodeType": "IfStatement",
                              "src": "3151:267:1",
                              "trueBody": {
                                "id": 2189,
                                "nodeType": "Block",
                                "src": "3181:237:1",
                                "statements": [
                                  {
                                    "assignments": [
                                      2167
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2167,
                                        "mutability": "mutable",
                                        "name": "path",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 2189,
                                        "src": "3204:21:1",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[]"
                                        },
                                        "typeName": {
                                          "baseType": {
                                            "id": 2165,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3204:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 2166,
                                          "length": null,
                                          "nodeType": "ArrayTypeName",
                                          "src": "3204:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                            "typeString": "address[]"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2172,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2169,
                                          "name": "connectorToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2154,
                                          "src": "3236:14:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                            "typeString": "contract IERC20Token"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2170,
                                          "name": "_converterRegistry",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2064,
                                          "src": "3252:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                                            "typeString": "contract IConverterRegistry"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                            "typeString": "contract IERC20Token"
                                          },
                                          {
                                            "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                                            "typeString": "contract IConverterRegistry"
                                          }
                                        ],
                                        "id": 2168,
                                        "name": "getPath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2202,
                                        "src": "3228:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterRegistry_$13501_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                          "typeString": "function (contract IERC20Token,contract IConverterRegistry) view returns (address[] memory)"
                                        }
                                      },
                                      "id": 2171,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3228:43:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3204:67:1"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2176,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2173,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2167,
                                          "src": "3298:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 2174,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "3298:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2175,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3312:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "3298:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2188,
                                    "nodeType": "IfStatement",
                                    "src": "3294:104:1",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2180,
                                                "name": "_token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2062,
                                                "src": "3372:6:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                                  "typeString": "contract IERC20Token"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                                  "typeString": "contract IERC20Token"
                                                }
                                              ],
                                              "id": 2179,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3364:7:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 2178,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3364:7:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 2181,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3364:15:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 2182,
                                              "name": "anchors",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2085,
                                              "src": "3381:7:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                "typeString": "address[] memory"
                                              }
                                            },
                                            "id": 2184,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 2183,
                                              "name": "n",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2112,
                                              "src": "3389:1:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3381:10:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 2185,
                                            "name": "path",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2167,
                                            "src": "3393:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                              "typeString": "address[] memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                              "typeString": "address[] memory"
                                            }
                                          ],
                                          "id": 2177,
                                          "name": "getExtendedArray",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2486,
                                          "src": "3347:16:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                            "typeString": "function (address,address,address[] memory) pure returns (address[] memory)"
                                          }
                                        },
                                        "id": 2186,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3347:51:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "functionReturnParameters": 2069,
                                      "id": 2187,
                                      "nodeType": "Return",
                                      "src": "3340:58:1"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2147,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2144,
                            "src": "3026:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2148,
                            "name": "connectorTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2138,
                            "src": "3030:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3026:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2192,
                        "initializationExpression": {
                          "assignments": [
                            2144
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2144,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2192,
                              "src": "3011:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2143,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3011:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2146,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3023:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3011:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3051:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2150,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2144,
                              "src": "3051:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2152,
                          "nodeType": "ExpressionStatement",
                          "src": "3051:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "3006:427:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2115,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2112,
                      "src": "2795:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2116,
                        "name": "anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2085,
                        "src": "2799:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2799:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2795:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2194,
                  "initializationExpression": {
                    "assignments": [
                      2112
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2112,
                        "mutability": "mutable",
                        "name": "n",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2194,
                        "src": "2780:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2111,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2780:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2114,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2792:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2780:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2815:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2119,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2112,
                        "src": "2815:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2121,
                    "nodeType": "ExpressionStatement",
                    "src": "2815:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "2775:669:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3477:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3463:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2195,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3467:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2196,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3467:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3463:16:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2069,
                  "id": 2200,
                  "nodeType": "Return",
                  "src": "3456:23:1"
                }
              ]
            },
            "documentation": {
              "id": 2060,
              "nodeType": "StructuredDocumentation",
              "src": "1997:308:1",
              "text": " @dev generates a conversion path between a given token and the anchor token\n @param _token               address of the token\n @param _converterRegistry   address of the converter registry\n @return a path from the input token to the anchor token"
            },
            "id": 2202,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPath",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2062,
                  "mutability": "mutable",
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2202,
                  "src": "2328:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2061,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "2328:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2064,
                  "mutability": "mutable",
                  "name": "_converterRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2202,
                  "src": "2348:37:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                    "typeString": "contract IConverterRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2063,
                    "name": "IConverterRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13501,
                    "src": "2348:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                      "typeString": "contract IConverterRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2327:59:1"
            },
            "returnParameters": {
              "id": 2069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2068,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2202,
                  "src": "2409:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2066,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2409:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2067,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2409:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:18:1"
            },
            "scope": 2532,
            "src": "2311:1176:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2391,
              "nodeType": "Block",
              "src": "3855:989:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2215,
                          "name": "_sourcePath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2206,
                          "src": "3870:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3870:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3891:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3870:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2219,
                          "name": "_targetPath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2209,
                          "src": "3896:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3896:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3917:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3896:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3870:48:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2384,
                  "nodeType": "IfStatement",
                  "src": "3866:935:1",
                  "trueBody": {
                    "id": 2383,
                    "nodeType": "Block",
                    "src": "3920:881:1",
                    "statements": [
                      {
                        "assignments": [
                          2225
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2225,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "3935:9:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2224,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3935:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2228,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2226,
                            "name": "_sourcePath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2206,
                            "src": "3947:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3947:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3935:30:1"
                      },
                      {
                        "assignments": [
                          2230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2230,
                            "mutability": "mutable",
                            "name": "j",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "3980:9:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2229,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3980:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2233,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2231,
                            "name": "_targetPath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2209,
                            "src": "3992:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3992:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3980:30:1"
                      },
                      {
                        "body": {
                          "id": 2259,
                          "nodeType": "Block",
                          "src": "4092:60:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "4111:3:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 2253,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2225,
                                  "src": "4111:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2255,
                              "nodeType": "ExpressionStatement",
                              "src": "4111:3:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "4133:3:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 2256,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2230,
                                  "src": "4133:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2258,
                              "nodeType": "ExpressionStatement",
                              "src": "4133:3:1"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2234,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2225,
                                "src": "4032:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4036:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4032:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2237,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2230,
                                "src": "4041:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4045:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4041:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "4032:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2241,
                                "name": "_sourcePath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2206,
                                "src": "4050:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2245,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2242,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2225,
                                  "src": "4062:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4066:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4062:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4050:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2246,
                                "name": "_targetPath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2209,
                                "src": "4072:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2250,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2247,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2230,
                                  "src": "4084:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2248,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4088:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4084:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4072:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4050:40:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4032:58:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2260,
                        "nodeType": "WhileStatement",
                        "src": "4025:127:1"
                      },
                      {
                        "assignments": [
                          2265
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2265,
                            "mutability": "mutable",
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "4168:21:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2263,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4168:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2264,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4168:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2275,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2269,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2225,
                                  "src": "4206:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2270,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2230,
                                  "src": "4210:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4206:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4214:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4206:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4192:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2266,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4196:7:1",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2267,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4196:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 2274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4192:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4168:48:1"
                      },
                      {
                        "body": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2286,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2265,
                                "src": "4281:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2288,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2287,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "4286:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "4281:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2289,
                                "name": "_sourcePath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2206,
                                "src": "4291:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2291,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2290,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "4303:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4291:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4281:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2293,
                          "nodeType": "ExpressionStatement",
                          "src": "4281:24:1"
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2280,
                            "name": "m",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "4251:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2281,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2225,
                            "src": "4256:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4251:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2294,
                        "initializationExpression": {
                          "assignments": [
                            2277
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2277,
                              "mutability": "mutable",
                              "name": "m",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2294,
                              "src": "4236:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2276,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4236:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2279,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4248:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4236:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4259:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2283,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2277,
                              "src": "4259:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2285,
                          "nodeType": "ExpressionStatement",
                          "src": "4259:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "4231:74:1"
                      },
                      {
                        "body": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2305,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2265,
                                "src": "4369:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2310,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2306,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2265,
                                    "src": "4374:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4374:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2308,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2296,
                                  "src": "4388:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4374:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "4369:21:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2311,
                                "name": "_targetPath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2209,
                                "src": "4393:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2315,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2312,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2296,
                                  "src": "4405:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4409:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4405:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4393:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4369:42:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2317,
                          "nodeType": "ExpressionStatement",
                          "src": "4369:42:1"
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2299,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2296,
                            "src": "4340:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4344:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4340:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2318,
                        "initializationExpression": {
                          "assignments": [
                            2296
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2296,
                              "mutability": "mutable",
                              "name": "n",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2318,
                              "src": "4325:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2295,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4325:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2298,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 2297,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2230,
                            "src": "4337:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4325:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "4347:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2302,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2296,
                              "src": "4347:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2304,
                          "nodeType": "ExpressionStatement",
                          "src": "4347:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "4320:91:1"
                      },
                      {
                        "assignments": [
                          2320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2320,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "4428:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2319,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4428:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2322,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4445:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4428:18:1"
                      },
                      {
                        "body": {
                          "id": 2376,
                          "nodeType": "Block",
                          "src": "4506:231:1",
                          "statements": [
                            {
                              "body": {
                                "id": 2365,
                                "nodeType": "Block",
                                "src": "4582:97:1",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 2359,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2353,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2265,
                                          "src": "4609:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 2355,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2354,
                                          "name": "p",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2324,
                                          "src": "4614:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4609:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2356,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2265,
                                          "src": "4620:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 2358,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2357,
                                          "name": "q",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2336,
                                          "src": "4625:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4620:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "4609:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2364,
                                    "nodeType": "IfStatement",
                                    "src": "4605:54:1",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2362,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2360,
                                          "name": "p",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2324,
                                          "src": "4654:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "id": 2361,
                                          "name": "q",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2336,
                                          "src": "4658:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4654:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2363,
                                      "nodeType": "ExpressionStatement",
                                      "src": "4654:5:1"
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2341,
                                  "name": "q",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2336,
                                  "src": "4549:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2342,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2265,
                                      "src": "4553:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 2343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4553:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2344,
                                      "name": "p",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2324,
                                      "src": "4567:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "%",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 2345,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4571:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "4567:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4553:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4549:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2366,
                              "initializationExpression": {
                                "assignments": [
                                  2336
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2336,
                                    "mutability": "mutable",
                                    "name": "q",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 2366,
                                    "src": "4530:9:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 2335,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4530:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2340,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2337,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2324,
                                    "src": "4542:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4546:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4542:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "4530:17:1"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2351,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 2349,
                                    "name": "q",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2336,
                                    "src": "4574:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "+=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4579:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4574:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2352,
                                "nodeType": "ExpressionStatement",
                                "src": "4574:6:1"
                              },
                              "nodeType": "ForStatement",
                              "src": "4525:154:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2367,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2265,
                                    "src": "4697:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2370,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "4702:8:1",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 2368,
                                      "name": "length",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2320,
                                      "src": "4702:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4697:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2371,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2265,
                                    "src": "4714:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2373,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2372,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2324,
                                    "src": "4719:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4714:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4697:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2375,
                              "nodeType": "ExpressionStatement",
                              "src": "4697:24:1"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2327,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2324,
                            "src": "4481:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2328,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2265,
                              "src": "4485:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 2329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4485:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4481:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2377,
                        "initializationExpression": {
                          "assignments": [
                            2324
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2324,
                              "mutability": "mutable",
                              "name": "p",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2377,
                              "src": "4466:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2323,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4466:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2326,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4478:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4466:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 2331,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2324,
                              "src": "4498:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4503:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4498:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2334,
                          "nodeType": "ExpressionStatement",
                          "src": "4498:6:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "4461:276:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2379,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2265,
                              "src": "4776:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2380,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2320,
                              "src": "4782:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2378,
                            "name": "getPartialArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2531,
                            "src": "4760:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (address[] memory,uint256) pure returns (address[] memory)"
                            }
                          },
                          "id": 2381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4760:29:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 2214,
                        "id": 2382,
                        "nodeType": "Return",
                        "src": "4753:36:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4834:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4820:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4824:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2386,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4824:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4820:16:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2214,
                  "id": 2390,
                  "nodeType": "Return",
                  "src": "4813:23:1"
                }
              ]
            },
            "documentation": {
              "id": 2203,
              "nodeType": "StructuredDocumentation",
              "src": "3495:229:1",
              "text": " @dev merges two paths with a common suffix into one\n @param _sourcePath address of the source path\n @param _targetPath address of the target path\n @return merged path"
            },
            "id": 2392,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getShortestPath",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2206,
                  "mutability": "mutable",
                  "name": "_sourcePath",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2392,
                  "src": "3755:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2204,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3755:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2205,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3755:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2209,
                  "mutability": "mutable",
                  "name": "_targetPath",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2392,
                  "src": "3785:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2207,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3785:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2208,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3785:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3754:60:1"
            },
            "returnParameters": {
              "id": 2214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2213,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2392,
                  "src": "3837:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2211,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3837:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2212,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3837:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3836:18:1"
            },
            "scope": 2532,
            "src": "3730:1114:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2420,
              "nodeType": "Block",
              "src": "5084:110:1",
              "statements": [
                {
                  "assignments": [
                    2405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2405,
                      "mutability": "mutable",
                      "name": "array",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2420,
                      "src": "5095:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5095:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2404,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5095:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2411,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5134:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 2408,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5120:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5124:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2407,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5124:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5120:16:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5095:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2412,
                        "name": "array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2405,
                        "src": "5147:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2414,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5153:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5147:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2415,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2395,
                      "src": "5158:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5147:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2417,
                  "nodeType": "ExpressionStatement",
                  "src": "5147:16:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2418,
                    "name": "array",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2405,
                    "src": "5181:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2400,
                  "id": 2419,
                  "nodeType": "Return",
                  "src": "5174:12:1"
                }
              ]
            },
            "documentation": {
              "id": 2393,
              "nodeType": "StructuredDocumentation",
              "src": "4852:146:1",
              "text": " @dev creates a new array containing a single item\n @param _item item\n @return initial array"
            },
            "id": 2421,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInitialArray",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2395,
                  "mutability": "mutable",
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2421,
                  "src": "5029:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2394,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5029:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5028:15:1"
            },
            "returnParameters": {
              "id": 2400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2399,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2421,
                  "src": "5066:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2397,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5066:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2398,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5066:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5065:18:1"
            },
            "scope": 2532,
            "src": "5004:190:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2485,
              "nodeType": "Block",
              "src": "5560:247:1",
              "statements": [
                {
                  "assignments": [
                    2439
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2439,
                      "mutability": "mutable",
                      "name": "array",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2485,
                      "src": "5571:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5571:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2438,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5571:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2448,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 2443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5610:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2444,
                            "name": "_array",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2429,
                            "src": "5614:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5614:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5610:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5596:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5600:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2441,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5600:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5596:32:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5571:57:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2449,
                        "name": "array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2439,
                        "src": "5639:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2451,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5645:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5639:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2452,
                      "name": "_item0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2424,
                      "src": "5650:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5639:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2454,
                  "nodeType": "ExpressionStatement",
                  "src": "5639:17:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2455,
                        "name": "array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2439,
                        "src": "5667:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2457,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5673:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5667:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2458,
                      "name": "_item1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2426,
                      "src": "5678:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5667:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2460,
                  "nodeType": "ExpressionStatement",
                  "src": "5667:17:1"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2472,
                          "name": "array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2439,
                          "src": "5752:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2476,
                        "indexExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 2473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5758:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2474,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2462,
                            "src": "5762:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5758:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "5752:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2477,
                          "name": "_array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2429,
                          "src": "5767:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2479,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2478,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2462,
                          "src": "5774:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5767:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "5752:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2481,
                    "nodeType": "ExpressionStatement",
                    "src": "5752:24:1"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2465,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2462,
                      "src": "5715:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2466,
                        "name": "_array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2429,
                        "src": "5719:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5719:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5715:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2482,
                  "initializationExpression": {
                    "assignments": [
                      2462
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2462,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2482,
                        "src": "5700:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5700:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2464,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5712:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5700:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5734:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2469,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2462,
                        "src": "5734:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2471,
                    "nodeType": "ExpressionStatement",
                    "src": "5734:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "5695:81:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2483,
                    "name": "array",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2439,
                    "src": "5794:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2434,
                  "id": 2484,
                  "nodeType": "Return",
                  "src": "5787:12:1"
                }
              ]
            },
            "documentation": {
              "id": 2422,
              "nodeType": "StructuredDocumentation",
              "src": "5202:229:1",
              "text": " @dev prepends two items to the beginning of an array\n @param _item0 first item\n @param _item1 second item\n @param _array initial array\n @return extended array"
            },
            "id": 2486,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExtendedArray",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2424,
                  "mutability": "mutable",
                  "name": "_item0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5463:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5463:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2426,
                  "mutability": "mutable",
                  "name": "_item1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5479:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2425,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5479:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2429,
                  "mutability": "mutable",
                  "name": "_array",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5495:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2427,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5495:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2428,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5495:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5462:57:1"
            },
            "returnParameters": {
              "id": 2434,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2433,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5542:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2431,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5542:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2432,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5542:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5541:18:1"
            },
            "scope": 2532,
            "src": "5437:370:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2530,
              "nodeType": "Block",
              "src": "6112:171:1",
              "statements": [
                {
                  "assignments": [
                    2502
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2502,
                      "mutability": "mutable",
                      "name": "array",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2530,
                      "src": "6123:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2500,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6123:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2501,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6123:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2508,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2506,
                        "name": "_length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2492,
                        "src": "6162:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6148:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2503,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6152:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2504,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6152:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6148:22:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6123:47:1"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2525,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2519,
                          "name": "array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2502,
                          "src": "6232:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2521,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2520,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2510,
                          "src": "6238:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "6232:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2522,
                          "name": "_array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2490,
                          "src": "6243:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2524,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2523,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2510,
                          "src": "6250:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6243:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "6232:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2526,
                    "nodeType": "ExpressionStatement",
                    "src": "6232:20:1"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2513,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2510,
                      "src": "6201:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2514,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2492,
                      "src": "6205:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6201:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2527,
                  "initializationExpression": {
                    "assignments": [
                      2510
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2510,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2527,
                        "src": "6186:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6186:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2512,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6198:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6186:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2517,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6214:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2516,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2510,
                        "src": "6214:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2518,
                    "nodeType": "ExpressionStatement",
                    "src": "6214:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "6181:71:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2528,
                    "name": "array",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2502,
                    "src": "6270:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2497,
                  "id": 2529,
                  "nodeType": "Return",
                  "src": "6263:12:1"
                }
              ]
            },
            "documentation": {
              "id": 2487,
              "nodeType": "StructuredDocumentation",
              "src": "5815:184:1",
              "text": " @dev extracts the prefix of a given array\n @param _array given array\n @param _length prefix length\n @return partial array"
            },
            "id": 2531,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPartialArray",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2490,
                  "mutability": "mutable",
                  "name": "_array",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2531,
                  "src": "6030:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2488,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6030:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2489,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6030:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2492,
                  "mutability": "mutable",
                  "name": "_length",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2531,
                  "src": "6055:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2491,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6055:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6029:42:1"
            },
            "returnParameters": {
              "id": 2497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2496,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2531,
                  "src": "6094:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2494,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6094:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2495,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6094:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6093:18:1"
            },
            "scope": 2532,
            "src": "6005:278:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 2533,
        "src": "614:5672:1"
      }
    ],
    "src": "52:6236:1"
  },
  "legacyAST": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/ConversionPathFinder.sol",
    "exportedSymbols": {
      "ConversionPathFinder": [
        2532
      ]
    },
    "id": 2533,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1978,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:1"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/IConversionPathFinder.sol",
        "file": "./IConversionPathFinder.sol",
        "id": 1979,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 2547,
        "src": "77:37:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "./utility/ContractRegistryClient.sol",
        "id": 1980,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 21720,
        "src": "116:46:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
        "file": "./converter/interfaces/IConverter.sol",
        "id": 1981,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 13341,
        "src": "164:47:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol",
        "file": "./converter/interfaces/IConverterAnchor.sol",
        "id": 1982,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 13350,
        "src": "213:53:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol",
        "file": "./converter/interfaces/IConverterRegistry.sol",
        "id": 1983,
        "nodeType": "ImportDirective",
        "scope": 2533,
        "sourceUnit": 13502,
        "src": "268:55:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1985,
              "name": "IConversionPathFinder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2546,
              "src": "647:21:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConversionPathFinder_$2546",
                "typeString": "contract IConversionPathFinder"
              }
            },
            "id": 1986,
            "nodeType": "InheritanceSpecifier",
            "src": "647:21:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1987,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "670:22:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 1988,
            "nodeType": "InheritanceSpecifier",
            "src": "670:22:1"
          }
        ],
        "contractDependencies": [
          2546,
          21719,
          21818,
          22661,
          22847
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 1984,
          "nodeType": "StructuredDocumentation",
          "src": "327:285:1",
          "text": " @dev The ConversionPathFinder contract allows generating a conversion path between any token pair in the Bancor Network.\n The path can then be used in various functions in the BancorNetwork contract.\n See the BancorNetwork contract for conversion path format."
        },
        "fullyImplemented": true,
        "id": 2532,
        "linearizedBaseContracts": [
          2532,
          21719,
          22661,
          21818,
          22847,
          2546
        ],
        "name": "ConversionPathFinder",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "e1c4c966",
            "id": 1990,
            "mutability": "mutable",
            "name": "anchorToken",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2532,
            "src": "700:30:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20Token_$21127",
              "typeString": "contract IERC20Token"
            },
            "typeName": {
              "contractScope": null,
              "id": 1989,
              "name": "IERC20Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21127,
              "src": "700:11:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                "typeString": "contract IERC20Token"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1999,
              "nodeType": "Block",
              "src": "975:8:1",
              "statements": []
            },
            "documentation": {
              "id": 1991,
              "nodeType": "StructuredDocumentation",
              "src": "739:148:1",
              "text": " @dev initializes a new ConversionPathFinder instance\n @param _registry address of a contract registry contract"
            },
            "id": 2000,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1996,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1993,
                    "src": "957:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 1997,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1995,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "934:22:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "934:33:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1993,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2000,
                  "src": "905:27:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1992,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "905:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "904:29:1"
            },
            "returnParameters": {
              "id": 1998,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "975:0:1"
            },
            "scope": 2532,
            "src": "893:90:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2012,
              "nodeType": "Block",
              "src": "1180:45:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2008,
                      "name": "anchorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1990,
                      "src": "1191:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2009,
                      "name": "_anchorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2003,
                      "src": "1205:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "src": "1191:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 2011,
                  "nodeType": "ExpressionStatement",
                  "src": "1191:26:1"
                }
              ]
            },
            "documentation": {
              "id": 2001,
              "nodeType": "StructuredDocumentation",
              "src": "991:116:1",
              "text": " @dev updates the anchor token\n @param _anchorToken address of the anchor token"
            },
            "functionSelector": "2f167f05",
            "id": 2013,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2006,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2005,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "1170:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1170:9:1"
              }
            ],
            "name": "setAnchorToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2003,
                  "mutability": "mutable",
                  "name": "_anchorToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2013,
                  "src": "1137:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2002,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "1137:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1136:26:1"
            },
            "returnParameters": {
              "id": 2007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1180:0:1"
            },
            "scope": 2532,
            "src": "1113:112:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2545
            ],
            "body": {
              "id": 2058,
              "nodeType": "Block",
              "src": "1663:326:1",
              "statements": [
                {
                  "assignments": [
                    2026
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2026,
                      "mutability": "mutable",
                      "name": "converterRegistry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2058,
                      "src": "1674:36:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                        "typeString": "contract IConverterRegistry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2025,
                        "name": "IConverterRegistry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13501,
                        "src": "1674:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2032,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2029,
                            "name": "CONVERTER_REGISTRY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21545,
                            "src": "1742:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2028,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "1732:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 2030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1732:29:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2027,
                      "name": "IConverterRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13501,
                      "src": "1713:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistry_$13501_$",
                        "typeString": "type(contract IConverterRegistry)"
                      }
                    },
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1713:49:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                      "typeString": "contract IConverterRegistry"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1674:88:1"
                },
                {
                  "assignments": [
                    2037
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2037,
                      "mutability": "mutable",
                      "name": "sourcePath",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2058,
                      "src": "1773:27:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1773:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2036,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1773:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2042,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2039,
                        "name": "_sourceToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2016,
                        "src": "1811:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2040,
                        "name": "converterRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2026,
                        "src": "1825:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      ],
                      "id": 2038,
                      "name": "getPath",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2202,
                      "src": "1803:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterRegistry_$13501_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token,contract IConverterRegistry) view returns (address[] memory)"
                      }
                    },
                    "id": 2041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1803:40:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1773:70:1"
                },
                {
                  "assignments": [
                    2047
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2047,
                      "mutability": "mutable",
                      "name": "targetPath",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2058,
                      "src": "1854:27:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2045,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2046,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1854:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2052,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2049,
                        "name": "_targetToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2018,
                        "src": "1892:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2050,
                        "name": "converterRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2026,
                        "src": "1906:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      ],
                      "id": 2048,
                      "name": "getPath",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2202,
                      "src": "1884:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterRegistry_$13501_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token,contract IConverterRegistry) view returns (address[] memory)"
                      }
                    },
                    "id": 2051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1884:40:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1854:70:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2054,
                        "name": "sourcePath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2037,
                        "src": "1958:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2055,
                        "name": "targetPath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2047,
                        "src": "1970:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 2053,
                      "name": "getShortestPath",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2392,
                      "src": "1942:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (address[] memory,address[] memory) pure returns (address[] memory)"
                      }
                    },
                    "id": 2056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1942:39:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2024,
                  "id": 2057,
                  "nodeType": "Return",
                  "src": "1935:46:1"
                }
              ]
            },
            "documentation": {
              "id": 2014,
              "nodeType": "StructuredDocumentation",
              "src": "1233:304:1",
              "text": " @dev generates a conversion path between a given pair of tokens in the Bancor Network\n @param _sourceToken address of the source token\n @param _targetToken address of the target token\n @return a path from the source token to the target token"
            },
            "functionSelector": "a1c421cd",
            "id": 2059,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "findPath",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2020,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1627:8:1"
            },
            "parameters": {
              "id": 2019,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2016,
                  "mutability": "mutable",
                  "name": "_sourceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2059,
                  "src": "1561:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2015,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "1561:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2018,
                  "mutability": "mutable",
                  "name": "_targetToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2059,
                  "src": "1587:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2017,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "1587:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1560:52:1"
            },
            "returnParameters": {
              "id": 2024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2059,
                  "src": "1645:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2021,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1645:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2022,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1645:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1644:18:1"
            },
            "scope": 2532,
            "src": "1543:446:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2201,
              "nodeType": "Block",
              "src": "2427:1060:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    },
                    "id": 2072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2070,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2062,
                      "src": "2442:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2071,
                      "name": "anchorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1990,
                      "src": "2452:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "src": "2442:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2080,
                  "nodeType": "IfStatement",
                  "src": "2438:79:1",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2076,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2062,
                              "src": "2509:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            ],
                            "id": 2075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2501:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2074,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2501:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2501:15:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2073,
                        "name": "getInitialArray",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2421,
                        "src": "2485:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                          "typeString": "function (address) pure returns (address[] memory)"
                        }
                      },
                      "id": 2078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2485:32:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "functionReturnParameters": 2069,
                    "id": 2079,
                    "nodeType": "Return",
                    "src": "2478:39:1"
                  }
                },
                {
                  "assignments": [
                    2085
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2085,
                      "mutability": "mutable",
                      "name": "anchors",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2201,
                      "src": "2530:24:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2530:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2084,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2530:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2086,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2530:24:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2091,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2062,
                            "src": "2605:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          ],
                          "id": 2090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2597:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2089,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2597:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 2092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2597:15:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2087,
                        "name": "_converterRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2064,
                        "src": "2569:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                          "typeString": "contract IConverterRegistry"
                        }
                      },
                      "id": 2088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isAnchor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13417,
                      "src": "2569:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 2093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2569:44:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2108,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2103,
                        "name": "anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2085,
                        "src": "2699:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2106,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2062,
                            "src": "2755:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2104,
                            "name": "_converterRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2064,
                            "src": "2709:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                              "typeString": "contract IConverterRegistry"
                            }
                          },
                          "id": 2105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getConvertibleTokenAnchors",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13482,
                          "src": "2709:45:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "function (contract IERC20Token) view external returns (address[] memory)"
                          }
                        },
                        "id": 2107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2709:53:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "src": "2699:63:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 2109,
                    "nodeType": "ExpressionStatement",
                    "src": "2699:63:1"
                  },
                  "id": 2110,
                  "nodeType": "IfStatement",
                  "src": "2565:197:1",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2094,
                        "name": "anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2085,
                        "src": "2628:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2098,
                                "name": "_token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2062,
                                "src": "2662:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              ],
                              "id": 2097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2654:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2096,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2654:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2654:15:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2095,
                          "name": "getInitialArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2421,
                          "src": "2638:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "function (address) pure returns (address[] memory)"
                          }
                        },
                        "id": 2100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2638:32:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "src": "2628:42:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "id": 2102,
                    "nodeType": "ExpressionStatement",
                    "src": "2628:42:1"
                  }
                },
                {
                  "body": {
                    "id": 2193,
                    "nodeType": "Block",
                    "src": "2820:624:1",
                    "statements": [
                      {
                        "assignments": [
                          2123
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2123,
                            "mutability": "mutable",
                            "name": "converter",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2193,
                            "src": "2835:20:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2122,
                              "name": "IConverter",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 13340,
                              "src": "2835:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2136,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2128,
                                            "name": "anchors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2085,
                                            "src": "2894:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                              "typeString": "address[] memory"
                                            }
                                          },
                                          "id": 2130,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 2129,
                                            "name": "n",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2112,
                                            "src": "2902:1:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2894:10:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2127,
                                        "name": "IConverterAnchor",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13349,
                                        "src": "2877:16:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                                          "typeString": "type(contract IConverterAnchor)"
                                        }
                                      },
                                      "id": 2131,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2877:28:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                        "typeString": "contract IConverterAnchor"
                                      }
                                    },
                                    "id": 2132,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22838,
                                    "src": "2877:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 2133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2877:36:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2869:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 2125,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2869:8:1",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2869:45:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2124,
                            "name": "IConverter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13340,
                            "src": "2858:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                              "typeString": "type(contract IConverter)"
                            }
                          },
                          "id": 2135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2858:57:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2835:80:1"
                      },
                      {
                        "assignments": [
                          2138
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2138,
                            "mutability": "mutable",
                            "name": "connectorTokenCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2193,
                            "src": "2930:27:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2137,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2930:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2142,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2139,
                              "name": "converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2123,
                              "src": "2960:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 2140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokenCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13339,
                            "src": "2960:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                              "typeString": "function () view external returns (uint16)"
                            }
                          },
                          "id": 2141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2960:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2930:61:1"
                      },
                      {
                        "body": {
                          "id": 2191,
                          "nodeType": "Block",
                          "src": "3056:377:1",
                          "statements": [
                            {
                              "assignments": [
                                2154
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2154,
                                  "mutability": "mutable",
                                  "name": "connectorToken",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2191,
                                  "src": "3075:26:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 2153,
                                    "name": "IERC20Token",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 21127,
                                    "src": "3075:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                      "typeString": "contract IERC20Token"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2159,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2157,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2144,
                                    "src": "3130:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2155,
                                    "name": "converter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2123,
                                    "src": "3104:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "id": 2156,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "connectorTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13334,
                                  "src": "3104:25:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                                    "typeString": "function (uint256) view external returns (contract IERC20Token)"
                                  }
                                },
                                "id": 2158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3104:28:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3075:57:1"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                },
                                "id": 2162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2160,
                                  "name": "connectorToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2154,
                                  "src": "3155:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2161,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2062,
                                  "src": "3173:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                    "typeString": "contract IERC20Token"
                                  }
                                },
                                "src": "3155:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2190,
                              "nodeType": "IfStatement",
                              "src": "3151:267:1",
                              "trueBody": {
                                "id": 2189,
                                "nodeType": "Block",
                                "src": "3181:237:1",
                                "statements": [
                                  {
                                    "assignments": [
                                      2167
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 2167,
                                        "mutability": "mutable",
                                        "name": "path",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 2189,
                                        "src": "3204:21:1",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[]"
                                        },
                                        "typeName": {
                                          "baseType": {
                                            "id": 2165,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3204:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 2166,
                                          "length": null,
                                          "nodeType": "ArrayTypeName",
                                          "src": "3204:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                            "typeString": "address[]"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 2172,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2169,
                                          "name": "connectorToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2154,
                                          "src": "3236:14:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                            "typeString": "contract IERC20Token"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2170,
                                          "name": "_converterRegistry",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2064,
                                          "src": "3252:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                                            "typeString": "contract IConverterRegistry"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                            "typeString": "contract IERC20Token"
                                          },
                                          {
                                            "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                                            "typeString": "contract IConverterRegistry"
                                          }
                                        ],
                                        "id": 2168,
                                        "name": "getPath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2202,
                                        "src": "3228:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterRegistry_$13501_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                          "typeString": "function (contract IERC20Token,contract IConverterRegistry) view returns (address[] memory)"
                                        }
                                      },
                                      "id": 2171,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3228:43:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3204:67:1"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2176,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2173,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2167,
                                          "src": "3298:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 2174,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "3298:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2175,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3312:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "3298:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2188,
                                    "nodeType": "IfStatement",
                                    "src": "3294:104:1",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2180,
                                                "name": "_token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2062,
                                                "src": "3372:6:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                                  "typeString": "contract IERC20Token"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                                  "typeString": "contract IERC20Token"
                                                }
                                              ],
                                              "id": 2179,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3364:7:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 2178,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3364:7:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 2181,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3364:15:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 2182,
                                              "name": "anchors",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2085,
                                              "src": "3381:7:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                "typeString": "address[] memory"
                                              }
                                            },
                                            "id": 2184,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 2183,
                                              "name": "n",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2112,
                                              "src": "3389:1:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3381:10:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 2185,
                                            "name": "path",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2167,
                                            "src": "3393:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                              "typeString": "address[] memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                              "typeString": "address[] memory"
                                            }
                                          ],
                                          "id": 2177,
                                          "name": "getExtendedArray",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2486,
                                          "src": "3347:16:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                            "typeString": "function (address,address,address[] memory) pure returns (address[] memory)"
                                          }
                                        },
                                        "id": 2186,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3347:51:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "functionReturnParameters": 2069,
                                      "id": 2187,
                                      "nodeType": "Return",
                                      "src": "3340:58:1"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2147,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2144,
                            "src": "3026:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2148,
                            "name": "connectorTokenCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2138,
                            "src": "3030:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3026:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2192,
                        "initializationExpression": {
                          "assignments": [
                            2144
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2144,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2192,
                              "src": "3011:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2143,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3011:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2146,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3023:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3011:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3051:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2150,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2144,
                              "src": "3051:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2152,
                          "nodeType": "ExpressionStatement",
                          "src": "3051:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "3006:427:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2115,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2112,
                      "src": "2795:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2116,
                        "name": "anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2085,
                        "src": "2799:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2799:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2795:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2194,
                  "initializationExpression": {
                    "assignments": [
                      2112
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2112,
                        "mutability": "mutable",
                        "name": "n",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2194,
                        "src": "2780:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2111,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2780:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2114,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2792:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2780:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2815:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2119,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2112,
                        "src": "2815:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2121,
                    "nodeType": "ExpressionStatement",
                    "src": "2815:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "2775:669:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3477:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3463:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2195,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3467:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2196,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3467:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3463:16:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2069,
                  "id": 2200,
                  "nodeType": "Return",
                  "src": "3456:23:1"
                }
              ]
            },
            "documentation": {
              "id": 2060,
              "nodeType": "StructuredDocumentation",
              "src": "1997:308:1",
              "text": " @dev generates a conversion path between a given token and the anchor token\n @param _token               address of the token\n @param _converterRegistry   address of the converter registry\n @return a path from the input token to the anchor token"
            },
            "id": 2202,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPath",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2062,
                  "mutability": "mutable",
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2202,
                  "src": "2328:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2061,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "2328:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2064,
                  "mutability": "mutable",
                  "name": "_converterRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2202,
                  "src": "2348:37:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                    "typeString": "contract IConverterRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2063,
                    "name": "IConverterRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13501,
                    "src": "2348:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                      "typeString": "contract IConverterRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2327:59:1"
            },
            "returnParameters": {
              "id": 2069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2068,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2202,
                  "src": "2409:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2066,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2409:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2067,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2409:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:18:1"
            },
            "scope": 2532,
            "src": "2311:1176:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2391,
              "nodeType": "Block",
              "src": "3855:989:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2215,
                          "name": "_sourcePath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2206,
                          "src": "3870:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3870:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3891:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3870:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2219,
                          "name": "_targetPath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2209,
                          "src": "3896:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3896:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3917:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3896:22:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3870:48:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2384,
                  "nodeType": "IfStatement",
                  "src": "3866:935:1",
                  "trueBody": {
                    "id": 2383,
                    "nodeType": "Block",
                    "src": "3920:881:1",
                    "statements": [
                      {
                        "assignments": [
                          2225
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2225,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "3935:9:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2224,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3935:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2228,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2226,
                            "name": "_sourcePath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2206,
                            "src": "3947:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3947:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3935:30:1"
                      },
                      {
                        "assignments": [
                          2230
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2230,
                            "mutability": "mutable",
                            "name": "j",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "3980:9:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2229,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3980:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2233,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2231,
                            "name": "_targetPath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2209,
                            "src": "3992:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3992:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3980:30:1"
                      },
                      {
                        "body": {
                          "id": 2259,
                          "nodeType": "Block",
                          "src": "4092:60:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "4111:3:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 2253,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2225,
                                  "src": "4111:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2255,
                              "nodeType": "ExpressionStatement",
                              "src": "4111:3:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "4133:3:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 2256,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2230,
                                  "src": "4133:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2258,
                              "nodeType": "ExpressionStatement",
                              "src": "4133:3:1"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2234,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2225,
                                "src": "4032:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4036:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4032:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2237,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2230,
                                "src": "4041:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4045:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4041:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "4032:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2241,
                                "name": "_sourcePath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2206,
                                "src": "4050:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2245,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2242,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2225,
                                  "src": "4062:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4066:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4062:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4050:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2246,
                                "name": "_targetPath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2209,
                                "src": "4072:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2250,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2247,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2230,
                                  "src": "4084:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2248,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4088:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4084:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4072:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4050:40:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4032:58:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2260,
                        "nodeType": "WhileStatement",
                        "src": "4025:127:1"
                      },
                      {
                        "assignments": [
                          2265
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2265,
                            "mutability": "mutable",
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "4168:21:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2263,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4168:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2264,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4168:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2275,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2269,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2225,
                                  "src": "4206:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2270,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2230,
                                  "src": "4210:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4206:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4214:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4206:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4192:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2266,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4196:7:1",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2267,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4196:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 2274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4192:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4168:48:1"
                      },
                      {
                        "body": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2286,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2265,
                                "src": "4281:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2288,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2287,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "4286:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "4281:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2289,
                                "name": "_sourcePath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2206,
                                "src": "4291:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2291,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2290,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2277,
                                "src": "4303:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4291:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4281:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2293,
                          "nodeType": "ExpressionStatement",
                          "src": "4281:24:1"
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2280,
                            "name": "m",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2277,
                            "src": "4251:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2281,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2225,
                            "src": "4256:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4251:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2294,
                        "initializationExpression": {
                          "assignments": [
                            2277
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2277,
                              "mutability": "mutable",
                              "name": "m",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2294,
                              "src": "4236:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2276,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4236:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2279,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4248:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4236:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4259:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2283,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2277,
                              "src": "4259:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2285,
                          "nodeType": "ExpressionStatement",
                          "src": "4259:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "4231:74:1"
                      },
                      {
                        "body": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2305,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2265,
                                "src": "4369:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2310,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2306,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2265,
                                    "src": "4374:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4374:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2308,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2296,
                                  "src": "4388:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4374:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "4369:21:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2311,
                                "name": "_targetPath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2209,
                                "src": "4393:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2315,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2312,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2296,
                                  "src": "4405:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4409:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4405:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4393:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4369:42:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2317,
                          "nodeType": "ExpressionStatement",
                          "src": "4369:42:1"
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2299,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2296,
                            "src": "4340:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4344:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4340:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2318,
                        "initializationExpression": {
                          "assignments": [
                            2296
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2296,
                              "mutability": "mutable",
                              "name": "n",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2318,
                              "src": "4325:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2295,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4325:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2298,
                          "initialValue": {
                            "argumentTypes": null,
                            "id": 2297,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2230,
                            "src": "4337:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4325:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "4347:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2302,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2296,
                              "src": "4347:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2304,
                          "nodeType": "ExpressionStatement",
                          "src": "4347:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "4320:91:1"
                      },
                      {
                        "assignments": [
                          2320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2320,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2383,
                            "src": "4428:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2319,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4428:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2322,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4445:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4428:18:1"
                      },
                      {
                        "body": {
                          "id": 2376,
                          "nodeType": "Block",
                          "src": "4506:231:1",
                          "statements": [
                            {
                              "body": {
                                "id": 2365,
                                "nodeType": "Block",
                                "src": "4582:97:1",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 2359,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2353,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2265,
                                          "src": "4609:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 2355,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2354,
                                          "name": "p",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2324,
                                          "src": "4614:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4609:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2356,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2265,
                                          "src": "4620:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 2358,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2357,
                                          "name": "q",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2336,
                                          "src": "4625:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4620:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "4609:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 2364,
                                    "nodeType": "IfStatement",
                                    "src": "4605:54:1",
                                    "trueBody": {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2362,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 2360,
                                          "name": "p",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2324,
                                          "src": "4654:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "id": 2361,
                                          "name": "q",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2336,
                                          "src": "4658:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4654:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2363,
                                      "nodeType": "ExpressionStatement",
                                      "src": "4654:5:1"
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2341,
                                  "name": "q",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2336,
                                  "src": "4549:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2342,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2265,
                                      "src": "4553:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 2343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "4553:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2344,
                                      "name": "p",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2324,
                                      "src": "4567:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "%",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 2345,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4571:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "4567:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4553:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4549:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2366,
                              "initializationExpression": {
                                "assignments": [
                                  2336
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 2336,
                                    "mutability": "mutable",
                                    "name": "q",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 2366,
                                    "src": "4530:9:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 2335,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4530:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 2340,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2337,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2324,
                                    "src": "4542:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4546:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4542:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "4530:17:1"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2351,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 2349,
                                    "name": "q",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2336,
                                    "src": "4574:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "+=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4579:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4574:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2352,
                                "nodeType": "ExpressionStatement",
                                "src": "4574:6:1"
                              },
                              "nodeType": "ForStatement",
                              "src": "4525:154:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2367,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2265,
                                    "src": "4697:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2370,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "4702:8:1",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "id": 2368,
                                      "name": "length",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2320,
                                      "src": "4702:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4697:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2371,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2265,
                                    "src": "4714:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2373,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2372,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2324,
                                    "src": "4719:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4714:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4697:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2375,
                              "nodeType": "ExpressionStatement",
                              "src": "4697:24:1"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2327,
                            "name": "p",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2324,
                            "src": "4481:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2328,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2265,
                              "src": "4485:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 2329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4485:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4481:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2377,
                        "initializationExpression": {
                          "assignments": [
                            2324
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2324,
                              "mutability": "mutable",
                              "name": "p",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2377,
                              "src": "4466:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2323,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4466:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2326,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4478:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4466:13:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 2331,
                              "name": "p",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2324,
                              "src": "4498:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "+=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4503:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4498:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2334,
                          "nodeType": "ExpressionStatement",
                          "src": "4498:6:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "4461:276:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2379,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2265,
                              "src": "4776:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2380,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2320,
                              "src": "4782:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2378,
                            "name": "getPartialArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2531,
                            "src": "4760:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (address[] memory,uint256) pure returns (address[] memory)"
                            }
                          },
                          "id": 2381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4760:29:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 2214,
                        "id": 2382,
                        "nodeType": "Return",
                        "src": "4753:36:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4834:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4820:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4824:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2386,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4824:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4820:16:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2214,
                  "id": 2390,
                  "nodeType": "Return",
                  "src": "4813:23:1"
                }
              ]
            },
            "documentation": {
              "id": 2203,
              "nodeType": "StructuredDocumentation",
              "src": "3495:229:1",
              "text": " @dev merges two paths with a common suffix into one\n @param _sourcePath address of the source path\n @param _targetPath address of the target path\n @return merged path"
            },
            "id": 2392,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getShortestPath",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2206,
                  "mutability": "mutable",
                  "name": "_sourcePath",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2392,
                  "src": "3755:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2204,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3755:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2205,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3755:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2209,
                  "mutability": "mutable",
                  "name": "_targetPath",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2392,
                  "src": "3785:28:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2207,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3785:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2208,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3785:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3754:60:1"
            },
            "returnParameters": {
              "id": 2214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2213,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2392,
                  "src": "3837:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2211,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3837:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2212,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3837:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3836:18:1"
            },
            "scope": 2532,
            "src": "3730:1114:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2420,
              "nodeType": "Block",
              "src": "5084:110:1",
              "statements": [
                {
                  "assignments": [
                    2405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2405,
                      "mutability": "mutable",
                      "name": "array",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2420,
                      "src": "5095:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5095:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2404,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5095:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2411,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5134:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 2408,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5120:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5124:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2407,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5124:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5120:16:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5095:41:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2412,
                        "name": "array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2405,
                        "src": "5147:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2414,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5153:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5147:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2415,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2395,
                      "src": "5158:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5147:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2417,
                  "nodeType": "ExpressionStatement",
                  "src": "5147:16:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2418,
                    "name": "array",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2405,
                    "src": "5181:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2400,
                  "id": 2419,
                  "nodeType": "Return",
                  "src": "5174:12:1"
                }
              ]
            },
            "documentation": {
              "id": 2393,
              "nodeType": "StructuredDocumentation",
              "src": "4852:146:1",
              "text": " @dev creates a new array containing a single item\n @param _item item\n @return initial array"
            },
            "id": 2421,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInitialArray",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2395,
                  "mutability": "mutable",
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2421,
                  "src": "5029:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2394,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5029:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5028:15:1"
            },
            "returnParameters": {
              "id": 2400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2399,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2421,
                  "src": "5066:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2397,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5066:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2398,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5066:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5065:18:1"
            },
            "scope": 2532,
            "src": "5004:190:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2485,
              "nodeType": "Block",
              "src": "5560:247:1",
              "statements": [
                {
                  "assignments": [
                    2439
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2439,
                      "mutability": "mutable",
                      "name": "array",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2485,
                      "src": "5571:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5571:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2438,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5571:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2448,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 2443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5610:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2444,
                            "name": "_array",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2429,
                            "src": "5614:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5614:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5610:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5596:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5600:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2441,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5600:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5596:32:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5571:57:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2449,
                        "name": "array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2439,
                        "src": "5639:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2451,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5645:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5639:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2452,
                      "name": "_item0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2424,
                      "src": "5650:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5639:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2454,
                  "nodeType": "ExpressionStatement",
                  "src": "5639:17:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2455,
                        "name": "array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2439,
                        "src": "5667:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2457,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5673:1:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5667:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2458,
                      "name": "_item1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2426,
                      "src": "5678:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5667:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2460,
                  "nodeType": "ExpressionStatement",
                  "src": "5667:17:1"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2472,
                          "name": "array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2439,
                          "src": "5752:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2476,
                        "indexExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 2473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5758:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2474,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2462,
                            "src": "5762:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5758:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "5752:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2477,
                          "name": "_array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2429,
                          "src": "5767:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2479,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2478,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2462,
                          "src": "5774:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5767:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "5752:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2481,
                    "nodeType": "ExpressionStatement",
                    "src": "5752:24:1"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2465,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2462,
                      "src": "5715:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2466,
                        "name": "_array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2429,
                        "src": "5719:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5719:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5715:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2482,
                  "initializationExpression": {
                    "assignments": [
                      2462
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2462,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2482,
                        "src": "5700:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5700:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2464,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5712:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5700:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5734:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2469,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2462,
                        "src": "5734:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2471,
                    "nodeType": "ExpressionStatement",
                    "src": "5734:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "5695:81:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2483,
                    "name": "array",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2439,
                    "src": "5794:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2434,
                  "id": 2484,
                  "nodeType": "Return",
                  "src": "5787:12:1"
                }
              ]
            },
            "documentation": {
              "id": 2422,
              "nodeType": "StructuredDocumentation",
              "src": "5202:229:1",
              "text": " @dev prepends two items to the beginning of an array\n @param _item0 first item\n @param _item1 second item\n @param _array initial array\n @return extended array"
            },
            "id": 2486,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExtendedArray",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2424,
                  "mutability": "mutable",
                  "name": "_item0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5463:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5463:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2426,
                  "mutability": "mutable",
                  "name": "_item1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5479:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2425,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5479:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2429,
                  "mutability": "mutable",
                  "name": "_array",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5495:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2427,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5495:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2428,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5495:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5462:57:1"
            },
            "returnParameters": {
              "id": 2434,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2433,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2486,
                  "src": "5542:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2431,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5542:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2432,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5542:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5541:18:1"
            },
            "scope": 2532,
            "src": "5437:370:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2530,
              "nodeType": "Block",
              "src": "6112:171:1",
              "statements": [
                {
                  "assignments": [
                    2502
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2502,
                      "mutability": "mutable",
                      "name": "array",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2530,
                      "src": "6123:22:1",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2500,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6123:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2501,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6123:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2508,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2506,
                        "name": "_length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2492,
                        "src": "6162:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6148:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2503,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6152:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2504,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6152:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 2507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6148:22:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6123:47:1"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2525,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2519,
                          "name": "array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2502,
                          "src": "6232:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2521,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2520,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2510,
                          "src": "6238:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "6232:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2522,
                          "name": "_array",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2490,
                          "src": "6243:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2524,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2523,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2510,
                          "src": "6250:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6243:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "6232:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2526,
                    "nodeType": "ExpressionStatement",
                    "src": "6232:20:1"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2513,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2510,
                      "src": "6201:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2514,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2492,
                      "src": "6205:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6201:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2527,
                  "initializationExpression": {
                    "assignments": [
                      2510
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2510,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2527,
                        "src": "6186:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6186:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2512,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6198:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6186:13:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2517,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6214:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2516,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2510,
                        "src": "6214:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2518,
                    "nodeType": "ExpressionStatement",
                    "src": "6214:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "6181:71:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2528,
                    "name": "array",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2502,
                    "src": "6270:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 2497,
                  "id": 2529,
                  "nodeType": "Return",
                  "src": "6263:12:1"
                }
              ]
            },
            "documentation": {
              "id": 2487,
              "nodeType": "StructuredDocumentation",
              "src": "5815:184:1",
              "text": " @dev extracts the prefix of a given array\n @param _array given array\n @param _length prefix length\n @return partial array"
            },
            "id": 2531,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPartialArray",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2490,
                  "mutability": "mutable",
                  "name": "_array",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2531,
                  "src": "6030:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2488,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6030:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2489,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6030:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2492,
                  "mutability": "mutable",
                  "name": "_length",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2531,
                  "src": "6055:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2491,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6055:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6029:42:1"
            },
            "returnParameters": {
              "id": 2497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2496,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2531,
                  "src": "6094:16:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2494,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6094:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2495,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6094:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6093:18:1"
            },
            "scope": 2532,
            "src": "6005:278:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 2533,
        "src": "614:5672:1"
      }
    ],
    "src": "52:6236:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xf374d7B507767101a4bf3bA2a6B99AC737A44f6d",
      "transactionHash": "0xfd01cc35dbe92ce4e385469a6034518ac7f5e8df1e39f8f58dcbc8082ded1045"
    },
    "8995": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xf374d7B507767101a4bf3bA2a6B99AC737A44f6d",
      "transactionHash": "0xfd01cc35dbe92ce4e385469a6034518ac7f5e8df1e39f8f58dcbc8082ded1045"
    },
    "1604964387852": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7F6dBD0D9f13EFBcF08FA7817cD6fACc68Fa2C49",
      "transactionHash": "0x5c4a650021d6de7c3eb23bbeaed1a00c142e260e34108a499b9ba22aa25f5427"
    },
    "1604964469407": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x89C7f9CB53F25405f7e98003E57C9f2A8b1a22B8",
      "transactionHash": "0xe38b4943db6d6aefb250565743f7de101363bb9068fd2bf94e98c322ed568e2f"
    },
    "1604965528035": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7B34ee7EdE799854048b95433f5CB3fA4B82021E",
      "transactionHash": "0x443ea5a694d1e7521a2b78711d8888e28f462b928d7237bb544fe92bdc3fba35"
    },
    "1604965645554": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xa48Af9b8Fab73981F42BA65a33d6921EFee26753",
      "transactionHash": "0x00585976e5e977df22b8061d10ec49eb9b5e898265c4c24442a612a6b7e9d1a5"
    },
    "1604965679541": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x240cba6227Eb9c095a0f2161501d1BA090E9a7d2",
      "transactionHash": "0x872281b0c43b09524e3ae6872560decf9d106cbf071aa4e72ca1175abdcb93b2"
    },
    "1604965719492": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xd4Db57f3Af510F96bE3574EC2A4F70ED3022AC97",
      "transactionHash": "0x57e43c279f5fab7e679e4c44fc9c6cb797477e31158d3b19de6e9c5cebe1ad6c"
    },
    "1604965760834": {
      "events": {
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x63D123a3f926fa743008e41eC08Be37EFA28ec23",
      "transactionHash": "0x6b2f52af7972b5c3dde1420abe6aacd2b30cde4157bdcb4ff93f503ef5f66c69"
    }
  },
  "schemaVersion": "3.2.3",
  "updatedAt": "2020-11-10T14:20:41.879Z",
  "networkType": "ethereum",
  "devdoc": {
    "details": "The ConversionPathFinder contract allows generating a conversion path between any token pair in the Bancor Network. The path can then be used in various functions in the BancorNetwork contract. See the BancorNetwork contract for conversion path format.",
    "kind": "dev",
    "methods": {
      "acceptOwnership()": {
        "details": "used by a new owner to accept an ownership transfer"
      },
      "constructor": {
        "details": "initializes a new ConversionPathFinder instance",
        "params": {
          "_registry": "address of a contract registry contract"
        }
      },
      "findPath(address,address)": {
        "details": "generates a conversion path between a given pair of tokens in the Bancor Network",
        "params": {
          "_sourceToken": "address of the source token",
          "_targetToken": "address of the target token"
        },
        "returns": {
          "_0": "a path from the source token to the target token"
        }
      },
      "restoreRegistry()": {
        "details": "restores the previous contract-registry"
      },
      "restrictRegistryUpdate(bool)": {
        "details": "restricts the permission to update the contract-registry",
        "params": {
          "_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only"
        }
      },
      "setAnchorToken(address)": {
        "details": "updates the anchor token",
        "params": {
          "_anchorToken": "address of the anchor token"
        }
      },
      "transferOwnership(address)": {
        "details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner",
        "params": {
          "_newOwner": "new contract owner"
        }
      },
      "updateRegistry()": {
        "details": "updates to the new contract-registry"
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}