{
  "_format": "hh-sol-artifact-1",
  "contractName": "WrapModule",
  "sourceName": "contracts/protocol/modules/v1/WrapModule.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IController",
          "name": "_controller",
          "type": "address"
        },
        {
          "internalType": "contract IWETH",
          "name": "_weth",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_underlyingToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_wrappedToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_underlyingQuantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_wrappedQuantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_integrationName",
          "type": "string"
        }
      ],
      "name": "ComponentUnwrapped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_underlyingToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_wrappedToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_underlyingQuantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_wrappedQuantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_integrationName",
          "type": "string"
        }
      ],
      "name": "ComponentWrapped",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "controller",
      "outputs": [
        {
          "internalType": "contract IController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "removeModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_underlyingToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_wrappedToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_wrappedUnits",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_integrationName",
          "type": "string"
        }
      ],
      "name": "unwrap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_wrappedToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_wrappedUnits",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_integrationName",
          "type": "string"
        }
      ],
      "name": "unwrapWithEther",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "weth",
      "outputs": [
        {
          "internalType": "contract IWETH",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_underlyingToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_wrappedToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_underlyingUnits",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_integrationName",
          "type": "string"
        }
      ],
      "name": "wrap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_wrappedToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_underlyingUnits",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_integrationName",
          "type": "string"
        }
      ],
      "name": "wrapWithEther",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620021193803806200211983398101604081905262000034916200006a565b600080546001600160a01b039384166001600160a01b0319918216179091556001805560028054929093169116179055620000c1565b600080604083850312156200007d578182fd5b82516200008a81620000a8565b60208401519092506200009d81620000a8565b809150509250929050565b6001600160a01b0381168114620000be57600080fd5b50565b61204880620000d16000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638980d9e41161005b5780638980d9e4146100db578063c4d66de8146100ee578063f0f67dee14610101578063f77c47911461011457610088565b80631d9f11e61461008d5780633fc8cef3146100a25780635f470192146100c0578063847ef08d146100d3575b600080fd5b6100a061009b366004611b14565b61011c565b005b6100aa6101e4565b6040516100b79190611bc9565b60405180910390f35b6100a06100ce366004611a91565b6101f3565b6100a06102a6565b6100a06100e9366004611b14565b6102a8565b6100a06100fc366004611a75565b610351565b6100a061010f366004611a91565b610476565b6100aa610512565b600260015414156101485760405162461bcd60e51b815260040161013f90611f29565b60405180910390fd5b60026001558461015781610521565b600254600090819061017b90869086908b906001600160a01b03168b8b600161056f565b6002546040519294509092506001600160a01b03808a169291811691908b16907f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe906101ce90879087908c908c90611f69565b60405180910390a4505060018055505050505050565b6002546001600160a01b031681565b600260015414156102165760405162461bcd60e51b815260040161013f90611f29565b60026001558561022581610521565b60008061023885858b8b8b8b600061056f565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe85858a8a60405161028f9493929190611f69565b60405180910390a450506001805550505050505050565b565b600260015414156102cb5760405162461bcd60e51b815260040161013f90611f29565b6002600155846102da81610521565b60025460009081906102fe90869086908b906001600160a01b03168b8b6001610766565b6002546040519294509092506001600160a01b03808a169291811691908b16907f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e906101ce90879087908c908c90611f69565b803361035d82826109a7565b600054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec9061038d908690600401611bc9565b60206040518083038186803b1580156103a557600080fd5b505afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190611a1a565b6103f95760405162461bcd60e51b815260040161013f90611eaf565b610402836109d1565b61041e5760405162461bcd60e51b815260040161013f90611d08565b826001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b50505050505050565b600260015414156104995760405162461bcd60e51b815260040161013f90611f29565b6002600155856104a881610521565b6000806104bb85858b8b8b8b6000610766565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e85858a8a60405161028f9493929190611f69565b6000546001600160a01b031681565b61052b8133610a56565b6105475760405162461bcd60e51b815260040161013f90611ef2565b61055081610ae4565b61056c5760405162461bcd60e51b815260040161013f90611cc0565b50565b60008061057d878686610b98565b60008061058b898989610c28565b915091506000610612878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ce57600080fd5b505afa1580156105e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106069190611b85565b9063ffffffff610d3716565b905060006106558d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d5092505050565b90506106df8b8289610667578c6106d8565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a057600080fd5b505afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d891906118fb565b8c86610d67565b861561070657600254610706906001600160a01b038d81169116813163ffffffff610e8716565b6000806107148d8d8d610c28565b915091506107248d8d8885610f3c565b6107308d8c8784610f3c565b610740828763ffffffff61106216565b610750868363ffffffff61106216565b9750975050505050505097509795505050505050565b600080610774878786610b98565b600080610782898989610c28565b9150915060006107c5878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ce57600080fd5b905060006108088d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d5092505050565b9050861561083557600254610830906001600160a01b038d811691168463ffffffff6110a416565b6108d5565b604051636f3451ed60e11b81526000906001600160a01b0383169063de68a3da90610866908e908e90600401611bdd565b60206040518083038186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b691906118fb565b90506108d36001600160a01b038d168c838663ffffffff61111316565b505b61095d8b82896108e5578c610956565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561091e57600080fd5b505afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906118fb565b8c866111e2565b60008061096b8d8d8d610c28565b9150915061097b8d8d8885610f3c565b6109878d8c8784610f3c565b610997868363ffffffff61106216565b610750828763ffffffff61106216565b6109b18282610a56565b6109cd5760405162461bcd60e51b815260040161013f90611ef2565b5050565b6040516353bae5f760e01b81526000906001600160a01b038316906353bae5f790610a00903090600401611bc9565b60206040518083038186803b158015610a1857600080fd5b505afa158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a509190611a1a565b92915050565b6000816001600160a01b0316836001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9b57600080fd5b505afa158015610aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad391906118fb565b6001600160a01b0316149392505050565b60008054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec90610b15908590600401611bc9565b60206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b659190611a1a565b8015610a5057506040516335fc6c9f60e21b81526001600160a01b0383169063d7f1b27c90610a00903090600401611bc9565b60008111610bb85760405162461bcd60e51b815260040161013f90611d6e565b610bd16001600160a01b0384168363ffffffff61121716565b610bed5760405162461bcd60e51b815260040161013f90611c77565b610c076001600160a01b038416838363ffffffff61129e16565b610c235760405162461bcd60e51b815260040161013f90611e25565b505050565b6000806000846001600160a01b03166370a08231876040518263ffffffff1660e01b8152600401610c599190611bc9565b60206040518083038186803b158015610c7157600080fd5b505afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190611b85565b90506000846001600160a01b03166370a08231886040518263ffffffff1660e01b8152600401610cd99190611bc9565b60206040518083038186803b158015610cf157600080fd5b505afa158015610d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d299190611b85565b919791965090945050505050565b6000610d49838363ffffffff61132f16565b9392505050565b600080610d5c83611359565b9050610d4981611364565b6000806060866001600160a01b031663a22fe98e8787876040518463ffffffff1660e01b8152600401610d9c93929190611bf7565b60006040518083038186803b158015610db457600080fd5b505afa158015610dc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610df09190810190611917565b925092509250876001600160a01b0316638f6f03328484846040518463ffffffff1660e01b8152600401610e2693929190611c34565b600060405180830381600087803b158015610e4057600080fd5b505af1158015610e54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e7c9190810190611a3a565b505050505050505050565b6040805160048082526024820183526020820180516001600160e01b0316630d0e30db60e41b17905291516347b7819960e11b815290916001600160a01b03861691638f6f033291610edf9187918791879101611c34565b600060405180830381600087803b158015610ef957600080fd5b505af1158015610f0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f359190810190611a3a565b5050505050565b60006110468383610fc7886001600160a01b03166366cb8d2f896040518263ffffffff1660e01b8152600401610f729190611bc9565b60206040518083038186803b158015610f8a57600080fd5b505afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc29190611b85565b611421565b886001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100057600080fd5b505afa158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190611b85565b92919063ffffffff61144716565b9050610f356001600160a01b038616858363ffffffff61149616565b6000610d4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6060816040516024016110b79190611f60565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516347b7819960e11b81529091506001600160a01b03851690638f6f033290610edf9086906000908690600401611c34565b60608282604051602401611128929190611c1b565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f0332906111849087906000908690600401611c34565b600060405180830381600087803b15801561119e57600080fd5b505af11580156111b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111da9190810190611a3a565b505050505050565b6000806060866001600160a01b03166377b1aaf88787876040518463ffffffff1660e01b8152600401610d9c93929190611bf7565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b81526004016112469190611bc9565b60206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112969190611b85565b139392505050565b60006112a982611640565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f906112d5908790600401611bc9565b60206040518083038186803b1580156112ed57600080fd5b505afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190611b85565b1215949350505050565b6000610d49670de0b6b3a764000061134d858563ffffffff61166516565b9063ffffffff61169f16565b805160209091012090565b60008054819061137c906001600160a01b03166116e1565b6001600160a01b031663e6d642c530856040518363ffffffff1660e01b81526004016113a9929190611c1b565b60206040518083038186803b1580156113c157600080fd5b505afa1580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f991906118fb565b90506001600160a01b038116610a505760405162461bcd60e51b815260040161013f90611d3f565b6000808212156114435760405162461bcd60e51b815260040161013f90611daf565b5090565b60008061146a61145d848863ffffffff61132f16565b869063ffffffff61106216565b905061148c86611480868463ffffffff61106216565b9063ffffffff61176016565b9695505050505050565b60006114a28484611217565b9050801580156114b25750600082115b15611529576114c1848461177e565b611524576040516304e3532760e41b81526001600160a01b03851690634e353270906114f1908690600401611bc9565b600060405180830381600087803b15801561150b57600080fd5b505af115801561151f573d6000803e3d6000fd5b505050505b6115a6565b808015611534575081155b156115a657611543848461177e565b6115a657604051636f86c89760e01b81526001600160a01b03851690636f86c89790611573908690600401611bc9565b600060405180830381600087803b15801561158d57600080fd5b505af11580156115a1573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d17846115bf85611640565b6040518363ffffffff1660e01b81526004016115dc929190611c1b565b600060405180830381600087803b1580156115f657600080fd5b505af115801561160a573d6000803e3d6000fd5b5050505050505050565b600081848411156116385760405162461bcd60e51b815260040161013f9190611c64565b505050900390565b6000600160ff1b82106114435760405162461bcd60e51b815260040161013f90611e67565b60008261167457506000610a50565b8282028284828161168157fe5b0414610d495760405162461bcd60e51b815260040161013f90611de4565b6000610d4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061180a565b6040516373b2e76b60e11b81526000906001600160a01b0383169063e765ced690611710908490600401611f60565b60206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5091906118fb565b6000610d498261134d85670de0b6b3a764000063ffffffff61166516565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b81526004016117ad9190611bc9565b60006040518083038186803b1580156117c557600080fd5b505afa1580156117d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611801919081019061196f565b51119392505050565b6000818361182b5760405162461bcd60e51b815260040161013f9190611c64565b50600083858161183757fe5b0495945050505050565b8051610a5081611ffd565b600082601f83011261185c578081fd5b815167ffffffffffffffff811115611872578182fd5b611885601f8201601f1916602001611fa6565b915080825283602082850101111561189c57600080fd5b6118ad816020840160208601611fcd565b5092915050565b60008083601f8401126118c5578182fd5b50813567ffffffffffffffff8111156118dc578182fd5b6020830191508360208285010111156118f457600080fd5b9250929050565b60006020828403121561190c578081fd5b8151610d4981611ffd565b60008060006060848603121561192b578182fd5b835161193681611ffd565b60208501516040860151919450925067ffffffffffffffff811115611959578182fd5b6119658682870161184c565b9150509250925092565b60006020808385031215611981578182fd5b825167ffffffffffffffff80821115611998578384fd5b81850186601f8201126119a9578485fd5b80519250818311156119b9578485fd5b83830291506119c9848301611fa6565b8381528481019082860184840187018a10156119e3578788fd5b8794505b85851015611a0d576119f98a82611841565b8352600194909401939186019186016119e7565b5098975050505050505050565b600060208284031215611a2b578081fd5b81518015158114610d49578182fd5b600060208284031215611a4b578081fd5b815167ffffffffffffffff811115611a61578182fd5b611a6d8482850161184c565b949350505050565b600060208284031215611a86578081fd5b8135610d4981611ffd565b60008060008060008060a08789031215611aa9578182fd5b8635611ab481611ffd565b95506020870135611ac481611ffd565b94506040870135611ad481611ffd565b935060608701359250608087013567ffffffffffffffff811115611af6578283fd5b611b0289828a016118b4565b979a9699509497509295939492505050565b600080600080600060808688031215611b2b578081fd5b8535611b3681611ffd565b94506020860135611b4681611ffd565b935060408601359250606086013567ffffffffffffffff811115611b68578182fd5b611b74888289016118b4565b969995985093965092949392505050565b600060208284031215611b96578081fd5b5051919050565b60008151808452611bb5816020860160208601611fcd565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038516825283602083015260606040830152611c5b6060830184611b9d565b95945050505050565b600060208252610d496020830184611b9d565b60208082526029908201527f5461726765742064656661756c7420706f736974696f6e206d7573742062652060408201526818dbdb5c1bdb995b9d60ba1b606082015260800190565b60208082526028908201527f4d75737420626520612076616c696420616e6420696e697469616c697a65642060408201526729b2ba2a37b5b2b760c11b606082015260800190565b6020808252601e908201527f4d7573742062652070656e64696e6720696e697469616c697a6174696f6e0000604082015260600190565b60208082526015908201527426bab9ba103132903b30b634b21030b230b83a32b960591b604082015260600190565b60208082526021908201527f54617267657420706f736974696f6e20756e697473206d757374206265203e206040820152600360fc1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f556e69742063616e742062652067726561746572207468616e206578697374696040820152616e6760f01b606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526023908201527f4d75737420626520636f6e74726f6c6c65722d656e61626c656420536574546f60408201526235b2b760e91b606082015260800190565b6020808252601c908201527f4d7573742062652074686520536574546f6b656e206d616e6167657200000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b60005b83811015611fe8578181015183820152602001611fd0565b83811115611ff7576000848401525b50505050565b6001600160a01b038116811461056c57600080fdfea264697066735822122005cb89aa90d2eca194bcb86d9be7a1015e9a2addc3a335f6ae7d8520c947e95064736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638980d9e41161005b5780638980d9e4146100db578063c4d66de8146100ee578063f0f67dee14610101578063f77c47911461011457610088565b80631d9f11e61461008d5780633fc8cef3146100a25780635f470192146100c0578063847ef08d146100d3575b600080fd5b6100a061009b366004611b14565b61011c565b005b6100aa6101e4565b6040516100b79190611bc9565b60405180910390f35b6100a06100ce366004611a91565b6101f3565b6100a06102a6565b6100a06100e9366004611b14565b6102a8565b6100a06100fc366004611a75565b610351565b6100a061010f366004611a91565b610476565b6100aa610512565b600260015414156101485760405162461bcd60e51b815260040161013f90611f29565b60405180910390fd5b60026001558461015781610521565b600254600090819061017b90869086908b906001600160a01b03168b8b600161056f565b6002546040519294509092506001600160a01b03808a169291811691908b16907f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe906101ce90879087908c908c90611f69565b60405180910390a4505060018055505050505050565b6002546001600160a01b031681565b600260015414156102165760405162461bcd60e51b815260040161013f90611f29565b60026001558561022581610521565b60008061023885858b8b8b8b600061056f565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe85858a8a60405161028f9493929190611f69565b60405180910390a450506001805550505050505050565b565b600260015414156102cb5760405162461bcd60e51b815260040161013f90611f29565b6002600155846102da81610521565b60025460009081906102fe90869086908b906001600160a01b03168b8b6001610766565b6002546040519294509092506001600160a01b03808a169291811691908b16907f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e906101ce90879087908c908c90611f69565b803361035d82826109a7565b600054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec9061038d908690600401611bc9565b60206040518083038186803b1580156103a557600080fd5b505afa1580156103b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dd9190611a1a565b6103f95760405162461bcd60e51b815260040161013f90611eaf565b610402836109d1565b61041e5760405162461bcd60e51b815260040161013f90611d08565b826001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b50505050505050565b600260015414156104995760405162461bcd60e51b815260040161013f90611f29565b6002600155856104a881610521565b6000806104bb85858b8b8b8b6000610766565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e85858a8a60405161028f9493929190611f69565b6000546001600160a01b031681565b61052b8133610a56565b6105475760405162461bcd60e51b815260040161013f90611ef2565b61055081610ae4565b61056c5760405162461bcd60e51b815260040161013f90611cc0565b50565b60008061057d878686610b98565b60008061058b898989610c28565b915091506000610612878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ce57600080fd5b505afa1580156105e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106069190611b85565b9063ffffffff610d3716565b905060006106558d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d5092505050565b90506106df8b8289610667578c6106d8565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a057600080fd5b505afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d891906118fb565b8c86610d67565b861561070657600254610706906001600160a01b038d81169116813163ffffffff610e8716565b6000806107148d8d8d610c28565b915091506107248d8d8885610f3c565b6107308d8c8784610f3c565b610740828763ffffffff61106216565b610750868363ffffffff61106216565b9750975050505050505097509795505050505050565b600080610774878786610b98565b600080610782898989610c28565b9150915060006107c5878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ce57600080fd5b905060006108088d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d5092505050565b9050861561083557600254610830906001600160a01b038d811691168463ffffffff6110a416565b6108d5565b604051636f3451ed60e11b81526000906001600160a01b0383169063de68a3da90610866908e908e90600401611bdd565b60206040518083038186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b691906118fb565b90506108d36001600160a01b038d168c838663ffffffff61111316565b505b61095d8b82896108e5578c610956565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561091e57600080fd5b505afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906118fb565b8c866111e2565b60008061096b8d8d8d610c28565b9150915061097b8d8d8885610f3c565b6109878d8c8784610f3c565b610997868363ffffffff61106216565b610750828763ffffffff61106216565b6109b18282610a56565b6109cd5760405162461bcd60e51b815260040161013f90611ef2565b5050565b6040516353bae5f760e01b81526000906001600160a01b038316906353bae5f790610a00903090600401611bc9565b60206040518083038186803b158015610a1857600080fd5b505afa158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a509190611a1a565b92915050565b6000816001600160a01b0316836001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9b57600080fd5b505afa158015610aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad391906118fb565b6001600160a01b0316149392505050565b60008054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec90610b15908590600401611bc9565b60206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b659190611a1a565b8015610a5057506040516335fc6c9f60e21b81526001600160a01b0383169063d7f1b27c90610a00903090600401611bc9565b60008111610bb85760405162461bcd60e51b815260040161013f90611d6e565b610bd16001600160a01b0384168363ffffffff61121716565b610bed5760405162461bcd60e51b815260040161013f90611c77565b610c076001600160a01b038416838363ffffffff61129e16565b610c235760405162461bcd60e51b815260040161013f90611e25565b505050565b6000806000846001600160a01b03166370a08231876040518263ffffffff1660e01b8152600401610c599190611bc9565b60206040518083038186803b158015610c7157600080fd5b505afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190611b85565b90506000846001600160a01b03166370a08231886040518263ffffffff1660e01b8152600401610cd99190611bc9565b60206040518083038186803b158015610cf157600080fd5b505afa158015610d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d299190611b85565b919791965090945050505050565b6000610d49838363ffffffff61132f16565b9392505050565b600080610d5c83611359565b9050610d4981611364565b6000806060866001600160a01b031663a22fe98e8787876040518463ffffffff1660e01b8152600401610d9c93929190611bf7565b60006040518083038186803b158015610db457600080fd5b505afa158015610dc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610df09190810190611917565b925092509250876001600160a01b0316638f6f03328484846040518463ffffffff1660e01b8152600401610e2693929190611c34565b600060405180830381600087803b158015610e4057600080fd5b505af1158015610e54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e7c9190810190611a3a565b505050505050505050565b6040805160048082526024820183526020820180516001600160e01b0316630d0e30db60e41b17905291516347b7819960e11b815290916001600160a01b03861691638f6f033291610edf9187918791879101611c34565b600060405180830381600087803b158015610ef957600080fd5b505af1158015610f0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f359190810190611a3a565b5050505050565b60006110468383610fc7886001600160a01b03166366cb8d2f896040518263ffffffff1660e01b8152600401610f729190611bc9565b60206040518083038186803b158015610f8a57600080fd5b505afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc29190611b85565b611421565b886001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100057600080fd5b505afa158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190611b85565b92919063ffffffff61144716565b9050610f356001600160a01b038616858363ffffffff61149616565b6000610d4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6060816040516024016110b79190611f60565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516347b7819960e11b81529091506001600160a01b03851690638f6f033290610edf9086906000908690600401611c34565b60608282604051602401611128929190611c1b565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f0332906111849087906000908690600401611c34565b600060405180830381600087803b15801561119e57600080fd5b505af11580156111b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111da9190810190611a3a565b505050505050565b6000806060866001600160a01b03166377b1aaf88787876040518463ffffffff1660e01b8152600401610d9c93929190611bf7565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b81526004016112469190611bc9565b60206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112969190611b85565b139392505050565b60006112a982611640565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f906112d5908790600401611bc9565b60206040518083038186803b1580156112ed57600080fd5b505afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190611b85565b1215949350505050565b6000610d49670de0b6b3a764000061134d858563ffffffff61166516565b9063ffffffff61169f16565b805160209091012090565b60008054819061137c906001600160a01b03166116e1565b6001600160a01b031663e6d642c530856040518363ffffffff1660e01b81526004016113a9929190611c1b565b60206040518083038186803b1580156113c157600080fd5b505afa1580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f991906118fb565b90506001600160a01b038116610a505760405162461bcd60e51b815260040161013f90611d3f565b6000808212156114435760405162461bcd60e51b815260040161013f90611daf565b5090565b60008061146a61145d848863ffffffff61132f16565b869063ffffffff61106216565b905061148c86611480868463ffffffff61106216565b9063ffffffff61176016565b9695505050505050565b60006114a28484611217565b9050801580156114b25750600082115b15611529576114c1848461177e565b611524576040516304e3532760e41b81526001600160a01b03851690634e353270906114f1908690600401611bc9565b600060405180830381600087803b15801561150b57600080fd5b505af115801561151f573d6000803e3d6000fd5b505050505b6115a6565b808015611534575081155b156115a657611543848461177e565b6115a657604051636f86c89760e01b81526001600160a01b03851690636f86c89790611573908690600401611bc9565b600060405180830381600087803b15801561158d57600080fd5b505af11580156115a1573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d17846115bf85611640565b6040518363ffffffff1660e01b81526004016115dc929190611c1b565b600060405180830381600087803b1580156115f657600080fd5b505af115801561160a573d6000803e3d6000fd5b5050505050505050565b600081848411156116385760405162461bcd60e51b815260040161013f9190611c64565b505050900390565b6000600160ff1b82106114435760405162461bcd60e51b815260040161013f90611e67565b60008261167457506000610a50565b8282028284828161168157fe5b0414610d495760405162461bcd60e51b815260040161013f90611de4565b6000610d4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061180a565b6040516373b2e76b60e11b81526000906001600160a01b0383169063e765ced690611710908490600401611f60565b60206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5091906118fb565b6000610d498261134d85670de0b6b3a764000063ffffffff61166516565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b81526004016117ad9190611bc9565b60006040518083038186803b1580156117c557600080fd5b505afa1580156117d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611801919081019061196f565b51119392505050565b6000818361182b5760405162461bcd60e51b815260040161013f9190611c64565b50600083858161183757fe5b0495945050505050565b8051610a5081611ffd565b600082601f83011261185c578081fd5b815167ffffffffffffffff811115611872578182fd5b611885601f8201601f1916602001611fa6565b915080825283602082850101111561189c57600080fd5b6118ad816020840160208601611fcd565b5092915050565b60008083601f8401126118c5578182fd5b50813567ffffffffffffffff8111156118dc578182fd5b6020830191508360208285010111156118f457600080fd5b9250929050565b60006020828403121561190c578081fd5b8151610d4981611ffd565b60008060006060848603121561192b578182fd5b835161193681611ffd565b60208501516040860151919450925067ffffffffffffffff811115611959578182fd5b6119658682870161184c565b9150509250925092565b60006020808385031215611981578182fd5b825167ffffffffffffffff80821115611998578384fd5b81850186601f8201126119a9578485fd5b80519250818311156119b9578485fd5b83830291506119c9848301611fa6565b8381528481019082860184840187018a10156119e3578788fd5b8794505b85851015611a0d576119f98a82611841565b8352600194909401939186019186016119e7565b5098975050505050505050565b600060208284031215611a2b578081fd5b81518015158114610d49578182fd5b600060208284031215611a4b578081fd5b815167ffffffffffffffff811115611a61578182fd5b611a6d8482850161184c565b949350505050565b600060208284031215611a86578081fd5b8135610d4981611ffd565b60008060008060008060a08789031215611aa9578182fd5b8635611ab481611ffd565b95506020870135611ac481611ffd565b94506040870135611ad481611ffd565b935060608701359250608087013567ffffffffffffffff811115611af6578283fd5b611b0289828a016118b4565b979a9699509497509295939492505050565b600080600080600060808688031215611b2b578081fd5b8535611b3681611ffd565b94506020860135611b4681611ffd565b935060408601359250606086013567ffffffffffffffff811115611b68578182fd5b611b74888289016118b4565b969995985093965092949392505050565b600060208284031215611b96578081fd5b5051919050565b60008151808452611bb5816020860160208601611fcd565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038516825283602083015260606040830152611c5b6060830184611b9d565b95945050505050565b600060208252610d496020830184611b9d565b60208082526029908201527f5461726765742064656661756c7420706f736974696f6e206d7573742062652060408201526818dbdb5c1bdb995b9d60ba1b606082015260800190565b60208082526028908201527f4d75737420626520612076616c696420616e6420696e697469616c697a65642060408201526729b2ba2a37b5b2b760c11b606082015260800190565b6020808252601e908201527f4d7573742062652070656e64696e6720696e697469616c697a6174696f6e0000604082015260600190565b60208082526015908201527426bab9ba103132903b30b634b21030b230b83a32b960591b604082015260600190565b60208082526021908201527f54617267657420706f736974696f6e20756e697473206d757374206265203e206040820152600360fc1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f556e69742063616e742062652067726561746572207468616e206578697374696040820152616e6760f01b606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526023908201527f4d75737420626520636f6e74726f6c6c65722d656e61626c656420536574546f60408201526235b2b760e91b606082015260800190565b6020808252601c908201527f4d7573742062652074686520536574546f6b656e206d616e6167657200000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b60005b83811015611fe8578181015183820152602001611fd0565b83811115611ff7576000848401525b50505050565b6001600160a01b038116811461056c57600080fdfea264697066735822122005cb89aa90d2eca194bcb86d9be7a1015e9a2addc3a335f6ae7d8520c947e95064736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
