cic-internal-integration/apps/cic-eth/tests/testdata/bancor/TestConverterRegistry.json

2635 lines
185 KiB
JSON

{
"contractName": "TestConverterRegistry",
"abi": [
{
"inputs": [
{
"internalType": "contract IContractRegistry",
"name": "_registry",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_anchor",
"type": "address"
}
],
"name": "ConverterAnchorRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "ConvertibleTokenRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_liquidityPool",
"type": "address"
}
],
"name": "LiquidityPoolRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IConverterAnchor",
"name": "_smartToken",
"type": "address"
}
],
"name": "SmartTokenRemoved",
"type": "event"
},
{
"inputs": [],
"name": "acceptOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "addConverter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "createdConverter",
"outputs": [
{
"internalType": "contract IConverter",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getAnchor",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAnchorCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAnchors",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_anchors",
"type": "address[]"
}
],
"name": "getConvertersByAnchors",
"outputs": [
{
"internalType": "contract IConverter[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_smartTokens",
"type": "address[]"
}
],
"name": "getConvertersBySmartTokens",
"outputs": [
{
"internalType": "contract IConverter[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleToken",
"outputs": [
{
"internalType": "contract IERC20Token",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleTokenAnchor",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenAnchorCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenAnchors",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getConvertibleTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getConvertibleTokenSmartToken",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenSmartTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
}
],
"name": "getConvertibleTokenSmartTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getConvertibleTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getLiquidityPool",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_type",
"type": "uint16"
},
{
"internalType": "contract IERC20Token[]",
"name": "_reserveTokens",
"type": "address[]"
},
{
"internalType": "uint32[]",
"name": "_reserveWeights",
"type": "uint32[]"
}
],
"name": "getLiquidityPoolByConfig",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token[]",
"name": "_reserveTokens",
"type": "address[]"
},
{
"internalType": "uint32[]",
"name": "_reserveWeights",
"type": "uint32[]"
}
],
"name": "getLiquidityPoolByReserveConfig",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLiquidityPoolCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLiquidityPools",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "getSmartToken",
"outputs": [
{
"internalType": "contract IConverterAnchor",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getSmartTokenCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getSmartTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isAnchor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "isConverterValid",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleTokenAnchor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20Token",
"name": "_convertibleToken",
"type": "address"
},
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isConvertibleTokenSmartToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isLiquidityPool",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "isSimilarLiquidityPoolRegistered",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_value",
"type": "address"
}
],
"name": "isSmartToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"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": [
{
"internalType": "contract IConverter",
"name": "_converter",
"type": "address"
}
],
"name": "removeConverter",
"outputs": [],
"stateMutability": "nonpayable",
"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": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_type",
"type": "uint16"
},
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "_decimals",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "_maxConversionFee",
"type": "uint32"
},
{
"internalType": "contract IERC20Token[]",
"name": "_reserveTokens",
"type": "address[]"
},
{
"internalType": "uint32[]",
"name": "_reserveWeights",
"type": "uint32[]"
}
],
"name": "newConverter",
"outputs": [
{
"internalType": "contract IConverter",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"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\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"ConverterAnchorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"ConverterAnchorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"ConvertibleTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"ConvertibleTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPool\",\"type\":\"address\"}],\"name\":\"LiquidityPoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPool\",\"type\":\"address\"}],\"name\":\"LiquidityPoolRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"SmartTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"SmartTokenRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"addConverter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdConverter\",\"outputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAnchorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAnchors\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_anchors\",\"type\":\"address[]\"}],\"name\":\"getConvertersByAnchors\",\"outputs\":[{\"internalType\":\"contract IConverter[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_smartTokens\",\"type\":\"address[]\"}],\"name\":\"getConvertersBySmartTokens\",\"outputs\":[{\"internalType\":\"contract IConverter[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleToken\",\"outputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenAnchorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenAnchors\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getLiquidityPool\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"getLiquidityPoolByConfig\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"getLiquidityPoolByReserveConfig\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isAnchor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"isConverterValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenAnchor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isLiquidityPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"isSimilarLiquidityPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_maxConversionFee\",\"type\":\"uint32\"},{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"newConverter\",\"outputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"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\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"removeConverter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"addConverter(address)\":{\"details\":\"adds an existing converter to the registry can only be called by the owner\",\"params\":{\"_converter\":\"converter\"}},\"getAnchor(uint256)\":{\"details\":\"returns the converter anchor at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"anchor at the given index\"}},\"getAnchorCount()\":{\"details\":\"returns the number of converter anchors in the registry\",\"returns\":{\"_0\":\"number of anchors\"}},\"getAnchors()\":{\"details\":\"returns the list of converter anchors in the registry\",\"returns\":{\"_0\":\"list of anchors\"}},\"getConvertersByAnchors(address[])\":{\"details\":\"returns a list of converters for a given list of anchors this is a utility function that can be used to reduce the number of calls to the contract\",\"params\":{\"_anchors\":\"list of converter anchors\"},\"returns\":{\"_0\":\"list of converters\"}},\"getConvertersBySmartTokens(address[])\":{\"details\":\"deprecated, backward compatibility, use `getConvertersByAnchors`\"},\"getConvertibleToken(uint256)\":{\"details\":\"returns the convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"convertible token at the given index\"}},\"getConvertibleTokenAnchor(address,uint256)\":{\"details\":\"returns the converter anchor associated with a given convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"anchor associated with the given convertible token at the given index\"}},\"getConvertibleTokenAnchorCount(address)\":{\"details\":\"returns the number of converter anchors associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"number of anchors associated with the given convertible token\"}},\"getConvertibleTokenAnchors(address)\":{\"details\":\"returns the list of aoncerter anchors associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"list of anchors associated with the given convertible token\"}},\"getConvertibleTokenCount()\":{\"details\":\"returns the number of convertible tokens in the registry\",\"returns\":{\"_0\":\"number of convertible tokens\"}},\"getConvertibleTokenSmartToken(address,uint256)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchor`\"},\"getConvertibleTokenSmartTokenCount(address)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`\"},\"getConvertibleTokenSmartTokens(address)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchors`\"},\"getConvertibleTokens()\":{\"details\":\"returns the list of convertible tokens in the registry\",\"returns\":{\"_0\":\"list of convertible tokens\"}},\"getLiquidityPool(uint256)\":{\"details\":\"returns the liquidity pool at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"liquidity pool at the given index\"}},\"getLiquidityPoolByConfig(uint16,address[],uint32[])\":{\"details\":\"searches for a liquidity pool with specific configuration\",\"params\":{\"_reserveTokens\":\"reserve tokens\",\"_reserveWeights\":\"reserve weights\",\"_type\":\"converter type, see ConverterBase contract main doc\"},\"returns\":{\"_0\":\"the liquidity pool, or zero if no such liquidity pool exists\"}},\"getLiquidityPoolByReserveConfig(address[],uint32[])\":{\"details\":\"deprecated, backward compatibility, use `getLiquidityPoolByConfig`\"},\"getLiquidityPoolCount()\":{\"details\":\"returns the number of liquidity pools in the registry\",\"returns\":{\"_0\":\"number of liquidity pools\"}},\"getLiquidityPools()\":{\"details\":\"returns the list of liquidity pools in the registry\",\"returns\":{\"_0\":\"list of liquidity pools\"}},\"getSmartToken(uint256)\":{\"details\":\"deprecated, backward compatibility, use `getAnchor`\"},\"getSmartTokenCount()\":{\"details\":\"deprecated, backward compatibility, use `getAnchorCount`\"},\"getSmartTokens()\":{\"details\":\"deprecated, backward compatibility, use `getAnchors`\"},\"isAnchor(address)\":{\"details\":\"checks whether or not a given value is a converter anchor\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is an anchor, false if not\"}},\"isConverterValid(address)\":{\"details\":\"checks whether or not a given converter is valid\",\"params\":{\"_converter\":\"converter\"},\"returns\":{\"_0\":\"true if the given converter is valid, false if not\"}},\"isConvertibleToken(address)\":{\"details\":\"checks whether or not a given value is a convertible token\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a convertible token, false if not\"}},\"isConvertibleTokenAnchor(address,address)\":{\"details\":\"checks whether or not a given value is a converter anchor of a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is an anchor of the given convertible token, false if not\"}},\"isConvertibleTokenSmartToken(address,address)\":{\"details\":\"deprecated, backward compatibility, use `isConvertibleTokenAnchor`\"},\"isLiquidityPool(address)\":{\"details\":\"checks whether or not a given value is a liquidity pool\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a liquidity pool, false if not\"}},\"isSimilarLiquidityPoolRegistered(address)\":{\"details\":\"checks if a liquidity pool with given configuration is already registered\",\"params\":{\"_converter\":\"converter with specific configuration\"},\"returns\":{\"_0\":\"if a liquidity pool with the same configuration is already registered\"}},\"isSmartToken(address)\":{\"details\":\"deprecated, backward compatibility, use `isAnchor`\"},\"newConverter(uint16,string,string,uint8,uint32,address[],uint32[])\":{\"details\":\"creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\",\"params\":{\"_decimals\":\"token / pool decimals\",\"_maxConversionFee\":\"maximum conversion-fee\",\"_name\":\"token / pool name\",\"_reserveTokens\":\"reserve tokens\",\"_reserveWeights\":\"reserve weights\",\"_symbol\":\"token / pool symbol\",\"_type\":\"converter type, see ConverterBase contract main doc\"},\"returns\":{\"_0\":\"new converter\"}},\"removeConverter(address)\":{\"details\":\"removes a converter from the registry anyone can remove an existing converter from the registry, as long as the converter is invalid note that the owner can also remove valid converters\",\"params\":{\"_converter\":\"converter\"}},\"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\"}},\"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/helpers/TestConverterRegistry.sol\":\"TestConverterRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol\":{\"keccak256\":\"0xee1e037bda67806cfe010a96d32b4cd56b7b1f9dbc2b13710e43aa376661096a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://31a779ae265721924fb94991483fe0f42ec74c3794e1cb5eef2163f0f288f527\",\"dweb:/ipfs/QmNUNuNqBZYEyj8ABB1Xrx3HDFukdM4awv3oszUXnDURUf\"]},\"/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/IConverterFactory.sol\":{\"keccak256\":\"0x40a8b6a5dd24f48b0c51c9f784c2e5df5afbadad9459873c25163f13f68c99dd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://6ad87f96e9e812869d79396d3415f89fabd1f068861f1c5c92bac09898938070\",\"dweb:/ipfs/QmaHUVyRsjUrQNtWnRhSnfPXMbwnFgpNwZvL9BMC5Xxagb\"]},\"/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/converter/interfaces/IConverterRegistryData.sol\":{\"keccak256\":\"0xc2b8e75bf4d69b34f9687d90d8eb31e8462bfcf25565f5ca399151648624c73a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e3825b1ccce31117c984a7605376ec2e6f18b15cdd61e9d5624667332a935dd7\",\"dweb:/ipfs/QmeRHtWU1oZJtL8UxJQMbwmTyMhf8Z3DJz6XubFxbP5xQx\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/ITypedConverterCustomFactory.sol\":{\"keccak256\":\"0xe9e91f22d45e1c39dd441bed511d5fa6acffe83910f42ea7abcfd300f59daaaf\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://621881bd2a74632b697d87e4c3253142f8758364122240d5cc18826b18bfef80\",\"dweb:/ipfs/QmcTPevgXAYM7Li4r3rKn8uqRF2hWpid2uNBwymysYjLWp\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterRegistry.sol\":{\"keccak256\":\"0x6484d0fb77b287b5453c3722f8fdea20ba9a180d1da54c886dd148779d5d82ea\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://09b2152d1cc50e635c5eb7bad4c0e6a3c8d5f26f8ee2e42ee34ddefe7ce6a55d\",\"dweb:/ipfs/QmdzZ1Ax3eZkam9ogjA5rY1c7UHZh9A9vUiKzJZXrqm8UZ\"]},\"/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/token/interfaces/ISmartToken.sol\":{\"keccak256\":\"0x5cfc15e7a23a9872059b0cea4d2ae902c3fc074a39e1c645036ce38ad47881ec\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://890ee09d24de5778e34c4c27d1377d83d378e8f4a13fcb94d5102f61d4749cce\",\"dweb:/ipfs/QmT89f61fmsUN1BVdebKxUc5VU7sitiP33LNk7TTtF18oj\"]},\"/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/TokenHandler.sol\":{\"keccak256\":\"0xf65b87e3bf3343e368da67878c19d1a043a1025b10e9053d3562b53b4aa447fe\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b85c5d96642c14c53b8d5062eecd4d27d3bdb457d1d0f130900763a75a512eb7\",\"dweb:/ipfs/QmUHtbqC1khqnRZXYn11Aykus4m5e9MVNUWqorxhpr5ipJ\"]},\"/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": "0x60806040523480156200001157600080fd5b506040516200337238038062003372833981810160405260208110156200003757600080fd5b5051600080546001600160a01b0319163317905580808062000059816200008d565b50600280546001600160a01b039092166001600160a01b031992831681179091556003805490921617905550620000ec9050565b6001600160a01b038116620000e9576040805162461bcd60e51b815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b61327680620000fc6000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c80637b10399911610151578063b4c4197a116100c3578063d8cced2a11610087578063d8cced2a14610c02578063e571049b14610c28578063e85455d714610c30578063effb3c6e14610c56578063f2fde38b14610c5e578063f4fb86c014610c8457610274565b8063b4c4197a14610a75578063c22b82f014610aa3578063d3182bed14610bc6578063d4ee1d9014610bce578063d6c4b5b214610bd657610274565b8063954254f511610115578063954254f5146109c15780639e76a007146109e7578063a109d21414610a0d578063a43d5e9414610a2a578063a74498aa14610a50578063b4a176d314610a6d57610274565b80637b103999146109665780637f45c4c31461096e578063865cf194146109765780638da5cb5b146109935780638f1d0e1a1461099b57610274565b80634c7df18f116101ea57806361cd756e116101ae57806361cd756e146108f257806369be4784146108fa5780636ce1c4dc14610902578063725b87861461092857806379ba5097146109565780637a5f0ffd1461095e57610274565b80634c7df18f146105b35780635a0a6618146105d05780635f1b50fe1461081d578063603f51e414610825578063610c0b051461085157610274565b80631f8e26201161023c5780631f8e26201461046a5780632fe8a6ad1461050b5780633ab8857c146105275780634123ef601461054d57806349c5f32b1461057357806349d10b64146105ab57610274565b8063024c7ec71461027957806304ceaf411461029a57806311839064146102f25780631814f2d2146103185780631d3fccd51461033c575b600080fd5b6102986004803603602081101561028f57600080fd5b50351515610caa565b005b6102a2610cd0565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102de5781810151838201526020016102c6565b505050509050019250505060405180910390f35b6102a26004803603602081101561030857600080fd5b50356001600160a01b0316610cdf565b610320610e12565b604080516001600160a01b039092168252519081900360200190f35b6103206004803603606081101561035257600080fd5b61ffff8235169190810190604081016020820135600160201b81111561037757600080fd5b82018360208201111561038957600080fd5b803590602001918460208302840111600160201b831117156103aa57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103f957600080fd5b82018360208201111561040b57600080fd5b803590602001918460208302840111600160201b8311171561042c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e21945050505050565b6102a26004803603602081101561048057600080fd5b810190602081018135600160201b81111561049a57600080fd5b8201836020820111156104ac57600080fd5b803590602001918460208302840111600160201b831117156104cd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f08945050505050565b610513610f19565b604080519115158252519081900360200190f35b6105136004803603602081101561053d57600080fd5b50356001600160a01b0316610f29565b6105136004803603602081101561056357600080fd5b50356001600160a01b0316610fc0565b6105996004803603602081101561058957600080fd5b50356001600160a01b0316610fcb565b60408051918252519081900360200190f35b610298611030565b610320600480360360208110156105c957600080fd5b5035611238565b610320600480360360e08110156105e657600080fd5b61ffff8235169190810190604081016020820135600160201b81111561060b57600080fd5b82018360208201111561061d57600080fd5b803590602001918460018302840111600160201b8311171561063e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561069057600080fd5b8201836020820111156106a257600080fd5b803590602001918460018302840111600160201b831117156106c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929560ff8535169563ffffffff60208701351695919450925060608101915060400135600160201b81111561072a57600080fd5b82018360208201111561073c57600080fd5b803590602001918460208302840111600160201b8311171561075d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156107ac57600080fd5b8201836020820111156107be57600080fd5b803590602001918460208302840111600160201b831117156107df57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611294945050505050565b6102a26112d0565b6103206004803603604081101561083b57600080fd5b506001600160a01b0381351690602001356113ed565b6102a26004803603602081101561086757600080fd5b810190602081018135600160201b81111561088157600080fd5b82018360208201111561089357600080fd5b803590602001918460208302840111600160201b831117156108b457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061148d945050505050565b61032061158e565b61059961159d565b6102986004803603602081101561091857600080fd5b50356001600160a01b031661161f565b6105136004803603604081101561093e57600080fd5b506001600160a01b0381358116916020013516611685565b610298611691565b610599611748565b610320611799565b6102a26117a8565b6103206004803603602081101561098c57600080fd5b50356117f9565b610320611855565b610513600480360360208110156109b157600080fd5b50356001600160a01b0316611864565b610513600480360360208110156109d757600080fd5b50356001600160a01b0316611a6d565b610298600480360360208110156109fd57600080fd5b50356001600160a01b0316611b5c565b61032060048036036020811015610a2357600080fd5b5035611bc9565b61059960048036036020811015610a4057600080fd5b50356001600160a01b0316611bd4565b61032060048036036020811015610a6657600080fd5b5035611bdf565b610298611c3b565b61051360048036036040811015610a8b57600080fd5b506001600160a01b0381358116916020013516611c67565b61032060048036036040811015610ab957600080fd5b810190602081018135600160201b811115610ad357600080fd5b820183602082011115610ae557600080fd5b803590602001918460208302840111600160201b83111715610b0657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b5557600080fd5b820183602082011115610b6757600080fd5b803590602001918460208302840111600160201b83111715610b8857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611cdd945050505050565b610599611cff565b610320611d50565b61032060048036036040811015610bec57600080fd5b506001600160a01b038135169060200135611d5f565b61051360048036036020811015610c1857600080fd5b50356001600160a01b0316611d6b565b610599611dd0565b61051360048036036020811015610c4657600080fd5b50356001600160a01b0316611dda565b6102a2611e3f565b61029860048036036020811015610c7457600080fd5b50356001600160a01b0316611e90565b6102a260048036036020811015610c9a57600080fd5b50356001600160a01b0316611f0e565b610cb2611f19565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060610cda611e3f565b905090565b6060610cf8600080516020613221833981519152611f6e565b6001600160a01b031663f4fb86c0836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d8157600080fd5b8101908080516040519392919084600160201b821115610da057600080fd5b908301906020820185811115610db557600080fd5b82518660208202830111600160201b82111715610dd157600080fd5b82525081516020918201928201910280838360005b83811015610dfe578181015183820152602001610de6565b505050509050016040525050509050919050565b6004546001600160a01b031681565b600081518351148015610e35575060018351115b15610efd576060610e4584611fba565b905060005b8151811015610efa576000828281518110610e6157fe5b602002602001015190506000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea657600080fd5b505afa158015610eba573d6000803e3d6000fd5b505050506040513d6020811015610ed057600080fd5b50519050610ee081898989612250565b15610ef057509250610f01915050565b5050600101610e4a565b50505b5060005b9392505050565b6060610f138261148d565b92915050565b600354600160a01b900460ff1681565b6000610f42600080516020613221833981519152611f6e565b6001600160a01b0316633ab8857c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b505192915050565b6000610f1382611d6b565b6000610fe4600080516020613221833981519152611f6e565b6001600160a01b031663a43d5e94836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b6000546001600160a01b03163314806110535750600354600160a01b900460ff16155b611098576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b60006110b66f436f6e7472616374526567697374727960801b611f6e565b6002549091506001600160a01b038083169116148015906110df57506001600160a01b03811615155b611127576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561118957600080fd5b505afa15801561119d573d6000803e3d6000fd5b505050506040513d60208110156111b357600080fd5b50516001600160a01b03161415611208576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b6000611251600080516020613221833981519152611f6e565b6001600160a01b031663a109d214836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f8e57600080fd5b60006112a588888888888888612362565b600480546001600160a01b0319166001600160a01b0392831617908190551698975050505050505050565b60606112e9600080516020613221833981519152611f6e565b6001600160a01b0316635f1b50fe6040518163ffffffff1660e01b815260040160006040518083038186803b15801561132157600080fd5b505afa158015611335573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561135e57600080fd5b8101908080516040519392919084600160201b82111561137d57600080fd5b90830190602082018581111561139257600080fd5b82518660208202830111600160201b821117156113ae57600080fd5b82525081516020918201928201910280838360005b838110156113db5781810151838201526020016113c3565b50505050905001604052505050905090565b6000611406600080516020613221833981519152611f6e565b6001600160a01b031663d6c4b5b284846040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b15801561145a57600080fd5b505afa15801561146e573d6000803e3d6000fd5b505050506040513d602081101561148457600080fd5b50519392505050565b606080825167ffffffffffffffff811180156114a857600080fd5b506040519080825280602002602001820160405280156114d2578160200160208202803683370190505b50905060005b8351811015611587578381815181106114ed57fe5b60200260200101516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561152d57600080fd5b505afa158015611541573d6000803e3d6000fd5b505050506040513d602081101561155757600080fd5b5051825183908390811061156757fe5b6001600160a01b03909216602092830291909101909101526001016114d8565b5092915050565b6003546001600160a01b031681565b60006115b6600080516020613221833981519152611f6e565b6001600160a01b03166369be47846040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b5051905090565b611627611f19565b61163081611a6d565b611679576040805162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fa1a7a72b22a92a22a960591b604482015290519081900360640190fd5b611682816128b7565b50565b6000610f018383611c67565b6001546001600160a01b031633146116e4576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000611761600080516020613221833981519152611f6e565b6001600160a01b0316637a5f0ffd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ee57600080fd5b6002546001600160a01b031681565b60606117c1600080516020613221833981519152611f6e565b6001600160a01b0316637f45c4c36040518163ffffffff1660e01b815260040160006040518083038186803b15801561132157600080fd5b6000611812600080516020613221833981519152611f6e565b6001600160a01b031663865cf194836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f8e57600080fd5b6000546001600160a01b031681565b600080826001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b1580156118a057600080fd5b505afa1580156118b4573d6000803e3d6000fd5b505050506040513d60208110156118ca57600080fd5b505161ffff16905060608167ffffffffffffffff811180156118eb57600080fd5b50604051908082528060200260200182016040528015611915578160200160208202803683370190505b50905060608267ffffffffffffffff8111801561193157600080fd5b5060405190808252806020026020018201604052801561195b578160200160208202803683370190505b50905060005b83811015611a42576000866001600160a01b03166319b64015836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156119af57600080fd5b505afa1580156119c3573d6000803e3d6000fd5b505050506040513d60208110156119d957600080fd5b5051845190915081908590849081106119ee57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611a188782612a72565b838381518110611a2457fe5b63ffffffff9092166020928302919091019091015250600101611961565b506000611a59611a528786612af9565b8484610e21565b6001600160a01b0316141595945050505050565b6000816001600160a01b0316826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab257600080fd5b505afa158015611ac6573d6000803e3d6000fd5b505050506040513d6020811015611adc57600080fd5b505160408051638da5cb5b60e01b815290516001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b158015611b2057600080fd5b505afa158015611b34573d6000803e3d6000fd5b505050506040513d6020811015611b4a57600080fd5b50516001600160a01b03161492915050565b6000546001600160a01b0316331480611b7b5750611b7981611a6d565b155b611bc0576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b61168281612c1e565b6000610f1382611238565b6000610f1382610fcb565b6000611bf8600080516020613221833981519152611f6e565b6001600160a01b031663a74498aa836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f8e57600080fd5b611c43611f19565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b6000611c80600080516020613221833981519152611f6e565b6001600160a01b031663725b878684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561145a57600080fd5b6000610f016001845111611cf2576000611cf5565b60015b60ff168484610e21565b6000611d18600080516020613221833981519152611f6e565b6001600160a01b031663e571049b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ee57600080fd5b6001546001600160a01b031681565b6000610f0183836113ed565b6000611d84600080516020613221833981519152611f6e565b6001600160a01b0316634123ef60836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b6000610cda611cff565b6000611df3600080516020613221833981519152611f6e565b6001600160a01b031663e85455d7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b6060611e58600080516020613221833981519152611f6e565b6001600160a01b03166304ceaf416040518163ffffffff1660e01b815260040160006040518083038186803b15801561132157600080fd5b611e98611f19565b6000546001600160a01b0382811691161415611eec576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6060610f1382610cdf565b6000546001600160a01b03163314611f6c576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b158015610f8e57600080fd5b60606000611fd5600080516020613221833981519152611f6e565b90506000816001600160a01b031663a43d5e9485600081518110611ff557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561203a57600080fd5b505afa15801561204e573d6000803e3d6000fd5b505050506040513d602081101561206457600080fd5b50519050600060015b855181101561211e576000846001600160a01b031663a43d5e9488848151811061209357fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156120d857600080fd5b505afa1580156120ec573d6000803e3d6000fd5b505050506040513d602081101561210257600080fd5b5051905080841115612115578093508192505b5060010161206d565b50826001600160a01b031663f4fb86c086838151811061213a57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561217f57600080fd5b505afa158015612193573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156121bc57600080fd5b8101908080516040519392919084600160201b8211156121db57600080fd5b9083019060208201858111156121f057600080fd5b82518660208202830111600160201b8211171561220c57600080fd5b82525081516020918201928201910280838360005b83811015612239578181015183820152602001612221565b505050509050016040525050509350505050919050565b600080856001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b15801561228c57600080fd5b505afa1580156122a0573d6000803e3d6000fd5b505050506040513d60208110156122b657600080fd5b505161ffff1690506122c88682612af9565b61ffff168561ffff16146122e057600091505061235a565b808451146122f257600091505061235a565b60005b84518110156123535761231b8786838151811061230e57fe5b6020026020010151612a72565b63ffffffff1684828151811061232d57fe5b602002602001015163ffffffff161461234b5760009250505061235a565b6001016122f5565b5060019150505b949350505050565b815181516000919081146123b4576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524553455256455360601b604482015290519081900360640190fd5b60006123c18a8686610e21565b6001600160a01b031614612411576040805162461bcd60e51b81526020600482015260126024820152714552525f414c52454144595f45584953545360701b604482015290519081900360640190fd5b600061242f6f436f6e766572746572466163746f727960801b611f6e565b90506000816001600160a01b0316632e9ab7b38c8c8c8c6040518563ffffffff1660e01b8152600401808561ffff16815260200180602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b838110156124a9578181015183820152602001612491565b50505050905090810190601f1680156124d65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156125095781810151838201526020016124f1565b50505050905090810190601f1680156125365780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561255957600080fd5b505af115801561256d573d6000803e3d6000fd5b505050506040513d602081101561258357600080fd5b505160025460408051630afb25b560e11b815261ffff8f1660048201526001600160a01b038085166024830152928316604482015263ffffffff8b1660648201529051929350600092918516916315f64b6a9160848082019260209290919082900301818787803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b505050506040513d602081101561262157600080fd5b5051604080516379ba509760e01b815290519192506001600160a01b038416916379ba50979160048082019260009290919082900301818387803b15801561266857600080fd5b505af115801561267c573d6000803e3d6000fd5b50505050806001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126bb57600080fd5b505af11580156126cf573d6000803e3d6000fd5b5050505060005b8481101561278557816001600160a01b0316636a49d2c48983815181106126f957fe5b602002602001015189848151811061270d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b031681526020018263ffffffff16815260200192505050600060405180830381600087803b15801561276157600080fd5b505af1158015612775573d6000803e3d6000fd5b5050600190920191506126d69050565b50816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156127d557600080fd5b505af11580156127e9573d6000803e3d6000fd5b50505050806001600160a01b031663cdc91c696040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b15801561288757600080fd5b505af115801561289b573d6000803e3d6000fd5b505050506128a8816128b7565b9b9a5050505050505050505050565b60006128d0600080516020613221833981519152611f6e565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561290d57600080fd5b505afa158015612921573d6000803e3d6000fd5b505050506040513d602081101561293757600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b15801561297f57600080fd5b505afa158015612993573d6000803e3d6000fd5b505050506040513d60208110156129a957600080fd5b505161ffff1690506129bb8383612dd2565b60018111156129d3576129ce8383612ea5565b6129de565b6129de838384612f44565b60005b81811015612a6b57612a6384866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612a3157600080fd5b505afa158015612a45573d6000803e3d6000fd5b505050506040513d6020811015612a5b57600080fd5b505185612f44565b6001016129e1565b5050505050565b600080836001600160a01b0316630e53aae9846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060a06040518083038186803b158015612ac257600080fd5b505afa158015612ad6573d6000803e3d6000fd5b505050506040513d60a0811015612aec57600080fd5b5060200151949350505050565b60408051600481526024810182526020810180516001600160e01b0316633e8ff43f60e01b1781529151815160009384936060936001600160a01b03891693919290918291908083835b60208310612b625780518252601f199092019160209182019101612b43565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612bc2576040519150601f19603f3d011682016040523d82523d6000602084013e612bc7565b606091505b5091509150818015612bda575080516020145b15612c0057808060200190516020811015612bf457600080fd5b50519250610f13915050565b60018411612c0f576000612c12565b60015b60ff1695945050505050565b6000612c37600080516020613221833981519152611f6e565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c7457600080fd5b505afa158015612c88573d6000803e3d6000fd5b505050506040513d6020811015612c9e57600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b158015612ce657600080fd5b505afa158015612cfa573d6000803e3d6000fd5b505050506040513d6020811015612d1057600080fd5b505161ffff169050612d228383612ff9565b6001811115612d3a57612d3583836130cc565b612d45565b612d4583838461316b565b60005b81811015612a6b57612dca84866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d9857600080fd5b505afa158015612dac573d6000803e3d6000fd5b505050506040513d6020811015612dc257600080fd5b50518561316b565b600101612d48565b816001600160a01b0316638de6c3eb826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612e2157600080fd5b505af1158015612e35573d6000803e3d6000fd5b50506040516001600160a01b03841692507fc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd9150600090a26040516001600160a01b038216907f88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab90600090a25050565b816001600160a01b031663ee6a934c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506040516001600160a01b03841692507fb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d899150600090a25050565b826001600160a01b03166336900c1183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b158015612fa457600080fd5b505af1158015612fb8573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507ff2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a590600090a3505050565b816001600160a01b031663ceb9838c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561304857600080fd5b505af115801561305c573d6000803e3d6000fd5b50506040516001600160a01b03841692507fbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d9150600090a26040516001600160a01b038216907f2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf90600090a25050565b816001600160a01b031663ae22107f826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561311b57600080fd5b505af115801561312f573d6000803e3d6000fd5b50506040516001600160a01b03841692507f59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee609150600090a25050565b826001600160a01b031663fba8f03183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b1580156131cb57600080fd5b505af11580156131df573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced4390600090a350505056fe42616e636f72436f6e7665727465725265676973747279446174610000000000a2646970667358221220f18e7b2a58ad0e4b8a03736e0f6ae0e4277fb1fb6282c5f4f8b7824083465cbd64736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102745760003560e01c80637b10399911610151578063b4c4197a116100c3578063d8cced2a11610087578063d8cced2a14610c02578063e571049b14610c28578063e85455d714610c30578063effb3c6e14610c56578063f2fde38b14610c5e578063f4fb86c014610c8457610274565b8063b4c4197a14610a75578063c22b82f014610aa3578063d3182bed14610bc6578063d4ee1d9014610bce578063d6c4b5b214610bd657610274565b8063954254f511610115578063954254f5146109c15780639e76a007146109e7578063a109d21414610a0d578063a43d5e9414610a2a578063a74498aa14610a50578063b4a176d314610a6d57610274565b80637b103999146109665780637f45c4c31461096e578063865cf194146109765780638da5cb5b146109935780638f1d0e1a1461099b57610274565b80634c7df18f116101ea57806361cd756e116101ae57806361cd756e146108f257806369be4784146108fa5780636ce1c4dc14610902578063725b87861461092857806379ba5097146109565780637a5f0ffd1461095e57610274565b80634c7df18f146105b35780635a0a6618146105d05780635f1b50fe1461081d578063603f51e414610825578063610c0b051461085157610274565b80631f8e26201161023c5780631f8e26201461046a5780632fe8a6ad1461050b5780633ab8857c146105275780634123ef601461054d57806349c5f32b1461057357806349d10b64146105ab57610274565b8063024c7ec71461027957806304ceaf411461029a57806311839064146102f25780631814f2d2146103185780631d3fccd51461033c575b600080fd5b6102986004803603602081101561028f57600080fd5b50351515610caa565b005b6102a2610cd0565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102de5781810151838201526020016102c6565b505050509050019250505060405180910390f35b6102a26004803603602081101561030857600080fd5b50356001600160a01b0316610cdf565b610320610e12565b604080516001600160a01b039092168252519081900360200190f35b6103206004803603606081101561035257600080fd5b61ffff8235169190810190604081016020820135600160201b81111561037757600080fd5b82018360208201111561038957600080fd5b803590602001918460208302840111600160201b831117156103aa57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103f957600080fd5b82018360208201111561040b57600080fd5b803590602001918460208302840111600160201b8311171561042c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e21945050505050565b6102a26004803603602081101561048057600080fd5b810190602081018135600160201b81111561049a57600080fd5b8201836020820111156104ac57600080fd5b803590602001918460208302840111600160201b831117156104cd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f08945050505050565b610513610f19565b604080519115158252519081900360200190f35b6105136004803603602081101561053d57600080fd5b50356001600160a01b0316610f29565b6105136004803603602081101561056357600080fd5b50356001600160a01b0316610fc0565b6105996004803603602081101561058957600080fd5b50356001600160a01b0316610fcb565b60408051918252519081900360200190f35b610298611030565b610320600480360360208110156105c957600080fd5b5035611238565b610320600480360360e08110156105e657600080fd5b61ffff8235169190810190604081016020820135600160201b81111561060b57600080fd5b82018360208201111561061d57600080fd5b803590602001918460018302840111600160201b8311171561063e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561069057600080fd5b8201836020820111156106a257600080fd5b803590602001918460018302840111600160201b831117156106c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929560ff8535169563ffffffff60208701351695919450925060608101915060400135600160201b81111561072a57600080fd5b82018360208201111561073c57600080fd5b803590602001918460208302840111600160201b8311171561075d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156107ac57600080fd5b8201836020820111156107be57600080fd5b803590602001918460208302840111600160201b831117156107df57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611294945050505050565b6102a26112d0565b6103206004803603604081101561083b57600080fd5b506001600160a01b0381351690602001356113ed565b6102a26004803603602081101561086757600080fd5b810190602081018135600160201b81111561088157600080fd5b82018360208201111561089357600080fd5b803590602001918460208302840111600160201b831117156108b457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061148d945050505050565b61032061158e565b61059961159d565b6102986004803603602081101561091857600080fd5b50356001600160a01b031661161f565b6105136004803603604081101561093e57600080fd5b506001600160a01b0381358116916020013516611685565b610298611691565b610599611748565b610320611799565b6102a26117a8565b6103206004803603602081101561098c57600080fd5b50356117f9565b610320611855565b610513600480360360208110156109b157600080fd5b50356001600160a01b0316611864565b610513600480360360208110156109d757600080fd5b50356001600160a01b0316611a6d565b610298600480360360208110156109fd57600080fd5b50356001600160a01b0316611b5c565b61032060048036036020811015610a2357600080fd5b5035611bc9565b61059960048036036020811015610a4057600080fd5b50356001600160a01b0316611bd4565b61032060048036036020811015610a6657600080fd5b5035611bdf565b610298611c3b565b61051360048036036040811015610a8b57600080fd5b506001600160a01b0381358116916020013516611c67565b61032060048036036040811015610ab957600080fd5b810190602081018135600160201b811115610ad357600080fd5b820183602082011115610ae557600080fd5b803590602001918460208302840111600160201b83111715610b0657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b5557600080fd5b820183602082011115610b6757600080fd5b803590602001918460208302840111600160201b83111715610b8857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611cdd945050505050565b610599611cff565b610320611d50565b61032060048036036040811015610bec57600080fd5b506001600160a01b038135169060200135611d5f565b61051360048036036020811015610c1857600080fd5b50356001600160a01b0316611d6b565b610599611dd0565b61051360048036036020811015610c4657600080fd5b50356001600160a01b0316611dda565b6102a2611e3f565b61029860048036036020811015610c7457600080fd5b50356001600160a01b0316611e90565b6102a260048036036020811015610c9a57600080fd5b50356001600160a01b0316611f0e565b610cb2611f19565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060610cda611e3f565b905090565b6060610cf8600080516020613221833981519152611f6e565b6001600160a01b031663f4fb86c0836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d8157600080fd5b8101908080516040519392919084600160201b821115610da057600080fd5b908301906020820185811115610db557600080fd5b82518660208202830111600160201b82111715610dd157600080fd5b82525081516020918201928201910280838360005b83811015610dfe578181015183820152602001610de6565b505050509050016040525050509050919050565b6004546001600160a01b031681565b600081518351148015610e35575060018351115b15610efd576060610e4584611fba565b905060005b8151811015610efa576000828281518110610e6157fe5b602002602001015190506000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea657600080fd5b505afa158015610eba573d6000803e3d6000fd5b505050506040513d6020811015610ed057600080fd5b50519050610ee081898989612250565b15610ef057509250610f01915050565b5050600101610e4a565b50505b5060005b9392505050565b6060610f138261148d565b92915050565b600354600160a01b900460ff1681565b6000610f42600080516020613221833981519152611f6e565b6001600160a01b0316633ab8857c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b505192915050565b6000610f1382611d6b565b6000610fe4600080516020613221833981519152611f6e565b6001600160a01b031663a43d5e94836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b6000546001600160a01b03163314806110535750600354600160a01b900460ff16155b611098576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b60006110b66f436f6e7472616374526567697374727960801b611f6e565b6002549091506001600160a01b038083169116148015906110df57506001600160a01b03811615155b611127576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561118957600080fd5b505afa15801561119d573d6000803e3d6000fd5b505050506040513d60208110156111b357600080fd5b50516001600160a01b03161415611208576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b6000611251600080516020613221833981519152611f6e565b6001600160a01b031663a109d214836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f8e57600080fd5b60006112a588888888888888612362565b600480546001600160a01b0319166001600160a01b0392831617908190551698975050505050505050565b60606112e9600080516020613221833981519152611f6e565b6001600160a01b0316635f1b50fe6040518163ffffffff1660e01b815260040160006040518083038186803b15801561132157600080fd5b505afa158015611335573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561135e57600080fd5b8101908080516040519392919084600160201b82111561137d57600080fd5b90830190602082018581111561139257600080fd5b82518660208202830111600160201b821117156113ae57600080fd5b82525081516020918201928201910280838360005b838110156113db5781810151838201526020016113c3565b50505050905001604052505050905090565b6000611406600080516020613221833981519152611f6e565b6001600160a01b031663d6c4b5b284846040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b15801561145a57600080fd5b505afa15801561146e573d6000803e3d6000fd5b505050506040513d602081101561148457600080fd5b50519392505050565b606080825167ffffffffffffffff811180156114a857600080fd5b506040519080825280602002602001820160405280156114d2578160200160208202803683370190505b50905060005b8351811015611587578381815181106114ed57fe5b60200260200101516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561152d57600080fd5b505afa158015611541573d6000803e3d6000fd5b505050506040513d602081101561155757600080fd5b5051825183908390811061156757fe5b6001600160a01b03909216602092830291909101909101526001016114d8565b5092915050565b6003546001600160a01b031681565b60006115b6600080516020613221833981519152611f6e565b6001600160a01b03166369be47846040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b5051905090565b611627611f19565b61163081611a6d565b611679576040805162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fa1a7a72b22a92a22a960591b604482015290519081900360640190fd5b611682816128b7565b50565b6000610f018383611c67565b6001546001600160a01b031633146116e4576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000611761600080516020613221833981519152611f6e565b6001600160a01b0316637a5f0ffd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ee57600080fd5b6002546001600160a01b031681565b60606117c1600080516020613221833981519152611f6e565b6001600160a01b0316637f45c4c36040518163ffffffff1660e01b815260040160006040518083038186803b15801561132157600080fd5b6000611812600080516020613221833981519152611f6e565b6001600160a01b031663865cf194836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f8e57600080fd5b6000546001600160a01b031681565b600080826001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b1580156118a057600080fd5b505afa1580156118b4573d6000803e3d6000fd5b505050506040513d60208110156118ca57600080fd5b505161ffff16905060608167ffffffffffffffff811180156118eb57600080fd5b50604051908082528060200260200182016040528015611915578160200160208202803683370190505b50905060608267ffffffffffffffff8111801561193157600080fd5b5060405190808252806020026020018201604052801561195b578160200160208202803683370190505b50905060005b83811015611a42576000866001600160a01b03166319b64015836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156119af57600080fd5b505afa1580156119c3573d6000803e3d6000fd5b505050506040513d60208110156119d957600080fd5b5051845190915081908590849081106119ee57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611a188782612a72565b838381518110611a2457fe5b63ffffffff9092166020928302919091019091015250600101611961565b506000611a59611a528786612af9565b8484610e21565b6001600160a01b0316141595945050505050565b6000816001600160a01b0316826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab257600080fd5b505afa158015611ac6573d6000803e3d6000fd5b505050506040513d6020811015611adc57600080fd5b505160408051638da5cb5b60e01b815290516001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b158015611b2057600080fd5b505afa158015611b34573d6000803e3d6000fd5b505050506040513d6020811015611b4a57600080fd5b50516001600160a01b03161492915050565b6000546001600160a01b0316331480611b7b5750611b7981611a6d565b155b611bc0576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b61168281612c1e565b6000610f1382611238565b6000610f1382610fcb565b6000611bf8600080516020613221833981519152611f6e565b6001600160a01b031663a74498aa836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f8e57600080fd5b611c43611f19565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b6000611c80600080516020613221833981519152611f6e565b6001600160a01b031663725b878684846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561145a57600080fd5b6000610f016001845111611cf2576000611cf5565b60015b60ff168484610e21565b6000611d18600080516020613221833981519152611f6e565b6001600160a01b031663e571049b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ee57600080fd5b6001546001600160a01b031681565b6000610f0183836113ed565b6000611d84600080516020613221833981519152611f6e565b6001600160a01b0316634123ef60836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b6000610cda611cff565b6000611df3600080516020613221833981519152611f6e565b6001600160a01b031663e85455d7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f8e57600080fd5b6060611e58600080516020613221833981519152611f6e565b6001600160a01b03166304ceaf416040518163ffffffff1660e01b815260040160006040518083038186803b15801561132157600080fd5b611e98611f19565b6000546001600160a01b0382811691161415611eec576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6060610f1382610cdf565b6000546001600160a01b03163314611f6c576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b158015610f8e57600080fd5b60606000611fd5600080516020613221833981519152611f6e565b90506000816001600160a01b031663a43d5e9485600081518110611ff557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561203a57600080fd5b505afa15801561204e573d6000803e3d6000fd5b505050506040513d602081101561206457600080fd5b50519050600060015b855181101561211e576000846001600160a01b031663a43d5e9488848151811061209357fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156120d857600080fd5b505afa1580156120ec573d6000803e3d6000fd5b505050506040513d602081101561210257600080fd5b5051905080841115612115578093508192505b5060010161206d565b50826001600160a01b031663f4fb86c086838151811061213a57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561217f57600080fd5b505afa158015612193573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156121bc57600080fd5b8101908080516040519392919084600160201b8211156121db57600080fd5b9083019060208201858111156121f057600080fd5b82518660208202830111600160201b8211171561220c57600080fd5b82525081516020918201928201910280838360005b83811015612239578181015183820152602001612221565b505050509050016040525050509350505050919050565b600080856001600160a01b03166371f52bf36040518163ffffffff1660e01b815260040160206040518083038186803b15801561228c57600080fd5b505afa1580156122a0573d6000803e3d6000fd5b505050506040513d60208110156122b657600080fd5b505161ffff1690506122c88682612af9565b61ffff168561ffff16146122e057600091505061235a565b808451146122f257600091505061235a565b60005b84518110156123535761231b8786838151811061230e57fe5b6020026020010151612a72565b63ffffffff1684828151811061232d57fe5b602002602001015163ffffffff161461234b5760009250505061235a565b6001016122f5565b5060019150505b949350505050565b815181516000919081146123b4576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524553455256455360601b604482015290519081900360640190fd5b60006123c18a8686610e21565b6001600160a01b031614612411576040805162461bcd60e51b81526020600482015260126024820152714552525f414c52454144595f45584953545360701b604482015290519081900360640190fd5b600061242f6f436f6e766572746572466163746f727960801b611f6e565b90506000816001600160a01b0316632e9ab7b38c8c8c8c6040518563ffffffff1660e01b8152600401808561ffff16815260200180602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b838110156124a9578181015183820152602001612491565b50505050905090810190601f1680156124d65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156125095781810151838201526020016124f1565b50505050905090810190601f1680156125365780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561255957600080fd5b505af115801561256d573d6000803e3d6000fd5b505050506040513d602081101561258357600080fd5b505160025460408051630afb25b560e11b815261ffff8f1660048201526001600160a01b038085166024830152928316604482015263ffffffff8b1660648201529051929350600092918516916315f64b6a9160848082019260209290919082900301818787803b1580156125f757600080fd5b505af115801561260b573d6000803e3d6000fd5b505050506040513d602081101561262157600080fd5b5051604080516379ba509760e01b815290519192506001600160a01b038416916379ba50979160048082019260009290919082900301818387803b15801561266857600080fd5b505af115801561267c573d6000803e3d6000fd5b50505050806001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126bb57600080fd5b505af11580156126cf573d6000803e3d6000fd5b5050505060005b8481101561278557816001600160a01b0316636a49d2c48983815181106126f957fe5b602002602001015189848151811061270d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b031681526020018263ffffffff16815260200192505050600060405180830381600087803b15801561276157600080fd5b505af1158015612775573d6000803e3d6000fd5b5050600190920191506126d69050565b50816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156127d557600080fd5b505af11580156127e9573d6000803e3d6000fd5b50505050806001600160a01b031663cdc91c696040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b15801561288757600080fd5b505af115801561289b573d6000803e3d6000fd5b505050506128a8816128b7565b9b9a5050505050505050505050565b60006128d0600080516020613221833981519152611f6e565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561290d57600080fd5b505afa158015612921573d6000803e3d6000fd5b505050506040513d602081101561293757600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b15801561297f57600080fd5b505afa158015612993573d6000803e3d6000fd5b505050506040513d60208110156129a957600080fd5b505161ffff1690506129bb8383612dd2565b60018111156129d3576129ce8383612ea5565b6129de565b6129de838384612f44565b60005b81811015612a6b57612a6384866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612a3157600080fd5b505afa158015612a45573d6000803e3d6000fd5b505050506040513d6020811015612a5b57600080fd5b505185612f44565b6001016129e1565b5050505050565b600080836001600160a01b0316630e53aae9846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060a06040518083038186803b158015612ac257600080fd5b505afa158015612ad6573d6000803e3d6000fd5b505050506040513d60a0811015612aec57600080fd5b5060200151949350505050565b60408051600481526024810182526020810180516001600160e01b0316633e8ff43f60e01b1781529151815160009384936060936001600160a01b03891693919290918291908083835b60208310612b625780518252601f199092019160209182019101612b43565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612bc2576040519150601f19603f3d011682016040523d82523d6000602084013e612bc7565b606091505b5091509150818015612bda575080516020145b15612c0057808060200190516020811015612bf457600080fd5b50519250610f13915050565b60018411612c0f576000612c12565b60015b60ff1695945050505050565b6000612c37600080516020613221833981519152611f6e565b90506000826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c7457600080fd5b505afa158015612c88573d6000803e3d6000fd5b505050506040513d6020811015612c9e57600080fd5b5051604080516371f52bf360e01b815290519192506000916001600160a01b038616916371f52bf3916004808301926020929190829003018186803b158015612ce657600080fd5b505afa158015612cfa573d6000803e3d6000fd5b505050506040513d6020811015612d1057600080fd5b505161ffff169050612d228383612ff9565b6001811115612d3a57612d3583836130cc565b612d45565b612d4583838461316b565b60005b81811015612a6b57612dca84866001600160a01b03166319b64015846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612d9857600080fd5b505afa158015612dac573d6000803e3d6000fd5b505050506040513d6020811015612dc257600080fd5b50518561316b565b600101612d48565b816001600160a01b0316638de6c3eb826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612e2157600080fd5b505af1158015612e35573d6000803e3d6000fd5b50506040516001600160a01b03841692507fc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd9150600090a26040516001600160a01b038216907f88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab90600090a25050565b816001600160a01b031663ee6a934c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506040516001600160a01b03841692507fb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d899150600090a25050565b826001600160a01b03166336900c1183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b158015612fa457600080fd5b505af1158015612fb8573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507ff2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a590600090a3505050565b816001600160a01b031663ceb9838c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561304857600080fd5b505af115801561305c573d6000803e3d6000fd5b50506040516001600160a01b03841692507fbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d9150600090a26040516001600160a01b038216907f2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf90600090a25050565b816001600160a01b031663ae22107f826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561311b57600080fd5b505af115801561312f573d6000803e3d6000fd5b50506040516001600160a01b03841692507f59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee609150600090a25050565b826001600160a01b031663fba8f03183836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b1580156131cb57600080fd5b505af11580156131df573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced4390600090a350505056fe42616e636f72436f6e7665727465725265676973747279446174610000000000a2646970667358221220f18e7b2a58ad0e4b8a03736e0f6ae0e4277fb1fb6282c5f4f8b7824083465cbd64736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "195:673:40:-:0;;;294:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;294:84:40;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;294:84:40;;;594:23:64;294:84:40;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;195:673:40;;-1:-1:-1;195:673:40;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;195:673:40:-;;;;;;;",
"deployedSourceMap": "195:673:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;23430:103:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11304:249;;;;;;;;;;;;;;;;-1:-1:-1;11304:249:10;-1:-1:-1;;;;;11304:249:10;;:::i;253:34:40:-;;;:::i;:::-;;;;-1:-1:-1;;;;;253:34:40;;;;;;;;;;;;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15233:1026:10;;;;;;;;-1:-1:-1;15233:1026:10;;-1:-1:-1;;;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15233:1026:10;;-1:-1:-1;15233:1026:10;;-1:-1:-1;;;;;15233:1026:10:i;25232:171::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25232:171:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25232:171:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25232:171:10;;-1:-1:-1;25232:171:10;;-1:-1:-1;;;;;25232:171:10:i;1333:38:56:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;10347:191:10;;;;;;;;;;;;;;;;-1:-1:-1;10347:191:10;-1:-1:-1;;;;;10347:191:10;;:::i;23835:107::-;;;;;;;;;;;;;;;;-1:-1:-1;23835:107:10;-1:-1:-1;;;;;23835:107:10;;:::i;10799:248::-;;;;;;;;;;;;;;;;-1:-1:-1;10799:248:10;-1:-1:-1;;;;;10799:248:10;;:::i;:::-;;;;;;;;;;;;;;;;2300:925:56;;;:::i;7106:189:10:-;;;;;;;;;;;;;;;;-1:-1:-1;7106:189:10;;:::i;384:482:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;384:482:40;;;;;;;;-1:-1:-1;384:482:40;;-1:-1:-1;;;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;384:482:40;;;;;;;;;;;;;;;;-1:-1:-1;384:482:40;-1:-1:-1;384:482:40;;;;-1:-1:-1;384:482:40;;;-1:-1:-1;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;384:482:40;;;;;;;;-1:-1:-1;384:482:40;;-1:-1:-1;;;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;384:482:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;384:482:40;;-1:-1:-1;384:482:40;;-1:-1:-1;;;;;384:482:40:i;9568:187:10:-;;;:::i;11805:271::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11805:271:10;;;;;;;;:::i;12939:362::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12939:362:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12939:362:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12939:362:10;;-1:-1:-1;12939:362:10;;-1:-1:-1;;;;;12939:362:10:i;1243:37:56:-;;;:::i;9235:186:10:-;;;:::i;5648:::-;;;;;;;;;;;;;;;;-1:-1:-1;5648:186:10;-1:-1:-1;;;;;5648:186:10;;:::i;24939:189::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24939:189:10;;;;;;;;;;:::i;1422:217:57:-;;;:::i;7818:180:10:-;;;:::i;1154:33:56:-;;;:::i;8139:181:10:-;;;:::i;9933:200::-;;;;;;;;;;;;;;;;-1:-1:-1;9933:200:10;;:::i;219:29:57:-;;;:::i;13976:891:10:-;;;;;;;;;;;;;;;;-1:-1:-1;13976:891:10;-1:-1:-1;;;;;13976:891:10;;:::i;13503:199::-;;;;;;;;;;;;;;;;-1:-1:-1;13503:199:10;-1:-1:-1;;;;;13503:199:10;;:::i;6123:202::-;;;;;;;;;;;;;;;;-1:-1:-1;6123:202:10;-1:-1:-1;;;;;6123:202:10;;:::i;23624:121::-;;;;;;;;;;;;;;;;-1:-1:-1;23624:121:10;;:::i;24054:180::-;;;;;;;;;;;;;;;;-1:-1:-1;24054:180:10;-1:-1:-1;;;;;24054:180:10;;:::i;8492:199::-;;;;;;;;;;;;;;;;-1:-1:-1;8492:199:10;;:::i;3304:137:56:-;;;:::i;12391:257:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12391:257:10;;;;;;;;;;:::i;25509:268::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25509:268:10;;;;;;;;-1:-1:-1;25509:268:10;;-1:-1:-1;;;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25509:268:10;;-1:-1:-1;25509:268:10;;-1:-1:-1;;;;;25509:268:10:i;6464:170::-;;;:::i;255:23:57:-;;;:::i;24630:203:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24630:203:10;;;;;;;;:::i;7498:175::-;;;;;;;;;;;;;;;;-1:-1:-1;7498:175:10;-1:-1:-1;;;;;7498:175:10;;:::i;23236:102::-;;;:::i;8899:185::-;;;;;;;;;;;;;;;;-1:-1:-1;8899:185:10;-1:-1:-1;;;;;8899:185:10;;:::i;6769:171::-;;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;24342:181:10:-;;;;;;;;;;;;;;;;-1:-1:-1;24342:181:10;-1:-1:-1;;;;;24342:181:10;;:::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;23430:103:10:-;23477:16;23513:12;:10;:12::i;:::-;23506:19;;23430:103;:::o;11304:249::-;11401:16;11460:34;-1:-1:-1;;;;;;;;;;;11460:9:10;:34::i;:::-;-1:-1:-1;;;;;11437:89:10;;11527:17;11437:108;;;;;;;;;;;;;-1:-1:-1;;;;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11437:108:10;;;;;;;;;;;;-1:-1:-1;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11430:115;;11304:249;;;:::o;253:34:40:-;;;-1:-1:-1;;;;;253:34:40;;:::o;15233:1026:10:-;15372:16;15508:15;:22;15483:14;:21;:47;:76;;;;;15558:1;15534:14;:21;:25;15483:76;15479:734;;;15651:40;15694:44;15723:14;15694:28;:44::i;:::-;15651:87;;15825:9;15820:382;15844:23;:30;15840:1;:34;15820:382;;;15900:23;15943;15967:1;15943:26;;;;;;;;;;;;;;15900:70;;15989:20;16031:6;-1:-1:-1;;;;;16031:12:10;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16031:14:10;;-1:-1:-1;16070:80:10;16031:14;16111:5;16118:14;16134:15;16070:29;:80::i;:::-;16066:120;;;-1:-1:-1;16180:6:10;-1:-1:-1;16173:13:10;;-1:-1:-1;;16173:13:10;16066:120;-1:-1:-1;;15876:3:10;;15820:382;;;;15479:734;;-1:-1:-1;16249:1:10;15233:1026;;;;;;:::o;25232:171::-;25320:19;25359:36;25382:12;25359:22;:36::i;:::-;25352:43;25232:171;-1:-1:-1;;25232:171:10:o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;10347:191:10:-;10421:4;10468:34;-1:-1:-1;;;;;;;;;;;10468:9:10;:34::i;:::-;-1:-1:-1;;;;;10445:77:10;;10523:6;10445:85;;;;;;;;;;;;;-1:-1:-1;;;;;10445:85:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:85:10;;10347:191;-1:-1:-1;;10347:191:10:o;23835:107::-;23894:4;23918:16;23927:6;23918:8;:16::i;10799:248::-;10900:7;10950:34;-1:-1:-1;;;;;;;;;;;10950:9:10;:34::i;:::-;-1:-1:-1;;;;;10927:93:10;;11021:17;10927:112;;;;;;;;;;;;;-1:-1:-1;;;;;10927:112:10;;;;;;;;;;;;;;;;;;;;;;;;;;2300:925:56;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;7106:189:10:-;7171:16;7230:34;-1:-1:-1;;;;;;;;;;;7230:9:10;:34::i;:::-;-1:-1:-1;;;;;7207:72:10;;7280:6;7207:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;384:482:40;668:10;709:116;728:5;735;742:7;751:9;762:17;781:14;809:15;709:18;:116::i;:::-;690:16;:135;;-1:-1:-1;;;;;;690:135:40;-1:-1:-1;;;;;690:135:40;;;;;;;;843:16;;384:482;-1:-1:-1;;;;;;;;384:482:40:o;9568:187:10:-;9630:16;9689:34;-1:-1:-1;;;;;;;;;;;9689:9:10;:34::i;:::-;-1:-1:-1;;;;;9666:79:10;;:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9666:81:10;;;;;;;;;;;;-1:-1:-1;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9659:88;;9568:187;:::o;11805:271::-;11917:16;11976:34;-1:-1:-1;;;;;;;;;;;11976:9:10;:34::i;:::-;-1:-1:-1;;;;;11953:88:10;;12042:17;12061:6;11953:115;;;;;;;;;;;;;-1:-1:-1;;;;;11953:115:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11953:115:10;;11805:271;-1:-1:-1;;;11805:271:10:o;12939:362::-;13019:19;13051:30;13101:8;:15;13084:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13084:33:10;;13051:66;;13135:9;13130:133;13154:8;:15;13150:1;:19;13130:133;;;13241:8;13250:1;13241:11;;;;;;;;;;;;;;-1:-1:-1;;;;;13224:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13224:37:10;13189:13;;:10;;13200:1;;13189:13;;;;;;-1:-1:-1;;;;;13189:74:10;;;:13;;;;;;;;;;;:74;13171:3;;13130:133;;;-1:-1:-1;13283:10:10;12939:362;-1:-1:-1;;12939:362:10:o;1243:37:56:-;;;-1:-1:-1;;;;;1243:37:56;;:::o;9235:186:10:-;9301:7;9351:34;-1:-1:-1;;;;;;;;;;;9351:9:10;:34::i;:::-;-1:-1:-1;;;;;9328:83:10;;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9328:85:10;;-1:-1:-1;9235:186:10;:::o;5648:::-;726:12:57;:10;:12::i;:::-;5729:28:10::1;5746:10;5729:16;:28::i;:::-;5721:62;;;::::0;;-1:-1:-1;;;5721:62:10;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5721:62:10;;;;;;;;;;;;;::::1;;5794:32;5815:10;5794:20;:32::i;:::-;5648:186:::0;:::o;24939:189::-;25045:4;25069:51;25094:17;25113:6;25069:24;:51::i;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;7818:180:10:-;7881:7;7931:34;-1:-1:-1;;;;;;;;;;;7931:9:10;:34::i;:::-;-1:-1:-1;;;;;7908:80:10;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1154:33:56;;;-1:-1:-1;;;;;1154:33:56;;:::o;8139:181:10:-;8198:16;8257:34;-1:-1:-1;;;;;;;;;;;8257:9:10;:34::i;:::-;-1:-1:-1;;;;;8234:76:10;;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9933:200;10008:11;10062:34;-1:-1:-1;;;;;;;;;;;10062:9:10;:34::i;:::-;-1:-1:-1;;;;;10039:78:10;;10118:6;10039:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;219:29:57;;;-1:-1:-1;;;;;219:29:57;;:::o;13976:891:10:-;14062:4;14079:25;14107:10;-1:-1:-1;;;;;14107:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14107:32:10;14079:60;;;-1:-1:-1;14150:34:10;14079:60;14187:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14187:36:10;;14150:73;;14234:30;14280:17;14267:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14267:31:10;;14234:64;;14375:9;14370:254;14394:17;14390:1;:21;14370:254;;;14433:24;14460:10;-1:-1:-1;;;;;14460:26:10;;14487:1;14460:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14460:29:10;14504:16;;14460:29;;-1:-1:-1;14460:29:10;;14504:13;;14518:1;;14504:16;;;;;;;;;;;:31;-1:-1:-1;;;;;14504:31:10;;;-1:-1:-1;;;;;14504:31:10;;;;;14570:42;14587:10;14599:12;14570:16;:42::i;:::-;14550:14;14565:1;14550:17;;;;;;;;:62;;;;:17;;;;;;;;;;;:62;-1:-1:-1;14413:3:10;;14370:254;;;-1:-1:-1;14857:1:10;14732:104;14757:47;14774:10;14786:17;14757:16;:47::i;:::-;14806:13;14821:14;14732:24;:104::i;:::-;-1:-1:-1;;;;;14732:127:10;;;;13976:891;-1:-1:-1;;;;;13976:891:10:o;13503:199::-;13573:4;13683:10;-1:-1:-1;;;;;13645:49:10;:10;-1:-1:-1;;;;;13645:16:10;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13645:18:10;:26;;;-1:-1:-1;;;13645:26:10;;;;-1:-1:-1;;;;;13645:24:10;;;;;;:26;;;;;:18;;:26;;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13645:26:10;-1:-1:-1;;;;;13645:49:10;;;13503:199;-1:-1:-1;;13503:199:10:o;6123:202::-;6211:5;;-1:-1:-1;;;;;6211:5:10;6197:10;:19;;:52;;;6221:28;6238:10;6221:16;:28::i;:::-;6220:29;6197:52;6189:82;;;;;-1:-1:-1;;;6189:82:10;;;;;;;;;;;;-1:-1:-1;;;6189:82:10;;;;;;;;;;;;;;;6282:35;6306:10;6282:23;:35::i;23624:121::-;23684:16;23720:17;23730:6;23720:9;:17::i;24054:180::-;24150:7;24177:49;24208:17;24177:30;:49::i;8492:199::-;8564:16;8623:34;-1:-1:-1;;;;;;;;;;;8623:9:10;:34::i;:::-;-1:-1:-1;;;;;8600:75:10;;8676:6;8600:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;12391:257:10:-;12502:4;12549:34;-1:-1:-1;;;;;;;;;;;12549:9:10;:34::i;:::-;-1:-1:-1;;;;;12526:87:10;;12614:17;12633:6;12526:114;;;;;;;;;;;;;-1:-1:-1;;;;;12526:114:10;;;;;;-1:-1:-1;;;;;12526:114:10;;;;;;;;;;;;;;;;;;;;;;;;;;;25509:268;25641:16;25677:92;25726:1;25702:14;:21;:25;:33;;25734:1;25702:33;;;25730:1;25702:33;25677:92;;25737:14;25753:15;25677:24;:92::i;6464:170::-;6520:7;6570:34;-1:-1:-1;;;;;;;;;;;6570:9:10;:34::i;:::-;-1:-1:-1;;;;;6547:77:10;;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;255:23:57;;;-1:-1:-1;;;;;255:23:57;;:::o;24630:203:10:-;24737:16;24773:52;24799:17;24818:6;24773:25;:52::i;7498:175::-;7562:4;7609:34;-1:-1:-1;;;;;;;;;;;7609:9:10;:34::i;:::-;-1:-1:-1;;;;;7586:71:10;;7658:6;7586:79;;;;;;;;;;;;;-1:-1:-1;;;;;7586:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;23236:102;23287:7;23314:16;:14;:16::i;8899:185::-;8970:4;9017:34;-1:-1:-1;;;;;;;;;;;9017:9:10;:34::i;:::-;-1:-1:-1;;;;;8994:74:10;;9069:6;8994:82;;;;;;;;;;;;;-1:-1:-1;;;;;8994:82:10;;;;;;;;;;;;;;;;;;;;;;;;;;6769:171;6821:16;6880:34;-1:-1:-1;;;;;;;;;;;6880:9:10;:34::i;:::-;-1:-1:-1;;;;;6857:73:10;;:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;24342:181:10:-;24434:16;24470:45;24497:17;24470:26;:45::i;813:104:57:-;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;;;;;;;;;;20557:934:10;20654:16;20683:44;20753:34;-1:-1:-1;;;;;;;;;;;20753:9:10;:34::i;:::-;20683:105;;20799:22;20824:21;-1:-1:-1;;;;;20824:56:10;;20881:14;20896:1;20881:17;;;;;;;;;;;;;;20824:75;;;;;;;;;;;;;-1:-1:-1;;;;;20824:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20824:75:10;;-1:-1:-1;20910:13:10;21043:1;21026:363;21050:14;:21;21046:1;:25;21026:363;;;21093:35;21131:21;-1:-1:-1;;;;;21131:56:10;;21188:14;21203:1;21188:17;;;;;;;;;;;;;;21131:75;;;;;;;;;;;;;-1:-1:-1;;;;;21131:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21131:75:10;;-1:-1:-1;21225:44:10;;;21221:157;;;21307:27;21290:44;;21361:1;21353:9;;21221:157;-1:-1:-1;21073:3:10;;21026:363;;;;21408:21;-1:-1:-1;;;;;21408:52:10;;21461:14;21476:5;21461:21;;;;;;;;;;;;;;21408:75;;;;;;;;;;;;;-1:-1:-1;;;;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21408:75:10;;;;;;;;;;;;-1:-1:-1;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21401:82;;;;;20557:934;;;:::o;21499:658::-;21667:4;21684:25;21712:10;-1:-1:-1;;;;;21712:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21712:32:10;21684:60;;;-1:-1:-1;21770:47:10;21787:10;21684:60;21770:16;:47::i;:::-;21761:56;;:5;:56;;;21757:87;;21839:5;21832:12;;;;;21757:87;21886:17;21861:14;:21;:42;21857:73;;21925:5;21918:12;;;;;21857:73;21948:9;21943:183;21967:14;:21;21963:1;:25;21943:183;;;22036:47;22053:10;22065:14;22080:1;22065:17;;;;;;;;;;;;;;22036:16;:47::i;:::-;22014:69;;:15;22030:1;22014:18;;;;;;;;;;;;;;:69;;;22010:104;;22109:5;22102:12;;;;;;22010:104;21990:3;;21943:183;;;;22145:4;22138:11;;;21499:658;;;;;;;:::o;4179:1300::-;4516:21;;4566:22;;4471:10;;4516:21;4556:32;;4548:65;;;;;-1:-1:-1;;;4548:65:10;;;;;;;;;;;;-1:-1:-1;;;4548:65:10;;;;;;;;;;;;;;;4717:1;4632:64;4657:5;4664:14;4680:15;4632:24;:64::i;:::-;-1:-1:-1;;;;;4632:87:10;;4624:118;;;;;-1:-1:-1;;;4624:118:10;;;;;;;;;;;;-1:-1:-1;;;4624:118:10;;;;;;;;;;;;;;;4755:25;4801:28;-1:-1:-1;;;4801:9:10;:28::i;:::-;4755:75;;4841:23;4884:7;-1:-1:-1;;;;;4884:20:10;;4905:5;4912;4919:7;4928:9;4884:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4884:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4884:54:10;5023:8;;4984:67;;;-1:-1:-1;;;4984:67:10;;;;;;;;;-1:-1:-1;;;;;4984:67:10;;;;;;;5023:8;;;4984:67;;;;;;;;;;;;;4884:54;;-1:-1:-1;4950:20:10;;4984:23;;;;;;:67;;;;;4884:54;;4984:67;;;;;;;;4950:20;4984:23;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4984:67:10;5065:24;;;-1:-1:-1;;;5065:24:10;;;;4984:67;;-1:-1:-1;;;;;;5065:22:10;;;;;:24;;;;;;;;;;;;;;;;:22;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5100:9;-1:-1:-1;;;;;5100:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5145:9;5140:109;5164:6;5160:1;:10;5140:109;;;5190:9;-1:-1:-1;;;;;5190:20:10;;5211:14;5226:1;5211:17;;;;;;;;;;;;;;5230:15;5246:1;5230:18;;;;;;;;;;;;;;5190:59;;;;;;;;;;;;;-1:-1:-1;;;;;5190:59:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5172:3:10;;;;;-1:-1:-1;5140:109:10;;-1:-1:-1;5140:109:10;;;5262:6;-1:-1:-1;;;;;5262:24:10;;5295:9;5262:44;;;;;;;;;;;;;-1:-1:-1;;;;;5262:44:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:9;-1:-1:-1;;;;;5317:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5361:39:10;;;-1:-1:-1;;;5361:39:10;;5389:10;5361:39;;;;;;-1:-1:-1;;;;;5361:27:10;;;-1:-1:-1;5361:27:10;;-1:-1:-1;5361:39:10;;;;;-1:-1:-1;;5361:39:10;;;;;;;-1:-1:-1;5361:27:10;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5413:31;5434:9;5413:20;:31::i;:::-;5462:9;4179:1300;-1:-1:-1;;;;;;;;;;;4179:1300:10:o;18900:810::-;18972:44;19042:34;-1:-1:-1;;;;;;;;;;;19042:9:10;:34::i;:::-;18972:105;;19088:23;19125:10;-1:-1:-1;;;;;19114:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19114:30:10;19183:32;;;-1:-1:-1;;;19183:32:10;;;;19114:30;;-1:-1:-1;19155:25:10;;-1:-1:-1;;;;;19183:30:10;;;;;:32;;;;;19114:30;;19183:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19183:32:10;19155:60;;;-1:-1:-1;19265:40:10;19275:21;19298:6;19265:9;:40::i;:::-;19340:1;19320:17;:21;19316:196;;;19356:47;19373:21;19396:6;19356:16;:47::i;:::-;19316:196;;;19432:80;19452:21;19495:6;19505;19432:19;:80::i;:::-;19565:9;19560:142;19584:17;19580:1;:21;19560:142;;;19621:81;19641:21;19664:10;-1:-1:-1;;;;;19664:26:10;;19691:1;19664:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19664:29:10;19695:6;19621:19;:81::i;:::-;19603:3;;19560:142;;;;18900:810;;;;:::o;22294:208::-;22392:6;22414:13;22434:10;-1:-1:-1;;;;;22434:21:10;;22456:13;22434:36;;;;;;;;;;;;;-1:-1:-1;;;;;22434:36:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22434:36:10;;;;22294:208;-1:-1:-1;;;;22294:208:10:o;22736:404::-;22927:52;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22927:52:10;-1:-1:-1;;;22927:52:10;;;22896:84;;;;22835:6;;;;22869:23;;-1:-1:-1;;;;;22896:30:10;;;22927:52;;22896:84;;;;22927:52;22896:84;;22927:52;22896:84;;;;;;;;;;-1:-1:-1;;22896:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22854:126;;;;22995:7;:34;;;;;23006:10;:17;23027:2;23006:23;22995:34;22991:93;;;23063:10;23052:32;;;;;;;;;;;;;;;-1:-1:-1;23052:32:10;;-1:-1:-1;23045:39:10;;-1:-1:-1;;23045:39:10;22991:93;23123:1;23102:18;:22;:30;;23131:1;23102:30;;;23127:1;23102:30;23095:37;;;22736:404;-1:-1:-1;;;;;22736:404:10:o;19718:831::-;19793:44;19863:34;-1:-1:-1;;;;;;;;;;;19863:9:10;:34::i;:::-;19793:105;;19909:23;19946:10;-1:-1:-1;;;;;19935:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19935:30:10;20004:32;;;-1:-1:-1;;;20004:32:10;;;;19935:30;;-1:-1:-1;19976:25:10;;-1:-1:-1;;;;;20004:30:10;;;;;:32;;;;;19935:30;;20004:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20004:32:10;19976:60;;;-1:-1:-1;20089:43:10;20102:21;20125:6;20089:12;:43::i;:::-;20167:1;20147:17;:21;20143:202;;;20183:50;20203:21;20226:6;20183:19;:50::i;:::-;20143:202;;;20262:83;20285:21;20328:6;20338;20262:22;:83::i;:::-;20401:9;20396:145;20420:17;20416:1;:21;20396:145;;;20457:84;20480:21;20503:10;-1:-1:-1;;;;;20503:26:10;;20530:1;20503:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20503:29:10;20534:6;20457:22;:84::i;:::-;20439:3;;20396:145;;16388:250;16500:22;-1:-1:-1;;;;;16500:36:10;;16537:7;16500:45;;;;;;;;;;;;;-1:-1:-1;;;;;16500:45:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16561:29:10;;-1:-1:-1;;;;;16561:29:10;;;-1:-1:-1;16561:29:10;;-1:-1:-1;16561:29:10;;;16606:24;;-1:-1:-1;;;;;16606:24:10;;;;;;;;16388:250;;:::o;17187:257::-;17319:22;-1:-1:-1;;;;;17319:39:10;;17359:20;17319:61;;;;;;;;;;;;;-1:-1:-1;;;;;17319:61:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17396:40:10;;-1:-1:-1;;;;;17396:40:10;;;-1:-1:-1;17396:40:10;;-1:-1:-1;17396:40:10;;;17187:257;;:::o;18078:296::-;18231:22;-1:-1:-1;;;;;18231:42:10;;18274:17;18293:7;18231:70;;;;;;;;;;;;;-1:-1:-1;;;;;18231:70:10;;;;;;-1:-1:-1;;;;;18231:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18317:49:10;;-1:-1:-1;;;;;18317:49:10;;;;-1:-1:-1;18317:49:10;;;-1:-1:-1;18317:49:10;;;;;18078:296;;;:::o;16772:260::-;16887:22;-1:-1:-1;;;;;16887:39:10;;16927:7;16887:48;;;;;;;;;;;;;-1:-1:-1;;;;;16887:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16951:31:10;;-1:-1:-1;;;;;16951:31:10;;;-1:-1:-1;16951:31:10;;-1:-1:-1;16951:31:10;;;16998:26;;-1:-1:-1;;;;;16998:26:10;;;;;;;;16772:260;;:::o;17604:265::-;17739:22;-1:-1:-1;;;;;17739:42:10;;17782:20;17739:64;;;;;;;;;;;;;-1:-1:-1;;;;;17739:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17819:42:10;;-1:-1:-1;;;;;17819:42:10;;;-1:-1:-1;17819:42:10;;-1:-1:-1;17819:42:10;;;17604:265;;:::o;18588:304::-;18744:22;-1:-1:-1;;;;;18744:45:10;;18790:17;18809:7;18744:73;;;;;;;;;;;;;-1:-1:-1;;;;;18744:73:10;;;;;;-1:-1:-1;;;;;18744:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18833:51:10;;-1:-1:-1;;;;;18833:51:10;;;;-1:-1:-1;18833:51:10;;;-1:-1:-1;18833:51:10;;;;;18588:304;;;:::o",
"source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\npragma solidity 0.6.12;\nimport \"../converter/ConverterRegistry.sol\";\n\n/*\n Utils test helper that exposes the converter registry functions\n*/\ncontract TestConverterRegistry is ConverterRegistry {\n IConverter public createdConverter;\n\n constructor(IContractRegistry _registry) public ConverterRegistry(_registry) {\n }\n\n function newConverter(\n uint16 _type,\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint32 _maxConversionFee,\n IERC20Token[] memory _reserveTokens,\n uint32[] memory _reserveWeights\n )\n public override returns (IConverter) {\n createdConverter = super.newConverter(_type, _name, _symbol, _decimals, _maxConversionFee, _reserveTokens,\n _reserveWeights);\n\n return createdConverter;\n }\n}\n",
"sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterRegistry.sol",
"ast": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterRegistry.sol",
"exportedSymbols": {
"TestConverterRegistry": [
19370
]
},
"id": 19371,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 19317,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "51:23:40"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
"file": "../converter/ConverterRegistry.sol",
"id": 19318,
"nodeType": "ImportDirective",
"scope": 19371,
"sourceUnit": 11668,
"src": "75:44:40",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 19319,
"name": "ConverterRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11667,
"src": "229:17:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ConverterRegistry_$11667",
"typeString": "contract ConverterRegistry"
}
},
"id": 19320,
"nodeType": "InheritanceSpecifier",
"src": "229:17:40"
}
],
"contractDependencies": [
11667,
13501,
21719,
21818,
22526,
22661,
22847
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 19370,
"linearizedBaseContracts": [
19370,
11667,
22526,
21719,
22661,
21818,
22847,
13501
],
"name": "TestConverterRegistry",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "1814f2d2",
"id": 19322,
"mutability": "mutable",
"name": "createdConverter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19370,
"src": "253:34:40",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 19321,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "253:10:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 19330,
"nodeType": "Block",
"src": "371:7:40",
"statements": []
},
"documentation": null,
"id": 19331,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 19327,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19324,
"src": "360:9:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"id": 19328,
"modifierName": {
"argumentTypes": null,
"id": 19326,
"name": "ConverterRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11667,
"src": "342:17:40",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ConverterRegistry_$11667_$",
"typeString": "type(contract ConverterRegistry)"
}
},
"nodeType": "ModifierInvocation",
"src": "342:28:40"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 19325,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19324,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19331,
"src": "306:27:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 19323,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "306:17:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "305:29:40"
},
"returnParameters": {
"id": 19329,
"nodeType": "ParameterList",
"parameters": [],
"src": "371:0:40"
},
"scope": 19370,
"src": "294:84:40",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
10454
],
"body": {
"id": 19368,
"nodeType": "Block",
"src": "680:186:40",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 19364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 19353,
"name": "createdConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19322,
"src": "690:16:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 19356,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19333,
"src": "728:5:40",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 19357,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19335,
"src": "735:5:40",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 19358,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19337,
"src": "742:7:40",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 19359,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19339,
"src": "751:9:40",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 19360,
"name": "_maxConversionFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19341,
"src": "762:17:40",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
{
"argumentTypes": null,
"id": 19361,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19344,
"src": "781:14:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 19362,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19347,
"src": "809:15:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"expression": {
"argumentTypes": null,
"id": 19354,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "709:5:40",
"typeDescriptions": {
"typeIdentifier": "t_super$_TestConverterRegistry_$19370",
"typeString": "contract super TestConverterRegistry"
}
},
"id": 19355,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "newConverter",
"nodeType": "MemberAccess",
"referencedDeclaration": 10454,
"src": "709:18:40",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$_t_uint32_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverter_$13340_$",
"typeString": "function (uint16,string memory,string memory,uint8,uint32,contract IERC20Token[] memory,uint32[] memory) returns (contract IConverter)"
}
},
"id": 19363,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "709:116:40",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"src": "690:135:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 19365,
"nodeType": "ExpressionStatement",
"src": "690:135:40"
},
{
"expression": {
"argumentTypes": null,
"id": 19366,
"name": "createdConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19322,
"src": "843:16:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"functionReturnParameters": 19352,
"id": 19367,
"nodeType": "Return",
"src": "836:23:40"
}
]
},
"documentation": null,
"functionSelector": "5a0a6618",
"id": 19369,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "newConverter",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 19349,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "650:8:40"
},
"parameters": {
"id": 19348,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19333,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "415:12:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 19332,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "415:6:40",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19335,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "437:19:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 19334,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "437:6:40",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19337,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "466:21:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 19336,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "466:6:40",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19339,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "497:15:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 19338,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "497:5:40",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19341,
"mutability": "mutable",
"name": "_maxConversionFee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "522:24:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 19340,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "522:6:40",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19344,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "556:35:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 19342,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "556:11:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 19343,
"length": null,
"nodeType": "ArrayTypeName",
"src": "556:13:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19347,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "601:31:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 19345,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "601:6:40",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 19346,
"length": null,
"nodeType": "ArrayTypeName",
"src": "601:8:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "405:233:40"
},
"returnParameters": {
"id": 19352,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19351,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "668:10:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 19350,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "668:10:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "667:12:40"
},
"scope": 19370,
"src": "384:482:40",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 19371,
"src": "195:673:40"
}
],
"src": "51:818:40"
},
"legacyAST": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterRegistry.sol",
"exportedSymbols": {
"TestConverterRegistry": [
19370
]
},
"id": 19371,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 19317,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "51:23:40"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
"file": "../converter/ConverterRegistry.sol",
"id": 19318,
"nodeType": "ImportDirective",
"scope": 19371,
"sourceUnit": 11668,
"src": "75:44:40",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 19319,
"name": "ConverterRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 11667,
"src": "229:17:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ConverterRegistry_$11667",
"typeString": "contract ConverterRegistry"
}
},
"id": 19320,
"nodeType": "InheritanceSpecifier",
"src": "229:17:40"
}
],
"contractDependencies": [
11667,
13501,
21719,
21818,
22526,
22661,
22847
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 19370,
"linearizedBaseContracts": [
19370,
11667,
22526,
21719,
22661,
21818,
22847,
13501
],
"name": "TestConverterRegistry",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "1814f2d2",
"id": 19322,
"mutability": "mutable",
"name": "createdConverter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19370,
"src": "253:34:40",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 19321,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "253:10:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 19330,
"nodeType": "Block",
"src": "371:7:40",
"statements": []
},
"documentation": null,
"id": 19331,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 19327,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19324,
"src": "360:9:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"id": 19328,
"modifierName": {
"argumentTypes": null,
"id": 19326,
"name": "ConverterRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11667,
"src": "342:17:40",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ConverterRegistry_$11667_$",
"typeString": "type(contract ConverterRegistry)"
}
},
"nodeType": "ModifierInvocation",
"src": "342:28:40"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 19325,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19324,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19331,
"src": "306:27:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 19323,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "306:17:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "305:29:40"
},
"returnParameters": {
"id": 19329,
"nodeType": "ParameterList",
"parameters": [],
"src": "371:0:40"
},
"scope": 19370,
"src": "294:84:40",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
10454
],
"body": {
"id": 19368,
"nodeType": "Block",
"src": "680:186:40",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 19364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 19353,
"name": "createdConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19322,
"src": "690:16:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 19356,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19333,
"src": "728:5:40",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
{
"argumentTypes": null,
"id": 19357,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19335,
"src": "735:5:40",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 19358,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19337,
"src": "742:7:40",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 19359,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19339,
"src": "751:9:40",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 19360,
"name": "_maxConversionFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19341,
"src": "762:17:40",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
{
"argumentTypes": null,
"id": 19361,
"name": "_reserveTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19344,
"src": "781:14:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
}
},
{
"argumentTypes": null,
"id": 19362,
"name": "_reserveWeights",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19347,
"src": "809:15:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
{
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[] memory"
},
{
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[] memory"
}
],
"expression": {
"argumentTypes": null,
"id": 19354,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "709:5:40",
"typeDescriptions": {
"typeIdentifier": "t_super$_TestConverterRegistry_$19370",
"typeString": "contract super TestConverterRegistry"
}
},
"id": 19355,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "newConverter",
"nodeType": "MemberAccess",
"referencedDeclaration": 10454,
"src": "709:18:40",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$_t_uint32_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverter_$13340_$",
"typeString": "function (uint16,string memory,string memory,uint8,uint32,contract IERC20Token[] memory,uint32[] memory) returns (contract IConverter)"
}
},
"id": 19363,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "709:116:40",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"src": "690:135:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"id": 19365,
"nodeType": "ExpressionStatement",
"src": "690:135:40"
},
{
"expression": {
"argumentTypes": null,
"id": 19366,
"name": "createdConverter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19322,
"src": "843:16:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"functionReturnParameters": 19352,
"id": 19367,
"nodeType": "Return",
"src": "836:23:40"
}
]
},
"documentation": null,
"functionSelector": "5a0a6618",
"id": 19369,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "newConverter",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 19349,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "650:8:40"
},
"parameters": {
"id": 19348,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19333,
"mutability": "mutable",
"name": "_type",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "415:12:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 19332,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "415:6:40",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19335,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "437:19:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 19334,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "437:6:40",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19337,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "466:21:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 19336,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "466:6:40",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19339,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "497:15:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 19338,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "497:5:40",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19341,
"mutability": "mutable",
"name": "_maxConversionFee",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "522:24:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 19340,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "522:6:40",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19344,
"mutability": "mutable",
"name": "_reserveTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "556:35:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
"typeString": "contract IERC20Token[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 19342,
"name": "IERC20Token",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21127,
"src": "556:11:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Token_$21127",
"typeString": "contract IERC20Token"
}
},
"id": 19343,
"length": null,
"nodeType": "ArrayTypeName",
"src": "556:13:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
"typeString": "contract IERC20Token[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 19347,
"mutability": "mutable",
"name": "_reserveWeights",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "601:31:40",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 19345,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "601:6:40",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 19346,
"length": null,
"nodeType": "ArrayTypeName",
"src": "601:8:40",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "405:233:40"
},
"returnParameters": {
"id": 19352,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 19351,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 19369,
"src": "668:10:40",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
},
"typeName": {
"contractScope": null,
"id": 19350,
"name": "IConverter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 13340,
"src": "668:10:40",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConverter_$13340",
"typeString": "contract IConverter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "667:12:40"
},
"scope": 19370,
"src": "384:482:40",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 19371,
"src": "195:673:40"
}
],
"src": "51:818:40"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.3",
"updatedAt": "2020-10-20T08:24:47.806Z",
"devdoc": {
"kind": "dev",
"methods": {
"acceptOwnership()": {
"details": "used by a new owner to accept an ownership transfer"
},
"addConverter(address)": {
"details": "adds an existing converter to the registry can only be called by the owner",
"params": {
"_converter": "converter"
}
},
"getAnchor(uint256)": {
"details": "returns the converter anchor at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "anchor at the given index"
}
},
"getAnchorCount()": {
"details": "returns the number of converter anchors in the registry",
"returns": {
"_0": "number of anchors"
}
},
"getAnchors()": {
"details": "returns the list of converter anchors in the registry",
"returns": {
"_0": "list of anchors"
}
},
"getConvertersByAnchors(address[])": {
"details": "returns a list of converters for a given list of anchors this is a utility function that can be used to reduce the number of calls to the contract",
"params": {
"_anchors": "list of converter anchors"
},
"returns": {
"_0": "list of converters"
}
},
"getConvertersBySmartTokens(address[])": {
"details": "deprecated, backward compatibility, use `getConvertersByAnchors`"
},
"getConvertibleToken(uint256)": {
"details": "returns the convertible token at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "convertible token at the given index"
}
},
"getConvertibleTokenAnchor(address,uint256)": {
"details": "returns the converter anchor associated with a given convertible token at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "anchor associated with the given convertible token at the given index"
}
},
"getConvertibleTokenAnchorCount(address)": {
"details": "returns the number of converter anchors associated with a given convertible token",
"params": {
"_convertibleToken": "convertible token"
},
"returns": {
"_0": "number of anchors associated with the given convertible token"
}
},
"getConvertibleTokenAnchors(address)": {
"details": "returns the list of aoncerter anchors associated with a given convertible token",
"params": {
"_convertibleToken": "convertible token"
},
"returns": {
"_0": "list of anchors associated with the given convertible token"
}
},
"getConvertibleTokenCount()": {
"details": "returns the number of convertible tokens in the registry",
"returns": {
"_0": "number of convertible tokens"
}
},
"getConvertibleTokenSmartToken(address,uint256)": {
"details": "deprecated, backward compatibility, use `getConvertibleTokenAnchor`"
},
"getConvertibleTokenSmartTokenCount(address)": {
"details": "deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`"
},
"getConvertibleTokenSmartTokens(address)": {
"details": "deprecated, backward compatibility, use `getConvertibleTokenAnchors`"
},
"getConvertibleTokens()": {
"details": "returns the list of convertible tokens in the registry",
"returns": {
"_0": "list of convertible tokens"
}
},
"getLiquidityPool(uint256)": {
"details": "returns the liquidity pool at a given index",
"params": {
"_index": "index"
},
"returns": {
"_0": "liquidity pool at the given index"
}
},
"getLiquidityPoolByConfig(uint16,address[],uint32[])": {
"details": "searches for a liquidity pool with specific configuration",
"params": {
"_reserveTokens": "reserve tokens",
"_reserveWeights": "reserve weights",
"_type": "converter type, see ConverterBase contract main doc"
},
"returns": {
"_0": "the liquidity pool, or zero if no such liquidity pool exists"
}
},
"getLiquidityPoolByReserveConfig(address[],uint32[])": {
"details": "deprecated, backward compatibility, use `getLiquidityPoolByConfig`"
},
"getLiquidityPoolCount()": {
"details": "returns the number of liquidity pools in the registry",
"returns": {
"_0": "number of liquidity pools"
}
},
"getLiquidityPools()": {
"details": "returns the list of liquidity pools in the registry",
"returns": {
"_0": "list of liquidity pools"
}
},
"getSmartToken(uint256)": {
"details": "deprecated, backward compatibility, use `getAnchor`"
},
"getSmartTokenCount()": {
"details": "deprecated, backward compatibility, use `getAnchorCount`"
},
"getSmartTokens()": {
"details": "deprecated, backward compatibility, use `getAnchors`"
},
"isAnchor(address)": {
"details": "checks whether or not a given value is a converter anchor",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is an anchor, false if not"
}
},
"isConverterValid(address)": {
"details": "checks whether or not a given converter is valid",
"params": {
"_converter": "converter"
},
"returns": {
"_0": "true if the given converter is valid, false if not"
}
},
"isConvertibleToken(address)": {
"details": "checks whether or not a given value is a convertible token",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is a convertible token, false if not"
}
},
"isConvertibleTokenAnchor(address,address)": {
"details": "checks whether or not a given value is a converter anchor of a given convertible token",
"params": {
"_convertibleToken": "convertible token",
"_value": "value"
},
"returns": {
"_0": "true if the given value is an anchor of the given convertible token, false if not"
}
},
"isConvertibleTokenSmartToken(address,address)": {
"details": "deprecated, backward compatibility, use `isConvertibleTokenAnchor`"
},
"isLiquidityPool(address)": {
"details": "checks whether or not a given value is a liquidity pool",
"params": {
"_value": "value"
},
"returns": {
"_0": "true if the given value is a liquidity pool, false if not"
}
},
"isSimilarLiquidityPoolRegistered(address)": {
"details": "checks if a liquidity pool with given configuration is already registered",
"params": {
"_converter": "converter with specific configuration"
},
"returns": {
"_0": "if a liquidity pool with the same configuration is already registered"
}
},
"isSmartToken(address)": {
"details": "deprecated, backward compatibility, use `isAnchor`"
},
"newConverter(uint16,string,string,uint8,uint32,address[],uint32[])": {
"details": "creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry",
"params": {
"_decimals": "token / pool decimals",
"_maxConversionFee": "maximum conversion-fee",
"_name": "token / pool name",
"_reserveTokens": "reserve tokens",
"_reserveWeights": "reserve weights",
"_symbol": "token / pool symbol",
"_type": "converter type, see ConverterBase contract main doc"
},
"returns": {
"_0": "new converter"
}
},
"removeConverter(address)": {
"details": "removes a converter from the registry anyone can remove an existing converter from the registry, as long as the converter is invalid note that the owner can also remove valid converters",
"params": {
"_converter": "converter"
}
},
"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"
}
},
"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
}
}