{
  "_format": "hh-sol-artifact-1",
  "contractName": "ConnextBridger",
  "sourceName": "contracts/bridge/ConnextBridger.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "what",
          "type": "bytes4"
        },
        {
          "internalType": "uint256[]",
          "name": "how",
          "type": "uint256[]"
        }
      ],
      "name": "AuthSenderNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "aInflated",
          "type": "uint256"
        }
      ],
      "name": "FixedPointDivInternal",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "FixedPointMulOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FixedPointZeroDivision",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceInputLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceTokenZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAmountZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "destinationChain",
          "type": "uint256"
        }
      ],
      "name": "TaskBridgeCurrentChainId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskConnectorZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskDestinationChainNotSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxFee",
          "type": "uint256"
        }
      ],
      "name": "TaskFeeAboveMax",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskGasNotInitialized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskGasPriceLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "date",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedDate",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedWindow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidFrequency",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        }
      ],
      "name": "TaskInvalidFrequencyMode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskInvalidMaxFee",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidThresholdInput",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidVolumeLimitInput",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "TaskNextConnectorNotZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "priorityFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskPriorityFeeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskRecipientZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "connectorId",
          "type": "bytes32"
        }
      ],
      "name": "TaskSameBalanceConnectors",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slippage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxSlippage",
          "type": "uint256"
        }
      ],
      "name": "TaskSlippageAboveMax",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskSlippageAboveOne",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "smartVault",
          "type": "address"
        }
      ],
      "name": "TaskSmartVaultPriceOracleNotSet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskThresholdTokenZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "TaskTimeLockActive",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TaskTokenNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskTokenThresholdNotMet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTokenZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCost",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTxCostLimitPctAboveOne",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCostPct",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitPctExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskUnpaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "volume",
          "type": "uint256"
        }
      ],
      "name": "TaskVolumeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskVolumeLimitTokenZero",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "BalanceConnectorsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "connector",
          "type": "address"
        }
      ],
      "name": "ConnectorSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "destinationChain",
          "type": "uint256"
        }
      ],
      "name": "CustomDestinationChainSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "maxFeeToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "CustomMaxFeeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxSlippage",
          "type": "uint256"
        }
      ],
      "name": "CustomMaxSlippageSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "CustomTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "CustomVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "defaultDestinationChain",
          "type": "uint256"
        }
      ],
      "name": "DefaultDestinationChainSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "maxFeeToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "DefaultMaxFeeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxSlippage",
          "type": "uint256"
        }
      ],
      "name": "DefaultMaxSlippageSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "DefaultTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "DefaultVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Executed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "GasLimitsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "RecipientSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        }
      ],
      "name": "TimeLockAllowedAtSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TimeLockSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "added",
          "type": "bool"
        }
      ],
      "name": "TokensAcceptanceListSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "acceptanceType",
          "type": "uint8"
        }
      ],
      "name": "TokensAcceptanceTypeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "EXECUTION_TYPE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "authorizer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "slippage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        }
      ],
      "name": "call",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "connector",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "customDestinationChain",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "customMaxFee",
      "outputs": [
        {
          "internalType": "address",
          "name": "maxFeeToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "customMaxSlippage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "customTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "customVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultDestinationChain",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultMaxFee",
      "outputs": [
        {
          "internalType": "address",
          "name": "maxFeeToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultMaxSlippage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBalanceConnectors",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getDestinationChain",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGasLimits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getMaxFee",
      "outputs": [
        {
          "internalType": "address",
          "name": "maxFeeToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getMaxSlippage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTaskAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTimeLock",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTokensSource",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "connector",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "destinationChain",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSlippage",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct BaseBridgeTask.MaxFee",
                  "name": "maxFee",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "destinationChain",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct BaseBridgeTask.CustomDestinationChain[]",
                  "name": "customDestinationChains",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxSlippage",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct BaseBridgeTask.CustomMaxSlippage[]",
                  "name": "customMaxSlippages",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct BaseBridgeTask.MaxFee",
                      "name": "maxFee",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct BaseBridgeTask.CustomMaxFee[]",
                  "name": "customMaxFees",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "smartVault",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "previousBalanceConnectorId",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "nextBalanceConnectorId",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct BaseTask.BaseConfig",
                      "name": "baseConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "gasPriceLimit",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "priorityFeeLimit",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "txCostLimit",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "txCostLimitPct",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct GasLimitedTask.GasLimitConfig",
                      "name": "gasLimitConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "mode",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "frequency",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "allowedAt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "window",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct TimeLockedTask.TimeLockConfig",
                      "name": "timeLockConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
                          "name": "acceptanceType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address[]",
                          "name": "tokens",
                          "type": "address[]"
                        }
                      ],
                      "internalType": "struct TokenIndexedTask.TokenIndexConfig",
                      "name": "tokenIndexConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "min",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "max",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct TokenThresholdTask.Threshold",
                          "name": "defaultThreshold",
                          "type": "tuple"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "components": [
                                {
                                  "internalType": "address",
                                  "name": "token",
                                  "type": "address"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "min",
                                  "type": "uint256"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "max",
                                  "type": "uint256"
                                }
                              ],
                              "internalType": "struct TokenThresholdTask.Threshold",
                              "name": "threshold",
                              "type": "tuple"
                            }
                          ],
                          "internalType": "struct TokenThresholdTask.CustomThresholdConfig[]",
                          "name": "customThresholdConfigs",
                          "type": "tuple[]"
                        }
                      ],
                      "internalType": "struct TokenThresholdTask.TokenThresholdConfig",
                      "name": "tokenThresholdConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "amount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "period",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                          "name": "defaultVolumeLimit",
                          "type": "tuple"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "components": [
                                {
                                  "internalType": "address",
                                  "name": "token",
                                  "type": "address"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "amount",
                                  "type": "uint256"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "period",
                                  "type": "uint256"
                                }
                              ],
                              "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                              "name": "volumeLimit",
                              "type": "tuple"
                            }
                          ],
                          "internalType": "struct VolumeLimitedTask.CustomVolumeLimitConfig[]",
                          "name": "customVolumeLimitConfigs",
                          "type": "tuple[]"
                        }
                      ],
                      "internalType": "struct VolumeLimitedTask.VolumeLimitConfig",
                      "name": "volumeLimitConfig",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct Task.TaskConfig",
                  "name": "taskConfig",
                  "type": "tuple"
                }
              ],
              "internalType": "struct BaseBridgeTask.BaseBridgeConfig",
              "name": "baseBridgeConfig",
              "type": "tuple"
            }
          ],
          "internalType": "struct ConnextBridger.ConnextBridgeConfig",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "isTokenAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "recipient",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "setBalanceConnectors",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newConnector",
          "type": "address"
        }
      ],
      "name": "setConnector",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "destinationChain",
          "type": "uint256"
        }
      ],
      "name": "setCustomDestinationChain",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "maxFeeToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "setCustomMaxFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxSlippage",
          "type": "uint256"
        }
      ],
      "name": "setCustomMaxSlippage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setCustomTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setCustomVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "destinationChain",
          "type": "uint256"
        }
      ],
      "name": "setDefaultDestinationChain",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "maxFeeToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "setDefaultMaxFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "maxSlippage",
          "type": "uint256"
        }
      ],
      "name": "setDefaultMaxSlippage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setDefaultTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setDefaultVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newGasPriceLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPriorityFeeLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "setGasLimits",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newRecipient",
          "type": "address"
        }
      ],
      "name": "setRecipient",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "setTimeLock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "bool[]",
          "name": "added",
          "type": "bool[]"
        }
      ],
      "name": "setTokensAcceptanceList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "newTokensAcceptanceType",
          "type": "uint8"
        }
      ],
      "name": "setTokensAcceptanceType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "smartVault",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokensAcceptanceType",
      "outputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61576280620000f36000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80637a2f57d0116101b2578063bb3084f6116100f9578063d09edf31116100a2578063d86483e11161007c578063d86483e1146108b3578063e6b5be98146108c6578063eb19ca8b146108d9578063f9eaee0d1461090257600080fd5b8063d09edf3114610874578063d3feb6021461088d578063d45a76cf146108a057600080fd5b8063c31163be116100d3578063c31163be1461082e578063c47590e414610841578063ce11b4181461085457600080fd5b8063bb3084f6146107f7578063bf5d9eab1461080a578063c267621e1461081d57600080fd5b8063a2c456441161015b578063b07addf611610135578063b07addf6146107c8578063b187bd26146107d1578063b96e422c146107ee57600080fd5b8063a2c4564414610728578063a33741771461073b578063a5900c4d1461076e57600080fd5b806390333ba81161018c57806390333ba8146106e25780639eebe7cd146106f5578063a0c3774f1461071557600080fd5b80637a2f57d01461067d57806383f3084f146106c75780638456cb59146106da57600080fd5b806342d4693e116102765780635ea54eee1161021f5780636aacaad8116101f95780636aacaad81461060b5780637125590a146106575780637196f8e91461066a57600080fd5b80635ea54eee1461059a57806360f5dfda146105c657806366d003ac146105f857600080fd5b80634fd49efd116102505780634fd49efd1461051c57806351a424b1146105475780635670e2ce1461057f57600080fd5b806342d4693e146104ba578063468534c2146104d45780634a45a3a8146104e757600080fd5b80632384c32d116102d85780633bbed4a0116102b25780633bbed4a01461048c5780633f4ba83a1461049f578063423a4b40146104a757600080fd5b80632384c32d1461045357806323a6e3761461046657806330eae5721461047957600080fd5b8063119a5e9611610309578063119a5e961461036b578063219723841461039c578063221a8c68146103af57600080fd5b806303870a4c146103305780630fe105e81461034557806310188aef14610358575b600080fd5b61034361033e366004614907565b610915565b005b610343610353366004614953565b610ae6565b610343610366366004614972565b610b1f565b610373610b4c565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6103436103aa366004614b32565b610b83565b6104216103bd366004614972565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610393565b610343610461366004614bf6565b610c33565b61034361047436600461509b565b610c62565b6103436104873660046151f0565b610d88565b61034361049a366004614972565b610dc5565b610343610dee565b6103436104b5366004614bf6565b610e75565b600f546104c79060ff1681565b6040516103939190615221565b6103436104e2366004615249565b610ea4565b61050e7f891a13a970b3919144df6d44edc27e5e09750b1bacff829fbaa31df2350ccf6181565b604051908152602001610393565b60015461052f906001600160a01b031681565b6040516001600160a01b039091168152602001610393565b61055a610555366004614972565b610ed7565b604080516001600160a01b039094168452602084019290925290820152606001610393565b60025460035460408051928352602083019190915201610393565b600654600754600854600954604080519485526020850193909352918301526060820152608001610393565b6105d96105d4366004614972565b610f00565b604080516001600160a01b039093168352602083019190915201610393565b601d5461052f906001600160a01b031681565b6104216040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b61034361066536600461528a565b610f21565b6103436106783660046152ac565b610f4c565b6105d961068b366004614972565b6001600160a01b039081166000908152602460209081526040918290208251808401909352805490931680835260019093015491018190529091565b601c5461052f906001600160a01b031681565b610343610f77565b6103436106f03660046152d8565b610fe9565b61050e610703366004614972565b60236020526000908152604090205481565b61050e610723366004614972565b611016565b61034361073636600461530d565b6110ad565b61055a604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b61055a61077c366004614972565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b61050e601e5481565b6004546107de9060ff1681565b6040519015158152602001610393565b61050e601f5481565b61050e610805366004614972565b6110d6565b61034361081836600461530d565b611106565b6001546001600160a01b031661052f565b61034361083c3660046152ac565b61112f565b61034361084f3660046152ac565b61115a565b61050e610862366004614972565b60226020526000908152604090205481565b60005461052f906201000090046001600160a01b031681565b61034361089b3660046152d8565b611185565b6104216108ae366004614972565b6111b2565b61050e6108c1366004614972565b611221565b6103436108d4366004615326565b611250565b60408051808201909152602080546001600160a01b0316808352602154919092018190526105d9565b6107de610910366004614972565b61127f565b610921848484846112b4565b610938336000356001600160e01b03191683611368565b8360000361094c5761094985611016565b93505b610958858585856113af565b6000610964838661536e565b9050600061098461097d86670de0b6b3a764000061536e565b83906113bb565b905060007f65887da3000000000000000000000000000000000000000000000000000000006109b2896110d6565b601d5460405160248101929092526001600160a01b03808c166044840152606483018b9052608483018690521660a482015260c4810187905260e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990941693909317909252600154601c5492517f1cff79cd0000000000000000000000000000000000000000000000000000000081529193506001600160a01b0390811692631cff79cd92610a8892919091169085906004016153d1565b6000604051808303816000875af1158015610aa7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610acf91908101906153f3565b50610adc8888888861142e565b5050505050505050565b610af58460ff1684848461143a565b610b0c336000356001600160e01b03191683611368565b610b1885858585611471565b5050505050565b610b2881611716565b610b3f336000356001600160e01b03191683611368565b610b488261172a565b5050565b600a5460009081908190819060ff166002811115610b6c57610b6c61520b565b600b54600c54600e54935093509350935090919293565b610b99336000356001600160e01b0319166117b4565b8051825114610bd4576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610c2e57610c1c838281518110610bf557610bf5615487565b6020026020010151838381518110610c0f57610c0f615487565b60200260200101516117d0565b80610c268161549d565b915050610bd7565b505050565b610c3f8484848461187a565b610c56336000356001600160e01b03191683611368565b610b18858585856118e3565b600054610100900460ff1615808015610c825750600054600160ff909116105b80610c9c5750303b158015610c9c575060005460ff166001145b610d135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610d36576000805461ff0019166101001790555b610d3f8261199c565b8015610b48576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610da5816001811115610d9d57610d9d61520b565b60ff16611a0c565b610dbc336000356001600160e01b03191683611368565b610b4882611a53565b610dce81611716565b610de5336000356001600160e01b03191683611368565b610b4882611ab0565b610e04336000356001600160e01b0319166117b4565b60045460ff16610e40576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610e818484848461187a565b610e98336000356001600160e01b03191683611368565b610b1885858585611b3a565b610eaf838383611bfa565b610ec6336000356001600160e01b03191683611368565b610ed1848484611c95565b50505050565b600080600080610ee685611d31565b805160208201516040909201519097919650945092505050565b6000806000610f0e84611dbc565b8051602090910151909590945092505050565b610f2b8282611e36565b610f42336000356001600160e01b03191683611368565b610c2e8383611ea2565b610f568282611ee7565b610f6d336000356001600160e01b03191683611368565b610c2e8383611f44565b610f8d336000356001600160e01b0319166117b4565b60045460ff1615610fb15760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610ff4838383611f8b565b61100b336000356001600160e01b03191683611368565b610ed1848484611fea565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015611083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a791906154b6565b92915050565b6110b681611a0c565b6110cd336000356001600160e01b03191683611368565b610b4882612040565b6001600160a01b03811660009081526022602052604081205480156110fb57806110ff565b601e545b9392505050565b61110f81611a0c565b611126336000356001600160e01b03191683611368565b610b488261209e565b6111398282611ee7565b611150336000356001600160e01b03191683611368565b610c2e83836120f4565b6111648282611ee7565b61117b336000356001600160e01b03191683611368565b610c2e8383612185565b611190838383611f8b565b6111a7336000356001600160e01b03191683611368565b610ed1848484612222565b6000806000806000806111c48761227e565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b6001600160a01b038116600090815260236020526040812054801561124657806110ff565b601f549392505050565b61125c8484848461143a565b611273336000356001600160e01b03191683611368565b610b18858585856122b2565b60008061128d60108461234d565b90506001600f5460ff1660018111156112a8576112a861520b565b146110a75780156110ff565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106112f4576112f4615487565b602002602001018181525050838160018151811061131457611314615487565b602002602001018181525050828160028151811061133457611334615487565b602002602001018181525050818160038151811061135457611354615487565b602002602001018181525050949350505050565b61137383838361236f565b610c2e578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610d0a9392919061550a565b610ed184848484612405565b600082820283158015906113de5750828482816113da576113da61553c565b0414155b1561140657604051637472527d60e11b81526004810185905260248101849052604401610d0a565b801561142357670de0b6b3a7640000600019820104600101611426565b60005b949350505050565b610ed1848484846125d5565b60408051600480825260a082019092526060916020820160808036833701905050905084816000815181106112f4576112f4615487565b60ff84166115225760008111806114885750600082115b1561151d57826000036114ba5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d0a565b8015806114c657508281115b156114f057604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d0a565b8160000361151d57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b61167f565b8260000361154f5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d0a565b80158061156757506115646224ea0084615552565b81115b1561159157604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d0a565b816000036115be57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b60001960ff85160161160057601c6115d5836125df565b111561151d57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b60011960ff85160161164857611615826125f6565b61161e836125df565b1461151d57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610d0a565b8360ff1660028111156116945761169461520b565b600a805460ff191660018360028111156116b0576116b061520b565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b60606110a7826001600160a01b0316611a0c565b6001600160a01b03811661176a576040517f05579e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383169081179091556040517f47fc0d82886e91fbb050eba4ff32c0c0d7fa2b4efffceba283e42975d9c894ff90600090a250565b604080516000815260208101909152610b489083908390611368565b6001600160a01b038216611810576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061182557611820601083612619565b611830565b61183060108361262e565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161186e911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106118ba576118ba615487565b602002602001018181525050836001600160a01b03168160018151811061131457611314615487565b6001600160a01b038416611923576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061194790848484612643565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b600054610100900460ff166119f55760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051611a0090612713565b611a0981612783565b50565b604080516001808252818301909252606091602080830190803683370190505090508181600081518110611a4257611a42615487565b602002602001018181525050919050565b600f805482919060ff191660018381811115611a7157611a7161520b565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a81604051611aa59190615221565b60405180910390a150565b6001600160a01b038116611af0576040517f2586ae9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383169081179091556040517f9d900d71c28433348acb1bec780a061608a96b149370abce77fd54ba2d47940190600090a250565b6001600160a01b038416611b7a576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b60205260409020611b9e908484846127dc565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611bec929190918252602082015260400190565b60405180910390a350505050565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b031681600081518110611c3957611c39615487565b602002602001018181525050826001600160a01b031681600181518110611c6257611c62615487565b6020026020010181815250508181600281518110611c8257611c82615487565b6020026020010181815250509392505050565b6001600160a01b038316611cbc57604051636070789160e11b815260040160405180910390fd5b6001600160a01b0383166000908152602460205260409020611cdf90838361293b565b816001600160a01b0316836001600160a01b03167fc4fdf80c1c19c6c15745294372240e0b830511ef069d2fe082f76e6ac663cd7683604051611d2491815260200190565b60405180910390a3505050565b611d5e604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038083166000908152601560205260409020805490911615611d875780611d8a565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b604080518082018252600080825260208083018290526001600160a01b0385811683526024825291849020845180860190955280549092168085526001909201549084015290919015611e0f57806110ff565b60408051808201909152602080546001600160a01b03168252602154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c81600081518110611e6d57611e6d615487565b6020026020010181815250508160001c81600181518110611e9057611e90615487565b60200260200101818152505092915050565b8015611edd576040517f9842f26f00000000000000000000000000000000000000000000000000000000815260048101829052602401610d0a565b610b4882826129ae565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b031681600081518110611f2457611f24615487565b6020026020010181815250508181600181518110611e9057611e90615487565b611f506020838361293b565b816001600160a01b03167f145629ab5475088f72def3b209864cc49abc02a2f230e887ad1f61629bc5dbaf8260405161186e91815260200190565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b031681600081518110611fca57611fca615487565b6020026020010181815250508281600181518110611c6257611c62615487565b611ff760168484846127dc565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b670de0b6b3a76400008111156120695760405163c2b0b62d60e01b815260040160405180910390fd5b601f8190556040518181527f9d7fb23d29de0d70dcfe20a01c58666eefae48719fb87d134888f2aa0ceb8cf890602001611aa5565b4681036120c15760405163499ff75560e01b815260048101829052602401610d0a565b601e81905560405181907f972b12d97bdf2afd537325c7e5db7c15141bb5a7e7f5a65b76f3c2b4f651991090600090a250565b6001600160a01b03821661211b57604051636070789160e11b815260040160405180910390fd5b46810361213e5760405163499ff75560e01b815260048101829052602401610d0a565b6001600160a01b038216600081815260226020526040808220849055518392917ffef363cd40fa337ea6f51a9c42c6dbb8225c1c93c2dea4384bf58ca8a257aa9691a35050565b6001600160a01b0382166121ac57604051636070789160e11b815260040160405180910390fd5b670de0b6b3a76400008111156121d55760405163c2b0b62d60e01b815260040160405180910390fd5b6001600160a01b03821660008181526023602052604090819020839055517f25248fa26970dc87f28fbed41688b6d37840ba02ef39849728307257033f1ed39061186e9084815260200190565b61222f6012848484612643565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156122a957806110ff565b60169392505050565b670de0b6b3a76400008111156122f4576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001611708565b6001600160a01b038116600090815260018301602052604081205415156110ff565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906328522895906123c4908790309088908890600401615569565b602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142691906155af565b61240f8484612a31565b6001600160a01b03841661243657604051636070789160e11b815260040160405180910390fd5b82600003612470576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612479846110d6565b6000036124b2576040517fa9b1d14100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124bd85611221565b905080831115612503576040517fb56ce4490000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610d0a565b816000036125115750610ed1565b600061251c86611dbc565b80519091506001600160a01b03166125575760208101516040516303b27ef760e01b8152610d0a918591600401918252602082015260400190565b6000866001600160a01b031682600001516001600160a01b0316146125935761258e612587888460000151612a77565b8590612a83565b612595565b835b905081602001518111156125cc5760208201516040516303b27ef760e01b8152610d0a918391600401918252602082015260400190565b50505050505050565b610ed18484612ae0565b60006114266125f162015180846155cc565b612b08565b6000808061260a6125f162015180866155cc565b50915091506114268282612ba4565b60006110ff836001600160a01b038416612c2a565b60006110ff836001600160a01b038416612d24565b60006001600160a01b03841615801561265a575082155b8015612664575081155b905060006001600160a01b0385161580159061268857508215806126885750838310155b905081158015612696575080155b156126e6576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d0a565b505083546001600160a01b0319166001600160a01b03939093169290921783556001830155600290910155565b600054610100900460ff1661276c5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b61277a816101000151612d73565b611a0981612e20565b600054610100900460ff16611a095760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b60006001600160a01b0384161580156127f3575082155b80156127fd575081155b905060006001600160a01b038516158015906128195750600084115b80156128255750600083115b905081158015612833575080155b15612883576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d0a565b600386018390556001860184905581156128aa576000600287018190556004870155612916565b85600401546000036128d157600060028701556128c783426155e0565b6004870155612916565b85546001600160a01b038681169116146129165785546000906128fd906001600160a01b031687612a77565b600288015490915061290f9082612a83565b6002880155505b505083546001600160a01b0319166001600160a01b0393909316929092179092555050565b6001600160a01b03821615801561295157508015155b15612988576040517f3d2584f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82546001600160a01b0319166001600160a01b0392909216919091178255600190910155565b80821480156129bc57508115155b156129f6576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610d0a565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b612a3b8282612fef565b612a458282612ff9565b612a4f828261301d565b612a598282613111565b612a638282613300565b612a6d828261334a565b610b488282613437565b60006110ff838361354d565b60008282028315801590612aa6575082848281612aa257612aa261553c565b0414155b15612ace57604051637472527d60e11b81526004810185905260248101849052604401610d0a565b670de0b6b3a764000090049392505050565b612aea828261374c565b612af482826137ee565b612afe8282613810565b610b488282613a5a565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281612b6557612b6561553c565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480612bb55750816003145b80612bc05750816005145b80612bcb5750816007145b80612bd65750816008145b80612be1575081600a145b80612bec575081600c145b15612bf95750601f6110a7565b81600214612c095750601e6110a7565b612c1283613a87565b612c1d57601c612c20565b601d5b60ff169392505050565b60008181526001830160205260408120548015612d13576000612c4e60018361536e565b8554909150600090612c629060019061536e565b9050818114612cc7576000866000018281548110612c8257612c82615487565b9060005260206000200154905080876000018481548110612ca557612ca5615487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612cd857612cd86155f3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506110a7565b60009150506110a7565b5092915050565b6000818152600183016020526040812054612d6b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556110a7565b5060006110a7565b600054610100900460ff16612dcc5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051612dd790613ac3565b612ddf613b93565b612dec8160200151613bf6565b612df98160400151613c58565b612e068160600151613cba565b612e138160800151613d1c565b611a008160a00151613d7e565b600054610100900460ff16612e795760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051612e849061172a565b612e918160200151611ab0565b612e9e816040015161209e565b612eab8160600151612040565b608081015180516020820151612ec19190611f44565b60005b8260a0015151811015612f185760008360a001518281518110612ee957612ee9615487565b60200260200101519050612f05816000015182602001516120f4565b5080612f108161549d565b915050612ec4565b5060005b8260c0015151811015612f8757612f758360c001518281518110612f4257612f42615487565b6020026020010151600001518460c001518381518110612f6457612f64615487565b602002602001015160200151612185565b80612f7f8161549d565b915050612f1c565b5060005b8260e0015151811015610c2e5760008360e001518281518110612fb057612fb0615487565b60200260200101519050600081602001519050612fda826000015182600001518360200151611c95565b50508080612fe79061549d565b915050612f8b565b610b488282613de0565b60045460ff1615610b485760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061305c575081513a11155b9050806130a15781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610d0a565b602082015115610ed15760006130b7483a61536e565b6020840151909150811115806131095760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610d0a918491600401918252602082015260400190565b505050505050565b600a54600b54600c54600e5460ff909316924282111561314d5760405163013ce60b60e01b815242600482015260248101839052604401610d0a565b60008460028111156131615761316161520b565b0361321a578260000361317657505050505050565b806000036131905761318883426155e0565b600d55613109565b600061319c834261536e565b905060006131aa85836155cc565b905060006131b88683615552565b6131c2908461536e565b9050838111156131ee5760405163013ce60b60e01b815242600482015260248101869052604401610d0a565b856131fa8360016155e0565b6132049190615552565b61320e90866155e0565b600d5550613109915050565b814210158015613233575061322f81836155e0565b4211155b15613242576131888284613e75565b600060018560028111156132585761325861520b565b1461326b57613266426125f6565b613274565b613274836125df565b905060006132828483613f0d565b9050804210156132ae5760405163013ce60b60e01b815242600482015260248101829052604401610d0a565b60006132ba84836155e0565b905042811080156132e75760405163013ce60b60e01b815242600482015260248101839052604401610d0a565b6132f18388613e75565b600d5550505050505050505050565b6133098261127f565b610b48576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610d0a565b600061335583611d31565b80519091506001600160a01b031661336c57505050565b6000836001600160a01b031682600001516001600160a01b0316146133a8576133a361339c858460000151612a77565b8490612a83565b6133aa565b825b90506000826020015182101580156133d25750604083015115806133d2575082604001518211155b905080610b18578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610d0a565b60006134428361227e565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061349157505050565b6000836001600160a01b031682600001516001600160a01b0316146134c6576134c161339c858460000151612a77565b6134c8565b825b90506000826080015142106134de5760006134e4565b82604001515b6134ee90836155e0565b90508260200151811115610b1857825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610d0a565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c79190615609565b90506001600160a01b038116613618576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610d0a565b6000613622613f2c565b905080516000146136b357816001600160a01b031663355efdd961364587613fac565b61364e87613fac565b846040518463ffffffff1660e01b815260040161366d93929190615626565b602060405180830381865afa15801561368a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ae91906154b6565b613743565b816001600160a01b031663ac41865a6136cb87613fac565b6136d487613fac565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561371f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374391906154b6565b95945050505050565b60006137578361227e565b80549091506001600160a01b031661376e57505050565b80546000906001600160a01b038581169116146137a457815461379f9061339c9086906001600160a01b0316612a77565b6137a6565b825b9050816004015442106137cf576000600283015560038201546137c990426155e0565b60048301555b808260020160008282546137e391906155e0565b909155505050505050565b600d546000036137fc575050565b613807600d54613fe0565b50506000600d55565b60055460000361384c576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554613885919061536e565b905060006138933a83615552565b905060008360400151600014806138ae575083604001518211155b9050806138f8578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610d0a929190918252602082015260400190565b60006005556060840151158015906139105750600085115b156131095760006139e3306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397c9190615609565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139dd9190615609565b88612a77565b905060006139f184836113bb565b905060006139ff8289614015565b90508660600151811115613a4f5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610d0a918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000613a94600483615652565b158015613aaa5750613aa7606483615652565b15155b806110a75750613abc61019083615652565b1592915050565b600054610100900460ff16613b1c5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b613b8a81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b859190615609565b6140de565b611a0981614140565b600054610100900460ff16613bec5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b613bf46141ce565b565b600054610100900460ff16613c4f5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981614227565b600054610100900460ff16613cb15760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a098161429c565b600054610100900460ff16613d135760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981614311565b600054610100900460ff16613d755760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a09816143bf565b600054610100900460ff16613dd75760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a098161449d565b60025415610b48576001546002546040517feb056bbb00000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401600060405180830381600087803b158015613e6157600080fd5b505af1158015613109573d6000803e3d6000fd5b600080600080613e848661457b565b919450925090506000613e9786846155e0565b90506000613ea6600c83615652565b90506000613eb5600c846155cc565b613ebf90876155e0565b905060006002600a5460ff166002811115613edc57613edc61520b565b14613ee75784613ef1565b613ef18284612ba4565b9050613eff8a83858461459a565b9a9950505050505050505050565b6000806000613f1b4261457b565b50915091506137438583838761459a565b60606000613f386145c2565b905036811115613f5657505060408051600081526020810190915290565b8067ffffffffffffffff811115613f6f57613f6f61498f565b6040519080825280601f01601f191660200182016040528015613f99576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03831614613fd857816110a7565b6110a76145dd565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad06490602001611aa5565b600081600003614051576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003614061575060006110a7565b670de0b6b3a76400008381029084828161407d5761407d61553c565b04146140bf576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610d0a565b8260018203816140d1576140d161553c565b0460010191505092915050565b600054610100900460ff166141375760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981614669565b600054610100900460ff166141995760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051600180546001600160a01b0319166001600160a01b0390921691909117905560208101516040820151611a099190611ea2565b600054610100900460ff16613bf45760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b600054610100900460ff166142805760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981600001518260200151836040015184606001516122b2565b600054610100900460ff166142f55760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a098160000151826020015183604001518460600151611471565b600054610100900460ff1661436a5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b805161437590611a53565b60005b816020015151811015610b48576143ad8260200151828151811061439e5761439e615487565b602002602001015160016117d0565b806143b78161549d565b915050614378565b600054610100900460ff166144185760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051805160208201516040830151614431929190612222565b60005b826020015151811015610c2e5760008360200151828151811061445957614459615487565b6020026020010151905060008160200151905061448882600001518260000151836020015184604001516118e3565b505080806144959061549d565b915050614434565b600054610100900460ff166144f65760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b805180516020820151604083015161450f929190611fea565b60005b826020015151811015610c2e5760008360200151828151811061453757614537615487565b602002602001015190506000816020015190506145668260000151826000015183602001518460400151611b3a565b505080806145739061549d565b915050614512565b6000808061458d620151808504612b08565b9196909550909350915050565b60006137438484846145ab89614702565b6145b48a614720565b6145bd8b61473c565b614749565b600060243610156145d35750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015614640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146649190615609565b905090565b600054610100900460ff166146c25760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000806147126201518084615652565b90506110ff610e10826155cc565b60008061472f610e1084615652565b90506110ff603c826155cc565b60006110a7603c83615652565b600081614757603c85615552565b614763610e1087615552565b620151806147728b8b8b6147a5565b61477c9190615552565b61478691906155e0565b61479091906155e0565b61479a91906155e0565b979650505050505050565b60006107b28410156147b657600080fd5b838383600062253d8c60046064600c6147d0600e88615666565b6147da9190615686565b6147e6886113246156b4565b6147f091906156b4565b6147fa9190615686565b6148059060036156dc565b61480f9190615686565b600c8061481d600e88615666565b6148279190615686565b61483290600c6156dc565b61483d600288615666565b6148479190615666565b6148539061016f6156dc565b61485d9190615686565b6004600c61486c600e89615666565b6148769190615686565b614882896112c06156b4565b61488c91906156b4565b614898906105b56156dc565b6148a29190615686565b6148ae617d4b87615666565b6148b891906156b4565b6148c291906156b4565b6148cc9190615666565b6148d69190615666565b98975050505050505050565b6001600160a01b0381168114611a0957600080fd5b8035614902816148e2565b919050565b6000806000806080858703121561491d57600080fd5b8435614928816148e2565b966020860135965060408601359560600135945092505050565b803560ff8116811461490257600080fd5b6000806000806080858703121561496957600080fd5b61492885614942565b60006020828403121561498457600080fd5b81356110ff816148e2565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156149c8576149c861498f565b60405290565b6040516080810167ffffffffffffffff811182821017156149c8576149c861498f565b60405160c0810167ffffffffffffffff811182821017156149c8576149c861498f565b6040516020810167ffffffffffffffff811182821017156149c8576149c861498f565b604051610120810167ffffffffffffffff811182821017156149c8576149c861498f565b604051601f8201601f1916810167ffffffffffffffff81118282101715614a8457614a8461498f565b604052919050565b600067ffffffffffffffff821115614aa657614aa661498f565b5060051b60200190565b600082601f830112614ac157600080fd5b81356020614ad6614ad183614a8c565b614a5b565b82815260059290921b84018101918181019086841115614af557600080fd5b8286015b84811015614b19578035614b0c816148e2565b8352918301918301614af9565b509695505050505050565b8015158114611a0957600080fd5b60008060408385031215614b4557600080fd5b823567ffffffffffffffff80821115614b5d57600080fd5b614b6986838701614ab0565b9350602091508185013581811115614b8057600080fd5b85019050601f81018613614b9357600080fd5b8035614ba1614ad182614a8c565b81815260059190911b82018301908381019088831115614bc057600080fd5b928401925b82841015614be7578335614bd881614b24565b82529284019290840190614bc5565b80955050505050509250929050565b60008060008060808587031215614c0c57600080fd5b8435614c17816148e2565b93506020850135614c27816148e2565b93969395505050506040820135916060013590565b600060408284031215614c4e57600080fd5b614c566149a5565b90508135614c63816148e2565b808252506020820135602082015292915050565b600082601f830112614c8857600080fd5b81356020614c98614ad183614a8c565b82815260069290921b84018101918181019086841115614cb757600080fd5b8286015b84811015614b1957614ccd8882614c3c565b835291830191604001614cbb565b600082601f830112614cec57600080fd5b81356020614cfc614ad183614a8c565b82815260609283028501820192828201919087851115614d1b57600080fd5b8387015b85811015614d695781818a031215614d375760008081fd5b614d3f6149a5565b8135614d4a816148e2565b8152614d588a838801614c3c565b818701528452928401928101614d1f565b5090979650505050505050565b600060608284031215614d8857600080fd5b6040516060810181811067ffffffffffffffff82111715614dab57614dab61498f565b6040529050808235614dbc816148e2565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215614ded57600080fd5b614df56149ce565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215614e3157600080fd5b614e396149ce565b9050614e4482614942565b815260208201356020820152604082013560408201526060820135606082015292915050565b80356002811061490257600080fd5b600060408284031215614e8b57600080fd5b614e936149a5565b9050614e9e82614e6a565b8152602082013567ffffffffffffffff811115614eba57600080fd5b614ec684828501614ab0565b60208301525092915050565b600060808284031215614ee457600080fd5b614eec6149a5565b90508135614ef9816148e2565b8152614f088360208401614d76565b602082015292915050565b60006080808385031215614f2657600080fd5b614f2e6149a5565b9150614f3a8484614d76565b8252606083013567ffffffffffffffff811115614f5657600080fd5b8301601f81018513614f6757600080fd5b80356020614f77614ad183614a8c565b82815260079290921b83018101918181019088841115614f9657600080fd5b938201935b83851015614fbc57614fad8986614ed2565b82529385019390820190614f9b565b808388015250505050505092915050565b60006101c08284031215614fe057600080fd5b614fe86149f1565b9050614ff48383614d76565b81526150038360608401614ddb565b60208201526150158360e08401614e1f565b604082015261016082013567ffffffffffffffff8082111561503657600080fd5b61504285838601614e79565b606084015261018084013591508082111561505c57600080fd5b61506885838601614f13565b60808401526101a084013591508082111561508257600080fd5b5061508f84828501614f13565b60a08301525092915050565b6000602082840312156150ad57600080fd5b813567ffffffffffffffff808211156150c557600080fd5b90830190602082860312156150d957600080fd5b6150e1614a14565b8235828111156150f057600080fd5b9290920191610140838703121561510657600080fd5b61510e614a37565b615117846148f7565b8152615125602085016148f7565b6020820152604084013560408201526060840135606082015261514b8760808601614c3c565b608082015260c08401358381111561516257600080fd5b61516e88828701614c77565b60a08301525060e08401358381111561518657600080fd5b61519288828701614c77565b60c08301525061010080850135848111156151ac57600080fd5b6151b889828801614cdb565b60e084015250610120850135848111156151d157600080fd5b6151dd89828801614fcd565b9183019190915250815295945050505050565b60006020828403121561520257600080fd5b6110ff82614e6a565b634e487b7160e01b600052602160045260246000fd5b602081016002831061524357634e487b7160e01b600052602160045260246000fd5b91905290565b60008060006060848603121561525e57600080fd5b8335615269816148e2565b92506020840135615279816148e2565b929592945050506040919091013590565b6000806040838503121561529d57600080fd5b50508035926020909101359150565b600080604083850312156152bf57600080fd5b82356152ca816148e2565b946020939093013593505050565b6000806000606084860312156152ed57600080fd5b83356152f8816148e2565b95602085013595506040909401359392505050565b60006020828403121561531f57600080fd5b5035919050565b6000806000806080858703121561533c57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b818103818111156110a7576110a7615358565b60005b8381101561539c578181015183820152602001615384565b50506000910152565b600081518084526153bd816020860160208601615381565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820152600061142660408301846153a5565b60006020828403121561540557600080fd5b815167ffffffffffffffff8082111561541d57600080fd5b818401915084601f83011261543157600080fd5b8151818111156154435761544361498f565b615456601f8201601f1916602001614a5b565b915080825285602082850101111561546d57600080fd5b61547e816020840160208601615381565b50949350505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016154af576154af615358565b5060010190565b6000602082840312156154c857600080fd5b5051919050565b600081518084526020808501945080840160005b838110156154ff578151875295820195908201906001016154e3565b509495945050505050565b6001600160a01b03841681526001600160e01b03198316602082015260606040820152600061374360608301846154cf565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176110a7576110a7615358565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526155a560808301846154cf565b9695505050505050565b6000602082840312156155c157600080fd5b81516110ff81614b24565b6000826155db576155db61553c565b500490565b808201808211156110a7576110a7615358565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561561b57600080fd5b81516110ff816148e2565b60006001600160a01b0380861683528085166020840152506060604083015261374360608301846153a5565b6000826156615761566161553c565b500690565b8181036000831280158383131683831282161715612d1d57612d1d615358565b6000826156955761569561553c565b600160ff1b8214600019841416156156af576156af615358565b500590565b80820182811260008312801582168215821617156156d4576156d4615358565b505092915050565b80820260008212600160ff1b841416156156f8576156f8615358565b81810583148215176110a7576110a761535856fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a264697066735822122028e85dd78ce6d6ccb803eda8d24f616fcc15fa4f2ae63ffe1816f817d3f9e72964736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80637a2f57d0116101b2578063bb3084f6116100f9578063d09edf31116100a2578063d86483e11161007c578063d86483e1146108b3578063e6b5be98146108c6578063eb19ca8b146108d9578063f9eaee0d1461090257600080fd5b8063d09edf3114610874578063d3feb6021461088d578063d45a76cf146108a057600080fd5b8063c31163be116100d3578063c31163be1461082e578063c47590e414610841578063ce11b4181461085457600080fd5b8063bb3084f6146107f7578063bf5d9eab1461080a578063c267621e1461081d57600080fd5b8063a2c456441161015b578063b07addf611610135578063b07addf6146107c8578063b187bd26146107d1578063b96e422c146107ee57600080fd5b8063a2c4564414610728578063a33741771461073b578063a5900c4d1461076e57600080fd5b806390333ba81161018c57806390333ba8146106e25780639eebe7cd146106f5578063a0c3774f1461071557600080fd5b80637a2f57d01461067d57806383f3084f146106c75780638456cb59146106da57600080fd5b806342d4693e116102765780635ea54eee1161021f5780636aacaad8116101f95780636aacaad81461060b5780637125590a146106575780637196f8e91461066a57600080fd5b80635ea54eee1461059a57806360f5dfda146105c657806366d003ac146105f857600080fd5b80634fd49efd116102505780634fd49efd1461051c57806351a424b1146105475780635670e2ce1461057f57600080fd5b806342d4693e146104ba578063468534c2146104d45780634a45a3a8146104e757600080fd5b80632384c32d116102d85780633bbed4a0116102b25780633bbed4a01461048c5780633f4ba83a1461049f578063423a4b40146104a757600080fd5b80632384c32d1461045357806323a6e3761461046657806330eae5721461047957600080fd5b8063119a5e9611610309578063119a5e961461036b578063219723841461039c578063221a8c68146103af57600080fd5b806303870a4c146103305780630fe105e81461034557806310188aef14610358575b600080fd5b61034361033e366004614907565b610915565b005b610343610353366004614953565b610ae6565b610343610366366004614972565b610b1f565b610373610b4c565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6103436103aa366004614b32565b610b83565b6104216103bd366004614972565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610393565b610343610461366004614bf6565b610c33565b61034361047436600461509b565b610c62565b6103436104873660046151f0565b610d88565b61034361049a366004614972565b610dc5565b610343610dee565b6103436104b5366004614bf6565b610e75565b600f546104c79060ff1681565b6040516103939190615221565b6103436104e2366004615249565b610ea4565b61050e7f891a13a970b3919144df6d44edc27e5e09750b1bacff829fbaa31df2350ccf6181565b604051908152602001610393565b60015461052f906001600160a01b031681565b6040516001600160a01b039091168152602001610393565b61055a610555366004614972565b610ed7565b604080516001600160a01b039094168452602084019290925290820152606001610393565b60025460035460408051928352602083019190915201610393565b600654600754600854600954604080519485526020850193909352918301526060820152608001610393565b6105d96105d4366004614972565b610f00565b604080516001600160a01b039093168352602083019190915201610393565b601d5461052f906001600160a01b031681565b6104216040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b61034361066536600461528a565b610f21565b6103436106783660046152ac565b610f4c565b6105d961068b366004614972565b6001600160a01b039081166000908152602460209081526040918290208251808401909352805490931680835260019093015491018190529091565b601c5461052f906001600160a01b031681565b610343610f77565b6103436106f03660046152d8565b610fe9565b61050e610703366004614972565b60236020526000908152604090205481565b61050e610723366004614972565b611016565b61034361073636600461530d565b6110ad565b61055a604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b61055a61077c366004614972565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b61050e601e5481565b6004546107de9060ff1681565b6040519015158152602001610393565b61050e601f5481565b61050e610805366004614972565b6110d6565b61034361081836600461530d565b611106565b6001546001600160a01b031661052f565b61034361083c3660046152ac565b61112f565b61034361084f3660046152ac565b61115a565b61050e610862366004614972565b60226020526000908152604090205481565b60005461052f906201000090046001600160a01b031681565b61034361089b3660046152d8565b611185565b6104216108ae366004614972565b6111b2565b61050e6108c1366004614972565b611221565b6103436108d4366004615326565b611250565b60408051808201909152602080546001600160a01b0316808352602154919092018190526105d9565b6107de610910366004614972565b61127f565b610921848484846112b4565b610938336000356001600160e01b03191683611368565b8360000361094c5761094985611016565b93505b610958858585856113af565b6000610964838661536e565b9050600061098461097d86670de0b6b3a764000061536e565b83906113bb565b905060007f65887da3000000000000000000000000000000000000000000000000000000006109b2896110d6565b601d5460405160248101929092526001600160a01b03808c166044840152606483018b9052608483018690521660a482015260c4810187905260e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990941693909317909252600154601c5492517f1cff79cd0000000000000000000000000000000000000000000000000000000081529193506001600160a01b0390811692631cff79cd92610a8892919091169085906004016153d1565b6000604051808303816000875af1158015610aa7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610acf91908101906153f3565b50610adc8888888861142e565b5050505050505050565b610af58460ff1684848461143a565b610b0c336000356001600160e01b03191683611368565b610b1885858585611471565b5050505050565b610b2881611716565b610b3f336000356001600160e01b03191683611368565b610b488261172a565b5050565b600a5460009081908190819060ff166002811115610b6c57610b6c61520b565b600b54600c54600e54935093509350935090919293565b610b99336000356001600160e01b0319166117b4565b8051825114610bd4576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610c2e57610c1c838281518110610bf557610bf5615487565b6020026020010151838381518110610c0f57610c0f615487565b60200260200101516117d0565b80610c268161549d565b915050610bd7565b505050565b610c3f8484848461187a565b610c56336000356001600160e01b03191683611368565b610b18858585856118e3565b600054610100900460ff1615808015610c825750600054600160ff909116105b80610c9c5750303b158015610c9c575060005460ff166001145b610d135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610d36576000805461ff0019166101001790555b610d3f8261199c565b8015610b48576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610da5816001811115610d9d57610d9d61520b565b60ff16611a0c565b610dbc336000356001600160e01b03191683611368565b610b4882611a53565b610dce81611716565b610de5336000356001600160e01b03191683611368565b610b4882611ab0565b610e04336000356001600160e01b0319166117b4565b60045460ff16610e40576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610e818484848461187a565b610e98336000356001600160e01b03191683611368565b610b1885858585611b3a565b610eaf838383611bfa565b610ec6336000356001600160e01b03191683611368565b610ed1848484611c95565b50505050565b600080600080610ee685611d31565b805160208201516040909201519097919650945092505050565b6000806000610f0e84611dbc565b8051602090910151909590945092505050565b610f2b8282611e36565b610f42336000356001600160e01b03191683611368565b610c2e8383611ea2565b610f568282611ee7565b610f6d336000356001600160e01b03191683611368565b610c2e8383611f44565b610f8d336000356001600160e01b0319166117b4565b60045460ff1615610fb15760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610ff4838383611f8b565b61100b336000356001600160e01b03191683611368565b610ed1848484611fea565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015611083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a791906154b6565b92915050565b6110b681611a0c565b6110cd336000356001600160e01b03191683611368565b610b4882612040565b6001600160a01b03811660009081526022602052604081205480156110fb57806110ff565b601e545b9392505050565b61110f81611a0c565b611126336000356001600160e01b03191683611368565b610b488261209e565b6111398282611ee7565b611150336000356001600160e01b03191683611368565b610c2e83836120f4565b6111648282611ee7565b61117b336000356001600160e01b03191683611368565b610c2e8383612185565b611190838383611f8b565b6111a7336000356001600160e01b03191683611368565b610ed1848484612222565b6000806000806000806111c48761227e565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b6001600160a01b038116600090815260236020526040812054801561124657806110ff565b601f549392505050565b61125c8484848461143a565b611273336000356001600160e01b03191683611368565b610b18858585856122b2565b60008061128d60108461234d565b90506001600f5460ff1660018111156112a8576112a861520b565b146110a75780156110ff565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106112f4576112f4615487565b602002602001018181525050838160018151811061131457611314615487565b602002602001018181525050828160028151811061133457611334615487565b602002602001018181525050818160038151811061135457611354615487565b602002602001018181525050949350505050565b61137383838361236f565b610c2e578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610d0a9392919061550a565b610ed184848484612405565b600082820283158015906113de5750828482816113da576113da61553c565b0414155b1561140657604051637472527d60e11b81526004810185905260248101849052604401610d0a565b801561142357670de0b6b3a7640000600019820104600101611426565b60005b949350505050565b610ed1848484846125d5565b60408051600480825260a082019092526060916020820160808036833701905050905084816000815181106112f4576112f4615487565b60ff84166115225760008111806114885750600082115b1561151d57826000036114ba5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d0a565b8015806114c657508281115b156114f057604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d0a565b8160000361151d57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b61167f565b8260000361154f5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610d0a565b80158061156757506115646224ea0084615552565b81115b1561159157604051639e12fccf60e01b815260ff8516600482015260248101829052604401610d0a565b816000036115be57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b60001960ff85160161160057601c6115d5836125df565b111561151d57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b60011960ff85160161164857611615826125f6565b61161e836125df565b1461151d57604051635686bf5960e11b815260ff8516600482015260248101839052604401610d0a565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610d0a565b8360ff1660028111156116945761169461520b565b600a805460ff191660018360028111156116b0576116b061520b565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b60606110a7826001600160a01b0316611a0c565b6001600160a01b03811661176a576040517f05579e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383169081179091556040517f47fc0d82886e91fbb050eba4ff32c0c0d7fa2b4efffceba283e42975d9c894ff90600090a250565b604080516000815260208101909152610b489083908390611368565b6001600160a01b038216611810576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061182557611820601083612619565b611830565b61183060108361262e565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161186e911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106118ba576118ba615487565b602002602001018181525050836001600160a01b03168160018151811061131457611314615487565b6001600160a01b038416611923576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061194790848484612643565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b600054610100900460ff166119f55760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051611a0090612713565b611a0981612783565b50565b604080516001808252818301909252606091602080830190803683370190505090508181600081518110611a4257611a42615487565b602002602001018181525050919050565b600f805482919060ff191660018381811115611a7157611a7161520b565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a81604051611aa59190615221565b60405180910390a150565b6001600160a01b038116611af0576040517f2586ae9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383169081179091556040517f9d900d71c28433348acb1bec780a061608a96b149370abce77fd54ba2d47940190600090a250565b6001600160a01b038416611b7a576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b60205260409020611b9e908484846127dc565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611bec929190918252602082015260400190565b60405180910390a350505050565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b031681600081518110611c3957611c39615487565b602002602001018181525050826001600160a01b031681600181518110611c6257611c62615487565b6020026020010181815250508181600281518110611c8257611c82615487565b6020026020010181815250509392505050565b6001600160a01b038316611cbc57604051636070789160e11b815260040160405180910390fd5b6001600160a01b0383166000908152602460205260409020611cdf90838361293b565b816001600160a01b0316836001600160a01b03167fc4fdf80c1c19c6c15745294372240e0b830511ef069d2fe082f76e6ac663cd7683604051611d2491815260200190565b60405180910390a3505050565b611d5e604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038083166000908152601560205260409020805490911615611d875780611d8a565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b604080518082018252600080825260208083018290526001600160a01b0385811683526024825291849020845180860190955280549092168085526001909201549084015290919015611e0f57806110ff565b60408051808201909152602080546001600160a01b03168252602154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c81600081518110611e6d57611e6d615487565b6020026020010181815250508160001c81600181518110611e9057611e90615487565b60200260200101818152505092915050565b8015611edd576040517f9842f26f00000000000000000000000000000000000000000000000000000000815260048101829052602401610d0a565b610b4882826129ae565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b031681600081518110611f2457611f24615487565b6020026020010181815250508181600181518110611e9057611e90615487565b611f506020838361293b565b816001600160a01b03167f145629ab5475088f72def3b209864cc49abc02a2f230e887ad1f61629bc5dbaf8260405161186e91815260200190565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b031681600081518110611fca57611fca615487565b6020026020010181815250508281600181518110611c6257611c62615487565b611ff760168484846127dc565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b670de0b6b3a76400008111156120695760405163c2b0b62d60e01b815260040160405180910390fd5b601f8190556040518181527f9d7fb23d29de0d70dcfe20a01c58666eefae48719fb87d134888f2aa0ceb8cf890602001611aa5565b4681036120c15760405163499ff75560e01b815260048101829052602401610d0a565b601e81905560405181907f972b12d97bdf2afd537325c7e5db7c15141bb5a7e7f5a65b76f3c2b4f651991090600090a250565b6001600160a01b03821661211b57604051636070789160e11b815260040160405180910390fd5b46810361213e5760405163499ff75560e01b815260048101829052602401610d0a565b6001600160a01b038216600081815260226020526040808220849055518392917ffef363cd40fa337ea6f51a9c42c6dbb8225c1c93c2dea4384bf58ca8a257aa9691a35050565b6001600160a01b0382166121ac57604051636070789160e11b815260040160405180910390fd5b670de0b6b3a76400008111156121d55760405163c2b0b62d60e01b815260040160405180910390fd5b6001600160a01b03821660008181526023602052604090819020839055517f25248fa26970dc87f28fbed41688b6d37840ba02ef39849728307257033f1ed39061186e9084815260200190565b61222f6012848484612643565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156122a957806110ff565b60169392505050565b670de0b6b3a76400008111156122f4576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001611708565b6001600160a01b038116600090815260018301602052604081205415156110ff565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906328522895906123c4908790309088908890600401615569565b602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142691906155af565b61240f8484612a31565b6001600160a01b03841661243657604051636070789160e11b815260040160405180910390fd5b82600003612470576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612479846110d6565b6000036124b2576040517fa9b1d14100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124bd85611221565b905080831115612503576040517fb56ce4490000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610d0a565b816000036125115750610ed1565b600061251c86611dbc565b80519091506001600160a01b03166125575760208101516040516303b27ef760e01b8152610d0a918591600401918252602082015260400190565b6000866001600160a01b031682600001516001600160a01b0316146125935761258e612587888460000151612a77565b8590612a83565b612595565b835b905081602001518111156125cc5760208201516040516303b27ef760e01b8152610d0a918391600401918252602082015260400190565b50505050505050565b610ed18484612ae0565b60006114266125f162015180846155cc565b612b08565b6000808061260a6125f162015180866155cc565b50915091506114268282612ba4565b60006110ff836001600160a01b038416612c2a565b60006110ff836001600160a01b038416612d24565b60006001600160a01b03841615801561265a575082155b8015612664575081155b905060006001600160a01b0385161580159061268857508215806126885750838310155b905081158015612696575080155b156126e6576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d0a565b505083546001600160a01b0319166001600160a01b03939093169290921783556001830155600290910155565b600054610100900460ff1661276c5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b61277a816101000151612d73565b611a0981612e20565b600054610100900460ff16611a095760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b60006001600160a01b0384161580156127f3575082155b80156127fd575081155b905060006001600160a01b038516158015906128195750600084115b80156128255750600083115b905081158015612833575080155b15612883576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610d0a565b600386018390556001860184905581156128aa576000600287018190556004870155612916565b85600401546000036128d157600060028701556128c783426155e0565b6004870155612916565b85546001600160a01b038681169116146129165785546000906128fd906001600160a01b031687612a77565b600288015490915061290f9082612a83565b6002880155505b505083546001600160a01b0319166001600160a01b0393909316929092179092555050565b6001600160a01b03821615801561295157508015155b15612988576040517f3d2584f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82546001600160a01b0319166001600160a01b0392909216919091178255600190910155565b80821480156129bc57508115155b156129f6576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610d0a565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b612a3b8282612fef565b612a458282612ff9565b612a4f828261301d565b612a598282613111565b612a638282613300565b612a6d828261334a565b610b488282613437565b60006110ff838361354d565b60008282028315801590612aa6575082848281612aa257612aa261553c565b0414155b15612ace57604051637472527d60e11b81526004810185905260248101849052604401610d0a565b670de0b6b3a764000090049392505050565b612aea828261374c565b612af482826137ee565b612afe8282613810565b610b488282613a5a565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281612b6557612b6561553c565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480612bb55750816003145b80612bc05750816005145b80612bcb5750816007145b80612bd65750816008145b80612be1575081600a145b80612bec575081600c145b15612bf95750601f6110a7565b81600214612c095750601e6110a7565b612c1283613a87565b612c1d57601c612c20565b601d5b60ff169392505050565b60008181526001830160205260408120548015612d13576000612c4e60018361536e565b8554909150600090612c629060019061536e565b9050818114612cc7576000866000018281548110612c8257612c82615487565b9060005260206000200154905080876000018481548110612ca557612ca5615487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612cd857612cd86155f3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506110a7565b60009150506110a7565b5092915050565b6000818152600183016020526040812054612d6b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556110a7565b5060006110a7565b600054610100900460ff16612dcc5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051612dd790613ac3565b612ddf613b93565b612dec8160200151613bf6565b612df98160400151613c58565b612e068160600151613cba565b612e138160800151613d1c565b611a008160a00151613d7e565b600054610100900460ff16612e795760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051612e849061172a565b612e918160200151611ab0565b612e9e816040015161209e565b612eab8160600151612040565b608081015180516020820151612ec19190611f44565b60005b8260a0015151811015612f185760008360a001518281518110612ee957612ee9615487565b60200260200101519050612f05816000015182602001516120f4565b5080612f108161549d565b915050612ec4565b5060005b8260c0015151811015612f8757612f758360c001518281518110612f4257612f42615487565b6020026020010151600001518460c001518381518110612f6457612f64615487565b602002602001015160200151612185565b80612f7f8161549d565b915050612f1c565b5060005b8260e0015151811015610c2e5760008360e001518281518110612fb057612fb0615487565b60200260200101519050600081602001519050612fda826000015182600001518360200151611c95565b50508080612fe79061549d565b915050612f8b565b610b488282613de0565b60045460ff1615610b485760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061305c575081513a11155b9050806130a15781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610d0a565b602082015115610ed15760006130b7483a61536e565b6020840151909150811115806131095760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610d0a918491600401918252602082015260400190565b505050505050565b600a54600b54600c54600e5460ff909316924282111561314d5760405163013ce60b60e01b815242600482015260248101839052604401610d0a565b60008460028111156131615761316161520b565b0361321a578260000361317657505050505050565b806000036131905761318883426155e0565b600d55613109565b600061319c834261536e565b905060006131aa85836155cc565b905060006131b88683615552565b6131c2908461536e565b9050838111156131ee5760405163013ce60b60e01b815242600482015260248101869052604401610d0a565b856131fa8360016155e0565b6132049190615552565b61320e90866155e0565b600d5550613109915050565b814210158015613233575061322f81836155e0565b4211155b15613242576131888284613e75565b600060018560028111156132585761325861520b565b1461326b57613266426125f6565b613274565b613274836125df565b905060006132828483613f0d565b9050804210156132ae5760405163013ce60b60e01b815242600482015260248101829052604401610d0a565b60006132ba84836155e0565b905042811080156132e75760405163013ce60b60e01b815242600482015260248101839052604401610d0a565b6132f18388613e75565b600d5550505050505050505050565b6133098261127f565b610b48576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610d0a565b600061335583611d31565b80519091506001600160a01b031661336c57505050565b6000836001600160a01b031682600001516001600160a01b0316146133a8576133a361339c858460000151612a77565b8490612a83565b6133aa565b825b90506000826020015182101580156133d25750604083015115806133d2575082604001518211155b905080610b18578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610d0a565b60006134428361227e565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061349157505050565b6000836001600160a01b031682600001516001600160a01b0316146134c6576134c161339c858460000151612a77565b6134c8565b825b90506000826080015142106134de5760006134e4565b82604001515b6134ee90836155e0565b90508260200151811115610b1857825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610d0a565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c79190615609565b90506001600160a01b038116613618576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610d0a565b6000613622613f2c565b905080516000146136b357816001600160a01b031663355efdd961364587613fac565b61364e87613fac565b846040518463ffffffff1660e01b815260040161366d93929190615626565b602060405180830381865afa15801561368a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ae91906154b6565b613743565b816001600160a01b031663ac41865a6136cb87613fac565b6136d487613fac565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561371f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374391906154b6565b95945050505050565b60006137578361227e565b80549091506001600160a01b031661376e57505050565b80546000906001600160a01b038581169116146137a457815461379f9061339c9086906001600160a01b0316612a77565b6137a6565b825b9050816004015442106137cf576000600283015560038201546137c990426155e0565b60048301555b808260020160008282546137e391906155e0565b909155505050505050565b600d546000036137fc575050565b613807600d54613fe0565b50506000600d55565b60055460000361384c576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554613885919061536e565b905060006138933a83615552565b905060008360400151600014806138ae575083604001518211155b9050806138f8578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610d0a929190918252602082015260400190565b60006005556060840151158015906139105750600085115b156131095760006139e3306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397c9190615609565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139dd9190615609565b88612a77565b905060006139f184836113bb565b905060006139ff8289614015565b90508660600151811115613a4f5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610d0a918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000613a94600483615652565b158015613aaa5750613aa7606483615652565b15155b806110a75750613abc61019083615652565b1592915050565b600054610100900460ff16613b1c5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b613b8a81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b859190615609565b6140de565b611a0981614140565b600054610100900460ff16613bec5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b613bf46141ce565b565b600054610100900460ff16613c4f5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981614227565b600054610100900460ff16613cb15760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a098161429c565b600054610100900460ff16613d135760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981614311565b600054610100900460ff16613d755760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a09816143bf565b600054610100900460ff16613dd75760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a098161449d565b60025415610b48576001546002546040517feb056bbb00000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401600060405180830381600087803b158015613e6157600080fd5b505af1158015613109573d6000803e3d6000fd5b600080600080613e848661457b565b919450925090506000613e9786846155e0565b90506000613ea6600c83615652565b90506000613eb5600c846155cc565b613ebf90876155e0565b905060006002600a5460ff166002811115613edc57613edc61520b565b14613ee75784613ef1565b613ef18284612ba4565b9050613eff8a83858461459a565b9a9950505050505050505050565b6000806000613f1b4261457b565b50915091506137438583838761459a565b60606000613f386145c2565b905036811115613f5657505060408051600081526020810190915290565b8067ffffffffffffffff811115613f6f57613f6f61498f565b6040519080825280601f01601f191660200182016040528015613f99576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03831614613fd857816110a7565b6110a76145dd565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad06490602001611aa5565b600081600003614051576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003614061575060006110a7565b670de0b6b3a76400008381029084828161407d5761407d61553c565b04146140bf576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610d0a565b8260018203816140d1576140d161553c565b0460010191505092915050565b600054610100900460ff166141375760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981614669565b600054610100900460ff166141995760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051600180546001600160a01b0319166001600160a01b0390921691909117905560208101516040820151611a099190611ea2565b600054610100900460ff16613bf45760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b600054610100900460ff166142805760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a0981600001518260200151836040015184606001516122b2565b600054610100900460ff166142f55760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b611a098160000151826020015183604001518460600151611471565b600054610100900460ff1661436a5760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b805161437590611a53565b60005b816020015151811015610b48576143ad8260200151828151811061439e5761439e615487565b602002602001015160016117d0565b806143b78161549d565b915050614378565b600054610100900460ff166144185760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b8051805160208201516040830151614431929190612222565b60005b826020015151811015610c2e5760008360200151828151811061445957614459615487565b6020026020010151905060008160200151905061448882600001518260000151836020015184604001516118e3565b505080806144959061549d565b915050614434565b600054610100900460ff166144f65760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b805180516020820151604083015161450f929190611fea565b60005b826020015151811015610c2e5760008360200151828151811061453757614537615487565b602002602001015190506000816020015190506145668260000151826000015183602001518460400151611b3a565b505080806145739061549d565b915050614512565b6000808061458d620151808504612b08565b9196909550909350915050565b60006137438484846145ab89614702565b6145b48a614720565b6145bd8b61473c565b614749565b600060243610156145d35750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015614640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146649190615609565b905090565b600054610100900460ff166146c25760405162461bcd60e51b815260206004820152602b602482015260008051602061570d83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610d0a565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000806147126201518084615652565b90506110ff610e10826155cc565b60008061472f610e1084615652565b90506110ff603c826155cc565b60006110a7603c83615652565b600081614757603c85615552565b614763610e1087615552565b620151806147728b8b8b6147a5565b61477c9190615552565b61478691906155e0565b61479091906155e0565b61479a91906155e0565b979650505050505050565b60006107b28410156147b657600080fd5b838383600062253d8c60046064600c6147d0600e88615666565b6147da9190615686565b6147e6886113246156b4565b6147f091906156b4565b6147fa9190615686565b6148059060036156dc565b61480f9190615686565b600c8061481d600e88615666565b6148279190615686565b61483290600c6156dc565b61483d600288615666565b6148479190615666565b6148539061016f6156dc565b61485d9190615686565b6004600c61486c600e89615666565b6148769190615686565b614882896112c06156b4565b61488c91906156b4565b614898906105b56156dc565b6148a29190615686565b6148ae617d4b87615666565b6148b891906156b4565b6148c291906156b4565b6148cc9190615666565b6148d69190615666565b98975050505050505050565b6001600160a01b0381168114611a0957600080fd5b8035614902816148e2565b919050565b6000806000806080858703121561491d57600080fd5b8435614928816148e2565b966020860135965060408601359560600135945092505050565b803560ff8116811461490257600080fd5b6000806000806080858703121561496957600080fd5b61492885614942565b60006020828403121561498457600080fd5b81356110ff816148e2565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156149c8576149c861498f565b60405290565b6040516080810167ffffffffffffffff811182821017156149c8576149c861498f565b60405160c0810167ffffffffffffffff811182821017156149c8576149c861498f565b6040516020810167ffffffffffffffff811182821017156149c8576149c861498f565b604051610120810167ffffffffffffffff811182821017156149c8576149c861498f565b604051601f8201601f1916810167ffffffffffffffff81118282101715614a8457614a8461498f565b604052919050565b600067ffffffffffffffff821115614aa657614aa661498f565b5060051b60200190565b600082601f830112614ac157600080fd5b81356020614ad6614ad183614a8c565b614a5b565b82815260059290921b84018101918181019086841115614af557600080fd5b8286015b84811015614b19578035614b0c816148e2565b8352918301918301614af9565b509695505050505050565b8015158114611a0957600080fd5b60008060408385031215614b4557600080fd5b823567ffffffffffffffff80821115614b5d57600080fd5b614b6986838701614ab0565b9350602091508185013581811115614b8057600080fd5b85019050601f81018613614b9357600080fd5b8035614ba1614ad182614a8c565b81815260059190911b82018301908381019088831115614bc057600080fd5b928401925b82841015614be7578335614bd881614b24565b82529284019290840190614bc5565b80955050505050509250929050565b60008060008060808587031215614c0c57600080fd5b8435614c17816148e2565b93506020850135614c27816148e2565b93969395505050506040820135916060013590565b600060408284031215614c4e57600080fd5b614c566149a5565b90508135614c63816148e2565b808252506020820135602082015292915050565b600082601f830112614c8857600080fd5b81356020614c98614ad183614a8c565b82815260069290921b84018101918181019086841115614cb757600080fd5b8286015b84811015614b1957614ccd8882614c3c565b835291830191604001614cbb565b600082601f830112614cec57600080fd5b81356020614cfc614ad183614a8c565b82815260609283028501820192828201919087851115614d1b57600080fd5b8387015b85811015614d695781818a031215614d375760008081fd5b614d3f6149a5565b8135614d4a816148e2565b8152614d588a838801614c3c565b818701528452928401928101614d1f565b5090979650505050505050565b600060608284031215614d8857600080fd5b6040516060810181811067ffffffffffffffff82111715614dab57614dab61498f565b6040529050808235614dbc816148e2565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215614ded57600080fd5b614df56149ce565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215614e3157600080fd5b614e396149ce565b9050614e4482614942565b815260208201356020820152604082013560408201526060820135606082015292915050565b80356002811061490257600080fd5b600060408284031215614e8b57600080fd5b614e936149a5565b9050614e9e82614e6a565b8152602082013567ffffffffffffffff811115614eba57600080fd5b614ec684828501614ab0565b60208301525092915050565b600060808284031215614ee457600080fd5b614eec6149a5565b90508135614ef9816148e2565b8152614f088360208401614d76565b602082015292915050565b60006080808385031215614f2657600080fd5b614f2e6149a5565b9150614f3a8484614d76565b8252606083013567ffffffffffffffff811115614f5657600080fd5b8301601f81018513614f6757600080fd5b80356020614f77614ad183614a8c565b82815260079290921b83018101918181019088841115614f9657600080fd5b938201935b83851015614fbc57614fad8986614ed2565b82529385019390820190614f9b565b808388015250505050505092915050565b60006101c08284031215614fe057600080fd5b614fe86149f1565b9050614ff48383614d76565b81526150038360608401614ddb565b60208201526150158360e08401614e1f565b604082015261016082013567ffffffffffffffff8082111561503657600080fd5b61504285838601614e79565b606084015261018084013591508082111561505c57600080fd5b61506885838601614f13565b60808401526101a084013591508082111561508257600080fd5b5061508f84828501614f13565b60a08301525092915050565b6000602082840312156150ad57600080fd5b813567ffffffffffffffff808211156150c557600080fd5b90830190602082860312156150d957600080fd5b6150e1614a14565b8235828111156150f057600080fd5b9290920191610140838703121561510657600080fd5b61510e614a37565b615117846148f7565b8152615125602085016148f7565b6020820152604084013560408201526060840135606082015261514b8760808601614c3c565b608082015260c08401358381111561516257600080fd5b61516e88828701614c77565b60a08301525060e08401358381111561518657600080fd5b61519288828701614c77565b60c08301525061010080850135848111156151ac57600080fd5b6151b889828801614cdb565b60e084015250610120850135848111156151d157600080fd5b6151dd89828801614fcd565b9183019190915250815295945050505050565b60006020828403121561520257600080fd5b6110ff82614e6a565b634e487b7160e01b600052602160045260246000fd5b602081016002831061524357634e487b7160e01b600052602160045260246000fd5b91905290565b60008060006060848603121561525e57600080fd5b8335615269816148e2565b92506020840135615279816148e2565b929592945050506040919091013590565b6000806040838503121561529d57600080fd5b50508035926020909101359150565b600080604083850312156152bf57600080fd5b82356152ca816148e2565b946020939093013593505050565b6000806000606084860312156152ed57600080fd5b83356152f8816148e2565b95602085013595506040909401359392505050565b60006020828403121561531f57600080fd5b5035919050565b6000806000806080858703121561533c57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b818103818111156110a7576110a7615358565b60005b8381101561539c578181015183820152602001615384565b50506000910152565b600081518084526153bd816020860160208601615381565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820152600061142660408301846153a5565b60006020828403121561540557600080fd5b815167ffffffffffffffff8082111561541d57600080fd5b818401915084601f83011261543157600080fd5b8151818111156154435761544361498f565b615456601f8201601f1916602001614a5b565b915080825285602082850101111561546d57600080fd5b61547e816020840160208601615381565b50949350505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016154af576154af615358565b5060010190565b6000602082840312156154c857600080fd5b5051919050565b600081518084526020808501945080840160005b838110156154ff578151875295820195908201906001016154e3565b509495945050505050565b6001600160a01b03841681526001600160e01b03198316602082015260606040820152600061374360608301846154cf565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176110a7576110a7615358565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526155a560808301846154cf565b9695505050505050565b6000602082840312156155c157600080fd5b81516110ff81614b24565b6000826155db576155db61553c565b500490565b808201808211156110a7576110a7615358565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561561b57600080fd5b81516110ff816148e2565b60006001600160a01b0380861683528085166020840152506060604083015261374360608301846153a5565b6000826156615761566161553c565b500690565b8181036000831280158383131683831282161715612d1d57612d1d615358565b6000826156955761569561553c565b600160ff1b8214600019841416156156af576156af615358565b500590565b80820182811260008312801582168215821617156156d4576156d4615358565b505092915050565b80820260008212600160ff1b841416156156f8576156f8615358565b81810583148215176110a7576110a761535856fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a264697066735822122028e85dd78ce6d6ccb803eda8d24f616fcc15fa4f2ae63ffe1816f817d3f9e72964736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
