{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC4626Exiter",
  "sourceName": "contracts/liquidity/erc4626/ERC4626Exiter.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": [],
      "name": "TaskConnectorZero",
      "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": [
        {
          "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": [],
      "name": "TaskPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "priorityFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskPriorityFeeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "connectorId",
          "type": "bytes32"
        }
      ],
      "name": "TaskSameBalanceConnectors",
      "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": 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": 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": 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": "erc4626",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minAmountOut",
          "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": "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": "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": [],
      "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": "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"
                },
                {
                  "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 BaseERC4626Task.BaseERC4626Config",
              "name": "baseERC4626Config",
              "type": "tuple"
            }
          ],
          "internalType": "struct ERC4626Exiter.ERC4626ExitConfig",
          "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": [
        {
          "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": "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": "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": "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": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6148b180620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80635ea54eee1161010f578063a5900c4d116100a2578063d3feb60211610071578063d3feb602146105d9578063d45a76cf146105ec578063e6b5be98146105ff578063f9eaee0d1461061257600080fd5b8063a5900c4d14610538578063b187bd2614610592578063c267621e146105af578063d09edf31146105c057600080fd5b80638456cb59116100de5780638456cb59146104d757806390333ba8146104df578063a0c3774f146104f2578063a33741771461050557600080fd5b80635ea54eee146104395780636aacaad8146104655780637125590a146104b157806383f3084f146104c457600080fd5b80633f4ba83a116101875780634fd49efd116101565780634fd49efd146103a85780635064d83a146103d357806351a424b1146103e65780635670e2ce1461041e57600080fd5b80633f4ba83a1461033e578063423a4b401461034657806342d4693e146103595780634a45a3a81461037357600080fd5b806321972384116101c35780632197238414610261578063221a8c68146102745780632384c32d1461031857806330eae5721461032b57600080fd5b80630fe105e8146101f557806310188aef1461020a5780631047c5301461021d578063119a5e9614610230575b600080fd5b610208610203366004613c45565b610625565b005b610208610218366004613c93565b61065e565b61020861022b366004614121565b61068b565b6102386107b1565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b61020861026f36600461428d565b6107e8565b6102e6610282366004613c93565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610258565b610208610326366004614351565b610898565b610208610339366004614397565b6108c7565b610208610904565b610208610354366004614351565b61098b565b600f546103669060ff1681565b60405161025891906143c8565b61039a7f320a783b19175b52b40c9526effed094d0e7cf491ddc4abb8b593e6ed9f26c7b81565b604051908152602001610258565b6001546103bb906001600160a01b031681565b6040516001600160a01b039091168152602001610258565b6102086103e13660046143f0565b6109ba565b6103f96103f4366004613c93565b610b3c565b604080516001600160a01b039094168452602084019290925290820152606001610258565b60025460035460408051928352602083019190915201610258565b600654600754600854600954604080519485526020850193909352918301526060820152608001610258565b6102e66040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6102086104bf366004614425565b610b65565b601c546103bb906001600160a01b031681565b610208610b90565b6102086104ed3660046143f0565b610c02565b61039a610500366004613c93565b610c35565b6103f9604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103f9610546366004613c93565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b60045461059f9060ff1681565b6040519015158152602001610258565b6001546001600160a01b03166103bb565b6000546103bb906201000090046001600160a01b031681565b6102086105e73660046143f0565b610ccc565b6102e66105fa366004613c93565b610cf9565b61020861060d366004614447565b610d68565b61059f610620366004613c93565b610d97565b6106348460ff16848484610de2565b61064b336000356001600160e01b03191683610e8d565b61065785858585610ed4565b5050505050565b61066781611179565b61067e336000356001600160e01b03191683610e8d565b6106878261118d565b5050565b600054610100900460ff16158080156106ab5750600054600160ff909116105b806106c55750303b1580156106c5575060005460ff166001145b61073c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561075f576000805461ff0019166101001790555b61076882611224565b8015610687576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600a5460009081908190819060ff1660028111156107d1576107d16143b2565b600b54600c54600e54935093509350935090919293565b6107fe336000356001600160e01b031916611294565b8051825114610839576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156108935761088183828151811061085a5761085a614479565b602002602001015183838151811061087457610874614479565b60200260200101516112b0565b8061088b816144a5565b91505061083c565b505050565b6108a48484848461135a565b6108bb336000356001600160e01b03191683610e8d565b610657858585856113c3565b6108e48160018111156108dc576108dc6143b2565b60ff1661147c565b6108fb336000356001600160e01b03191683610e8d565b610687826114c3565b61091a336000356001600160e01b031916611294565b60045460ff16610956576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6109978484848461135a565b6109ae336000356001600160e01b03191683610e8d565b61065785858585611520565b6109c58383836115e0565b6109dc336000356001600160e01b03191683610e8d565b826000036109f0576109ed84610c35565b92505b6109fa8484611672565b604080516001600160a01b03868116602483015260448201869052606480830186905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbbdc953100000000000000000000000000000000000000000000000000000000179052600154601c5493517f1cff79cd000000000000000000000000000000000000000000000000000000008152929360009391831692631cff79cd92610ac29290911690869060040161450e565b6000604051808303816000875af1158015610ae1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b099190810190614530565b905060008082806020019051810190610b2291906145c4565b91509150610b328888848461167c565b5050505050505050565b600080600080610b4b85611688565b805160208201516040909201519097919650945092505050565b610b6f8282611713565b610b86336000356001600160e01b03191683610e8d565b610893838361177f565b610ba6336000356001600160e01b031916611294565b60045460ff1615610bca5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610c0d8383836115e0565b610c24336000356001600160e01b03191683610e8d565b610c2f848484611802565b50505050565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc691906145f2565b92915050565b610cd78383836115e0565b610cee336000356001600160e01b03191683610e8d565b610c2f848484611858565b600080600080600080610d0b876118b4565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610d7484848484610de2565b610d8b336000356001600160e01b03191683610e8d565b610657858585856118e8565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610dcd57610dcd6143b2565b14610dd9578015610ddb565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610e1957610e19614479565b6020026020010181815250508381600181518110610e3957610e39614479565b6020026020010181815250508281600281518110610e5957610e59614479565b6020026020010181815250508181600381518110610e7957610e79614479565b602002602001018181525050949350505050565b610e98838383611983565b610893578282826040517f960c80da00000000000000000000000000000000000000000000000000000000815260040161073393929190614646565b60ff8416610f85576000811180610eeb5750600082115b15610f805782600003610f1d5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610733565b801580610f2957508281115b15610f5357604051639e12fccf60e01b815260ff8516600482015260248101829052604401610733565b81600003610f8057604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b6110e2565b82600003610fb25760405163bea499cb60e01b815260ff8516600482015260248101849052604401610733565b801580610fca5750610fc76224ea0084614678565b81115b15610ff457604051639e12fccf60e01b815260ff8516600482015260248101829052604401610733565b8160000361102157604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b60001960ff85160161106357601c61103883611a21565b1115610f8057604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b60011960ff8516016110ab5761107882611a38565b61108183611a21565b14610f8057604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610733565b8360ff1660028111156110f7576110f76143b2565b600a805460ff19166001836002811115611113576111136143b2565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6060610cc6826001600160a01b031661147c565b6001600160a01b0381166111cd576040517f05579e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f47fc0d82886e91fbb050eba4ff32c0c0d7fa2b4efffceba283e42975d9c894ff90600090a250565b600054610100900460ff1661127d5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b805161128890611a5b565b61129181611aca565b50565b6040805160008152602081019091526106879083908390610e8d565b6001600160a01b0382166112f0576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061130557611300601083611b23565b611310565b611310601083611b38565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161134e911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061139a5761139a614479565b602002602001018181525050836001600160a01b031681600181518110610e3957610e39614479565b6001600160a01b038416611403576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061142790848484611b4d565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b6040805160018082528183019092526060916020808301908036833701905050905081816000815181106114b2576114b2614479565b602002602001018181525050919050565b600f805482919060ff1916600183818111156114e1576114e16143b2565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a8160405161151591906143c8565b60405180910390a150565b6001600160a01b038416611560576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b6020526040902061158490848484611c2a565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e144884846040516115d2929190918252602082015260400190565b60405180910390a350505050565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061161f5761161f614479565b602002602001018181525050828160018151811061163f5761163f614479565b602002602001018181525050818160028151811061165f5761165f614479565b6020026020010181815250509392505050565b6106878282611d96565b610c2f84848484611e1a565b6116b5604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156116de57806116e1565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061174a5761174a614479565b6020026020010181815250508160001c8160018151811061176d5761176d614479565b60200260200101818152505092915050565b808214801561178d57508115155b156117c7576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610733565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b61180f6016848484611c2a565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b6118656012848484611b4d565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156118df5780610ddb565b60169392505050565b670de0b6b3a764000081111561192a576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d6919060800161116b565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906328522895906119d890879030908890889060040161468f565b602060405180830381865afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1991906146d5565b949350505050565b6000611a19611a336201518084614708565b611e2e565b60008080611a4c611a336201518086614708565b5091509150611a198282611eca565b600054610100900460ff16611ab45760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611ac18160200151611f50565b61129181611ffd565b600054610100900460ff166112915760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b6000610ddb836001600160a01b038416612061565b6000610ddb836001600160a01b03841661215b565b60006001600160a01b038416158015611b64575082155b8015611b6e575081155b905060006001600160a01b03851615801590611b925750821580611b925750838310155b905081158015611ba0575080155b15611bf0576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610733565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b60006001600160a01b038416158015611c41575082155b8015611c4b575081155b905060006001600160a01b03851615801590611c675750600084115b8015611c735750600083115b905081158015611c81575080155b15611cd1576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610733565b60038601839055600186018490558115611cf8576000600287018190556004870155611d64565b8560040154600003611d1f5760006002870155611d15834261471c565b6004870155611d64565b85546001600160a01b03868116911614611d64578554600090611d4b906001600160a01b0316876121aa565b6002880154909150611d5d90826121b6565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b611da08282612213565b6001600160a01b038216611de0576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610687576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e248282612259565b610c2f84846122df565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611e8b57611e8b6146f2565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611edb5750816003145b80611ee65750816005145b80611ef15750816007145b80611efc5750816008145b80611f07575081600a145b80611f12575081600c145b15611f1f5750601f610cc6565b81600214611f2f5750601e610cc6565b611f3883612307565b611f4357601c611f46565b601d5b60ff169392505050565b600054610100900460ff16611fa95760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b8051611fb490612343565b611fbc612413565b611fc98160200151612476565b611fd681604001516124d8565b611fe3816060015161253a565b611ff0816080015161259c565b6112888160a001516125fe565b600054610100900460ff166120565760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b80516112919061118d565b6000818152600183016020526040812054801561214a57600061208560018361472f565b85549091506000906120999060019061472f565b90508181146120fe5760008660000182815481106120b9576120b9614479565b90600052602060002001549050808760000184815481106120dc576120dc614479565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061210f5761210f614742565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cc6565b6000915050610cc6565b5092915050565b60008181526001830160205260408120546121a257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cc6565b506000610cc6565b6000610ddb8383612660565b600082820283158015906121d95750828482816121d5576121d56146f2565b0414155b1561220157604051637472527d60e11b81526004810185905260248101849052604401610733565b670de0b6b3a764000090049392505050565b61221d828261285f565b6122278282612869565b612231828261288d565b61223b8282612979565b6122458282612b68565b61224f8282612bb2565b6106878282612c9f565b60035415610687576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b1580156122c357600080fd5b505af11580156122d7573d6000803e3d6000fd5b505050505050565b6122e98282612db5565b6122f38282612e57565b6122fd8282612e79565b61068782826130c3565b6000612314600483614758565b15801561232a5750612327606483614758565b15155b80610cc6575061233c61019083614758565b1592915050565b600054610100900460ff1661239c5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61240a81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612405919061476c565b6130f0565b61129181613152565b600054610100900460ff1661246c5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b6124746131ed565b565b600054610100900460ff166124cf5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61129181613246565b600054610100900460ff166125315760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816132bb565b600054610100900460ff166125935760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61129181613330565b600054610100900460ff166125f55760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816133de565b600054610100900460ff166126575760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816134bc565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126da919061476c565b90506001600160a01b03811661272b576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610733565b600061273561359a565b905080516000146127c657816001600160a01b031663355efdd96127588761361a565b6127618761361a565b846040518463ffffffff1660e01b815260040161278093929190614789565b602060405180830381865afa15801561279d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c191906145f2565b612856565b816001600160a01b031663ac41865a6127de8761361a565b6127e78761361a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285691906145f2565b95945050505050565b610687828261364e565b60045460ff16156106875760405163181e462560e31b815260040160405180910390fd5b5a6005556040805160808101825260065480825260075460208301526008549282019290925260095460608201529060009015806128cc575081513a11155b9050806129115781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610733565b602082015115610c2f576000612927483a61472f565b6020840151909150811115806122d75760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610733918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156129b55760405163013ce60b60e01b815242600482015260248101839052604401610733565b60008460028111156129c9576129c96143b2565b03612a8257826000036129de57505050505050565b806000036129f8576129f0834261471c565b600d556122d7565b6000612a04834261472f565b90506000612a128583614708565b90506000612a208683614678565b612a2a908461472f565b905083811115612a565760405163013ce60b60e01b815242600482015260248101869052604401610733565b85612a6283600161471c565b612a6c9190614678565b612a76908661471c565b600d55506122d7915050565b814210158015612a9b5750612a97818361471c565b4211155b15612aaa576129f082846136a1565b60006001856002811115612ac057612ac06143b2565b14612ad357612ace42611a38565b612adc565b612adc83611a21565b90506000612aea8483613739565b905080421015612b165760405163013ce60b60e01b815242600482015260248101829052604401610733565b6000612b22848361471c565b90504281108015612b4f5760405163013ce60b60e01b815242600482015260248101839052604401610733565b612b5983886136a1565b600d5550505050505050505050565b612b7182610d97565b610687576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610733565b6000612bbd83611688565b80519091506001600160a01b0316612bd457505050565b6000836001600160a01b031682600001516001600160a01b031614612c1057612c0b612c048584600001516121aa565b84906121b6565b612c12565b825b9050600082602001518210158015612c3a575060408301511580612c3a575082604001518211155b905080610657578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610733565b6000612caa836118b4565b6040805160a08101825282546001600160a01b031680825260018401546020830152600284015492820192909252600383015460608201526004909201546080830152909150612cf957505050565b6000836001600160a01b031682600001516001600160a01b031614612d2e57612d29612c048584600001516121aa565b612d30565b825b9050600082608001514210612d46576000612d4c565b82604001515b612d56908361471c565b9050826020015181111561065757825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610733565b6000612dc0836118b4565b80549091506001600160a01b0316612dd757505050565b80546000906001600160a01b03858116911614612e0d578154612e0890612c049086906001600160a01b03166121aa565b612e0f565b825b905081600401544210612e3857600060028301556003820154612e32904261471c565b60048301555b80826002016000828254612e4c919061471c565b909155505050505050565b600d54600003612e65575050565b612e70600d54613758565b50506000600d55565b600554600003612eb5576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554612eee919061472f565b90506000612efc3a83614678565b90506000836040015160001480612f17575083604001518211155b905080612f61578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610733929190918252602082015260400190565b6000600555606084015115801590612f795750600085115b156122d757600061304c306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe5919061476c565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613022573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613046919061476c565b886121aa565b9050600061305a848361378d565b9050600061306882896137ff565b905086606001518111156130b85760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610733918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b600054610100900460ff166131495760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816138c8565b600054610100900460ff166131ab5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208101516040820151611291919061177f565b600054610100900460ff166124745760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b600054610100900460ff1661329f5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61129181600001518260200151836040015184606001516118e8565b600054610100900460ff166133145760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b6112918160000151826020015183604001518460600151610ed4565b600054610100900460ff166133895760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b8051613394906114c3565b60005b816020015151811015610687576133cc826020015182815181106133bd576133bd614479565b602002602001015160016112b0565b806133d6816144a5565b915050613397565b600054610100900460ff166134375760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b8051805160208201516040830151613450929190611858565b60005b8260200151518110156108935760008360200151828151811061347857613478614479565b602002602001015190506000816020015190506134a782600001518260000151836020015184604001516113c3565b505080806134b4906144a5565b915050613453565b600054610100900460ff166135155760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b805180516020820151604083015161352e929190611802565b60005b8260200151518110156108935760008360200151828151811061355657613556614479565b602002602001015190506000816020015190506135858260000151826000015183602001518460400151611520565b50508080613592906144a5565b915050613531565b606060006135a6613961565b9050368111156135c457505060408051600081526020810190915290565b8067ffffffffffffffff8111156135dd576135dd613cb0565b6040519080825280601f01601f191660200182016040528015613607576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038316146136465781610cc6565b610cc661397c565b600254156106875760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb906084016122a9565b6000806000806136b086613a08565b9194509250905060006136c3868461471c565b905060006136d2600c83614758565b905060006136e1600c84614708565b6136eb908761471c565b905060006002600a5460ff166002811115613708576137086143b2565b14613713578461371d565b61371d8284611eca565b905061372b8a838584613a27565b9a9950505050505050505050565b600080600061374742613a08565b509150915061285685838387613a27565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad06490602001611515565b600082820283158015906137b05750828482816137ac576137ac6146f2565b0414155b156137d857604051637472527d60e11b81526004810185905260248101849052604401610733565b80156137f557670de0b6b3a7640000600019820104600101611a19565b6000949350505050565b60008160000361383b576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361384b57506000610cc6565b670de0b6b3a764000083810290848281613867576138676146f2565b04146138a9576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610733565b8260018203816138bb576138bb6146f2565b0460010191505092915050565b600054610100900460ff166139215760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600060243610156139725750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa1580156139df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a03919061476c565b905090565b60008080613a1a620151808504611e2e565b9196909550909350915050565b6000612856848484613a3889613a4f565b613a418a613a6d565b613a4a8b613a89565b613a96565b600080613a5f6201518084614758565b9050610ddb610e1082614708565b600080613a7c610e1084614758565b9050610ddb603c82614708565b6000610cc6603c83614758565b600081613aa4603c85614678565b613ab0610e1087614678565b62015180613abf8b8b8b613af2565b613ac99190614678565b613ad3919061471c565b613add919061471c565b613ae7919061471c565b979650505050505050565b60006107b2841015613b0357600080fd5b838383600062253d8c60046064600c613b1d600e886147b5565b613b2791906147d5565b613b3388611324614803565b613b3d9190614803565b613b4791906147d5565b613b5290600361482b565b613b5c91906147d5565b600c80613b6a600e886147b5565b613b7491906147d5565b613b7f90600c61482b565b613b8a6002886147b5565b613b9491906147b5565b613ba09061016f61482b565b613baa91906147d5565b6004600c613bb9600e896147b5565b613bc391906147d5565b613bcf896112c0614803565b613bd99190614803565b613be5906105b561482b565b613bef91906147d5565b613bfb617d4b876147b5565b613c059190614803565b613c0f9190614803565b613c1991906147b5565b613c2391906147b5565b98975050505050505050565b803560ff81168114613c4057600080fd5b919050565b60008060008060808587031215613c5b57600080fd5b613c6485613c2f565b966020860135965060408601359560600135945092505050565b6001600160a01b038116811461129157600080fd5b600060208284031215613ca557600080fd5b8135610ddb81613c7e565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b60405290565b6040805190810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b6040516020810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b60405160c0810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b604051601f8201601f1916810167ffffffffffffffff81118282101715613d8157613d81613cb0565b604052919050565b600060608284031215613d9b57600080fd5b6040516060810181811067ffffffffffffffff82111715613dbe57613dbe613cb0565b6040529050808235613dcf81613c7e565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613e0057600080fd5b613e08613cc6565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613e4457600080fd5b613e4c613cc6565b9050613e5782613c2f565b815260208201356020820152604082013560408201526060820135606082015292915050565b803560028110613c4057600080fd5b600067ffffffffffffffff821115613ea657613ea6613cb0565b5060051b60200190565b600082601f830112613ec157600080fd5b81356020613ed6613ed183613e8c565b613d58565b82815260059290921b84018101918181019086841115613ef557600080fd5b8286015b84811015613f19578035613f0c81613c7e565b8352918301918301613ef9565b509695505050505050565b600060408284031215613f3657600080fd5b613f3e613cef565b9050613f4982613e7d565b8152602082013567ffffffffffffffff811115613f6557600080fd5b613f7184828501613eb0565b60208301525092915050565b600060808284031215613f8f57600080fd5b613f97613cef565b90508135613fa481613c7e565b8152613fb38360208401613d89565b602082015292915050565b60006080808385031215613fd157600080fd5b613fd9613cef565b9150613fe58484613d89565b8252606083013567ffffffffffffffff81111561400157600080fd5b8301601f8101851361401257600080fd5b80356020614022613ed183613e8c565b82815260079290921b8301810191818101908884111561404157600080fd5b938201935b83851015614067576140588986613f7d565b82529385019390820190614046565b808388015250505050505092915050565b6000608080838503121561408b57600080fd5b614093613cef565b915061409f8484613d89565b8252606083013567ffffffffffffffff8111156140bb57600080fd5b8301601f810185136140cc57600080fd5b803560206140dc613ed183613e8c565b82815260079290921b830181019181810190888411156140fb57600080fd5b938201935b83851015614067576141128986613f7d565b82529385019390820190614100565b60006020828403121561413357600080fd5b813567ffffffffffffffff8082111561414b57600080fd5b908301906020828603121561415f57600080fd5b614167613d12565b82358281111561417657600080fd5b92909201916040838703121561418b57600080fd5b614193613cef565b833561419e81613c7e565b81526020840135838111156141b257600080fd5b93909301926101c084880312156141c857600080fd5b6141d0613d35565b6141da8886613d89565b81526141e98860608701613dee565b60208201526141fb8860e08701613e32565b60408201526101608501358481111561421357600080fd5b61421f89828801613f24565b6060830152506101808501358481111561423857600080fd5b61424489828801613fbe565b6080830152506101a08501358481111561425d57600080fd5b61426989828801614078565b60a0830152506020820152815295945050505050565b801515811461129157600080fd5b600080604083850312156142a057600080fd5b823567ffffffffffffffff808211156142b857600080fd5b6142c486838701613eb0565b93506020915081850135818111156142db57600080fd5b85019050601f810186136142ee57600080fd5b80356142fc613ed182613e8c565b81815260059190911b8201830190838101908883111561431b57600080fd5b928401925b828410156143425783356143338161427f565b82529284019290840190614320565b80955050505050509250929050565b6000806000806080858703121561436757600080fd5b843561437281613c7e565b9350602085013561438281613c7e565b93969395505050506040820135916060013590565b6000602082840312156143a957600080fd5b610ddb82613e7d565b634e487b7160e01b600052602160045260246000fd5b60208101600283106143ea57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060006060848603121561440557600080fd5b833561441081613c7e565b95602085013595506040909401359392505050565b6000806040838503121561443857600080fd5b50508035926020909101359150565b6000806000806080858703121561445d57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016144b7576144b761448f565b5060010190565b60005b838110156144d95781810151838201526020016144c1565b50506000910152565b600081518084526144fa8160208601602086016144be565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000611a1960408301846144e2565b60006020828403121561454257600080fd5b815167ffffffffffffffff8082111561455a57600080fd5b818401915084601f83011261456e57600080fd5b81518181111561458057614580613cb0565b614593601f8201601f1916602001613d58565b91508082528560208285010111156145aa57600080fd5b6145bb8160208401602086016144be565b50949350505050565b600080604083850312156145d757600080fd5b82516145e281613c7e565b6020939093015192949293505050565b60006020828403121561460457600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561463b5781518752958201959082019060010161461f565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612856606083018461460b565b8082028115828204841417610cc657610cc661448f565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526146cb608083018461460b565b9695505050505050565b6000602082840312156146e757600080fd5b8151610ddb8161427f565b634e487b7160e01b600052601260045260246000fd5b600082614717576147176146f2565b500490565b80820180821115610cc657610cc661448f565b81810381811115610cc657610cc661448f565b634e487b7160e01b600052603160045260246000fd5b600082614767576147676146f2565b500690565b60006020828403121561477e57600080fd5b8151610ddb81613c7e565b60006001600160a01b0380861683528085166020840152506060604083015261285660608301846144e2565b81810360008312801583831316838312821617156121545761215461448f565b6000826147e4576147e46146f2565b600160ff1b8214600019841416156147fe576147fe61448f565b500590565b80820182811260008312801582168215821617156148235761482361448f565b505092915050565b80820260008212600160ff1b841416156148475761484761448f565b8181058314821517610cc657610cc661448f56fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a264697066735822122028a70315d2b9d83dc8c5c166c3562a6530672150089ff90633c8624e85121d8664736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80635ea54eee1161010f578063a5900c4d116100a2578063d3feb60211610071578063d3feb602146105d9578063d45a76cf146105ec578063e6b5be98146105ff578063f9eaee0d1461061257600080fd5b8063a5900c4d14610538578063b187bd2614610592578063c267621e146105af578063d09edf31146105c057600080fd5b80638456cb59116100de5780638456cb59146104d757806390333ba8146104df578063a0c3774f146104f2578063a33741771461050557600080fd5b80635ea54eee146104395780636aacaad8146104655780637125590a146104b157806383f3084f146104c457600080fd5b80633f4ba83a116101875780634fd49efd116101565780634fd49efd146103a85780635064d83a146103d357806351a424b1146103e65780635670e2ce1461041e57600080fd5b80633f4ba83a1461033e578063423a4b401461034657806342d4693e146103595780634a45a3a81461037357600080fd5b806321972384116101c35780632197238414610261578063221a8c68146102745780632384c32d1461031857806330eae5721461032b57600080fd5b80630fe105e8146101f557806310188aef1461020a5780631047c5301461021d578063119a5e9614610230575b600080fd5b610208610203366004613c45565b610625565b005b610208610218366004613c93565b61065e565b61020861022b366004614121565b61068b565b6102386107b1565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b61020861026f36600461428d565b6107e8565b6102e6610282366004613c93565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610258565b610208610326366004614351565b610898565b610208610339366004614397565b6108c7565b610208610904565b610208610354366004614351565b61098b565b600f546103669060ff1681565b60405161025891906143c8565b61039a7f320a783b19175b52b40c9526effed094d0e7cf491ddc4abb8b593e6ed9f26c7b81565b604051908152602001610258565b6001546103bb906001600160a01b031681565b6040516001600160a01b039091168152602001610258565b6102086103e13660046143f0565b6109ba565b6103f96103f4366004613c93565b610b3c565b604080516001600160a01b039094168452602084019290925290820152606001610258565b60025460035460408051928352602083019190915201610258565b600654600754600854600954604080519485526020850193909352918301526060820152608001610258565b6102e66040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6102086104bf366004614425565b610b65565b601c546103bb906001600160a01b031681565b610208610b90565b6102086104ed3660046143f0565b610c02565b61039a610500366004613c93565b610c35565b6103f9604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103f9610546366004613c93565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b60045461059f9060ff1681565b6040519015158152602001610258565b6001546001600160a01b03166103bb565b6000546103bb906201000090046001600160a01b031681565b6102086105e73660046143f0565b610ccc565b6102e66105fa366004613c93565b610cf9565b61020861060d366004614447565b610d68565b61059f610620366004613c93565b610d97565b6106348460ff16848484610de2565b61064b336000356001600160e01b03191683610e8d565b61065785858585610ed4565b5050505050565b61066781611179565b61067e336000356001600160e01b03191683610e8d565b6106878261118d565b5050565b600054610100900460ff16158080156106ab5750600054600160ff909116105b806106c55750303b1580156106c5575060005460ff166001145b61073c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561075f576000805461ff0019166101001790555b61076882611224565b8015610687576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600a5460009081908190819060ff1660028111156107d1576107d16143b2565b600b54600c54600e54935093509350935090919293565b6107fe336000356001600160e01b031916611294565b8051825114610839576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156108935761088183828151811061085a5761085a614479565b602002602001015183838151811061087457610874614479565b60200260200101516112b0565b8061088b816144a5565b91505061083c565b505050565b6108a48484848461135a565b6108bb336000356001600160e01b03191683610e8d565b610657858585856113c3565b6108e48160018111156108dc576108dc6143b2565b60ff1661147c565b6108fb336000356001600160e01b03191683610e8d565b610687826114c3565b61091a336000356001600160e01b031916611294565b60045460ff16610956576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6109978484848461135a565b6109ae336000356001600160e01b03191683610e8d565b61065785858585611520565b6109c58383836115e0565b6109dc336000356001600160e01b03191683610e8d565b826000036109f0576109ed84610c35565b92505b6109fa8484611672565b604080516001600160a01b03868116602483015260448201869052606480830186905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbbdc953100000000000000000000000000000000000000000000000000000000179052600154601c5493517f1cff79cd000000000000000000000000000000000000000000000000000000008152929360009391831692631cff79cd92610ac29290911690869060040161450e565b6000604051808303816000875af1158015610ae1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b099190810190614530565b905060008082806020019051810190610b2291906145c4565b91509150610b328888848461167c565b5050505050505050565b600080600080610b4b85611688565b805160208201516040909201519097919650945092505050565b610b6f8282611713565b610b86336000356001600160e01b03191683610e8d565b610893838361177f565b610ba6336000356001600160e01b031916611294565b60045460ff1615610bca5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610c0d8383836115e0565b610c24336000356001600160e01b03191683610e8d565b610c2f848484611802565b50505050565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc691906145f2565b92915050565b610cd78383836115e0565b610cee336000356001600160e01b03191683610e8d565b610c2f848484611858565b600080600080600080610d0b876118b4565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610d7484848484610de2565b610d8b336000356001600160e01b03191683610e8d565b610657858585856118e8565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610dcd57610dcd6143b2565b14610dd9578015610ddb565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610e1957610e19614479565b6020026020010181815250508381600181518110610e3957610e39614479565b6020026020010181815250508281600281518110610e5957610e59614479565b6020026020010181815250508181600381518110610e7957610e79614479565b602002602001018181525050949350505050565b610e98838383611983565b610893578282826040517f960c80da00000000000000000000000000000000000000000000000000000000815260040161073393929190614646565b60ff8416610f85576000811180610eeb5750600082115b15610f805782600003610f1d5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610733565b801580610f2957508281115b15610f5357604051639e12fccf60e01b815260ff8516600482015260248101829052604401610733565b81600003610f8057604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b6110e2565b82600003610fb25760405163bea499cb60e01b815260ff8516600482015260248101849052604401610733565b801580610fca5750610fc76224ea0084614678565b81115b15610ff457604051639e12fccf60e01b815260ff8516600482015260248101829052604401610733565b8160000361102157604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b60001960ff85160161106357601c61103883611a21565b1115610f8057604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b60011960ff8516016110ab5761107882611a38565b61108183611a21565b14610f8057604051635686bf5960e11b815260ff8516600482015260248101839052604401610733565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610733565b8360ff1660028111156110f7576110f76143b2565b600a805460ff19166001836002811115611113576111136143b2565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6060610cc6826001600160a01b031661147c565b6001600160a01b0381166111cd576040517f05579e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f47fc0d82886e91fbb050eba4ff32c0c0d7fa2b4efffceba283e42975d9c894ff90600090a250565b600054610100900460ff1661127d5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b805161128890611a5b565b61129181611aca565b50565b6040805160008152602081019091526106879083908390610e8d565b6001600160a01b0382166112f0576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061130557611300601083611b23565b611310565b611310601083611b38565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161134e911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061139a5761139a614479565b602002602001018181525050836001600160a01b031681600181518110610e3957610e39614479565b6001600160a01b038416611403576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061142790848484611b4d565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b6040805160018082528183019092526060916020808301908036833701905050905081816000815181106114b2576114b2614479565b602002602001018181525050919050565b600f805482919060ff1916600183818111156114e1576114e16143b2565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a8160405161151591906143c8565b60405180910390a150565b6001600160a01b038416611560576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b6020526040902061158490848484611c2a565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e144884846040516115d2929190918252602082015260400190565b60405180910390a350505050565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061161f5761161f614479565b602002602001018181525050828160018151811061163f5761163f614479565b602002602001018181525050818160028151811061165f5761165f614479565b6020026020010181815250509392505050565b6106878282611d96565b610c2f84848484611e1a565b6116b5604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156116de57806116e1565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061174a5761174a614479565b6020026020010181815250508160001c8160018151811061176d5761176d614479565b60200260200101818152505092915050565b808214801561178d57508115155b156117c7576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610733565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b61180f6016848484611c2a565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b6118656012848484611b4d565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156118df5780610ddb565b60169392505050565b670de0b6b3a764000081111561192a576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d6919060800161116b565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906328522895906119d890879030908890889060040161468f565b602060405180830381865afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1991906146d5565b949350505050565b6000611a19611a336201518084614708565b611e2e565b60008080611a4c611a336201518086614708565b5091509150611a198282611eca565b600054610100900460ff16611ab45760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611ac18160200151611f50565b61129181611ffd565b600054610100900460ff166112915760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b6000610ddb836001600160a01b038416612061565b6000610ddb836001600160a01b03841661215b565b60006001600160a01b038416158015611b64575082155b8015611b6e575081155b905060006001600160a01b03851615801590611b925750821580611b925750838310155b905081158015611ba0575080155b15611bf0576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610733565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b60006001600160a01b038416158015611c41575082155b8015611c4b575081155b905060006001600160a01b03851615801590611c675750600084115b8015611c735750600083115b905081158015611c81575080155b15611cd1576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610733565b60038601839055600186018490558115611cf8576000600287018190556004870155611d64565b8560040154600003611d1f5760006002870155611d15834261471c565b6004870155611d64565b85546001600160a01b03868116911614611d64578554600090611d4b906001600160a01b0316876121aa565b6002880154909150611d5d90826121b6565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b611da08282612213565b6001600160a01b038216611de0576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610687576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e248282612259565b610c2f84846122df565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611e8b57611e8b6146f2565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611edb5750816003145b80611ee65750816005145b80611ef15750816007145b80611efc5750816008145b80611f07575081600a145b80611f12575081600c145b15611f1f5750601f610cc6565b81600214611f2f5750601e610cc6565b611f3883612307565b611f4357601c611f46565b601d5b60ff169392505050565b600054610100900460ff16611fa95760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b8051611fb490612343565b611fbc612413565b611fc98160200151612476565b611fd681604001516124d8565b611fe3816060015161253a565b611ff0816080015161259c565b6112888160a001516125fe565b600054610100900460ff166120565760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b80516112919061118d565b6000818152600183016020526040812054801561214a57600061208560018361472f565b85549091506000906120999060019061472f565b90508181146120fe5760008660000182815481106120b9576120b9614479565b90600052602060002001549050808760000184815481106120dc576120dc614479565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061210f5761210f614742565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cc6565b6000915050610cc6565b5092915050565b60008181526001830160205260408120546121a257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cc6565b506000610cc6565b6000610ddb8383612660565b600082820283158015906121d95750828482816121d5576121d56146f2565b0414155b1561220157604051637472527d60e11b81526004810185905260248101849052604401610733565b670de0b6b3a764000090049392505050565b61221d828261285f565b6122278282612869565b612231828261288d565b61223b8282612979565b6122458282612b68565b61224f8282612bb2565b6106878282612c9f565b60035415610687576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b1580156122c357600080fd5b505af11580156122d7573d6000803e3d6000fd5b505050505050565b6122e98282612db5565b6122f38282612e57565b6122fd8282612e79565b61068782826130c3565b6000612314600483614758565b15801561232a5750612327606483614758565b15155b80610cc6575061233c61019083614758565b1592915050565b600054610100900460ff1661239c5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61240a81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612405919061476c565b6130f0565b61129181613152565b600054610100900460ff1661246c5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b6124746131ed565b565b600054610100900460ff166124cf5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61129181613246565b600054610100900460ff166125315760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816132bb565b600054610100900460ff166125935760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61129181613330565b600054610100900460ff166125f55760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816133de565b600054610100900460ff166126575760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816134bc565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126da919061476c565b90506001600160a01b03811661272b576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610733565b600061273561359a565b905080516000146127c657816001600160a01b031663355efdd96127588761361a565b6127618761361a565b846040518463ffffffff1660e01b815260040161278093929190614789565b602060405180830381865afa15801561279d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c191906145f2565b612856565b816001600160a01b031663ac41865a6127de8761361a565b6127e78761361a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285691906145f2565b95945050505050565b610687828261364e565b60045460ff16156106875760405163181e462560e31b815260040160405180910390fd5b5a6005556040805160808101825260065480825260075460208301526008549282019290925260095460608201529060009015806128cc575081513a11155b9050806129115781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610733565b602082015115610c2f576000612927483a61472f565b6020840151909150811115806122d75760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610733918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156129b55760405163013ce60b60e01b815242600482015260248101839052604401610733565b60008460028111156129c9576129c96143b2565b03612a8257826000036129de57505050505050565b806000036129f8576129f0834261471c565b600d556122d7565b6000612a04834261472f565b90506000612a128583614708565b90506000612a208683614678565b612a2a908461472f565b905083811115612a565760405163013ce60b60e01b815242600482015260248101869052604401610733565b85612a6283600161471c565b612a6c9190614678565b612a76908661471c565b600d55506122d7915050565b814210158015612a9b5750612a97818361471c565b4211155b15612aaa576129f082846136a1565b60006001856002811115612ac057612ac06143b2565b14612ad357612ace42611a38565b612adc565b612adc83611a21565b90506000612aea8483613739565b905080421015612b165760405163013ce60b60e01b815242600482015260248101829052604401610733565b6000612b22848361471c565b90504281108015612b4f5760405163013ce60b60e01b815242600482015260248101839052604401610733565b612b5983886136a1565b600d5550505050505050505050565b612b7182610d97565b610687576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610733565b6000612bbd83611688565b80519091506001600160a01b0316612bd457505050565b6000836001600160a01b031682600001516001600160a01b031614612c1057612c0b612c048584600001516121aa565b84906121b6565b612c12565b825b9050600082602001518210158015612c3a575060408301511580612c3a575082604001518211155b905080610657578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610733565b6000612caa836118b4565b6040805160a08101825282546001600160a01b031680825260018401546020830152600284015492820192909252600383015460608201526004909201546080830152909150612cf957505050565b6000836001600160a01b031682600001516001600160a01b031614612d2e57612d29612c048584600001516121aa565b612d30565b825b9050600082608001514210612d46576000612d4c565b82604001515b612d56908361471c565b9050826020015181111561065757825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610733565b6000612dc0836118b4565b80549091506001600160a01b0316612dd757505050565b80546000906001600160a01b03858116911614612e0d578154612e0890612c049086906001600160a01b03166121aa565b612e0f565b825b905081600401544210612e3857600060028301556003820154612e32904261471c565b60048301555b80826002016000828254612e4c919061471c565b909155505050505050565b600d54600003612e65575050565b612e70600d54613758565b50506000600d55565b600554600003612eb5576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554612eee919061472f565b90506000612efc3a83614678565b90506000836040015160001480612f17575083604001518211155b905080612f61578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610733929190918252602082015260400190565b6000600555606084015115801590612f795750600085115b156122d757600061304c306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe5919061476c565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613022573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613046919061476c565b886121aa565b9050600061305a848361378d565b9050600061306882896137ff565b905086606001518111156130b85760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610733918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b600054610100900460ff166131495760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b611291816138c8565b600054610100900460ff166131ab5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208101516040820151611291919061177f565b600054610100900460ff166124745760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b600054610100900460ff1661329f5760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b61129181600001518260200151836040015184606001516118e8565b600054610100900460ff166133145760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b6112918160000151826020015183604001518460600151610ed4565b600054610100900460ff166133895760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b8051613394906114c3565b60005b816020015151811015610687576133cc826020015182815181106133bd576133bd614479565b602002602001015160016112b0565b806133d6816144a5565b915050613397565b600054610100900460ff166134375760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b8051805160208201516040830151613450929190611858565b60005b8260200151518110156108935760008360200151828151811061347857613478614479565b602002602001015190506000816020015190506134a782600001518260000151836020015184604001516113c3565b505080806134b4906144a5565b915050613453565b600054610100900460ff166135155760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b805180516020820151604083015161352e929190611802565b60005b8260200151518110156108935760008360200151828151811061355657613556614479565b602002602001015190506000816020015190506135858260000151826000015183602001518460400151611520565b50508080613592906144a5565b915050613531565b606060006135a6613961565b9050368111156135c457505060408051600081526020810190915290565b8067ffffffffffffffff8111156135dd576135dd613cb0565b6040519080825280601f01601f191660200182016040528015613607576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038316146136465781610cc6565b610cc661397c565b600254156106875760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb906084016122a9565b6000806000806136b086613a08565b9194509250905060006136c3868461471c565b905060006136d2600c83614758565b905060006136e1600c84614708565b6136eb908761471c565b905060006002600a5460ff166002811115613708576137086143b2565b14613713578461371d565b61371d8284611eca565b905061372b8a838584613a27565b9a9950505050505050505050565b600080600061374742613a08565b509150915061285685838387613a27565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad06490602001611515565b600082820283158015906137b05750828482816137ac576137ac6146f2565b0414155b156137d857604051637472527d60e11b81526004810185905260248101849052604401610733565b80156137f557670de0b6b3a7640000600019820104600101611a19565b6000949350505050565b60008160000361383b576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361384b57506000610cc6565b670de0b6b3a764000083810290848281613867576138676146f2565b04146138a9576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610733565b8260018203816138bb576138bb6146f2565b0460010191505092915050565b600054610100900460ff166139215760405162461bcd60e51b815260206004820152602b602482015260008051602061485c83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610733565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600060243610156139725750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa1580156139df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a03919061476c565b905090565b60008080613a1a620151808504611e2e565b9196909550909350915050565b6000612856848484613a3889613a4f565b613a418a613a6d565b613a4a8b613a89565b613a96565b600080613a5f6201518084614758565b9050610ddb610e1082614708565b600080613a7c610e1084614758565b9050610ddb603c82614708565b6000610cc6603c83614758565b600081613aa4603c85614678565b613ab0610e1087614678565b62015180613abf8b8b8b613af2565b613ac99190614678565b613ad3919061471c565b613add919061471c565b613ae7919061471c565b979650505050505050565b60006107b2841015613b0357600080fd5b838383600062253d8c60046064600c613b1d600e886147b5565b613b2791906147d5565b613b3388611324614803565b613b3d9190614803565b613b4791906147d5565b613b5290600361482b565b613b5c91906147d5565b600c80613b6a600e886147b5565b613b7491906147d5565b613b7f90600c61482b565b613b8a6002886147b5565b613b9491906147b5565b613ba09061016f61482b565b613baa91906147d5565b6004600c613bb9600e896147b5565b613bc391906147d5565b613bcf896112c0614803565b613bd99190614803565b613be5906105b561482b565b613bef91906147d5565b613bfb617d4b876147b5565b613c059190614803565b613c0f9190614803565b613c1991906147b5565b613c2391906147b5565b98975050505050505050565b803560ff81168114613c4057600080fd5b919050565b60008060008060808587031215613c5b57600080fd5b613c6485613c2f565b966020860135965060408601359560600135945092505050565b6001600160a01b038116811461129157600080fd5b600060208284031215613ca557600080fd5b8135610ddb81613c7e565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b60405290565b6040805190810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b6040516020810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b60405160c0810167ffffffffffffffff81118282101715613ce957613ce9613cb0565b604051601f8201601f1916810167ffffffffffffffff81118282101715613d8157613d81613cb0565b604052919050565b600060608284031215613d9b57600080fd5b6040516060810181811067ffffffffffffffff82111715613dbe57613dbe613cb0565b6040529050808235613dcf81613c7e565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613e0057600080fd5b613e08613cc6565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613e4457600080fd5b613e4c613cc6565b9050613e5782613c2f565b815260208201356020820152604082013560408201526060820135606082015292915050565b803560028110613c4057600080fd5b600067ffffffffffffffff821115613ea657613ea6613cb0565b5060051b60200190565b600082601f830112613ec157600080fd5b81356020613ed6613ed183613e8c565b613d58565b82815260059290921b84018101918181019086841115613ef557600080fd5b8286015b84811015613f19578035613f0c81613c7e565b8352918301918301613ef9565b509695505050505050565b600060408284031215613f3657600080fd5b613f3e613cef565b9050613f4982613e7d565b8152602082013567ffffffffffffffff811115613f6557600080fd5b613f7184828501613eb0565b60208301525092915050565b600060808284031215613f8f57600080fd5b613f97613cef565b90508135613fa481613c7e565b8152613fb38360208401613d89565b602082015292915050565b60006080808385031215613fd157600080fd5b613fd9613cef565b9150613fe58484613d89565b8252606083013567ffffffffffffffff81111561400157600080fd5b8301601f8101851361401257600080fd5b80356020614022613ed183613e8c565b82815260079290921b8301810191818101908884111561404157600080fd5b938201935b83851015614067576140588986613f7d565b82529385019390820190614046565b808388015250505050505092915050565b6000608080838503121561408b57600080fd5b614093613cef565b915061409f8484613d89565b8252606083013567ffffffffffffffff8111156140bb57600080fd5b8301601f810185136140cc57600080fd5b803560206140dc613ed183613e8c565b82815260079290921b830181019181810190888411156140fb57600080fd5b938201935b83851015614067576141128986613f7d565b82529385019390820190614100565b60006020828403121561413357600080fd5b813567ffffffffffffffff8082111561414b57600080fd5b908301906020828603121561415f57600080fd5b614167613d12565b82358281111561417657600080fd5b92909201916040838703121561418b57600080fd5b614193613cef565b833561419e81613c7e565b81526020840135838111156141b257600080fd5b93909301926101c084880312156141c857600080fd5b6141d0613d35565b6141da8886613d89565b81526141e98860608701613dee565b60208201526141fb8860e08701613e32565b60408201526101608501358481111561421357600080fd5b61421f89828801613f24565b6060830152506101808501358481111561423857600080fd5b61424489828801613fbe565b6080830152506101a08501358481111561425d57600080fd5b61426989828801614078565b60a0830152506020820152815295945050505050565b801515811461129157600080fd5b600080604083850312156142a057600080fd5b823567ffffffffffffffff808211156142b857600080fd5b6142c486838701613eb0565b93506020915081850135818111156142db57600080fd5b85019050601f810186136142ee57600080fd5b80356142fc613ed182613e8c565b81815260059190911b8201830190838101908883111561431b57600080fd5b928401925b828410156143425783356143338161427f565b82529284019290840190614320565b80955050505050509250929050565b6000806000806080858703121561436757600080fd5b843561437281613c7e565b9350602085013561438281613c7e565b93969395505050506040820135916060013590565b6000602082840312156143a957600080fd5b610ddb82613e7d565b634e487b7160e01b600052602160045260246000fd5b60208101600283106143ea57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060006060848603121561440557600080fd5b833561441081613c7e565b95602085013595506040909401359392505050565b6000806040838503121561443857600080fd5b50508035926020909101359150565b6000806000806080858703121561445d57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016144b7576144b761448f565b5060010190565b60005b838110156144d95781810151838201526020016144c1565b50506000910152565b600081518084526144fa8160208601602086016144be565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000611a1960408301846144e2565b60006020828403121561454257600080fd5b815167ffffffffffffffff8082111561455a57600080fd5b818401915084601f83011261456e57600080fd5b81518181111561458057614580613cb0565b614593601f8201601f1916602001613d58565b91508082528560208285010111156145aa57600080fd5b6145bb8160208401602086016144be565b50949350505050565b600080604083850312156145d757600080fd5b82516145e281613c7e565b6020939093015192949293505050565b60006020828403121561460457600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561463b5781518752958201959082019060010161461f565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612856606083018461460b565b8082028115828204841417610cc657610cc661448f565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526146cb608083018461460b565b9695505050505050565b6000602082840312156146e757600080fd5b8151610ddb8161427f565b634e487b7160e01b600052601260045260246000fd5b600082614717576147176146f2565b500490565b80820180821115610cc657610cc661448f565b81810381811115610cc657610cc661448f565b634e487b7160e01b600052603160045260246000fd5b600082614767576147676146f2565b500690565b60006020828403121561477e57600080fd5b8151610ddb81613c7e565b60006001600160a01b0380861683528085166020840152506060604083015261285660608301846144e2565b81810360008312801583831316838312821617156121545761215461448f565b6000826147e4576147e46146f2565b600160ff1b8214600019841416156147fe576147fe61448f565b500590565b80820182811260008312801582168215821617156148235761482361448f565b505092915050565b80820260008212600160ff1b841416156148475761484761448f565b8181058314821517610cc657610cc661448f56fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a264697066735822122028a70315d2b9d83dc8c5c166c3562a6530672150089ff90633c8624e85121d8664736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
