{
  "contractName": "ProtocolTreasury",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract Controller",
          "name": "_controller",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ERC20",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Assign",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "ModuleCached",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "name": "RecoverFunds",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ERC20",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ERC20",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "assign",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract ERC20",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_holder",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_ids",
          "type": "bytes32[]"
        },
        {
          "internalType": "address[]",
          "name": "_addresses",
          "type": "address[]"
        }
      ],
      "name": "cacheModules",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getController",
      "outputs": [
        {
          "internalType": "contract Controller",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address payable",
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "recoverFunds",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ERC20",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ERC20",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "withdrawAll",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516111283803806111288339818101604052602081101561003357600080fd5b50518080610049816001600160e01b0361013116565b6040518060400160405280601b81526020017f4354445f434f4e54524f4c4c45525f4e4f545f434f4e54524143540000000000815250906101085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506101549050565b60006001600160a01b0382166101495750600061014f565b50803b15155b919050565b610fc5806101636000396000f3fe6080604052600436106100605760003560e01c806309cae2c81461006557806324ae6a27146100a25780633018205f146100d05780634e112d36146101015780635f52d44e146101cc578063d9caed121461020f578063f7888aec14610252575b600080fd5b34801561007157600080fd5b506100a06004803603604081101561008857600080fd5b506001600160a01b038135811691602001351661029f565b005b6100a0600480360360408110156100b857600080fd5b506001600160a01b038135811691602001351661040b565b3480156100dc57600080fd5b506100e56107b3565b604080516001600160a01b039092168252519081900360200190f35b34801561010d57600080fd5b506100a06004803603604081101561012457600080fd5b810190602081018135600160201b81111561013e57600080fd5b82018360208201111561015057600080fd5b803590602001918460208302840111600160201b8311171561017157600080fd5b919390929091602081019035600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460208302840111600160201b831117156101c157600080fd5b5090925090506107c2565b3480156101d857600080fd5b506100a0600480360360608110156101ef57600080fd5b506001600160a01b038135811691602081013590911690604001356109b7565b34801561021b57600080fd5b506100a06004803603606081101561023257600080fd5b506001600160a01b03813581169160208101359091169060400135610bfa565b34801561025e57600080fd5b5061028d6004803603604081101561027557600080fd5b506001600160a01b0381358116916020013516610c0b565b60408051918252519081900360200190f35b60006102a96107b3565b9050806001600160a01b03166327fe748c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561030157600080fd5b505afa158015610315573d6000803e3d6000fd5b505050506040513d602081101561032b57600080fd5b505160408051808201909152601f81527f54524541535552595f5749544844524157414c535f444953414c4c4f574544006020820152906103ea5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156103af578181015183820152602001610397565b50505050905090810190601f1680156103dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006103f78484610c1e565b905061040584848584610c49565b50505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316633c28e88b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045857600080fd5b505afa15801561046c573d6000803e3d6000fd5b505050506040513d602081101561048257600080fd5b505160408051808201909152601d81527f4354445f53454e4445525f4e4f545f46554e44535f474f5645524e4f520000006020820152906001600160a01b0316331461050f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060006001600160a01b0383166105d0575060405147906001600160a01b0383169082156108fc029083906000818181858888f193505050506040518060400160405280601e81526020017f4354445f5245434f5645525f544f4b454e5f46554e44535f4641494c45440000815250906105ca5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b50610764565b604080516370a0823160e01b815230600482015290516001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d602081101561064057600080fd5b505160408051808201909152601e81527f4354445f494e53554646494349454e545f5245434f5645525f46554e445300006020820152909150816106c55760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506106e06001600160a01b038416838363ffffffff610e6216565b6040518060400160405280601e81526020017f4354445f5245434f5645525f544f4b454e5f46554e44535f4641494c45440000815250906107625760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b505b604080516001600160a01b0380861682528416602082015280820183905290517f724139fea3954691c2c1ee02b3be6be1763b32ec84841f1acad6d3a18695ba0d9181900360600190a1505050565b6000546001600160a01b031690565b60005460408051808201909152601981527821aa222fa9a2a72222a92fa727aa2fa1a7a72a2927a62622a960391b6020820152906001600160a01b0316331461084c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060408051808201909152601f81527f4354445f494e56414c49445f4d4f44554c45535f43414348455f494e5055540060208201528382146108cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060005b838110156109b0578282828181106108e757fe5b905060200201356001600160a01b03166001600087878581811061090757fe5b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f60bd2091d76fc7f3330a4d5e9fd21180cf5de4b91e9972d2d56f41896c036a4085858381811061096d57fe5b9050602002013584848481811061098057fe5b60408051948552602091820293909301356001600160a01b031690840152508051918290030190a16001016108d3565b5050505050565b6000546040805163ca0f8f3b60e01b81527f14a6c70f0f6d449c014c7bbc9e68e31e79e8474fb03b7194df83109a2d888ae6600482015233602482015290516001600160a01b039092169163ca0f8f3b91604480820192602092909190829003018186803b158015610a2857600080fd5b505afa158015610a3c573d6000803e3d6000fd5b505050506040513d6020811015610a5257600080fd5b505160408051808201909152601f81527f4354445f53454e445f4e4f545f4143544956455f444953505554455f4d475200602082015290610ad45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060408051808201909152601c81527f54524541535552595f4445504f5349545f414d4f554e545f5a45524f00000000602082015281610b555760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506001600160a01b038084166000908152600260209081526040808320938616835292905220548390610b8e908363ffffffff610ebf16565b6001600160a01b038083166000908152600260209081526040808320888516808552908352928190209490945583518681529351919333938916927fcd3a7f23d18208520fdc9d4b65f6e31fddab8a713364565e8774ddd78a4eb312929181900390910190a450505050565b610c0683338484610c49565b505050565b6000610c178383610c1e565b9392505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60408051808201909152601d81527f54524541535552595f57495448445241575f414d4f554e545f5a45524f000000602082015281610cc95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506000610cd68585610c1e565b9050818110156040518060400160405280602081526020017f54524541535552595f57495448445241575f494e56414c49445f414d4f554e5481525090610d5e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506001600160a01b038086166000818152600260209081526040808320898616808552908352928190208787039055805187815290518a95891694927f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7928290030190a4610ddc6001600160a01b038716858563ffffffff610e6216565b604051806040016040528060188152602001771514915054d5549657d5d2551211149055d7d1905253115160421b81525090610e595760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052600090610eb68582610f45565b95945050505050565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b60208201526000908383019084821015610f3d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b509392505050565b6000806040516020818551602087016000895af18015610f86573d8015610f735760208114610f7c57610f84565b60019350610f84565b600183511493505b505b509094935050505056fea265627a7a723158209785a66506382f79120866af9ba73c67f889954c5e8f60a146a12bc9e409ccae64736f6c63430005110032",
  "deployedBytecode": "0x6080604052600436106100605760003560e01c806309cae2c81461006557806324ae6a27146100a25780633018205f146100d05780634e112d36146101015780635f52d44e146101cc578063d9caed121461020f578063f7888aec14610252575b600080fd5b34801561007157600080fd5b506100a06004803603604081101561008857600080fd5b506001600160a01b038135811691602001351661029f565b005b6100a0600480360360408110156100b857600080fd5b506001600160a01b038135811691602001351661040b565b3480156100dc57600080fd5b506100e56107b3565b604080516001600160a01b039092168252519081900360200190f35b34801561010d57600080fd5b506100a06004803603604081101561012457600080fd5b810190602081018135600160201b81111561013e57600080fd5b82018360208201111561015057600080fd5b803590602001918460208302840111600160201b8311171561017157600080fd5b919390929091602081019035600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460208302840111600160201b831117156101c157600080fd5b5090925090506107c2565b3480156101d857600080fd5b506100a0600480360360608110156101ef57600080fd5b506001600160a01b038135811691602081013590911690604001356109b7565b34801561021b57600080fd5b506100a06004803603606081101561023257600080fd5b506001600160a01b03813581169160208101359091169060400135610bfa565b34801561025e57600080fd5b5061028d6004803603604081101561027557600080fd5b506001600160a01b0381358116916020013516610c0b565b60408051918252519081900360200190f35b60006102a96107b3565b9050806001600160a01b03166327fe748c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561030157600080fd5b505afa158015610315573d6000803e3d6000fd5b505050506040513d602081101561032b57600080fd5b505160408051808201909152601f81527f54524541535552595f5749544844524157414c535f444953414c4c4f574544006020820152906103ea5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156103af578181015183820152602001610397565b50505050905090810190601f1680156103dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006103f78484610c1e565b905061040584848584610c49565b50505050565b6000809054906101000a90046001600160a01b03166001600160a01b0316633c28e88b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045857600080fd5b505afa15801561046c573d6000803e3d6000fd5b505050506040513d602081101561048257600080fd5b505160408051808201909152601d81527f4354445f53454e4445525f4e4f545f46554e44535f474f5645524e4f520000006020820152906001600160a01b0316331461050f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060006001600160a01b0383166105d0575060405147906001600160a01b0383169082156108fc029083906000818181858888f193505050506040518060400160405280601e81526020017f4354445f5245434f5645525f544f4b454e5f46554e44535f4641494c45440000815250906105ca5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b50610764565b604080516370a0823160e01b815230600482015290516001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d602081101561064057600080fd5b505160408051808201909152601e81527f4354445f494e53554646494349454e545f5245434f5645525f46554e445300006020820152909150816106c55760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506106e06001600160a01b038416838363ffffffff610e6216565b6040518060400160405280601e81526020017f4354445f5245434f5645525f544f4b454e5f46554e44535f4641494c45440000815250906107625760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b505b604080516001600160a01b0380861682528416602082015280820183905290517f724139fea3954691c2c1ee02b3be6be1763b32ec84841f1acad6d3a18695ba0d9181900360600190a1505050565b6000546001600160a01b031690565b60005460408051808201909152601981527821aa222fa9a2a72222a92fa727aa2fa1a7a72a2927a62622a960391b6020820152906001600160a01b0316331461084c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060408051808201909152601f81527f4354445f494e56414c49445f4d4f44554c45535f43414348455f494e5055540060208201528382146108cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060005b838110156109b0578282828181106108e757fe5b905060200201356001600160a01b03166001600087878581811061090757fe5b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f60bd2091d76fc7f3330a4d5e9fd21180cf5de4b91e9972d2d56f41896c036a4085858381811061096d57fe5b9050602002013584848481811061098057fe5b60408051948552602091820293909301356001600160a01b031690840152508051918290030190a16001016108d3565b5050505050565b6000546040805163ca0f8f3b60e01b81527f14a6c70f0f6d449c014c7bbc9e68e31e79e8474fb03b7194df83109a2d888ae6600482015233602482015290516001600160a01b039092169163ca0f8f3b91604480820192602092909190829003018186803b158015610a2857600080fd5b505afa158015610a3c573d6000803e3d6000fd5b505050506040513d6020811015610a5257600080fd5b505160408051808201909152601f81527f4354445f53454e445f4e4f545f4143544956455f444953505554455f4d475200602082015290610ad45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b5060408051808201909152601c81527f54524541535552595f4445504f5349545f414d4f554e545f5a45524f00000000602082015281610b555760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506001600160a01b038084166000908152600260209081526040808320938616835292905220548390610b8e908363ffffffff610ebf16565b6001600160a01b038083166000908152600260209081526040808320888516808552908352928190209490945583518681529351919333938916927fcd3a7f23d18208520fdc9d4b65f6e31fddab8a713364565e8774ddd78a4eb312929181900390910190a450505050565b610c0683338484610c49565b505050565b6000610c178383610c1e565b9392505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60408051808201909152601d81527f54524541535552595f57495448445241575f414d4f554e545f5a45524f000000602082015281610cc95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506000610cd68585610c1e565b9050818110156040518060400160405280602081526020017f54524541535552595f57495448445241575f494e56414c49445f414d4f554e5481525090610d5e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b506001600160a01b038086166000818152600260209081526040808320898616808552908352928190208787039055805187815290518a95891694927f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7928290030190a4610ddc6001600160a01b038716858563ffffffff610e6216565b604051806040016040528060188152602001771514915054d5549657d5d2551211149055d7d1905253115160421b81525090610e595760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052600090610eb68582610f45565b95945050505050565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b60208201526000908383019084821015610f3d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103af578181015183820152602001610397565b509392505050565b6000806040516020818551602087016000895af18015610f86573d8015610f735760208114610f7c57610f84565b60019350610f84565b600183511493505b505b509094935050505056fea265627a7a723158209785a66506382f79120866af9ba73c67f889954c5e8f60a146a12bc9e409ccae64736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
