{
  "_format": "hh-sol-artifact-1",
  "contractName": "PerpPortal",
  "sourceName": "contracts/lens/PerpPortal.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "clearingHouseArg",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clearingHouseConfigArg",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "accountBalanceArg",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "exchangeArg",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "orderBookArg",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "insuranceFundArg",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "marketRegistryArg",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "vaultArg",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "getAccountBalance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getAccountInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int256",
              "name": "takerPositionSize",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "takerOpenNotional",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lastTwPremiumGrowthGlobalX96",
              "type": "int256"
            }
          ],
          "internalType": "struct AccountMarket.Info",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getAccountValue",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getAllPendingFundingPayment",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getBalance",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getBase",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getBaseTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClearingHouse",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClearingHouseConfig",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExchange",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getFeeRatio",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getFreeCollateral",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "uint24",
          "name": "ratio",
          "type": "uint24"
        }
      ],
      "name": "getFreeCollateralByRatio",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getImRatio",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getInsuranceFund",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getInsuranceFundFeeRatio",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLiquidationPenaltyRatio",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getLiquidationPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "int256",
              "name": "twPremiumX96",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "twPremiumDivBySqrtPriceX96",
              "type": "int256"
            }
          ],
          "internalType": "struct Funding.Growth",
          "name": "fundingGrowthGlobal",
          "type": "tuple"
        }
      ],
      "name": "getLiquidityCoefficientInFundingPayment",
      "outputs": [
        {
          "internalType": "int256",
          "name": "liquidityCoefficientInFundingPayment",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getMarginRequirementForLiquidation",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getMarketInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "exchangeFeeRatio",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "uniswapFeeRatio",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "insuranceFundFeeRatio",
              "type": "uint24"
            }
          ],
          "internalType": "struct IMarketRegistry.MarketInfo",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMarketRegistry",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMaxFundingRate",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMaxMarketsPerAccount",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMaxOrdersPerMarket",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getMaxTickCrossedWithinBlock",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMmRatio",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "int24",
          "name": "lowerTick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "upperTick",
          "type": "int24"
        }
      ],
      "name": "getOpenOrder",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "int24",
              "name": "lowerTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "upperTick",
              "type": "int24"
            },
            {
              "internalType": "uint256",
              "name": "lastFeeGrowthInsideX128",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "lastTwPremiumGrowthInsideX96",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lastTwPremiumGrowthBelowX96",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lastTwPremiumDivBySqrtPriceGrowthInsideX96",
              "type": "int256"
            },
            {
              "internalType": "uint256",
              "name": "baseDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "quoteDebt",
              "type": "uint256"
            }
          ],
          "internalType": "struct OpenOrder.Info",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "orderId",
          "type": "bytes32"
        }
      ],
      "name": "getOpenOrderById",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "int24",
              "name": "lowerTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "upperTick",
              "type": "int24"
            },
            {
              "internalType": "uint256",
              "name": "lastFeeGrowthInsideX128",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "lastTwPremiumGrowthInsideX96",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lastTwPremiumGrowthBelowX96",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lastTwPremiumDivBySqrtPriceGrowthInsideX96",
              "type": "int256"
            },
            {
              "internalType": "uint256",
              "name": "baseDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "quoteDebt",
              "type": "uint256"
            }
          ],
          "internalType": "struct OpenOrder.Info",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getOpenOrderIds",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOrderBook",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPartialCloseRatio",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "int24",
          "name": "lowerTick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "upperTick",
          "type": "int24"
        }
      ],
      "name": "getPendingFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getPendingFundingPayment",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getPnlAndPendingFee",
      "outputs": [
        {
          "internalType": "int256",
          "name": "owedRealizedPnl",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "unrealizedPnl",
          "type": "int256"
        },
        {
          "internalType": "uint256",
          "name": "pendingFee",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "trader",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "baseToken",
              "type": "address"
            },
            {
              "internalType": "int256",
              "name": "base",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quote",
              "type": "int256"
            }
          ],
          "internalType": "struct IExchange.RealizePnlParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "getPnlToBeRealized",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getQuote",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getQuoteToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSettlementToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSettlementTokenBalanceCap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "twapInterval",
          "type": "uint32"
        }
      ],
      "name": "getSqrtMarkTwapX96",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "",
          "type": "uint160"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getTakerOpenNotional",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getTakerPositionSize",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getTotalAbsPositionValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "getTotalDebtValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getTotalOpenNotional",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "fetchBase",
          "type": "bool"
        }
      ],
      "name": "getTotalOrderDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getTotalPositionSize",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "getTotalPositionValue",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "baseTokens",
          "type": "address[]"
        }
      ],
      "name": "getTotalQuoteBalanceAndPendingFee",
      "outputs": [
        {
          "internalType": "int256",
          "name": "totalQuoteAmountInPools",
          "type": "int256"
        },
        {
          "internalType": "uint256",
          "name": "totalPendingFee",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "fetchBase",
          "type": "bool"
        }
      ],
      "name": "getTotalTokenAmountInPoolAndPendingFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalPendingFee",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTwapInterval",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getUniswapV3Factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVault",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        }
      ],
      "name": "hasOrder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        }
      ],
      "name": "hasOrder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        }
      ],
      "name": "hasPool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "orderId",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "base",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "quote",
          "type": "int256"
        }
      ],
      "name": "updateOrderDebt",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vaultDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620030bd380380620030bd8339810160408190526200003491620000e3565b600080546001600160a01b03199081166001600160a01b039a8b1617909155600180548216988a16989098179097556002805488169689169690961790955560038054871694881694909417909355600480548616928716929092179091556005805485169186169190911790556006805484169185169190911790556007805490921692169190911790556200018a565b80516001600160a01b0381168114620000de57600080fd5b919050565b600080600080600080600080610100898b03121562000100578384fd5b6200010b89620000c6565b97506200011b60208a01620000c6565b96506200012b60408a01620000c6565b95506200013b60608a01620000c6565b94506200014b60808a01620000c6565b93506200015b60a08a01620000c6565b92506200016b60c08a01620000c6565b91506200017b60e08a01620000c6565b90509295985092959890939650565b612f23806200019a6000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c806385eacc77116101f4578063bbe4f6db1161011a578063eaad2354116100ad578063f807cd221161007c578063f807cd22146107ca578063f8b2cb4f146107d2578063fb112d6c146107e5578063fedf924b146107f8576103af565b8063eaad235414610789578063ece090c41461079c578063edd0b5cb146107a4578063f75c266d146107b7576103af565b8063cb379aa2116100e9578063cb379aa21461073d578063cb3c7b8e14610750578063d0581a9314610763578063d50d01b714610776576103af565b8063bbe4f6db14610707578063c39994441461071a578063c575ff791461072d578063c66b8ed214610735576103af565b8063af74e73611610192578063b2e2714811610161578063b2e27148146106ac578063b3945690146106bf578063b3bd6e12146106d2578063bba85bcf146106e5576103af565b8063af74e73614610667578063b081983b14610687578063b0c041741461068f578063b248c4ef146106a4576103af565b80639d6179c3116101ce5780639d6179c31461062f578063a854940214610637578063aa2a82941461063f578063acf7182714610647576103af565b806385eacc771461060c5780638d928af81461061457806399e4a7711461061c576103af565b806347b52fb7116102d95780636896fabf11610277578063742833361161024657806374283336146105cb5780637a5b45a0146105d35780637c2b7c53146105e657806380f57f11146105f9576103af565b80636896fabf1461059557806368f12e121461059d5780636ccdc82e146105b05780636e1d2dd2146105c3576103af565b8063543ce73a116102b3578063543ce73a146105395780635ae80951146105415780635d8a541d146105545780636332fef614610575576103af565b806347b52fb71461050b5780634a64d67d1461051e5780634dffaee514610526576103af565b806329386b7b116103515780633e742e3b116103205780633e742e3b146104b05780633f935107146104c55780633ffd1303146104d8578063436933ea146104eb576103af565b806329386b7b1461046d578063293a5077146104805780632c47ccba1461049357806334ce998a146104a8576103af565b806312803c7d1161038d57806312803c7d1461041d5780631393a46914610432578063158626f7146104525780631867b4801461045a576103af565b806308ff49ad146103b45780630cf85bcc146103dd5780631246dbf5146103fd575b600080fd5b6103c76103c23660046123b1565b610800565b6040516103d49190612d90565b60405180910390f35b6103f06103eb3660046123b1565b610889565b6040516103d49190612d16565b61041061040b3660046123b1565b610911565b6040516103d49190612c0c565b610425610992565b6040516103d49190612a3d565b61044561044036600461296f565b610a14565b6040516103d49190612c17565b610425610a95565b6104456104683660046123e9565b610aa4565b6103c761047b3660046123b1565b610e99565b61044561048e3660046123b1565b610eca565b61049b610efb565b6040516103d49190612db1565b610445610f78565b6104b8610ff5565b6040516103d49190612da0565b6104456104d33660046123e9565b611072565b6104456104e63660046125c6565b6110fc565b6104fe6104f93660046123e9565b61112f565b6040516103d49190612bd4565b6104456105193660046124c6565b6111b7565b610425611245565b610410610534366004612544565b611294565b6103c761131a565b61044561054f3660046123b1565b611397565b610567610562366004612421565b6113c8565b6040516103d4929190612c36565b6105886105833660046123e9565b611459565b6040516103d49190612c7b565b6104256114e3565b6104456105ab3660046123e9565b6114f2565b6104456105be3660046123b1565b611525565b6103c7611556565b6103c761159b565b6104456105e13660046123e9565b6115e0565b6104456105f4366004612421565b611613565b6104456106073660046123b1565b611649565b61044561167a565b6104256116bf565b61042561062a3660046125f3565b6116ce565b61049b611751565b6103c7611796565b6104256117db565b61065a61065536600461275e565b6117ea565b6040516103d49190612c9c565b61067a6106753660046123b1565b611872565b6040516103d49190612b87565b6104256118f7565b6106a261069d366004612776565b611946565b005b6104256119b0565b6104456106ba3660046123e9565b6119bf565b6104456106cd3660046123e9565b6119f2565b6104456106e03660046123e9565b611a25565b6106f86106f33660046123b1565b611a58565b6040516103d493929190612c20565b6104256107153660046123b1565b611aea565b6104456107283660046123b1565b611b6b565b610425611b9c565b610425611bab565b61044561074b3660046123e9565b611bba565b61041061075e3660046123b1565b611bed565b610567610771366004612544565b611c1e565b6104456107843660046123e9565b611c54565b61065a61079736600461246b565b611c87565b61049b611d1e565b6103c76107b23660046123b1565b611d63565b6104456107c53660046123b1565b611d94565b610425611dc5565b6104456107e03660046123b1565b611dd4565b6104456107f336600461246b565b611e05565b6103c7611e8d565b6006546040516308ff49ad60e01b81526000916001600160a01b0316906308ff49ad90610831908590600401612a3d565b60206040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906129dd565b90505b919050565b6108916122ec565b60065460405163033e16f360e21b81526001600160a01b0390911690630cf85bcc906108c1908590600401612a3d565b60806040518083038186803b1580156108d957600080fd5b505afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906128f1565b600654604051631246dbf560e01b81526000916001600160a01b031690631246dbf590610942908590600401612a3d565b60206040518083038186803b15801561095a57600080fd5b505afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190612742565b600754604080516312803c7d60e01b815290516000926001600160a01b0316916312803c7d916004808301926020929190829003018186803b1580156109d757600080fd5b505afa1580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906123cd565b905090565b600354604051631393a46960e01b81526000916001600160a01b031690631393a46990610a45908590600401612d57565b60206040518083038186803b158015610a5d57600080fd5b505afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906127a1565b6005546001600160a01b031690565b60008054604051635ae8095160e01b815282916001600160a01b031690635ae8095190610ad5908790600401612a3d565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2591906127a1565b600254604051633478970960e11b81529192506000916001600160a01b03909116906368f12e1290610b5d9088908890600401612a51565b60206040518083038186803b158015610b7557600080fd5b505afa158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad91906127a1565b905080610bbf57600092505050610e93565b6000846001600160a01b03166312080647600160009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1e57600080fd5b505afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5691906129f9565b6040518263ffffffff1660e01b8152600401610c729190612da0565b60206040518083038186803b158015610c8a57600080fd5b505afa158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906127a1565b600254604051633666e41760e11b81529192506000916001600160a01b0390911690636ccdc82e90610cf8908a90600401612a3d565b60206040518083038186803b158015610d1057600080fd5b505afa158015610d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4891906127a1565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9a57600080fd5b505afa158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd291906129dd565b90506000808513610df557610df082620f42400162ffffff16611ed2565b610e08565b610e0882620f42400362ffffff16611ed2565b90506000610e28610e21610e1c8686611f1e565b611ed2565b8890611f33565b90506000610e3a8784620f4240611f98565b90506000610e6c610e5d83610e5786670de0b6b3a764000061203c565b906120e5565b610e6689611ed2565b90611f33565b90506000811215610e7e576000610e87565b610e878161219d565b99505050505050505050505b92915050565b6003546040516329386b7b60e01b81526000916001600160a01b0316906329386b7b90610831908590600401612a3d565b60025460405163293a507760e01b81526000916001600160a01b03169063293a507790610a45908590600401612a3d565b60015460408051631623e65d60e11b815290516000926001600160a01b031691632c47ccba916004808301926020929190829003018186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612a15565b60075460408051631a674cc560e11b815290516000926001600160a01b0316916334ce998a916004808301926020929190829003018186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906127a1565b60015460408051633e742e3b60e01b815290516000926001600160a01b031691633e742e3b916004808301926020929190829003018186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906129f9565b600254604051633f93510760e01b81526000916001600160a01b031690633f935107906110a59086908690600401612a51565b60206040518083038186803b1580156110bd57600080fd5b505afa1580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f591906127a1565b9392505050565b600754604051633ffd130360e01b81526000916001600160a01b031690633ffd1303906110a59086908690600401612b4a565b600480546040516321b499f560e11b81526060926001600160a01b039092169163436933ea91611163918791879101612a51565b60006040518083038186803b15801561117b57600080fd5b505afa15801561118f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110f591908101906126be565b600480546040516347b52fb760e01b81526000926001600160a01b03909216916347b52fb7916111ed9188918891889101612abe565b60206040518083038186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d91906127a1565b949350505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316634a64d67d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d757600080fd5b60048054604051634dffaee560e01b81526000926001600160a01b0390921691634dffaee5916112ca9188918891889101612aee565b60206040518083038186803b1580156112e257600080fd5b505afa1580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190612742565b60015460408051632a1e739d60e11b815290516000926001600160a01b03169163543ce73a916004808301926020929190829003018186803b15801561135f57600080fd5b505afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906129dd565b60008054604051635ae8095160e01b81526001600160a01b0390911690635ae8095190610a45908590600401612a3d565b60048054604051635d8a541d60e01b815260009283926001600160a01b031691635d8a541d916113fe9189918991899101612a6b565b604080518083038186803b15801561141557600080fd5b505afa158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d91906127e6565b91509150935093915050565b611461612313565b6002546040516331997f7b60e11b81526001600160a01b0390911690636332fef6906114939086908690600401612a51565b60606040518083038186803b1580156114ab57600080fd5b505afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190612809565b6002546001600160a01b031690565b600254604051633478970960e11b81526000916001600160a01b0316906368f12e12906110a59086908690600401612a51565b600254604051633666e41760e11b81526000916001600160a01b031690636ccdc82e90610a45908590600401612a3d565b6001546040805163370e96e960e11b815290516000926001600160a01b031691636e1d2dd2916004808301926020929190829003018186803b15801561135f57600080fd5b60015460408051633a14199b60e11b815290516000926001600160a01b0316916374283336916004808301926020929190829003018186803b15801561135f57600080fd5b6002546040516303d2da2d60e51b81526000916001600160a01b031690637a5b45a0906110a59086908690600401612a51565b60048054604051637c2b7c5360e01b81526000926001600160a01b0390921691637c2b7c53916111ed9188918891889101612a6b565b6003546040516380f57f1160e01b81526000916001600160a01b0316906380f57f1190610a45908590600401612a3d565b600154604080516385eacc7760e01b815290516000926001600160a01b0316916385eacc77916004808301926020929190829003018186803b158015610fbd57600080fd5b6007546001600160a01b031690565b6003546040516399e4a77160e01b81526000916001600160a01b0316906399e4a771906117019086908690600401612b68565b60206040518083038186803b15801561171957600080fd5b505afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f591906123cd565b6007546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b158015610f4057600080fd5b6001546040805163542a4a0160e11b815290516000926001600160a01b03169163a8549402916004808301926020929190829003018186803b15801561135f57600080fd5b6001546001600160a01b031690565b6117f2612334565b6004805460405163acf7182760e01b81526001600160a01b039091169163acf718279161182191869101612c17565b6101206040518083038186803b15801561183a57600080fd5b505afa15801561184e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610881919061285e565b6002546040516357ba739b60e11b81526060916001600160a01b03169063af74e736906118a3908590600401612a3d565b60006040518083038186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108819190810190612620565b60008060009054906101000a90046001600160a01b03166001600160a01b031663b081983b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d757600080fd5b60048054604051632c30105d60e21b81526001600160a01b039091169163b0c04174916119799187918791879101612c20565b600060405180830381600087803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b50505050505050565b6004546001600160a01b031690565b60025460405163165c4e2960e31b81526000916001600160a01b03169063b2e27148906110a59086908690600401612a51565b600254604051630b39456960e41b81526000916001600160a01b03169063b3945690906110a59086908690600401612a51565b6002546040516359deb70960e11b81526000916001600160a01b03169063b3bd6e12906110a59086908690600401612a51565b60025460405163bba85bcf60e01b8152600091829182916001600160a01b03169063bba85bcf90611a8d908790600401612a3d565b60606040518083038186803b158015611aa557600080fd5b505afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add91906127b9565b9250925092509193909250565b60065460405163bbe4f6db60e01b81526000916001600160a01b03169063bbe4f6db90611b1b908590600401612a3d565b60206040518083038186803b158015611b3357600080fd5b505afa158015611b47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906123cd565b6007546040516330e6651160e21b81526000916001600160a01b03169063c399944490610a45908590600401612a3d565b6000546001600160a01b031690565b6006546001600160a01b031690565b60035460405163659bcd5160e11b81526000916001600160a01b03169063cb379aa2906110a59086908690600401612a51565b60025460405163659e3dc760e11b81526000916001600160a01b03169063cb3c7b8e90610942908590600401612a3d565b6004805460405163d0581a9360e01b815260009283926001600160a01b03169163d0581a93916113fe9189918991899101612aee565b60025460405163d50d01b760e01b81526000916001600160a01b03169063d50d01b7906110a59086908690600401612a51565b611c8f612334565b60048054604051633aab48d560e21b81526001600160a01b039091169163eaad235491611cc491899189918991899101612a8f565b6101206040518083038186803b158015611cdd57600080fd5b505afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d15919061285e565b95945050505050565b60065460408051633b38243160e21b815290516000926001600160a01b03169163ece090c4916004808301926020929190829003018186803b158015610f4057600080fd5b60065460405163edd0b5cb60e01b81526000916001600160a01b03169063edd0b5cb90610831908590600401612a3d565b60025460405163f75c266d60e01b81526000916001600160a01b03169063f75c266d90610a45908590600401612a3d565b6003546001600160a01b031690565b60075460405163f8b2cb4f60e01b81526000916001600160a01b03169063f8b2cb4f90610a45908590600401612a3d565b60048054604051633ec44b5b60e21b81526000926001600160a01b039092169163fb112d6c91611e3d91899189918991899101612a8f565b60206040518083038186803b158015611e5557600080fd5b505afa158015611e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1591906127a1565b6001546040805163fedf924b60e01b815290516000926001600160a01b03169163fedf924b916004808301926020929190829003018186803b15801561135f57600080fd5b60006001600160ff1b03821115611f1a5760405162461bcd60e51b8152600401808060200182810382526028815260200180612ea26028913960400191505060405180910390fd5b5090565b60006110f5838362ffffff16620f42406121f4565b6000818303818312801590611f485750838113155b80611f5d5750600083128015611f5d57508381135b6110f55760405162461bcd60e51b8152600401808060200182810382526024815260200180612eca6024913960400191505060405180910390fd5b60008060008512611fa95784611fb2565b611fb2856122a3565b90506000808512611fc35784611fcc565b611fcc856122a3565b905060008087128015611fdf5750600086135b80611ff55750600087138015611ff55750600086125b612000576000612003565b60015b905060006120128484886121f4565b9050816120275761202281611ed2565b612030565b612030816122d8565b98975050505050505050565b60008261204b57506000610e93565b8260001914801561205f5750600160ff1b82145b1561209b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612e7b6027913960400191505060405180910390fd5b828202828482816120a857fe5b05146110f55760405162461bcd60e51b8152600401808060200182810382526027815260200180612e7b6027913960400191505060405180910390fd5b600081612139576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b8160001914801561214d5750600160ff1b83145b156121895760405162461bcd60e51b8152600401808060200182810382526021815260200180612e5a6021913960400191505060405180910390fd5b600082848161219457fe5b05949350505050565b600080821215611f1a576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600080806000198587098686029250828110908390030390508061222a576000841161221f57600080fd5b5082900490506110f5565b80841161223657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000600160ff1b82136122d15760405162461bcd60e51b81526004016122c890612c44565b60405180910390fd5b5060000390565b60006122e382611ed2565b60000392915050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b60405180606001604052806000815260200160008152602001600081525090565b60405180610120016040528060006001600160801b03168152602001600060020b8152602001600060020b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b805161088481612e27565b80516001600160801b038116811461088457600080fd5b6000602082840312156123c2578081fd5b81356110f581612e01565b6000602082840312156123de578081fd5b81516110f581612e01565b600080604083850312156123fb578081fd5b823561240681612e01565b9150602083013561241681612e01565b809150509250929050565b600080600060608486031215612435578081fd5b833561244081612e01565b9250602084013561245081612e01565b9150604084013561246081612e19565b809150509250925092565b60008060008060808587031215612480578182fd5b843561248b81612e01565b9350602085013561249b81612e01565b925060408501356124ab81612e27565b915060608501356124bb81612e27565b939692955090935050565b600080600083850360808112156124db578182fd5b84356124e681612e01565b935060208501356124f681612e01565b92506040603f1982011215612509578182fd5b506040516040810181811067ffffffffffffffff8211171561252757fe5b604090815285013581526060909401356020850152509093909250565b600080600060408486031215612558578081fd5b833561256381612e01565b9250602084013567ffffffffffffffff8082111561257f578283fd5b818601915086601f830112612592578283fd5b8135818111156125a0578384fd5b87602080830285010111156125b3578384fd5b6020830194508093505050509250925092565b600080604083850312156125d8578182fd5b82356125e381612e01565b9150602083013561241681612e36565b60008060408385031215612605578182fd5b823561261081612e01565b9150602083013561241681612e47565b60006020808385031215612632578182fd5b825167ffffffffffffffff811115612648578283fd5b8301601f81018513612658578283fd5b805161266b61266682612de3565b612dbf565b8181528381019083850185840285018601891015612687578687fd5b8694505b838510156126b257805161269e81612e01565b83526001949094019391850191850161268b565b50979650505050505050565b600060208083850312156126d0578182fd5b825167ffffffffffffffff8111156126e6578283fd5b8301601f810185136126f6578283fd5b805161270461266682612de3565b8181528381019083850185840285018601891015612720578687fd5b8694505b838510156126b2578051835260019490940193918501918501612724565b600060208284031215612753578081fd5b81516110f581612e19565b60006020828403121561276f578081fd5b5035919050565b60008060006060848603121561278a578081fd5b505081359360208301359350604090920135919050565b6000602082840312156127b2578081fd5b5051919050565b6000806000606084860312156127cd578081fd5b8351925060208401519150604084015190509250925092565b600080604083850312156127f8578182fd5b505080516020909101519092909150565b60006060828403121561281a578081fd5b6040516060810181811067ffffffffffffffff8211171561283757fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000610120808385031215612871578182fd5b61287a81612dbf565b90506128858361239a565b81526128936020840161238f565b60208201526128a46040840161238f565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600060808284031215612902578081fd5b6040516080810181811067ffffffffffffffff8211171561291f57fe5b604052825161292d81612e01565b8152602083015161293d81612e36565b6020820152604083015161295081612e36565b6040820152606083015161296381612e36565b60608201529392505050565b600060808284031215612980578081fd5b6040516080810181811067ffffffffffffffff8211171561299d57fe5b60405282356129ab81612e01565b815260208301356129bb81612e01565b6020820152604083810135908201526060928301359281019290925250919050565b6000602082840312156129ee578081fd5b81516110f581612e36565b600060208284031215612a0a578081fd5b81516110f581612e47565b600060208284031215612a26578081fd5b815160ff811681146110f5578182fd5b60020b9052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b039485168152929093166020830152600290810b60408301529190910b606082015260800190565b6001600160a01b039384168152919092166020808301919091528251604083015290910151606082015260800190565b6001600160a01b03848116825260406020808401829052908301849052600091859160608501845b87811015612b3d578435612b2981612e01565b841682529382019390820190600101612b16565b5098975050505050505050565b6001600160a01b0392909216825262ffffff16602082015260400190565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015612bc85783516001600160a01b031683529284019291840191600101612ba3565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612bc857835183529284019291840191600101612bf0565b901515815260200190565b90815260200190565b9283526020830191909152604082015260600190565b918252602082015260400190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b6000610120820190506001600160801b038351168252602083015160020b60208301526040830151612cd16040840182612a36565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525092915050565b81516001600160a01b0316815260208083015162ffffff90811691830191909152604080840151821690830152606092830151169181019190915260800190565b81516001600160a01b03908116825260208084015190911690820152604080830151908201526060918201519181019190915260800190565b62ffffff91909116815260200190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715612ddb57fe5b604052919050565b600067ffffffffffffffff821115612df757fe5b5060209081020190565b6001600160a01b0381168114612e1657600080fd5b50565b8015158114612e1657600080fd5b8060020b8114612e1657600080fd5b62ffffff81168114612e1657600080fd5b63ffffffff81168114612e1657600080fdfe5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220494acfa39e761cd3338964349e2279a38f68a4f91d8d376fdec2e77d9a213dcf64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103af5760003560e01c806385eacc77116101f4578063bbe4f6db1161011a578063eaad2354116100ad578063f807cd221161007c578063f807cd22146107ca578063f8b2cb4f146107d2578063fb112d6c146107e5578063fedf924b146107f8576103af565b8063eaad235414610789578063ece090c41461079c578063edd0b5cb146107a4578063f75c266d146107b7576103af565b8063cb379aa2116100e9578063cb379aa21461073d578063cb3c7b8e14610750578063d0581a9314610763578063d50d01b714610776576103af565b8063bbe4f6db14610707578063c39994441461071a578063c575ff791461072d578063c66b8ed214610735576103af565b8063af74e73611610192578063b2e2714811610161578063b2e27148146106ac578063b3945690146106bf578063b3bd6e12146106d2578063bba85bcf146106e5576103af565b8063af74e73614610667578063b081983b14610687578063b0c041741461068f578063b248c4ef146106a4576103af565b80639d6179c3116101ce5780639d6179c31461062f578063a854940214610637578063aa2a82941461063f578063acf7182714610647576103af565b806385eacc771461060c5780638d928af81461061457806399e4a7711461061c576103af565b806347b52fb7116102d95780636896fabf11610277578063742833361161024657806374283336146105cb5780637a5b45a0146105d35780637c2b7c53146105e657806380f57f11146105f9576103af565b80636896fabf1461059557806368f12e121461059d5780636ccdc82e146105b05780636e1d2dd2146105c3576103af565b8063543ce73a116102b3578063543ce73a146105395780635ae80951146105415780635d8a541d146105545780636332fef614610575576103af565b806347b52fb71461050b5780634a64d67d1461051e5780634dffaee514610526576103af565b806329386b7b116103515780633e742e3b116103205780633e742e3b146104b05780633f935107146104c55780633ffd1303146104d8578063436933ea146104eb576103af565b806329386b7b1461046d578063293a5077146104805780632c47ccba1461049357806334ce998a146104a8576103af565b806312803c7d1161038d57806312803c7d1461041d5780631393a46914610432578063158626f7146104525780631867b4801461045a576103af565b806308ff49ad146103b45780630cf85bcc146103dd5780631246dbf5146103fd575b600080fd5b6103c76103c23660046123b1565b610800565b6040516103d49190612d90565b60405180910390f35b6103f06103eb3660046123b1565b610889565b6040516103d49190612d16565b61041061040b3660046123b1565b610911565b6040516103d49190612c0c565b610425610992565b6040516103d49190612a3d565b61044561044036600461296f565b610a14565b6040516103d49190612c17565b610425610a95565b6104456104683660046123e9565b610aa4565b6103c761047b3660046123b1565b610e99565b61044561048e3660046123b1565b610eca565b61049b610efb565b6040516103d49190612db1565b610445610f78565b6104b8610ff5565b6040516103d49190612da0565b6104456104d33660046123e9565b611072565b6104456104e63660046125c6565b6110fc565b6104fe6104f93660046123e9565b61112f565b6040516103d49190612bd4565b6104456105193660046124c6565b6111b7565b610425611245565b610410610534366004612544565b611294565b6103c761131a565b61044561054f3660046123b1565b611397565b610567610562366004612421565b6113c8565b6040516103d4929190612c36565b6105886105833660046123e9565b611459565b6040516103d49190612c7b565b6104256114e3565b6104456105ab3660046123e9565b6114f2565b6104456105be3660046123b1565b611525565b6103c7611556565b6103c761159b565b6104456105e13660046123e9565b6115e0565b6104456105f4366004612421565b611613565b6104456106073660046123b1565b611649565b61044561167a565b6104256116bf565b61042561062a3660046125f3565b6116ce565b61049b611751565b6103c7611796565b6104256117db565b61065a61065536600461275e565b6117ea565b6040516103d49190612c9c565b61067a6106753660046123b1565b611872565b6040516103d49190612b87565b6104256118f7565b6106a261069d366004612776565b611946565b005b6104256119b0565b6104456106ba3660046123e9565b6119bf565b6104456106cd3660046123e9565b6119f2565b6104456106e03660046123e9565b611a25565b6106f86106f33660046123b1565b611a58565b6040516103d493929190612c20565b6104256107153660046123b1565b611aea565b6104456107283660046123b1565b611b6b565b610425611b9c565b610425611bab565b61044561074b3660046123e9565b611bba565b61041061075e3660046123b1565b611bed565b610567610771366004612544565b611c1e565b6104456107843660046123e9565b611c54565b61065a61079736600461246b565b611c87565b61049b611d1e565b6103c76107b23660046123b1565b611d63565b6104456107c53660046123b1565b611d94565b610425611dc5565b6104456107e03660046123b1565b611dd4565b6104456107f336600461246b565b611e05565b6103c7611e8d565b6006546040516308ff49ad60e01b81526000916001600160a01b0316906308ff49ad90610831908590600401612a3d565b60206040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906129dd565b90505b919050565b6108916122ec565b60065460405163033e16f360e21b81526001600160a01b0390911690630cf85bcc906108c1908590600401612a3d565b60806040518083038186803b1580156108d957600080fd5b505afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906128f1565b600654604051631246dbf560e01b81526000916001600160a01b031690631246dbf590610942908590600401612a3d565b60206040518083038186803b15801561095a57600080fd5b505afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190612742565b600754604080516312803c7d60e01b815290516000926001600160a01b0316916312803c7d916004808301926020929190829003018186803b1580156109d757600080fd5b505afa1580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906123cd565b905090565b600354604051631393a46960e01b81526000916001600160a01b031690631393a46990610a45908590600401612d57565b60206040518083038186803b158015610a5d57600080fd5b505afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906127a1565b6005546001600160a01b031690565b60008054604051635ae8095160e01b815282916001600160a01b031690635ae8095190610ad5908790600401612a3d565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2591906127a1565b600254604051633478970960e11b81529192506000916001600160a01b03909116906368f12e1290610b5d9088908890600401612a51565b60206040518083038186803b158015610b7557600080fd5b505afa158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad91906127a1565b905080610bbf57600092505050610e93565b6000846001600160a01b03166312080647600160009054906101000a90046001600160a01b03166001600160a01b0316633e742e3b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1e57600080fd5b505afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5691906129f9565b6040518263ffffffff1660e01b8152600401610c729190612da0565b60206040518083038186803b158015610c8a57600080fd5b505afa158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906127a1565b600254604051633666e41760e11b81529192506000916001600160a01b0390911690636ccdc82e90610cf8908a90600401612a3d565b60206040518083038186803b158015610d1057600080fd5b505afa158015610d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4891906127a1565b90506000600160009054906101000a90046001600160a01b03166001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9a57600080fd5b505afa158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd291906129dd565b90506000808513610df557610df082620f42400162ffffff16611ed2565b610e08565b610e0882620f42400362ffffff16611ed2565b90506000610e28610e21610e1c8686611f1e565b611ed2565b8890611f33565b90506000610e3a8784620f4240611f98565b90506000610e6c610e5d83610e5786670de0b6b3a764000061203c565b906120e5565b610e6689611ed2565b90611f33565b90506000811215610e7e576000610e87565b610e878161219d565b99505050505050505050505b92915050565b6003546040516329386b7b60e01b81526000916001600160a01b0316906329386b7b90610831908590600401612a3d565b60025460405163293a507760e01b81526000916001600160a01b03169063293a507790610a45908590600401612a3d565b60015460408051631623e65d60e11b815290516000926001600160a01b031691632c47ccba916004808301926020929190829003018186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612a15565b60075460408051631a674cc560e11b815290516000926001600160a01b0316916334ce998a916004808301926020929190829003018186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906127a1565b60015460408051633e742e3b60e01b815290516000926001600160a01b031691633e742e3b916004808301926020929190829003018186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906129f9565b600254604051633f93510760e01b81526000916001600160a01b031690633f935107906110a59086908690600401612a51565b60206040518083038186803b1580156110bd57600080fd5b505afa1580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f591906127a1565b9392505050565b600754604051633ffd130360e01b81526000916001600160a01b031690633ffd1303906110a59086908690600401612b4a565b600480546040516321b499f560e11b81526060926001600160a01b039092169163436933ea91611163918791879101612a51565b60006040518083038186803b15801561117b57600080fd5b505afa15801561118f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110f591908101906126be565b600480546040516347b52fb760e01b81526000926001600160a01b03909216916347b52fb7916111ed9188918891889101612abe565b60206040518083038186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d91906127a1565b949350505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316634a64d67d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d757600080fd5b60048054604051634dffaee560e01b81526000926001600160a01b0390921691634dffaee5916112ca9188918891889101612aee565b60206040518083038186803b1580156112e257600080fd5b505afa1580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190612742565b60015460408051632a1e739d60e11b815290516000926001600160a01b03169163543ce73a916004808301926020929190829003018186803b15801561135f57600080fd5b505afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f91906129dd565b60008054604051635ae8095160e01b81526001600160a01b0390911690635ae8095190610a45908590600401612a3d565b60048054604051635d8a541d60e01b815260009283926001600160a01b031691635d8a541d916113fe9189918991899101612a6b565b604080518083038186803b15801561141557600080fd5b505afa158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d91906127e6565b91509150935093915050565b611461612313565b6002546040516331997f7b60e11b81526001600160a01b0390911690636332fef6906114939086908690600401612a51565b60606040518083038186803b1580156114ab57600080fd5b505afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190612809565b6002546001600160a01b031690565b600254604051633478970960e11b81526000916001600160a01b0316906368f12e12906110a59086908690600401612a51565b600254604051633666e41760e11b81526000916001600160a01b031690636ccdc82e90610a45908590600401612a3d565b6001546040805163370e96e960e11b815290516000926001600160a01b031691636e1d2dd2916004808301926020929190829003018186803b15801561135f57600080fd5b60015460408051633a14199b60e11b815290516000926001600160a01b0316916374283336916004808301926020929190829003018186803b15801561135f57600080fd5b6002546040516303d2da2d60e51b81526000916001600160a01b031690637a5b45a0906110a59086908690600401612a51565b60048054604051637c2b7c5360e01b81526000926001600160a01b0390921691637c2b7c53916111ed9188918891889101612a6b565b6003546040516380f57f1160e01b81526000916001600160a01b0316906380f57f1190610a45908590600401612a3d565b600154604080516385eacc7760e01b815290516000926001600160a01b0316916385eacc77916004808301926020929190829003018186803b158015610fbd57600080fd5b6007546001600160a01b031690565b6003546040516399e4a77160e01b81526000916001600160a01b0316906399e4a771906117019086908690600401612b68565b60206040518083038186803b15801561171957600080fd5b505afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f591906123cd565b6007546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b158015610f4057600080fd5b6001546040805163542a4a0160e11b815290516000926001600160a01b03169163a8549402916004808301926020929190829003018186803b15801561135f57600080fd5b6001546001600160a01b031690565b6117f2612334565b6004805460405163acf7182760e01b81526001600160a01b039091169163acf718279161182191869101612c17565b6101206040518083038186803b15801561183a57600080fd5b505afa15801561184e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610881919061285e565b6002546040516357ba739b60e11b81526060916001600160a01b03169063af74e736906118a3908590600401612a3d565b60006040518083038186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108819190810190612620565b60008060009054906101000a90046001600160a01b03166001600160a01b031663b081983b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d757600080fd5b60048054604051632c30105d60e21b81526001600160a01b039091169163b0c04174916119799187918791879101612c20565b600060405180830381600087803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b50505050505050565b6004546001600160a01b031690565b60025460405163165c4e2960e31b81526000916001600160a01b03169063b2e27148906110a59086908690600401612a51565b600254604051630b39456960e41b81526000916001600160a01b03169063b3945690906110a59086908690600401612a51565b6002546040516359deb70960e11b81526000916001600160a01b03169063b3bd6e12906110a59086908690600401612a51565b60025460405163bba85bcf60e01b8152600091829182916001600160a01b03169063bba85bcf90611a8d908790600401612a3d565b60606040518083038186803b158015611aa557600080fd5b505afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add91906127b9565b9250925092509193909250565b60065460405163bbe4f6db60e01b81526000916001600160a01b03169063bbe4f6db90611b1b908590600401612a3d565b60206040518083038186803b158015611b3357600080fd5b505afa158015611b47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906123cd565b6007546040516330e6651160e21b81526000916001600160a01b03169063c399944490610a45908590600401612a3d565b6000546001600160a01b031690565b6006546001600160a01b031690565b60035460405163659bcd5160e11b81526000916001600160a01b03169063cb379aa2906110a59086908690600401612a51565b60025460405163659e3dc760e11b81526000916001600160a01b03169063cb3c7b8e90610942908590600401612a3d565b6004805460405163d0581a9360e01b815260009283926001600160a01b03169163d0581a93916113fe9189918991899101612aee565b60025460405163d50d01b760e01b81526000916001600160a01b03169063d50d01b7906110a59086908690600401612a51565b611c8f612334565b60048054604051633aab48d560e21b81526001600160a01b039091169163eaad235491611cc491899189918991899101612a8f565b6101206040518083038186803b158015611cdd57600080fd5b505afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d15919061285e565b95945050505050565b60065460408051633b38243160e21b815290516000926001600160a01b03169163ece090c4916004808301926020929190829003018186803b158015610f4057600080fd5b60065460405163edd0b5cb60e01b81526000916001600160a01b03169063edd0b5cb90610831908590600401612a3d565b60025460405163f75c266d60e01b81526000916001600160a01b03169063f75c266d90610a45908590600401612a3d565b6003546001600160a01b031690565b60075460405163f8b2cb4f60e01b81526000916001600160a01b03169063f8b2cb4f90610a45908590600401612a3d565b60048054604051633ec44b5b60e21b81526000926001600160a01b039092169163fb112d6c91611e3d91899189918991899101612a8f565b60206040518083038186803b158015611e5557600080fd5b505afa158015611e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1591906127a1565b6001546040805163fedf924b60e01b815290516000926001600160a01b03169163fedf924b916004808301926020929190829003018186803b15801561135f57600080fd5b60006001600160ff1b03821115611f1a5760405162461bcd60e51b8152600401808060200182810382526028815260200180612ea26028913960400191505060405180910390fd5b5090565b60006110f5838362ffffff16620f42406121f4565b6000818303818312801590611f485750838113155b80611f5d5750600083128015611f5d57508381135b6110f55760405162461bcd60e51b8152600401808060200182810382526024815260200180612eca6024913960400191505060405180910390fd5b60008060008512611fa95784611fb2565b611fb2856122a3565b90506000808512611fc35784611fcc565b611fcc856122a3565b905060008087128015611fdf5750600086135b80611ff55750600087138015611ff55750600086125b612000576000612003565b60015b905060006120128484886121f4565b9050816120275761202281611ed2565b612030565b612030816122d8565b98975050505050505050565b60008261204b57506000610e93565b8260001914801561205f5750600160ff1b82145b1561209b5760405162461bcd60e51b8152600401808060200182810382526027815260200180612e7b6027913960400191505060405180910390fd5b828202828482816120a857fe5b05146110f55760405162461bcd60e51b8152600401808060200182810382526027815260200180612e7b6027913960400191505060405180910390fd5b600081612139576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b8160001914801561214d5750600160ff1b83145b156121895760405162461bcd60e51b8152600401808060200182810382526021815260200180612e5a6021913960400191505060405180910390fd5b600082848161219457fe5b05949350505050565b600080821215611f1a576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b600080806000198587098686029250828110908390030390508061222a576000841161221f57600080fd5b5082900490506110f5565b80841161223657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000600160ff1b82136122d15760405162461bcd60e51b81526004016122c890612c44565b60405180910390fd5b5060000390565b60006122e382611ed2565b60000392915050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b60405180606001604052806000815260200160008152602001600081525090565b60405180610120016040528060006001600160801b03168152602001600060020b8152602001600060020b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b805161088481612e27565b80516001600160801b038116811461088457600080fd5b6000602082840312156123c2578081fd5b81356110f581612e01565b6000602082840312156123de578081fd5b81516110f581612e01565b600080604083850312156123fb578081fd5b823561240681612e01565b9150602083013561241681612e01565b809150509250929050565b600080600060608486031215612435578081fd5b833561244081612e01565b9250602084013561245081612e01565b9150604084013561246081612e19565b809150509250925092565b60008060008060808587031215612480578182fd5b843561248b81612e01565b9350602085013561249b81612e01565b925060408501356124ab81612e27565b915060608501356124bb81612e27565b939692955090935050565b600080600083850360808112156124db578182fd5b84356124e681612e01565b935060208501356124f681612e01565b92506040603f1982011215612509578182fd5b506040516040810181811067ffffffffffffffff8211171561252757fe5b604090815285013581526060909401356020850152509093909250565b600080600060408486031215612558578081fd5b833561256381612e01565b9250602084013567ffffffffffffffff8082111561257f578283fd5b818601915086601f830112612592578283fd5b8135818111156125a0578384fd5b87602080830285010111156125b3578384fd5b6020830194508093505050509250925092565b600080604083850312156125d8578182fd5b82356125e381612e01565b9150602083013561241681612e36565b60008060408385031215612605578182fd5b823561261081612e01565b9150602083013561241681612e47565b60006020808385031215612632578182fd5b825167ffffffffffffffff811115612648578283fd5b8301601f81018513612658578283fd5b805161266b61266682612de3565b612dbf565b8181528381019083850185840285018601891015612687578687fd5b8694505b838510156126b257805161269e81612e01565b83526001949094019391850191850161268b565b50979650505050505050565b600060208083850312156126d0578182fd5b825167ffffffffffffffff8111156126e6578283fd5b8301601f810185136126f6578283fd5b805161270461266682612de3565b8181528381019083850185840285018601891015612720578687fd5b8694505b838510156126b2578051835260019490940193918501918501612724565b600060208284031215612753578081fd5b81516110f581612e19565b60006020828403121561276f578081fd5b5035919050565b60008060006060848603121561278a578081fd5b505081359360208301359350604090920135919050565b6000602082840312156127b2578081fd5b5051919050565b6000806000606084860312156127cd578081fd5b8351925060208401519150604084015190509250925092565b600080604083850312156127f8578182fd5b505080516020909101519092909150565b60006060828403121561281a578081fd5b6040516060810181811067ffffffffffffffff8211171561283757fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000610120808385031215612871578182fd5b61287a81612dbf565b90506128858361239a565b81526128936020840161238f565b60208201526128a46040840161238f565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600060808284031215612902578081fd5b6040516080810181811067ffffffffffffffff8211171561291f57fe5b604052825161292d81612e01565b8152602083015161293d81612e36565b6020820152604083015161295081612e36565b6040820152606083015161296381612e36565b60608201529392505050565b600060808284031215612980578081fd5b6040516080810181811067ffffffffffffffff8211171561299d57fe5b60405282356129ab81612e01565b815260208301356129bb81612e01565b6020820152604083810135908201526060928301359281019290925250919050565b6000602082840312156129ee578081fd5b81516110f581612e36565b600060208284031215612a0a578081fd5b81516110f581612e47565b600060208284031215612a26578081fd5b815160ff811681146110f5578182fd5b60020b9052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b039485168152929093166020830152600290810b60408301529190910b606082015260800190565b6001600160a01b039384168152919092166020808301919091528251604083015290910151606082015260800190565b6001600160a01b03848116825260406020808401829052908301849052600091859160608501845b87811015612b3d578435612b2981612e01565b841682529382019390820190600101612b16565b5098975050505050505050565b6001600160a01b0392909216825262ffffff16602082015260400190565b6001600160a01b0392909216825263ffffffff16602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015612bc85783516001600160a01b031683529284019291840191600101612ba3565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612bc857835183529284019291840191600101612bf0565b901515815260200190565b90815260200190565b9283526020830191909152604082015260600190565b918252602082015260400190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b6000610120820190506001600160801b038351168252602083015160020b60208301526040830151612cd16040840182612a36565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525092915050565b81516001600160a01b0316815260208083015162ffffff90811691830191909152604080840151821690830152606092830151169181019190915260800190565b81516001600160a01b03908116825260208084015190911690820152604080830151908201526060918201519181019190915260800190565b62ffffff91909116815260200190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715612ddb57fe5b604052919050565b600067ffffffffffffffff821115612df757fe5b5060209081020190565b6001600160a01b0381168114612e1657600080fd5b50565b8015158114612e1657600080fd5b8060020b8114612e1657600080fd5b62ffffff81168114612e1657600080fd5b63ffffffff81168114612e1657600080fdfe5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a2646970667358221220494acfa39e761cd3338964349e2279a38f68a4f91d8d376fdec2e77d9a213dcf64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
