{
    "contractName": "BRegistry",
    "abi": [{"inputs":[{"internalType":"address","name":"_bfactory","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":true,"internalType":"address","name":"token2","type":"address"},{"indexed":false,"internalType":"bytes32","name":"oldIndices","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"newIndices","type":"bytes32"}],"name":"IndicesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":true,"internalType":"address","name":"token2","type":"address"}],"name":"PoolTokenPairAdded","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"},{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"_getEffectiveLiquidityForPoolsPurge","outputs":[{"internalType":"uint256[]","name":"effectiveLiquidity","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"}],"name":"addPoolPair","outputs":[{"internalType":"uint256","name":"listed","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"}],"name":"addPools","outputs":[{"internalType":"uint256[]","name":"listed","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"destToken","type":"address"}],"name":"getBestPools","outputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"destToken","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"getBestPoolsWithLimit","outputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"destToken","type":"address"}],"name":"getPairInfo","outputs":[{"internalType":"uint256","name":"weight1","type":"uint256"},{"internalType":"uint256","name":"weight2","type":"uint256"},{"internalType":"uint256","name":"swapFee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"destToken","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"getPoolsWithLimit","outputs":[{"internalType":"address[]","name":"result","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"lengthLimit","type":"uint256"}],"name":"sortPools","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"lengthLimit","type":"uint256"}],"name":"sortPoolsWithPurge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],
    "bytecode": "608060405234801561001057600080fd5b506040516121663803806121668339818101604052602081101561003357600080fd5b5051600280546001600160a01b0319166001600160a01b03909216919091179055612103806100636000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a275499611610066578063a2754996146102db578063b108cd3714610349578063bfdbfc4314610385578063e7156fa3146103bb578063f5406970146103e957610093565b80632013c70614610098578063500b6c71146101a25780637a846457146101ec57806388376fbe1461025c575b600080fd5b610152600480360360608110156100ae57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156100e157600080fd5b8201836020820111156100f357600080fd5b803590602001918460208302840111600160201b8311171561011457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061043f945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561018e578181015183820152602001610176565b505050509050019250505060405180910390f35b6101da600480360360608110156101b857600080fd5b506001600160a01b0381358116916020810135821691604090910135166109ed565b60408051918252519081900360200190f35b61025a6004803603604081101561020257600080fd5b810190602081018135600160201b81111561021c57600080fd5b82018360208201111561022e57600080fd5b803590602001918460208302840111600160201b8311171561024f57600080fd5b919350915035610f73565b005b6101526004803603606081101561027257600080fd5b810190602081018135600160201b81111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460208302840111600160201b831117156102bf57600080fd5b91935091506001600160a01b0381358116916020013516611240565b61025a600480360360408110156102f157600080fd5b810190602081018135600160201b81111561030b57600080fd5b82018360208201111561031d57600080fd5b803590602001918460208302840111600160201b8311171561033e57600080fd5b9193509150356112c8565b6101526004803603608081101561035f57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561151f565b6101526004803603606081101561039b57600080fd5b506001600160a01b038135811691602081013590911690604001356115fb565b610152600480360360408110156103d157600080fd5b506001600160a01b0381358116916020013516611722565b610421600480360360608110156103ff57600080fd5b506001600160a01b038135811691602081013582169160409091013516611739565b60408051938452602084019290925282820152519081900360600190f35b606060008061044e86866117cb565b905060005b845181101561081857610464612086565b6001600087848151811061047457fe5b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081208782528252829020825160808101845281546001600160501b038082168352600160501b8204811694830194909452600160a01b9004909216928201929092526001909101546060820152915087811690891610156107225780516020820151610525916001600160501b03908116916105209183911663ffffffff61182d16565b611887565b6001600088858151811061053557fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008581526020019081526020016000206001018190555061066c86838151811061058457fe5b60200260200101516001600160a01b031663f8b2cb4f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156105e157600080fd5b505afa1580156105f5573d6000803e3d6000fd5b505050506040513d602081101561060b57600080fd5b505187516001906000908a908790811061062157fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008681526020019081526020016000206001015461199a90919063ffffffff16565b6001600088858151811061067c57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008581526020019081526020016000206001018190555061071b600160008885815181106106cf57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858152602001908152602001600020600101548561182d90919063ffffffff16565b935061080f565b6020810151815161074a916001600160501b039081169161052091168263ffffffff61182d16565b6001600088858151811061075a57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858152602001908152602001600020600101819055506107a986838151811061058457fe5b600160008885815181106107b957fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008581526020019081526020016000206001018190555061080c600160008885815181106106cf57fe5b93505b50600101610453565b50600061082d8367016345785d8a00006119f3565b905060005b600083815260208190526040902061084990611ab5565b81101561090757600083815260208190526040812060019081018054859391908590811061087357fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812087825290925290206001015410156108ff57600083815260208190526040902060010180546108fd9190839081106108ce57fe5b6000918252602080832090910154868352908290526040909120906001600160a01b031663ffffffff611abc16565b505b600101610832565b50600082815260208190526040902061091f90611ab5565b604051908082528060200260200182016040528015610948578160200160208202803883390190505b50935060005b600083815260208190526040902061096590611ab5565b8110156109e2576000838152602081905260408120600190810180549192918490811061098e57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812086825290925290206001015485518690839081106109cf57fe5b602090810291909101015260010161094e565b505050509392505050565b6002546040805163615db6e160e11b81526001600160a01b0386811660048301529151600093929092169163c2bb6dc291602480820192602092909190829003018186803b158015610a3e57600080fd5b505afa158015610a52573d6000803e3d6000fd5b505050506040513d6020811015610a6857600080fd5b5051610aab576040805162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d09413d3d3609a1b604482015290519081900360640190fd5b6000846001600160a01b031663d4cadf686040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6020811015610b1057600080fd5b50519050666a94d74f430000811115610b63576040805162461bcd60e51b815260206004820152601060248201526f08aa4a4be8c8a8abea89e9ebe90928e960831b604482015290519081900360640190fd5b6000610b6f85856117cb565b6000818152602081905260409020909150610b90908763ffffffff611bcf16565b50836001600160a01b0316856001600160a01b03161015610d66576040518060800160405280876001600160a01b031663948d8ce6886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610c0c57600080fd5b505afa158015610c20573d6000803e3d6000fd5b505050506040513d6020811015610c3657600080fd5b50516001600160501b0316815260408051634a46c67360e11b81526001600160a01b0388811660048301529151602093840193928b169263948d8ce69260248082019391829003018186803b158015610c8e57600080fd5b505afa158015610ca2573d6000803e3d6000fd5b505050506040513d6020811015610cb857600080fd5b50516001600160501b039081168252848116602083810191909152600060409384018190526001600160a01b038b16815260018083528482208783528352908490208551815493870151958701518516600160a01b0269ffffffffffffffffffff60a01b19968616600160501b0269ffffffffffffffffffff60501b199290961669ffffffffffffffffffff1990951694909417169390931793909316178155606090920151910155610f1d565b6040518060800160405280876001600160a01b031663948d8ce6876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d6020811015610df157600080fd5b50516001600160501b0316815260408051634a46c67360e11b81526001600160a01b0389811660048301529151602093840193928b169263948d8ce69260248082019391829003018186803b158015610e4957600080fd5b505afa158015610e5d573d6000803e3d6000fd5b505050506040513d6020811015610e7357600080fd5b50516001600160501b039081168252848116602083810191909152600060409384018190526001600160a01b038b16815260018083528482208783528352908490208551815493870151958701518516600160a01b0269ffffffffffffffffffff60a01b19968616600160501b0269ffffffffffffffffffff60501b199290961669ffffffffffffffffffff19909516949094171693909317939093161781556060909201519101555b836001600160a01b0316856001600160a01b0316876001600160a01b03167f181090c3a4bc51a62093032ebf96fd26ff1f27c2145aa9a28c8a5b9f627bcdd460405160405180910390a450506001019392505050565b60005b8281101561123a57600181015b83811015611231576000610fcd868685818110610f9c57fe5b905060200201356001600160a01b0316878785818110610fb857fe5b905060200201356001600160a01b03166117cb565b9050606061101f878786818110610fe057fe5b905060200201356001600160a01b0316888886818110610ffc57fe5b905060200201356001600160a01b0316600061101a6101008a611c27565b61151f565b9050606061106488888781811061103257fe5b905060200201356001600160a01b031689898781811061104e57fe5b905060200201356001600160a01b031684611c3d565b9050600061107182611eb6565b60008581526020819052604090206002015490915081146112215788888681811061109857fe5b905060200201356001600160a01b03166001600160a01b03168989888181106110bd57fe5b905060200201356001600160a01b03166001600160a01b0316106110fc578888878181106110e757fe5b905060200201356001600160a01b0316611119565b88888681811061110857fe5b905060200201356001600160a01b03165b6001600160a01b031689898781811061112e57fe5b905060200201356001600160a01b03166001600160a01b03168a8a8981811061115357fe5b905060200201356001600160a01b03166001600160a01b0316106111925789898781811061117d57fe5b905060200201356001600160a01b03166111af565b89898881811061119e57fe5b905060200201356001600160a01b03165b6001600160a01b03167fa91f9532dc66c94302dbfd7be21a31cdee3b1c97e8b3064aab212b8e64e936c56000808881526020019081526020016000206002015484604051808381526020018281526020019250505060405180910390a360008481526020819052604090206002018190555b505060019092019150610f839050565b50600101610f76565b50505050565b60408051848152602080860282010190915260609084801561126c578160200160208202803883390190505b50905060005b848110156112bf576112a086868381811061128957fe5b905060200201356001600160a01b031685856109ed565b8282815181106112ac57fe5b6020908102919091010152600101611272565b50949350505050565b60005b8281101561123a57600181015b838110156115165760006112f1868685818110610f9c57fe5b90506060611304878786818110610fe057fe5b9050606061134988888781811061131757fe5b905060200201356001600160a01b031689898781811061133357fe5b905060200201356001600160a01b03168461043f565b9050600061135682611eb6565b60008581526020819052604090206002015490915081146115065788888681811061137d57fe5b905060200201356001600160a01b03166001600160a01b03168989888181106113a257fe5b905060200201356001600160a01b03166001600160a01b0316106113e1578888878181106113cc57fe5b905060200201356001600160a01b03166113fe565b8888868181106113ed57fe5b905060200201356001600160a01b03165b6001600160a01b031689898781811061141357fe5b905060200201356001600160a01b03166001600160a01b03168a8a8981811061143857fe5b905060200201356001600160a01b03166001600160a01b0316106114775789898781811061146257fe5b905060200201356001600160a01b0316611494565b89898881811061148357fe5b905060200201356001600160a01b03165b6001600160a01b03167fa91f9532dc66c94302dbfd7be21a31cdee3b1c97e8b3064aab212b8e64e936c56000808881526020019081526020016000206002015484604051808381526020018281526020019250505060405180910390a360008481526020819052604090206002018190555b5050600190920191506112d89050565b506001016112cb565b6060600061152d86866117cb565b600081815260208190526040902060010154909150611550908490869003611c27565b604051908082528060200260200182016040528015611579578160200160208202803883390190505b50915060005b82518110156115f157600082815260208190526040902060010180548683019081106115a757fe5b9060005260206000200160009054906101000a90046001600160a01b03168382815181106115d157fe5b6001600160a01b039092166020928302919091019091015260010161157f565b5050949350505050565b6060600061160985856117cb565b6000818152602081905260408120600201549192505b600082826020811061162d57fe5b1a60f81b6001600160f81b031916118015611651575061164e856020611c27565b81105b1561165e5760010161161f565b80604051908082528060200260200182016040528015611688578160200160208202803883390190505b50935060005b818110156109e25760006116b660018584602081106116a957fe5b1a9063ffffffff611f8f16565b6000868152602081905260409020600101805491925090829081106116d757fe5b9060005260206000200160009054906101000a90046001600160a01b031686838151811061170157fe5b6001600160a01b03909216602092830291909101909101525060010161168e565b6060611730838360206115fb565b90505b92915050565b60008060008061174986866117cb565b9050611753612086565b506001600160a01b03969096166000908152600160208181526040808420998452988152918890208851608081018a5281546001600160501b03808216808452600160501b83048216968401879052600160a01b909204169a82018b9052919092015460609092019190915297909695509350505050565b6000816001600160a01b0316836001600160a01b0316106117ec57826117ee565b815b6001600160801b03166080836001600160a01b0316856001600160a01b031610611818578361181a565b845b6001600160801b0316901b179392505050565b600082820183811015611730576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000816118ca576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015290519081900360640190fd5b670de0b6b3a764000083028315806118f25750670de0b6b3a76400008482816118ef57fe5b04145b611936576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b60028304810181811015611984576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b600084828161198f57fe5b049695505050505050565b6000826119a957506000611733565b828202828482816119b657fe5b04146117305760405162461bcd60e51b81526004018080602001828103825260218152602001806120ae6021913960400191505060405180910390fd5b6000828202831580611a0d575082848281611a0a57fe5b04145b611a51576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6706f05b59d3b20000810181811015611aa4576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6000670de0b6b3a76400008261198f565b6001015490565b6000611ac88383611fd1565b15611bc7576001600160a01b03821660009081526020849052604090205460018401546000199182019101808214611b73576000856001018281548110611b0b57fe5b6000918252602090912001546001870180546001600160a01b039092169250829185908110611b3657fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815290869052604090206001830190555b6001600160a01b03841660009081526020869052604081205560018501805480611b9957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550600191506117339050565b506000611733565b6000611bdb8383611fd1565b611bc75750600182810180548083018083556000928352602080842090920180546001600160a01b0319166001600160a01b038716908117909155835290859052604090912055611733565b6000818310611c365781611730565b5090919050565b60608151604051908082528060200260200182016040528015611c6a578160200160208202803883390190505b50905060005b8251811015611eae576000611c8586866117cb565b9050611c8f612086565b60016000868581518110611c9f57fe5b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081208682528252829020825160808101845281546001600160501b038082168352600160501b8204811694830194909452600160a01b900490921692820192909252600190910154606082015291508681169088161015611e3c5780516020820151611d4b916001600160501b03908116916105209183911663ffffffff61182d16565b848481518110611d5757fe5b602002602001018181525050611e1f858481518110611d7257fe5b60200260200101516001600160a01b031663f8b2cb4f886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611dcf57600080fd5b505afa158015611de3573d6000803e3d6000fd5b505050506040513d6020811015611df957600080fd5b50518551869086908110611e0957fe5b602002602001015161199a90919063ffffffff16565b848481518110611e2b57fe5b602002602001018181525050611ea4565b60208101518151611e64916001600160501b039081169161052091168263ffffffff61182d16565b848481518110611e7057fe5b602002602001018181525050611e8b858481518110611d7257fe5b848481518110611e9757fe5b6020026020010181815250505b5050600101611c70565b509392505050565b600080600019815b611eca85516020611c27565b811015611f86576000805b8651811015611f5457868281518110611eea57fe5b6020026020010151878281518110611efe57fe5b6020026020010151118015611f25575083878281518110611f1b57fe5b6020026020010151105b80611f43575083878381518110611f3857fe5b602002602001015110155b15611f4c578091505b600101611ed5565b50858181518110611f6157fe5b602090810291909101015160019182016008840260f8031b9490941793925001611ebe565b50909392505050565b600061173083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fef565b6001600160a01b031660009081526020919091526040902054151590565b6000818484111561207e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561204357818101518382015260200161202b565b50505050905090810190601f1680156120705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040805160808101825260008082526020820181905291810182905260608101919091529056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820332be8e1eeb66a17b919a8659b9e2f1a71a370ca7a8f99e5d196914c884520c364736f6c634300050c0032",
    "deployedBytecode": "",
    "linkReferences": {},
    "deployedLinkReferences": {}
  }
  