{
  "_format": "hh-sol-artifact-1",
  "contractName": "DebtCapLens",
  "sourceName": "contracts/Dependencies_v0_8/DebtCapLens.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "activePool",
      "outputs": [
        {
          "internalType": "contract IActivePool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "calculateAllDebtPerCollateral",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "collaterals",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "debts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startVaultIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endVaultIndex",
          "type": "uint256"
        }
      ],
      "name": "calculateDebtPerCollateralPerVaultRange",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "collaterals",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "debts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "baseDebt",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "collateralAmount",
          "type": "uint256"
        }
      ],
      "name": "calculateTotalDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalDebt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowingFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "variableFee",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "controller",
      "outputs": [
        {
          "internalType": "contract IVaultedgeController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "debtCapManager",
      "outputs": [
        {
          "internalType": "contract IDebtCapManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllCollateralDebtCapStatuses",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "debtCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentDebtOnManager",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentDebtActual",
              "type": "uint256"
            }
          ],
          "internalType": "struct DebtCapLens.CollateralDebtCapStatus[]",
          "name": "statuses",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSystemState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address[]",
              "name": "validCollateral",
              "type": "address[]"
            },
            {
              "internalType": "uint256",
              "name": "totalVaults",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "collaterals",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "debts",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct DebtCapLens.SystemState",
          "name": "state",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getValidCollateral",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "validCollaterals",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getVaultFromVaultOwnersArray",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVaultOwnersCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalVaults",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "vault",
          "type": "address"
        }
      ],
      "name": "getVaultState",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "debt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vaultManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_controller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_activePool",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_debtCapManager",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vaultManager",
      "outputs": [
        {
          "internalType": "contract IVaultManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61189d806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d6aea0a1161008c578063cf80c37211610066578063cf80c37214610207578063f0da96c61461021d578063f77c479114610230578063f8c8765e1461024357600080fd5b80639d6aea0a146101ca578063aa550b4a146101df578063c0d52873146101f457600080fd5b80637c24fd77116100c85780637c24fd77146101505780637f7dde4a1461017e5780638a4adf24146101a95780639bfc799f146101c257600080fd5b806320ee1e44146100ef57806323dd57661461011a57806328fa777f1461013b575b600080fd5b6101026100fd366004611239565b610258565b604051610111939291906112d1565b60405180910390f35b61012d610128366004611307565b6102e6565b604051610111929190611329565b6101436102fe565b6040516101119190611357565b61016361015e3660046113b9565b610443565b60408051938452602084019290925290820152606001610111565b600254610191906001600160a01b031681565b6040516001600160a01b039091168152602001610111565b600054610191906201000090046001600160a01b031681565b61012d6107ce565b6101d2610859565b60405161011191906113f1565b6101e76108e9565b6040516101119190611404565b610191610202366004611471565b610ae5565b61020f610b5e565b604051908152602001610111565b600354610191906001600160a01b031681565b600154610191906001600160a01b031681565b61025661025136600461148a565b610bd6565b005b60008054604051633a1141eb60e01b81526001600160a01b038481166004830152606093849390926201000090910490911690633a1141eb90602401600060405180830381865afa1580156102b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102d99190810190611620565b9250925092509193909250565b6060806102f38484610d9b565b915091509250929050565b6103296040518060800160405280606081526020016000815260200160608152602001606081525090565b600160009054906101000a90046001600160a01b03166001600160a01b0316639d6aea0a6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561037c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103a4919081019061168d565b8160000181905250600060029054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042391906116ca565b6020820181905261043690600090610d9b565b6060830152604082015290565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b0316637d92c3bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf91906116ca565b6104c990876116f9565b6000546040517f477d66cf000000000000000000000000000000000000000000000000000000008152600481018990529194506201000090046001600160a01b03169063477d66cf90602401602060405180830381865afa158015610532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055691906116ca565b915061056282846116f9565b6001546040517f2e2b1a880000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905292955060009290911690632e2b1a8890604401602060405180830381865afa1580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f691906116ca565b90506000600260009054906101000a90046001600160a01b03166001600160a01b031663896a00896040518163ffffffff1660e01b8152600401600060405180830381865afa15801561064d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610675919081019061170c565b50506001546002546040517f3270a9e00000000000000000000000000000000000000000000000000000000081526001600160a01b038b8116600483015293945091831692630a561bea928b9287921690633270a9e090602401602060405180830381865afa1580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071091906116ca565b8561071b88826116f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482015260a401602060405180830381865afa158015610791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b591906116ca565b92506107c183866116f9565b9450505093509350939050565b60608061085160008060029054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084c91906116ca565b610d9b565b915091509091565b600154604080517f9d6aea0a00000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691639d6aea0a9160048083019260009291908290030181865afa1580156108bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108e4919081019061168d565b905090565b60606000806108f66107ce565b6003546040517f464abe6300000000000000000000000000000000000000000000000000000000815292945090925060009182916001600160a01b03169063464abe63906109489087906004016113f1565b600060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098d919081019061175c565b91509150835167ffffffffffffffff8111156109ab576109ab6114e6565b604051908082528060200260200182016040528015610a1057816020015b6109fd604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b8152602001906001900390816109c95790505b50945060005b8451811015610add576040518060800160405280868381518110610a3c57610a3c6117c0565b60200260200101516001600160a01b03168152602001838381518110610a6457610a646117c0565b60200260200101518152602001848381518110610a8357610a836117c0565b60200260200101518152602001858381518110610aa257610aa26117c0565b6020026020010151815250868281518110610abf57610abf6117c0565b60200260200101819052508080610ad5906117d6565b915050610a16565b505050505090565b6000805460405163c0d5287360e01b815260048101849052620100009091046001600160a01b03169063c0d5287390602401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5891906117ef565b92915050565b60008060029054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e491906116ca565b600054610100900460ff1615808015610bf65750600054600160ff909116105b80610c105750303b158015610c10575060005460ff166001145b610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b6000805460ff191660011790558015610cc3576000805461ff0019166101001790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b038881169190910291909117909155600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811687841617909155600280548216868416179055600380549091169184169190911790558015610d94576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6060806000610da8610859565b9050809250805167ffffffffffffffff811115610dc757610dc76114e6565b604051908082528060200260200182016040528015610df0578160200160208202803683370190505b509150845b84811015611218576000805460405163c0d5287360e01b815260048101849052620100009091046001600160a01b03169063c0d5287390602401602060405180830381865afa158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7091906117ef565b6000546040517f0c5aed570000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301529293506201000090910490911690630c5aed5790602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f01919061180c565b610f0b5750611206565b60008054604051633a1141eb60e01b81526001600160a01b038481166004830152839283926201000090910490911690633a1141eb90602401600060405180830381865afa158015610f61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f899190810190611620565b92509250925080600003610fa05750505050611206565b600080845167ffffffffffffffff811115610fbd57610fbd6114e6565b604051908082528060200260200182016040528015610fe6578160200160208202803683370190505b50905060005b85518110156111095760015486516001600160a01b0390911690632e2b1a889088908490811061101e5761101e6117c0565b6020026020010151878481518110611038576110386117c0565b60200260200101516040518363ffffffff1660e01b81526004016110719291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b291906116ca565b8282815181106110c4576110c46117c0565b6020026020010181815250508181815181106110e2576110e26117c0565b6020026020010151836110f591906116f9565b925080611101816117d6565b915050610fec565b5081156111ff5760005b85518110156111fd57600083838381518110611131576111316117c0565b602002602001015186611144919061182e565b61114e9190611845565b905060005b8c518110156111e85787838151811061116e5761116e6117c0565b60200260200101516001600160a01b03168d8281518110611191576111916117c0565b60200260200101516001600160a01b0316036111d657818c82815181106111ba576111ba6117c0565b602002602001018181516111ce91906116f9565b9052506111e8565b806111e0816117d6565b915050611153565b505080806111f5906117d6565b915050611113565b505b5050505050505b80611210816117d6565b915050610df5565b50509250929050565b6001600160a01b038116811461123657600080fd5b50565b60006020828403121561124b57600080fd5b813561125681611221565b9392505050565b600081518084526020808501945080840160005b838110156112965781516001600160a01b031687529582019590820190600101611271565b509495945050505050565b600081518084526020808501945080840160005b83811015611296578151875295820195908201906001016112b5565b6060815260006112e4606083018661125d565b82810360208401526112f681866112a1565b915050826040830152949350505050565b6000806040838503121561131a57600080fd5b50508035926020909101359150565b60408152600061133c604083018561125d565b828103602084015261134e81856112a1565b95945050505050565b60208152600082516080602084015261137360a084018261125d565b9050602084015160408401526040840151601f198085840301606086015261139b838361125d565b925060608601519150808584030160808601525061134e82826112a1565b6000806000606084860312156113ce57600080fd5b8335925060208401356113e081611221565b929592945050506040919091013590565b602081526000611256602083018461125d565b602080825282518282018190526000919060409081850190868401855b8281101561146457815180516001600160a01b03168552868101518786015285810151868601526060908101519085015260809093019290850190600101611421565b5091979650505050505050565b60006020828403121561148357600080fd5b5035919050565b600080600080608085870312156114a057600080fd5b84356114ab81611221565b935060208501356114bb81611221565b925060408501356114cb81611221565b915060608501356114db81611221565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611525576115256114e6565b604052919050565b600067ffffffffffffffff821115611547576115476114e6565b5060051b60200190565b600082601f83011261156257600080fd5b815160206115776115728361152d565b6114fc565b82815260059290921b8401810191818101908684111561159657600080fd5b8286015b848110156115ba5780516115ad81611221565b835291830191830161159a565b509695505050505050565b600082601f8301126115d657600080fd5b815160206115e66115728361152d565b82815260059290921b8401810191818101908684111561160557600080fd5b8286015b848110156115ba5780518352918301918301611609565b60008060006060848603121561163557600080fd5b835167ffffffffffffffff8082111561164d57600080fd5b61165987838801611551565b9450602086015191508082111561166f57600080fd5b5061167c868287016115c5565b925050604084015190509250925092565b60006020828403121561169f57600080fd5b815167ffffffffffffffff8111156116b657600080fd5b6116c284828501611551565b949350505050565b6000602082840312156116dc57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b5857610b586116e3565b60008060006060848603121561172157600080fd5b8351925060208401519150604084015167ffffffffffffffff81111561174657600080fd5b611752868287016115c5565b9150509250925092565b6000806040838503121561176f57600080fd5b825167ffffffffffffffff8082111561178757600080fd5b611793868387016115c5565b935060208501519150808211156117a957600080fd5b506117b6858286016115c5565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000600182016117e8576117e86116e3565b5060010190565b60006020828403121561180157600080fd5b815161125681611221565b60006020828403121561181e57600080fd5b8151801515811461125657600080fd5b8082028115828204841417610b5857610b586116e3565b60008261186257634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122050a987e2c2755994418052a504e9b86c8b1bcb08ccf29dd6ddde339eebee5f3b64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d6aea0a1161008c578063cf80c37211610066578063cf80c37214610207578063f0da96c61461021d578063f77c479114610230578063f8c8765e1461024357600080fd5b80639d6aea0a146101ca578063aa550b4a146101df578063c0d52873146101f457600080fd5b80637c24fd77116100c85780637c24fd77146101505780637f7dde4a1461017e5780638a4adf24146101a95780639bfc799f146101c257600080fd5b806320ee1e44146100ef57806323dd57661461011a57806328fa777f1461013b575b600080fd5b6101026100fd366004611239565b610258565b604051610111939291906112d1565b60405180910390f35b61012d610128366004611307565b6102e6565b604051610111929190611329565b6101436102fe565b6040516101119190611357565b61016361015e3660046113b9565b610443565b60408051938452602084019290925290820152606001610111565b600254610191906001600160a01b031681565b6040516001600160a01b039091168152602001610111565b600054610191906201000090046001600160a01b031681565b61012d6107ce565b6101d2610859565b60405161011191906113f1565b6101e76108e9565b6040516101119190611404565b610191610202366004611471565b610ae5565b61020f610b5e565b604051908152602001610111565b600354610191906001600160a01b031681565b600154610191906001600160a01b031681565b61025661025136600461148a565b610bd6565b005b60008054604051633a1141eb60e01b81526001600160a01b038481166004830152606093849390926201000090910490911690633a1141eb90602401600060405180830381865afa1580156102b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102d99190810190611620565b9250925092509193909250565b6060806102f38484610d9b565b915091509250929050565b6103296040518060800160405280606081526020016000815260200160608152602001606081525090565b600160009054906101000a90046001600160a01b03166001600160a01b0316639d6aea0a6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561037c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103a4919081019061168d565b8160000181905250600060029054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042391906116ca565b6020820181905261043690600090610d9b565b6060830152604082015290565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b0316637d92c3bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf91906116ca565b6104c990876116f9565b6000546040517f477d66cf000000000000000000000000000000000000000000000000000000008152600481018990529194506201000090046001600160a01b03169063477d66cf90602401602060405180830381865afa158015610532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055691906116ca565b915061056282846116f9565b6001546040517f2e2b1a880000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905292955060009290911690632e2b1a8890604401602060405180830381865afa1580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f691906116ca565b90506000600260009054906101000a90046001600160a01b03166001600160a01b031663896a00896040518163ffffffff1660e01b8152600401600060405180830381865afa15801561064d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610675919081019061170c565b50506001546002546040517f3270a9e00000000000000000000000000000000000000000000000000000000081526001600160a01b038b8116600483015293945091831692630a561bea928b9287921690633270a9e090602401602060405180830381865afa1580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071091906116ca565b8561071b88826116f9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482015260a401602060405180830381865afa158015610791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b591906116ca565b92506107c183866116f9565b9450505093509350939050565b60608061085160008060029054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084c91906116ca565b610d9b565b915091509091565b600154604080517f9d6aea0a00000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691639d6aea0a9160048083019260009291908290030181865afa1580156108bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108e4919081019061168d565b905090565b60606000806108f66107ce565b6003546040517f464abe6300000000000000000000000000000000000000000000000000000000815292945090925060009182916001600160a01b03169063464abe63906109489087906004016113f1565b600060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261098d919081019061175c565b91509150835167ffffffffffffffff8111156109ab576109ab6114e6565b604051908082528060200260200182016040528015610a1057816020015b6109fd604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b8152602001906001900390816109c95790505b50945060005b8451811015610add576040518060800160405280868381518110610a3c57610a3c6117c0565b60200260200101516001600160a01b03168152602001838381518110610a6457610a646117c0565b60200260200101518152602001848381518110610a8357610a836117c0565b60200260200101518152602001858381518110610aa257610aa26117c0565b6020026020010151815250868281518110610abf57610abf6117c0565b60200260200101819052508080610ad5906117d6565b915050610a16565b505050505090565b6000805460405163c0d5287360e01b815260048101849052620100009091046001600160a01b03169063c0d5287390602401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5891906117ef565b92915050565b60008060029054906101000a90046001600160a01b03166001600160a01b031663cf80c3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e491906116ca565b600054610100900460ff1615808015610bf65750600054600160ff909116105b80610c105750303b158015610c10575060005460ff166001145b610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b6000805460ff191660011790558015610cc3576000805461ff0019166101001790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b038881169190910291909117909155600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811687841617909155600280548216868416179055600380549091169184169190911790558015610d94576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6060806000610da8610859565b9050809250805167ffffffffffffffff811115610dc757610dc76114e6565b604051908082528060200260200182016040528015610df0578160200160208202803683370190505b509150845b84811015611218576000805460405163c0d5287360e01b815260048101849052620100009091046001600160a01b03169063c0d5287390602401602060405180830381865afa158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7091906117ef565b6000546040517f0c5aed570000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301529293506201000090910490911690630c5aed5790602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f01919061180c565b610f0b5750611206565b60008054604051633a1141eb60e01b81526001600160a01b038481166004830152839283926201000090910490911690633a1141eb90602401600060405180830381865afa158015610f61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f899190810190611620565b92509250925080600003610fa05750505050611206565b600080845167ffffffffffffffff811115610fbd57610fbd6114e6565b604051908082528060200260200182016040528015610fe6578160200160208202803683370190505b50905060005b85518110156111095760015486516001600160a01b0390911690632e2b1a889088908490811061101e5761101e6117c0565b6020026020010151878481518110611038576110386117c0565b60200260200101516040518363ffffffff1660e01b81526004016110719291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b291906116ca565b8282815181106110c4576110c46117c0565b6020026020010181815250508181815181106110e2576110e26117c0565b6020026020010151836110f591906116f9565b925080611101816117d6565b915050610fec565b5081156111ff5760005b85518110156111fd57600083838381518110611131576111316117c0565b602002602001015186611144919061182e565b61114e9190611845565b905060005b8c518110156111e85787838151811061116e5761116e6117c0565b60200260200101516001600160a01b03168d8281518110611191576111916117c0565b60200260200101516001600160a01b0316036111d657818c82815181106111ba576111ba6117c0565b602002602001018181516111ce91906116f9565b9052506111e8565b806111e0816117d6565b915050611153565b505080806111f5906117d6565b915050611113565b505b5050505050505b80611210816117d6565b915050610df5565b50509250929050565b6001600160a01b038116811461123657600080fd5b50565b60006020828403121561124b57600080fd5b813561125681611221565b9392505050565b600081518084526020808501945080840160005b838110156112965781516001600160a01b031687529582019590820190600101611271565b509495945050505050565b600081518084526020808501945080840160005b83811015611296578151875295820195908201906001016112b5565b6060815260006112e4606083018661125d565b82810360208401526112f681866112a1565b915050826040830152949350505050565b6000806040838503121561131a57600080fd5b50508035926020909101359150565b60408152600061133c604083018561125d565b828103602084015261134e81856112a1565b95945050505050565b60208152600082516080602084015261137360a084018261125d565b9050602084015160408401526040840151601f198085840301606086015261139b838361125d565b925060608601519150808584030160808601525061134e82826112a1565b6000806000606084860312156113ce57600080fd5b8335925060208401356113e081611221565b929592945050506040919091013590565b602081526000611256602083018461125d565b602080825282518282018190526000919060409081850190868401855b8281101561146457815180516001600160a01b03168552868101518786015285810151868601526060908101519085015260809093019290850190600101611421565b5091979650505050505050565b60006020828403121561148357600080fd5b5035919050565b600080600080608085870312156114a057600080fd5b84356114ab81611221565b935060208501356114bb81611221565b925060408501356114cb81611221565b915060608501356114db81611221565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611525576115256114e6565b604052919050565b600067ffffffffffffffff821115611547576115476114e6565b5060051b60200190565b600082601f83011261156257600080fd5b815160206115776115728361152d565b6114fc565b82815260059290921b8401810191818101908684111561159657600080fd5b8286015b848110156115ba5780516115ad81611221565b835291830191830161159a565b509695505050505050565b600082601f8301126115d657600080fd5b815160206115e66115728361152d565b82815260059290921b8401810191818101908684111561160557600080fd5b8286015b848110156115ba5780518352918301918301611609565b60008060006060848603121561163557600080fd5b835167ffffffffffffffff8082111561164d57600080fd5b61165987838801611551565b9450602086015191508082111561166f57600080fd5b5061167c868287016115c5565b925050604084015190509250925092565b60006020828403121561169f57600080fd5b815167ffffffffffffffff8111156116b657600080fd5b6116c284828501611551565b949350505050565b6000602082840312156116dc57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b5857610b586116e3565b60008060006060848603121561172157600080fd5b8351925060208401519150604084015167ffffffffffffffff81111561174657600080fd5b611752868287016115c5565b9150509250925092565b6000806040838503121561176f57600080fd5b825167ffffffffffffffff8082111561178757600080fd5b611793868387016115c5565b935060208501519150808211156117a957600080fd5b506117b6858286016115c5565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000600182016117e8576117e86116e3565b5060010190565b60006020828403121561180157600080fd5b815161125681611221565b60006020828403121561181e57600080fd5b8151801515811461125657600080fd5b8082028115828204841417610b5857610b586116e3565b60008261186257634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122050a987e2c2755994418052a504e9b86c8b1bcb08ccf29dd6ddde339eebee5f3b64736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
