{
  "_format": "hh-sol-artifact-1",
  "contractName": "DebtModuleMock",
  "sourceName": "contracts/mocks/protocol/module/DebtModuleMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IController",
          "name": "_controller",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "addDebt",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "_amount",
          "type": "int256"
        }
      ],
      "name": "addDebtIssuanceAdjustment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "_amount",
          "type": "int256"
        }
      ],
      "name": "addEquityIssuanceAdjustment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTokenQuantity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "componentIssueHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTokenQuantity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "componentRedeemHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "controller",
      "outputs": [
        {
          "internalType": "contract IController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "debtIssuanceAdjustment",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "equityIssuanceAdjustment",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "getIssuanceAdjustments",
      "outputs": [
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        },
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "getRedemptionAdjustments",
      "outputs": [
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        },
        {
          "internalType": "int256[]",
          "name": "",
          "type": "int256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_module",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "module",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "moduleIssueHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleIssueHookCalled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "moduleRedeemHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleRedeemHookCalled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "removeModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516118dc3803806118dc83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61184b806100916000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063847ef08d116100a2578063c137f4d711610071578063c137f4d7146101fa578063c153dd071461020d578063d23cd56414610220578063f77c479114610241578063fc62d9fe146102495761010b565b8063847ef08d146101b7578063a2241a41146101bf578063b0814851146101d2578063b86d5298146101e55761010b565b8063485cc955116100de578063485cc9551461017657806354e7dd3e146101895780635dbbf000146101915780636a283d51146101a45761010b565b806302309013146101105780630fb96b211461012e5780631f691294146101435780633fe6106b14610163575b600080fd5b61011861025c565b60405161012591906115e9565b60405180910390f35b61014161013c36600461142d565b61026c565b005b610156610151366004611209565b6103a6565b60405161012591906115f4565b61014161017136600461141b565b6103b8565b6101416101843660046113a3565b6103cf565b61011861049d565b61015661019f366004611209565b6104ad565b6101416101b23660046113db565b6104bf565b610141610500565b6101416101cd366004611225565b610564565b6101416101e0366004611225565b610580565b6101ed61059c565b60405161012591906114fd565b61014161020836600461142d565b6105ab565b61014161021b36600461141b565b610615565b61023361022e36600461141b565b61062c565b6040516101259291906115c4565b6101ed6107f8565b61023361025736600461141b565b610807565b600154600160a01b900460ff1681565b6000610306610301600019876001600160a01b03166322ebeba487306040518363ffffffff1660e01b81526004016102a5929190611511565b60206040518083038186803b1580156102bd57600080fd5b505afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f5919061147f565b9063ffffffff6109c616565b610a43565b9050600061031a858363ffffffff610a6916565b60405163a9059cbb60e01b81529091506001600160a01b0385169063a9059cbb9061034b90899085906004016115ab565b602060405180830381600087803b15801561036557600080fd5b505af1158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d91906112fb565b50505050505050565b60036020526000908152604090205481565b50506001805460ff60a81b1916600160a81b179055565b816001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b5050600180546001600160a01b0319166001600160a01b0385811691909117918290556040516306cd8db760e51b81529116925063d9b1b6e091506104679085906004016114fd565b600060405180830381600087803b15801561048157600080fd5b505af1158015610495573d6000803e3d6000fd5b505050505050565b600154600160a81b900460ff1681565b60026020526000908152604090205481565b6104fb82306104d36000196102f586610a7b565b6040805160208101909152600081526001600160a01b0388169392919063ffffffff610aa016565b505050565b600154604051630703ccb160e51b81526001600160a01b039091169063e0799620906105309033906004016114fd565b600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b50505050565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b03909116600090815260036020526040902055565b6001546001600160a01b031681565b60006105e4610301600019876001600160a01b03166322ebeba487306040518363ffffffff1660e01b81526004016102a5929190611511565b905060006105f8858363ffffffff610a6916565b90506104956001600160a01b03871685308463ffffffff61105916565b50506001805460ff60a01b1916600160a01b179055565b6060806060846001600160a01b03166399d50d5d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a69190810190611250565b90506060815167ffffffffffffffff811180156106c257600080fd5b506040519080825280602002602001820160405280156106ec578160200160208202803683370190505b5090506060825167ffffffffffffffff8111801561070957600080fd5b50604051908082528060200260200182016040528015610733578160200160208202803683370190505b50905060005b83518110156107eb576002600085838151811061075257fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205483828151811061078757fe5b602002602001018181525050600360008583815181106107a357fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106107d857fe5b6020908102919091010152600101610739565b5090969095509350505050565b6000546001600160a01b031681565b6060806060846001600160a01b03166399d50d5d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561084557600080fd5b505afa158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108819190810190611250565b90506060815167ffffffffffffffff8111801561089d57600080fd5b506040519080825280602002602001820160405280156108c7578160200160208202803683370190505b5090506060825167ffffffffffffffff811180156108e457600080fd5b5060405190808252806020026020018201604052801561090e578160200160208202803683370190505b50905060005b83518110156107eb576002600085838151811061092d57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205483828151811061096257fe5b6020026020010181815250506003600085838151811061097e57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106109b357fe5b6020908102919091010152600101610914565b6000826109d557506000610a3d565b826000191480156109e95750600160ff1b82145b15610a0f5760405162461bcd60e51b8152600401610a06906116d6565b60405180910390fd5b82820282848281610a1c57fe5b0514610a3a5760405162461bcd60e51b8152600401610a06906116d6565b90505b92915050565b600080821215610a655760405162461bcd60e51b8152600401610a0690611610565b5090565b6000610a3a838363ffffffff61112616565b6000600160ff1b8210610a655760405162461bcd60e51b8152600401610a0690611754565b8115610d955760405163df5e9b2960e01b81526001600160a01b0386169063df5e9b2990610ad29087906004016114fd565b60206040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2291906112fb565b610be9576040516304e3532760e41b81526001600160a01b03861690634e35327090610b529087906004016114fd565b600060405180830381600087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b505060405163ea0ee55960e01b81526001600160a01b038816925063ea0ee5599150610bb29087908790600401611511565b600060405180830381600087803b158015610bcc57600080fd5b505af1158015610be0573d6000803e3d6000fd5b50505050610ccc565b604051637d96659360e01b81526001600160a01b03861690637d96659390610c179087908790600401611511565b60206040518083038186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6791906112fb565b610ccc5760405163ea0ee55960e01b81526001600160a01b0386169063ea0ee55990610c999087908790600401611511565b600060405180830381600087803b158015610cb357600080fd5b505af1158015610cc7573d6000803e3d6000fd5b505050505b6040516363a90fc160e01b81526001600160a01b038616906363a90fc190610cfc90879087908790600401611560565b600060405180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b50506040516326898fe160e01b81526001600160a01b03881692506326898fe19150610d5e9087908790869060040161152b565b600060405180830381600087803b158015610d7857600080fd5b505af1158015610d8c573d6000803e3d6000fd5b50505050611052565b805115610db45760405162461bcd60e51b8152600401610a069061171d565b6040516308bafae960e21b81526001600160a01b038616906322ebeba490610de29087908790600401611511565b60206040518083038186803b158015610dfa57600080fd5b505afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e32919061147f565b156110525760405163a7bdad0360e01b81526060906001600160a01b0387169063a7bdad0390610e669088906004016114fd565b60006040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eba9190810190611250565b6040516366cb8d2f60e01b81529091506001600160a01b038716906366cb8d2f90610ee99088906004016114fd565b60206040518083038186803b158015610f0157600080fd5b505afa158015610f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f39919061147f565b158015610f47575080516001145b15610ff057836001600160a01b031681600081518110610f6357fe5b60200260200101516001600160a01b031614610f915760405162461bcd60e51b8152600401610a0690611645565b604051636f86c89760e01b81526001600160a01b03871690636f86c89790610fbd9088906004016114fd565b600060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050505b60405163acf3f07760e01b81526001600160a01b0387169063acf3f0779061101e9088908890600401611511565b600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b50505050505b5050505050565b801561055e57606082826040516024016110749291906115ab565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f0332906110d09087906000908690600401611584565b600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104959190810190611317565b6000610a3a670de0b6b3a7640000611144858563ffffffff61115016565b9063ffffffff61118a16565b60008261115f57506000610a3d565b8282028284828161116c57fe5b0414610a3a5760405162461bcd60e51b8152600401610a0690611695565b6000610a3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836111e85760405162461bcd60e51b8152600401610a0691906115fd565b5060008385816111f457fe5b0495945050505050565b8051610a3d816117ef565b60006020828403121561121a578081fd5b8135610a3a816117ef565b60008060408385031215611237578081fd5b8235611242816117ef565b946020939093013593505050565b60006020808385031215611262578182fd5b825167ffffffffffffffff80821115611279578384fd5b81850186601f82011261128a578485fd5b805192508183111561129a578485fd5b83830291506112aa84830161179c565b8381528481019082860184840187018a10156112c4578788fd5b8794505b858510156112ee576112da8a826111fe565b8352600194909401939186019186016112c8565b5098975050505050505050565b60006020828403121561130c578081fd5b8151610a3a81611807565b600060208284031215611328578081fd5b815167ffffffffffffffff8082111561133f578283fd5b81840185601f820112611350578384fd5b8051925081831115611360578384fd5b611373601f8401601f191660200161179c565b9150828252856020848301011115611389578384fd5b61139a8360208401602084016117c3565b50949350505050565b600080604083850312156113b5578182fd5b82356113c0816117ef565b915060208301356113d0816117ef565b809150509250929050565b6000806000606084860312156113ef578081fd5b83356113fa816117ef565b9250602084013561140a816117ef565b929592945050506040919091013590565b60008060408385031215611237578182fd5b60008060008060808587031215611442578081fd5b843561144d816117ef565b9350602085013592506040850135611464816117ef565b9150606085013561147481611807565b939692955090935050565b600060208284031215611490578081fd5b5051919050565b6000815180845260208085019450808401835b838110156114c6578151875295820195908201906001016114aa565b509495945050505050565b600081518084526114e98160208601602086016117c3565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03848116825283166020820152606060408201819052600090611557908301846114d1565b95945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060018060a01b03851682528360208301526060604083015261155760608301846114d1565b6001600160a01b03929092168252602082015260400190565b6000604082526115d76040830185611497565b82810360208401526115578185611497565b901515815260200190565b90815260200190565b600060208252610a3a60208301846114d1565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526030908201527f45787465726e616c20706f736974696f6e73206d757374206265203020746f2060408201526f1c995b5bdd994818dbdb5c1bdb995b9d60821b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526018908201527f5061737365642064617461206d757374206265206e756c6c0000000000000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60405181810167ffffffffffffffff811182821017156117bb57600080fd5b604052919050565b60005b838110156117de5781810151838201526020016117c6565b8381111561055e5750506000910152565b6001600160a01b038116811461180457600080fd5b50565b801515811461180457600080fdfea264697066735822122083882f36b0630f0db622aedb5ac885760155e86f5fd8c4056a775beeb908758764736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063847ef08d116100a2578063c137f4d711610071578063c137f4d7146101fa578063c153dd071461020d578063d23cd56414610220578063f77c479114610241578063fc62d9fe146102495761010b565b8063847ef08d146101b7578063a2241a41146101bf578063b0814851146101d2578063b86d5298146101e55761010b565b8063485cc955116100de578063485cc9551461017657806354e7dd3e146101895780635dbbf000146101915780636a283d51146101a45761010b565b806302309013146101105780630fb96b211461012e5780631f691294146101435780633fe6106b14610163575b600080fd5b61011861025c565b60405161012591906115e9565b60405180910390f35b61014161013c36600461142d565b61026c565b005b610156610151366004611209565b6103a6565b60405161012591906115f4565b61014161017136600461141b565b6103b8565b6101416101843660046113a3565b6103cf565b61011861049d565b61015661019f366004611209565b6104ad565b6101416101b23660046113db565b6104bf565b610141610500565b6101416101cd366004611225565b610564565b6101416101e0366004611225565b610580565b6101ed61059c565b60405161012591906114fd565b61014161020836600461142d565b6105ab565b61014161021b36600461141b565b610615565b61023361022e36600461141b565b61062c565b6040516101259291906115c4565b6101ed6107f8565b61023361025736600461141b565b610807565b600154600160a01b900460ff1681565b6000610306610301600019876001600160a01b03166322ebeba487306040518363ffffffff1660e01b81526004016102a5929190611511565b60206040518083038186803b1580156102bd57600080fd5b505afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f5919061147f565b9063ffffffff6109c616565b610a43565b9050600061031a858363ffffffff610a6916565b60405163a9059cbb60e01b81529091506001600160a01b0385169063a9059cbb9061034b90899085906004016115ab565b602060405180830381600087803b15801561036557600080fd5b505af1158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d91906112fb565b50505050505050565b60036020526000908152604090205481565b50506001805460ff60a81b1916600160a81b179055565b816001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b5050600180546001600160a01b0319166001600160a01b0385811691909117918290556040516306cd8db760e51b81529116925063d9b1b6e091506104679085906004016114fd565b600060405180830381600087803b15801561048157600080fd5b505af1158015610495573d6000803e3d6000fd5b505050505050565b600154600160a81b900460ff1681565b60026020526000908152604090205481565b6104fb82306104d36000196102f586610a7b565b6040805160208101909152600081526001600160a01b0388169392919063ffffffff610aa016565b505050565b600154604051630703ccb160e51b81526001600160a01b039091169063e0799620906105309033906004016114fd565b600060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b50505050565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b03909116600090815260036020526040902055565b6001546001600160a01b031681565b60006105e4610301600019876001600160a01b03166322ebeba487306040518363ffffffff1660e01b81526004016102a5929190611511565b905060006105f8858363ffffffff610a6916565b90506104956001600160a01b03871685308463ffffffff61105916565b50506001805460ff60a01b1916600160a01b179055565b6060806060846001600160a01b03166399d50d5d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a69190810190611250565b90506060815167ffffffffffffffff811180156106c257600080fd5b506040519080825280602002602001820160405280156106ec578160200160208202803683370190505b5090506060825167ffffffffffffffff8111801561070957600080fd5b50604051908082528060200260200182016040528015610733578160200160208202803683370190505b50905060005b83518110156107eb576002600085838151811061075257fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205483828151811061078757fe5b602002602001018181525050600360008583815181106107a357fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106107d857fe5b6020908102919091010152600101610739565b5090969095509350505050565b6000546001600160a01b031681565b6060806060846001600160a01b03166399d50d5d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561084557600080fd5b505afa158015610859573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108819190810190611250565b90506060815167ffffffffffffffff8111801561089d57600080fd5b506040519080825280602002602001820160405280156108c7578160200160208202803683370190505b5090506060825167ffffffffffffffff811180156108e457600080fd5b5060405190808252806020026020018201604052801561090e578160200160208202803683370190505b50905060005b83518110156107eb576002600085838151811061092d57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205483828151811061096257fe5b6020026020010181815250506003600085838151811061097e57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106109b357fe5b6020908102919091010152600101610914565b6000826109d557506000610a3d565b826000191480156109e95750600160ff1b82145b15610a0f5760405162461bcd60e51b8152600401610a06906116d6565b60405180910390fd5b82820282848281610a1c57fe5b0514610a3a5760405162461bcd60e51b8152600401610a06906116d6565b90505b92915050565b600080821215610a655760405162461bcd60e51b8152600401610a0690611610565b5090565b6000610a3a838363ffffffff61112616565b6000600160ff1b8210610a655760405162461bcd60e51b8152600401610a0690611754565b8115610d955760405163df5e9b2960e01b81526001600160a01b0386169063df5e9b2990610ad29087906004016114fd565b60206040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2291906112fb565b610be9576040516304e3532760e41b81526001600160a01b03861690634e35327090610b529087906004016114fd565b600060405180830381600087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b505060405163ea0ee55960e01b81526001600160a01b038816925063ea0ee5599150610bb29087908790600401611511565b600060405180830381600087803b158015610bcc57600080fd5b505af1158015610be0573d6000803e3d6000fd5b50505050610ccc565b604051637d96659360e01b81526001600160a01b03861690637d96659390610c179087908790600401611511565b60206040518083038186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6791906112fb565b610ccc5760405163ea0ee55960e01b81526001600160a01b0386169063ea0ee55990610c999087908790600401611511565b600060405180830381600087803b158015610cb357600080fd5b505af1158015610cc7573d6000803e3d6000fd5b505050505b6040516363a90fc160e01b81526001600160a01b038616906363a90fc190610cfc90879087908790600401611560565b600060405180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b50506040516326898fe160e01b81526001600160a01b03881692506326898fe19150610d5e9087908790869060040161152b565b600060405180830381600087803b158015610d7857600080fd5b505af1158015610d8c573d6000803e3d6000fd5b50505050611052565b805115610db45760405162461bcd60e51b8152600401610a069061171d565b6040516308bafae960e21b81526001600160a01b038616906322ebeba490610de29087908790600401611511565b60206040518083038186803b158015610dfa57600080fd5b505afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e32919061147f565b156110525760405163a7bdad0360e01b81526060906001600160a01b0387169063a7bdad0390610e669088906004016114fd565b60006040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eba9190810190611250565b6040516366cb8d2f60e01b81529091506001600160a01b038716906366cb8d2f90610ee99088906004016114fd565b60206040518083038186803b158015610f0157600080fd5b505afa158015610f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f39919061147f565b158015610f47575080516001145b15610ff057836001600160a01b031681600081518110610f6357fe5b60200260200101516001600160a01b031614610f915760405162461bcd60e51b8152600401610a0690611645565b604051636f86c89760e01b81526001600160a01b03871690636f86c89790610fbd9088906004016114fd565b600060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b505050505b60405163acf3f07760e01b81526001600160a01b0387169063acf3f0779061101e9088908890600401611511565b600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b50505050505b5050505050565b801561055e57606082826040516024016110749291906115ab565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f0332906110d09087906000908690600401611584565b600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104959190810190611317565b6000610a3a670de0b6b3a7640000611144858563ffffffff61115016565b9063ffffffff61118a16565b60008261115f57506000610a3d565b8282028284828161116c57fe5b0414610a3a5760405162461bcd60e51b8152600401610a0690611695565b6000610a3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836111e85760405162461bcd60e51b8152600401610a0691906115fd565b5060008385816111f457fe5b0495945050505050565b8051610a3d816117ef565b60006020828403121561121a578081fd5b8135610a3a816117ef565b60008060408385031215611237578081fd5b8235611242816117ef565b946020939093013593505050565b60006020808385031215611262578182fd5b825167ffffffffffffffff80821115611279578384fd5b81850186601f82011261128a578485fd5b805192508183111561129a578485fd5b83830291506112aa84830161179c565b8381528481019082860184840187018a10156112c4578788fd5b8794505b858510156112ee576112da8a826111fe565b8352600194909401939186019186016112c8565b5098975050505050505050565b60006020828403121561130c578081fd5b8151610a3a81611807565b600060208284031215611328578081fd5b815167ffffffffffffffff8082111561133f578283fd5b81840185601f820112611350578384fd5b8051925081831115611360578384fd5b611373601f8401601f191660200161179c565b9150828252856020848301011115611389578384fd5b61139a8360208401602084016117c3565b50949350505050565b600080604083850312156113b5578182fd5b82356113c0816117ef565b915060208301356113d0816117ef565b809150509250929050565b6000806000606084860312156113ef578081fd5b83356113fa816117ef565b9250602084013561140a816117ef565b929592945050506040919091013590565b60008060408385031215611237578182fd5b60008060008060808587031215611442578081fd5b843561144d816117ef565b9350602085013592506040850135611464816117ef565b9150606085013561147481611807565b939692955090935050565b600060208284031215611490578081fd5b5051919050565b6000815180845260208085019450808401835b838110156114c6578151875295820195908201906001016114aa565b509495945050505050565b600081518084526114e98160208601602086016117c3565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03848116825283166020820152606060408201819052600090611557908301846114d1565b95945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060018060a01b03851682528360208301526060604083015261155760608301846114d1565b6001600160a01b03929092168252602082015260400190565b6000604082526115d76040830185611497565b82810360208401526115578185611497565b901515815260200190565b90815260200190565b600060208252610a3a60208301846114d1565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526030908201527f45787465726e616c20706f736974696f6e73206d757374206265203020746f2060408201526f1c995b5bdd994818dbdb5c1bdb995b9d60821b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b60208082526018908201527f5061737365642064617461206d757374206265206e756c6c0000000000000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60405181810167ffffffffffffffff811182821017156117bb57600080fd5b604052919050565b60005b838110156117de5781810151838201526020016117c6565b8381111561055e5750506000910152565b6001600160a01b038116811461180457600080fd5b50565b801515811461180457600080fdfea264697066735822122083882f36b0630f0db622aedb5ac885760155e86f5fd8c4056a775beeb908758764736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
