{
  "_format": "hh-sol-artifact-1",
  "contractName": "RelayerDepositor",
  "sourceName": "contracts/relayer/RelayerDepositor.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": "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": [],
      "name": "TaskRelayerZero",
      "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": [
        {
          "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": "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": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        }
      ],
      "name": "TimeLockAllowedAtSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TimeLockSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "added",
          "type": "bool"
        }
      ],
      "name": "TokensAcceptanceListSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "acceptanceType",
          "type": "uint8"
        }
      ],
      "name": "TokensAcceptanceTypeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "EXECUTION_TYPE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "authorizer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "call",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "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": "config",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_relayer",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "isTokenAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "relayer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "setBalanceConnectors",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "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": "address",
          "name": "newRelayer",
          "type": "address"
        }
      ],
      "name": "setRelayer",
      "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": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61476d80620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636aacaad81161010f578063a5900c4d116100a2578063d3feb60211610071578063d3feb602146105d9578063d45a76cf146105ec578063e6b5be98146105ff578063f9eaee0d1461061257600080fd5b8063a5900c4d14610538578063b187bd2614610592578063c267621e146105af578063d09edf31146105c057600080fd5b80638456cb59116100de5780638456cb59146104d757806390333ba8146104df578063a0c3774f146104f2578063a33741771461050557600080fd5b80636aacaad8146104525780637125590a1461049e5780638069c2cd146104b15780638406c079146104c457600080fd5b8063423a4b401161018757806351a424b11161015657806351a424b1146103c05780635670e2ce146103f85780635ea54eee146104135780636548e9bc1461043f57600080fd5b8063423a4b401461033357806342d4693e146103465780634a45a3a8146103605780634fd49efd1461039557600080fd5b80632384c32d116101c35780632384c32d146102f257806330eae572146103055780633bd9ef28146103185780633f4ba83a1461032b57600080fd5b80630fe105e8146101f5578063119a5e961461020a578063219723841461023b578063221a8c681461024e575b600080fd5b610208610203366004613b68565b610625565b005b61021261065e565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b610208610249366004613d1d565b610695565b6102c061025c366004613de1565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610232565b610208610300366004613dfe565b610745565b610208610313366004613e53565b610774565b610208610326366004613e6e565b6107b5565b61020861090d565b610208610341366004613dfe565b610994565b600f546103539060ff1681565b6040516102329190613eb0565b6103877f1e074eb2b784a46b7383c748126a8ba7012fdb3d9bab17006b96d93ea660893181565b604051908152602001610232565b6001546103a8906001600160a01b031681565b6040516001600160a01b039091168152602001610232565b6103d36103ce366004613de1565b6109c3565b604080516001600160a01b039094168452602084019290925290820152606001610232565b60025460035460408051928352602083019190915201610232565b600654600754600854600954604080519485526020850193909352918301526060820152608001610232565b61020861044d366004613de1565b6109ec565b6102c06040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6102086104ac366004613ed8565b610a15565b6102086104bf3660046141eb565b610a40565b601c546103a8906001600160a01b031681565b610208610b69565b6102086104ed3660046142ec565b610bdb565b610387610500366004613de1565b610c08565b6103d3604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103d3610546366004613de1565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b60045461059f9060ff1681565b6040519015158152602001610232565b6001546001600160a01b03166103a8565b6000546103a8906201000090046001600160a01b031681565b6102086105e73660046142ec565b610c9f565b6102c06105fa366004613de1565b610ccc565b61020861060d366004614321565b610d3b565b61059f610620366004613de1565b610d6a565b6106348460ff16848484610db5565b61064b336000356001600160e01b03191683610e60565b61065785858585610ea7565b5050505050565b600a5460009081908190819060ff16600281111561067e5761067e613e9a565b600b54600c54600e54935093509350935090919293565b6106ab336000356001600160e01b03191661114c565b80518251146106e6576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156107405761072e83828151811061070757610707614353565b602002602001015183838151811061072157610721614353565b6020026020010151611168565b806107388161437f565b9150506106e9565b505050565b61075184848484611212565b610768336000356001600160e01b03191683610e60565b6106578585858561127b565b61079181600181111561078957610789613e9a565b60ff16611334565b6107a8336000356001600160e01b03191683610e60565b6107b18261137b565b5050565b6107bf82826113d8565b6107d6336000356001600160e01b03191683610e60565b816000036107ea576107e783610c08565b91505b6107f48383611447565b600154604080516001600160a01b0392831660248201819052604480830187905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f47e7ef2400000000000000000000000000000000000000000000000000000000179052601c5492517f4ae0004100000000000000000000000000000000000000000000000000000000815291939092634ae00041926108b5929190911690859088906004016143e8565b6000604051808303816000875af11580156108d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fc919081019061441a565b50610907848461148b565b50505050565b610923336000356001600160e01b03191661114c565b60045460ff1661095f576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6109a084848484611212565b6109b7336000356001600160e01b03191683610e60565b61065785858585611495565b6000806000806109d285611555565b805160208201516040909201519097919650945092505050565b6109f5816115e0565b610a0c336000356001600160e01b03191683610e60565b6107b1826115f4565b610a1f828261168b565b610a36336000356001600160e01b03191683610e60565b61074083836116e5565b600054610100900460ff1615808015610a605750600054600160ff909116105b80610a7a5750303b158015610a7a575060005460ff166001145b610af15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610b14576000805461ff0019166101001790555b610b1e8383611768565b8015610740576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a1505050565b610b7f336000356001600160e01b03191661114c565b60045460ff1615610ba35760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610be68383836117d4565b610bfd336000356001600160e01b03191683610e60565b610907848484611866565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9991906144ae565b92915050565b610caa8383836117d4565b610cc1336000356001600160e01b03191683610e60565b6109078484846118bc565b600080600080600080610cde87611910565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610d4784848484610db5565b610d5e336000356001600160e01b03191683610e60565b61065785858585611944565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610da057610da0613e9a565b14610dac578015610dae565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610dec57610dec614353565b6020026020010181815250508381600181518110610e0c57610e0c614353565b6020026020010181815250508281600281518110610e2c57610e2c614353565b6020026020010181815250508181600381518110610e4c57610e4c614353565b602002602001018181525050949350505050565b610e6b8383836119df565b610740578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610ae893929190614502565b60ff8416610f58576000811180610ebe5750600082115b15610f535782600003610ef05760405163bea499cb60e01b815260ff8516600482015260248101849052604401610ae8565b801580610efc57508281115b15610f2657604051639e12fccf60e01b815260ff8516600482015260248101829052604401610ae8565b81600003610f5357604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b6110b5565b82600003610f855760405163bea499cb60e01b815260ff8516600482015260248101849052604401610ae8565b801580610f9d5750610f9a6224ea0084614534565b81115b15610fc757604051639e12fccf60e01b815260ff8516600482015260248101829052604401610ae8565b81600003610ff457604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b60001960ff85160161103657601c61100b83611a7d565b1115610f5357604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b60011960ff85160161107e5761104b82611a94565b61105483611a7d565b14610f5357604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610ae8565b8360ff1660028111156110ca576110ca613e9a565b600a805460ff191660018360028111156110e6576110e6613e9a565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107b19083908390610e60565b6001600160a01b0382166111a8576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806111bd576111b8601083611ab7565b6111c8565b6111c8601083611acc565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c82604051611206911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061125257611252614353565b602002602001018181525050836001600160a01b031681600181518110610e0c57610e0c614353565b6001600160a01b0384166112bb576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526015602052604090206112df90848484611ae1565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b60408051600180825281830190925260609160208083019080368337019050509050818160008151811061136a5761136a614353565b602002602001018181525050919050565b600f805482919060ff19166001838181111561139957611399613e9a565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516113cd9190613eb0565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061141557611415614353565b602002602001018181525050818160018151811061143557611435614353565b60200260200101818152505092915050565b6114518282611bbe565b806000036107b1576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b18282611c04565b6001600160a01b0384166114d5576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206114f990848484611c2c565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611547929190918252602082015260400190565b60405180910390a350505050565b611582604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156115ab57806115ae565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b6060610c99826001600160a01b0316611334565b6001600160a01b038116611634576040517f24bdcc7d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517fb7041340e0c2a075059bf0488a71c767724be15dae8e737f8460007325e8d85790600090a250565b60408051600280825260608083018452926020830190803683370190505090508260001c816000815181106116c2576116c2614353565b6020026020010181815250508160001c8160018151811061143557611435614353565b80821480156116f357508115155b1561172d576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610ae8565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff166117c15760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b6117ca82611d98565b6107b18282611e51565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061181357611813614353565b602002602001018181525050828160018151811061183357611833614353565b602002602001018181525050818160028151811061185357611853614353565b6020026020010181815250509392505050565b6118736016848484611c2c565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b6118c96012848484611ae1565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d34590606001610b5c565b6001600160a01b038082166000908152601b60205260408120805491929091161561193b5780610dae565b60169392505050565b670de0b6b3a7640000811115611986576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d6919060800161113e565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611a3490879030908890889060040161454b565b602060405180830381865afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190614591565b949350505050565b6000611a75611a8f62015180846145c4565b611eb3565b60008080611aa8611a8f62015180866145c4565b5091509150611a758282611f4f565b6000610dae836001600160a01b038416611fd5565b6000610dae836001600160a01b0384166120cf565b60006001600160a01b038416158015611af8575082155b8015611b02575081155b905060006001600160a01b03851615801590611b265750821580611b265750838310155b905081158015611b34575080155b15611b84576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610ae8565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611bc8828261211e565b611bd28282612128565b611bdc828261214c565b611be68282612240565b611bf0828261242f565b611bfa8282612479565b6107b18282612566565b611c0e828261267c565b611c18828261271e565b611c228282612740565b6107b1828261298a565b60006001600160a01b038416158015611c43575082155b8015611c4d575081155b905060006001600160a01b03851615801590611c695750600084115b8015611c755750600083115b905081158015611c83575080155b15611cd3576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610ae8565b60038601839055600186018490558115611cfa576000600287018190556004870155611d66565b8560040154600003611d215760006002870155611d1783426145d8565b6004870155611d66565b85546001600160a01b03868116911614611d66578554600090611d4d906001600160a01b0316876129b7565b6002880154909150611d5f90826129c3565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b600054610100900460ff16611df15760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b8051611dfc90612a20565b611e04612af0565b611e118160200151612b53565b611e1e8160400151612bb5565b611e2b8160600151612c17565b611e388160800151612c79565b611e458160a00151612cdb565b611e4e81612d3d565b50565b600054610100900460ff16611eaa5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b6107b1816115f4565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611f1057611f106145ae565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611f605750816003145b80611f6b5750816005145b80611f765750816007145b80611f815750816008145b80611f8c575081600a145b80611f97575081600c145b15611fa45750601f610c99565b81600214611fb45750601e610c99565b611fbd83612d96565b611fc857601c611fcb565b601d5b60ff169392505050565b600081815260018301602052604081205480156120be576000611ff96001836145eb565b855490915060009061200d906001906145eb565b905081811461207257600086600001828154811061202d5761202d614353565b906000526020600020015490508087600001848154811061205057612050614353565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612083576120836145fe565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c99565b6000915050610c99565b5092915050565b600081815260018301602052604081205461211657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c99565b506000610c99565b6107b18282612dd2565b60045460ff16156107b15760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061218b575081513a11155b9050806121d05781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610ae8565b6020820151156109075760006121e6483a6145eb565b6020840151909150811115806122385760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610ae8918491600401918252602082015260400190565b505050505050565b600a54600b54600c54600e5460ff909316924282111561227c5760405163013ce60b60e01b815242600482015260248101839052604401610ae8565b600084600281111561229057612290613e9a565b0361234957826000036122a557505050505050565b806000036122bf576122b783426145d8565b600d55612238565b60006122cb83426145eb565b905060006122d985836145c4565b905060006122e78683614534565b6122f190846145eb565b90508381111561231d5760405163013ce60b60e01b815242600482015260248101869052604401610ae8565b856123298360016145d8565b6123339190614534565b61233d90866145d8565b600d5550612238915050565b814210158015612362575061235e81836145d8565b4211155b15612371576122b78284612e67565b6000600185600281111561238757612387613e9a565b1461239a5761239542611a94565b6123a3565b6123a383611a7d565b905060006123b18483612eff565b9050804210156123dd5760405163013ce60b60e01b815242600482015260248101829052604401610ae8565b60006123e984836145d8565b905042811080156124165760405163013ce60b60e01b815242600482015260248101839052604401610ae8565b6124208388612e67565b600d5550505050505050505050565b61243882610d6a565b6107b1576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610ae8565b600061248483611555565b80519091506001600160a01b031661249b57505050565b6000836001600160a01b031682600001516001600160a01b0316146124d7576124d26124cb8584600001516129b7565b84906129c3565b6124d9565b825b9050600082602001518210158015612501575060408301511580612501575082604001518211155b905080610657578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610ae8565b600061257183611910565b6040805160a08101825282546001600160a01b0316808252600184015460208301526002840154928201929092526003830154606082015260049092015460808301529091506125c057505050565b6000836001600160a01b031682600001516001600160a01b0316146125f5576125f06124cb8584600001516129b7565b6125f7565b825b905060008260800151421061260d576000612613565b82604001515b61261d90836145d8565b9050826020015181111561065757825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610ae8565b600061268783611910565b80549091506001600160a01b031661269e57505050565b80546000906001600160a01b038581169116146126d45781546126cf906124cb9086906001600160a01b03166129b7565b6126d6565b825b9050816004015442106126ff576000600283015560038201546126f990426145d8565b60048301555b8082600201600082825461271391906145d8565b909155505050505050565b600d5460000361272c575050565b612737600d54612f27565b50506000600d55565b60055460000361277c576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a6005546127b591906145eb565b905060006127c33a83614534565b905060008360400151600014806127de575083604001518211155b905080612828578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610ae8929190918252602082015260400190565b60006005556060840151158015906128405750600085115b15612238576000612913306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ac9190614614565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290d9190614614565b886129b7565b905060006129218483612f5c565b9050600061292f8289612fce565b9050866060015181111561297f5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610ae8918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610dae8383613097565b600082820283158015906129e65750828482816129e2576129e26145ae565b0414155b15612a0e57604051637472527d60e11b81526004810185905260248101849052604401610ae8565b670de0b6b3a764000090049392505050565b600054610100900460ff16612a795760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b612ae781600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015612abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae29190614614565b61328d565b611e4e816132ef565b600054610100900460ff16612b495760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b612b5161338a565b565b600054610100900460ff16612bac5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e816133e3565b600054610100900460ff16612c0e5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e81613458565b600054610100900460ff16612c705760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e816134cd565b600054610100900460ff16612cd25760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e8161357b565b600054610100900460ff16612d345760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e81613659565b600054610100900460ff16611e4e5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b6000612da3600483614631565b158015612db95750612db6606483614631565b15155b80610c995750612dcb61019083614631565b1592915050565b600254156107b1576001546002546040517feb056bbb00000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401600060405180830381600087803b158015612e5357600080fd5b505af1158015612238573d6000803e3d6000fd5b600080600080612e7686613737565b919450925090506000612e8986846145d8565b90506000612e98600c83614631565b90506000612ea7600c846145c4565b612eb190876145d8565b905060006002600a5460ff166002811115612ece57612ece613e9a565b14612ed95784612ee3565b612ee38284611f4f565b9050612ef18a838584613756565b9a9950505050505050505050565b6000806000612f0d42613737565b5091509150612f1e85838387613756565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016113cd565b60008282028315801590612f7f575082848281612f7b57612f7b6145ae565b0414155b15612fa757604051637472527d60e11b81526004810185905260248101849052604401610ae8565b8015612fc457670de0b6b3a7640000600019820104600101611a75565b6000949350505050565b60008160000361300a576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361301a57506000610c99565b670de0b6b3a764000083810290848281613036576130366145ae565b0414613078576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610ae8565b82600182038161308a5761308a6145ae565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131119190614614565b90506001600160a01b038116613162576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610ae8565b600061316c61377e565b905080516000146131fd57816001600160a01b031663355efdd961318f876137fe565b613198876137fe565b846040518463ffffffff1660e01b81526004016131b793929190614645565b602060405180830381865afa1580156131d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f891906144ae565b612f1e565b816001600160a01b031663ac41865a613215876137fe565b61321e876137fe565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613269573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1e91906144ae565b600054610100900460ff166132e65760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e81613832565b600054610100900460ff166133485760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208101516040820151611e4e91906116e5565b600054610100900460ff16612b515760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b600054610100900460ff1661343c5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e8160000151826020015183604001518460600151611944565b600054610100900460ff166134b15760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e8160000151826020015183604001518460600151610ea7565b600054610100900460ff166135265760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80516135319061137b565b60005b8160200151518110156107b1576135698260200151828151811061355a5761355a614353565b60200260200101516001611168565b806135738161437f565b915050613534565b600054610100900460ff166135d45760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80518051602082015160408301516135ed9291906118bc565b60005b8260200151518110156107405760008360200151828151811061361557613615614353565b60200260200101519050600081602001519050613644826000015182600001518360200151846040015161127b565b505080806136519061437f565b9150506135f0565b600054610100900460ff166136b25760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80518051602082015160408301516136cb929190611866565b60005b826020015151811015610740576000836020015182815181106136f3576136f3614353565b602002602001015190506000816020015190506137228260000151826000015183602001518460400151611495565b5050808061372f9061437f565b9150506136ce565b60008080613749620151808504611eb3565b9196909550909350915050565b6000612f1e848484613767896138cb565b6137708a6138e9565b6137798b613905565b613912565b6060600061378a61396e565b9050368111156137a857505060408051600081526020810190915290565b8067ffffffffffffffff8111156137c1576137c1613ba1565b6040519080825280601f01601f1916602001820160405280156137eb576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0383161461382a5781610c99565b610c99613989565b600054610100900460ff1661388b5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000806138db6201518084614631565b9050610dae610e10826145c4565b6000806138f8610e1084614631565b9050610dae603c826145c4565b6000610c99603c83614631565b600081613920603c85614534565b61392c610e1087614534565b6201518061393b8b8b8b613a15565b6139459190614534565b61394f91906145d8565b61395991906145d8565b61396391906145d8565b979650505050505050565b6000602436101561397f5750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa1580156139ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a109190614614565b905090565b60006107b2841015613a2657600080fd5b838383600062253d8c60046064600c613a40600e88614671565b613a4a9190614691565b613a56886113246146bf565b613a6091906146bf565b613a6a9190614691565b613a759060036146e7565b613a7f9190614691565b600c80613a8d600e88614671565b613a979190614691565b613aa290600c6146e7565b613aad600288614671565b613ab79190614671565b613ac39061016f6146e7565b613acd9190614691565b6004600c613adc600e89614671565b613ae69190614691565b613af2896112c06146bf565b613afc91906146bf565b613b08906105b56146e7565b613b129190614691565b613b1e617d4b87614671565b613b2891906146bf565b613b3291906146bf565b613b3c9190614671565b613b469190614671565b98975050505050505050565b803560ff81168114613b6357600080fd5b919050565b60008060008060808587031215613b7e57600080fd5b613b8785613b52565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bda57613bda613ba1565b60405290565b6040805190810167ffffffffffffffff81118282101715613bda57613bda613ba1565b60405160c0810167ffffffffffffffff81118282101715613bda57613bda613ba1565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c4f57613c4f613ba1565b604052919050565b600067ffffffffffffffff821115613c7157613c71613ba1565b5060051b60200190565b6001600160a01b0381168114611e4e57600080fd5b8035613b6381613c7b565b600082601f830112613cac57600080fd5b81356020613cc1613cbc83613c57565b613c26565b82815260059290921b84018101918181019086841115613ce057600080fd5b8286015b84811015613d04578035613cf781613c7b565b8352918301918301613ce4565b509695505050505050565b8015158114611e4e57600080fd5b60008060408385031215613d3057600080fd5b823567ffffffffffffffff80821115613d4857600080fd5b613d5486838701613c9b565b9350602091508185013581811115613d6b57600080fd5b85019050601f81018613613d7e57600080fd5b8035613d8c613cbc82613c57565b81815260059190911b82018301908381019088831115613dab57600080fd5b928401925b82841015613dd2578335613dc381613d0f565b82529284019290840190613db0565b80955050505050509250929050565b600060208284031215613df357600080fd5b8135610dae81613c7b565b60008060008060808587031215613e1457600080fd5b8435613e1f81613c7b565b93506020850135613e2f81613c7b565b93969395505050506040820135916060013590565b803560028110613b6357600080fd5b600060208284031215613e6557600080fd5b610dae82613e44565b60008060408385031215613e8157600080fd5b8235613e8c81613c7b565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613ed257634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613eeb57600080fd5b50508035926020909101359150565b600060608284031215613f0c57600080fd5b6040516060810181811067ffffffffffffffff82111715613f2f57613f2f613ba1565b6040529050808235613f4081613c7b565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613f7157600080fd5b613f79613bb7565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613fb557600080fd5b613fbd613bb7565b9050613fc882613b52565b815260208201356020820152604082013560408201526060820135606082015292915050565b60006040828403121561400057600080fd5b614008613be0565b905061401382613e44565b8152602082013567ffffffffffffffff81111561402f57600080fd5b61403b84828501613c9b565b60208301525092915050565b60006080828403121561405957600080fd5b614061613be0565b9050813561406e81613c7b565b815261407d8360208401613efa565b602082015292915050565b6000608080838503121561409b57600080fd5b6140a3613be0565b91506140af8484613efa565b8252606083013567ffffffffffffffff8111156140cb57600080fd5b8301601f810185136140dc57600080fd5b803560206140ec613cbc83613c57565b82815260079290921b8301810191818101908884111561410b57600080fd5b938201935b83851015614131576141228986614047565b82529385019390820190614110565b808388015250505050505092915050565b6000608080838503121561415557600080fd5b61415d613be0565b91506141698484613efa565b8252606083013567ffffffffffffffff81111561418557600080fd5b8301601f8101851361419657600080fd5b803560206141a6613cbc83613c57565b82815260079290921b830181019181810190888411156141c557600080fd5b938201935b83851015614131576141dc8986614047565b825293850193908201906141ca565b600080604083850312156141fe57600080fd5b823567ffffffffffffffff8082111561421657600080fd5b908401906101c0828703121561422b57600080fd5b614233613c03565b61423d8784613efa565b815261424c8760608501613f5f565b602082015261425e8760e08501613fa3565b60408201526101608301358281111561427657600080fd5b61428288828601613fee565b6060830152506101808301358281111561429b57600080fd5b6142a788828601614088565b6080830152506101a0830135828111156142c057600080fd5b6142cc88828601614142565b60a08301525093506142e391505060208401613c90565b90509250929050565b60008060006060848603121561430157600080fd5b833561430c81613c7b565b95602085013595506040909401359392505050565b6000806000806080858703121561433757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161439157614391614369565b5060010190565b60005b838110156143b357818101518382015260200161439b565b50506000910152565b600081518084526143d4816020860160208601614398565b601f01601f19169290920160200192915050565b6001600160a01b038416815260606020820152600061440a60608301856143bc565b9050826040830152949350505050565b60006020828403121561442c57600080fd5b815167ffffffffffffffff8082111561444457600080fd5b818401915084601f83011261445857600080fd5b81518181111561446a5761446a613ba1565b61447d601f8201601f1916602001613c26565b915080825285602082850101111561449457600080fd5b6144a5816020840160208601614398565b50949350505050565b6000602082840312156144c057600080fd5b5051919050565b600081518084526020808501945080840160005b838110156144f7578151875295820195908201906001016144db565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612f1e60608301846144c7565b8082028115828204841417610c9957610c99614369565b60006001600160a01b0380871683528086166020840152506001600160e01b0319841660408301526080606083015261458760808301846144c7565b9695505050505050565b6000602082840312156145a357600080fd5b8151610dae81613d0f565b634e487b7160e01b600052601260045260246000fd5b6000826145d3576145d36145ae565b500490565b80820180821115610c9957610c99614369565b81810381811115610c9957610c99614369565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561462657600080fd5b8151610dae81613c7b565b600082614640576146406145ae565b500690565b60006001600160a01b03808616835280851660208401525060606040830152612f1e60608301846143bc565b81810360008312801583831316838312821617156120c8576120c8614369565b6000826146a0576146a06145ae565b600160ff1b8214600019841416156146ba576146ba614369565b500590565b80820182811260008312801582168215821617156146df576146df614369565b505092915050565b80820260008212600160ff1b8414161561470357614703614369565b8181058314821517610c9957610c9961436956fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a2646970667358221220552526aa7c7fb856a461275dbaac2d4a47ac94de853d8784e89e24d40899f9c464736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80636aacaad81161010f578063a5900c4d116100a2578063d3feb60211610071578063d3feb602146105d9578063d45a76cf146105ec578063e6b5be98146105ff578063f9eaee0d1461061257600080fd5b8063a5900c4d14610538578063b187bd2614610592578063c267621e146105af578063d09edf31146105c057600080fd5b80638456cb59116100de5780638456cb59146104d757806390333ba8146104df578063a0c3774f146104f2578063a33741771461050557600080fd5b80636aacaad8146104525780637125590a1461049e5780638069c2cd146104b15780638406c079146104c457600080fd5b8063423a4b401161018757806351a424b11161015657806351a424b1146103c05780635670e2ce146103f85780635ea54eee146104135780636548e9bc1461043f57600080fd5b8063423a4b401461033357806342d4693e146103465780634a45a3a8146103605780634fd49efd1461039557600080fd5b80632384c32d116101c35780632384c32d146102f257806330eae572146103055780633bd9ef28146103185780633f4ba83a1461032b57600080fd5b80630fe105e8146101f5578063119a5e961461020a578063219723841461023b578063221a8c681461024e575b600080fd5b610208610203366004613b68565b610625565b005b61021261065e565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b610208610249366004613d1d565b610695565b6102c061025c366004613de1565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610232565b610208610300366004613dfe565b610745565b610208610313366004613e53565b610774565b610208610326366004613e6e565b6107b5565b61020861090d565b610208610341366004613dfe565b610994565b600f546103539060ff1681565b6040516102329190613eb0565b6103877f1e074eb2b784a46b7383c748126a8ba7012fdb3d9bab17006b96d93ea660893181565b604051908152602001610232565b6001546103a8906001600160a01b031681565b6040516001600160a01b039091168152602001610232565b6103d36103ce366004613de1565b6109c3565b604080516001600160a01b039094168452602084019290925290820152606001610232565b60025460035460408051928352602083019190915201610232565b600654600754600854600954604080519485526020850193909352918301526060820152608001610232565b61020861044d366004613de1565b6109ec565b6102c06040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6102086104ac366004613ed8565b610a15565b6102086104bf3660046141eb565b610a40565b601c546103a8906001600160a01b031681565b610208610b69565b6102086104ed3660046142ec565b610bdb565b610387610500366004613de1565b610c08565b6103d3604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103d3610546366004613de1565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b60045461059f9060ff1681565b6040519015158152602001610232565b6001546001600160a01b03166103a8565b6000546103a8906201000090046001600160a01b031681565b6102086105e73660046142ec565b610c9f565b6102c06105fa366004613de1565b610ccc565b61020861060d366004614321565b610d3b565b61059f610620366004613de1565b610d6a565b6106348460ff16848484610db5565b61064b336000356001600160e01b03191683610e60565b61065785858585610ea7565b5050505050565b600a5460009081908190819060ff16600281111561067e5761067e613e9a565b600b54600c54600e54935093509350935090919293565b6106ab336000356001600160e01b03191661114c565b80518251146106e6576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156107405761072e83828151811061070757610707614353565b602002602001015183838151811061072157610721614353565b6020026020010151611168565b806107388161437f565b9150506106e9565b505050565b61075184848484611212565b610768336000356001600160e01b03191683610e60565b6106578585858561127b565b61079181600181111561078957610789613e9a565b60ff16611334565b6107a8336000356001600160e01b03191683610e60565b6107b18261137b565b5050565b6107bf82826113d8565b6107d6336000356001600160e01b03191683610e60565b816000036107ea576107e783610c08565b91505b6107f48383611447565b600154604080516001600160a01b0392831660248201819052604480830187905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f47e7ef2400000000000000000000000000000000000000000000000000000000179052601c5492517f4ae0004100000000000000000000000000000000000000000000000000000000815291939092634ae00041926108b5929190911690859088906004016143e8565b6000604051808303816000875af11580156108d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fc919081019061441a565b50610907848461148b565b50505050565b610923336000356001600160e01b03191661114c565b60045460ff1661095f576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6109a084848484611212565b6109b7336000356001600160e01b03191683610e60565b61065785858585611495565b6000806000806109d285611555565b805160208201516040909201519097919650945092505050565b6109f5816115e0565b610a0c336000356001600160e01b03191683610e60565b6107b1826115f4565b610a1f828261168b565b610a36336000356001600160e01b03191683610e60565b61074083836116e5565b600054610100900460ff1615808015610a605750600054600160ff909116105b80610a7a5750303b158015610a7a575060005460ff166001145b610af15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610b14576000805461ff0019166101001790555b610b1e8383611768565b8015610740576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a1505050565b610b7f336000356001600160e01b03191661114c565b60045460ff1615610ba35760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610be68383836117d4565b610bfd336000356001600160e01b03191683610e60565b610907848484611866565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9991906144ae565b92915050565b610caa8383836117d4565b610cc1336000356001600160e01b03191683610e60565b6109078484846118bc565b600080600080600080610cde87611910565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610d4784848484610db5565b610d5e336000356001600160e01b03191683610e60565b61065785858585611944565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610da057610da0613e9a565b14610dac578015610dae565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610dec57610dec614353565b6020026020010181815250508381600181518110610e0c57610e0c614353565b6020026020010181815250508281600281518110610e2c57610e2c614353565b6020026020010181815250508181600381518110610e4c57610e4c614353565b602002602001018181525050949350505050565b610e6b8383836119df565b610740578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610ae893929190614502565b60ff8416610f58576000811180610ebe5750600082115b15610f535782600003610ef05760405163bea499cb60e01b815260ff8516600482015260248101849052604401610ae8565b801580610efc57508281115b15610f2657604051639e12fccf60e01b815260ff8516600482015260248101829052604401610ae8565b81600003610f5357604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b6110b5565b82600003610f855760405163bea499cb60e01b815260ff8516600482015260248101849052604401610ae8565b801580610f9d5750610f9a6224ea0084614534565b81115b15610fc757604051639e12fccf60e01b815260ff8516600482015260248101829052604401610ae8565b81600003610ff457604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b60001960ff85160161103657601c61100b83611a7d565b1115610f5357604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b60011960ff85160161107e5761104b82611a94565b61105483611a7d565b14610f5357604051635686bf5960e11b815260ff8516600482015260248101839052604401610ae8565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610ae8565b8360ff1660028111156110ca576110ca613e9a565b600a805460ff191660018360028111156110e6576110e6613e9a565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107b19083908390610e60565b6001600160a01b0382166111a8576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806111bd576111b8601083611ab7565b6111c8565b6111c8601083611acc565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c82604051611206911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061125257611252614353565b602002602001018181525050836001600160a01b031681600181518110610e0c57610e0c614353565b6001600160a01b0384166112bb576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526015602052604090206112df90848484611ae1565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b60408051600180825281830190925260609160208083019080368337019050509050818160008151811061136a5761136a614353565b602002602001018181525050919050565b600f805482919060ff19166001838181111561139957611399613e9a565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516113cd9190613eb0565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061141557611415614353565b602002602001018181525050818160018151811061143557611435614353565b60200260200101818152505092915050565b6114518282611bbe565b806000036107b1576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b18282611c04565b6001600160a01b0384166114d5576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206114f990848484611c2c565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611547929190918252602082015260400190565b60405180910390a350505050565b611582604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156115ab57806115ae565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b6060610c99826001600160a01b0316611334565b6001600160a01b038116611634576040517f24bdcc7d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517fb7041340e0c2a075059bf0488a71c767724be15dae8e737f8460007325e8d85790600090a250565b60408051600280825260608083018452926020830190803683370190505090508260001c816000815181106116c2576116c2614353565b6020026020010181815250508160001c8160018151811061143557611435614353565b80821480156116f357508115155b1561172d576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610ae8565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff166117c15760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b6117ca82611d98565b6107b18282611e51565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061181357611813614353565b602002602001018181525050828160018151811061183357611833614353565b602002602001018181525050818160028151811061185357611853614353565b6020026020010181815250509392505050565b6118736016848484611c2c565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b6118c96012848484611ae1565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d34590606001610b5c565b6001600160a01b038082166000908152601b60205260408120805491929091161561193b5780610dae565b60169392505050565b670de0b6b3a7640000811115611986576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d6919060800161113e565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611a3490879030908890889060040161454b565b602060405180830381865afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190614591565b949350505050565b6000611a75611a8f62015180846145c4565b611eb3565b60008080611aa8611a8f62015180866145c4565b5091509150611a758282611f4f565b6000610dae836001600160a01b038416611fd5565b6000610dae836001600160a01b0384166120cf565b60006001600160a01b038416158015611af8575082155b8015611b02575081155b905060006001600160a01b03851615801590611b265750821580611b265750838310155b905081158015611b34575080155b15611b84576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610ae8565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611bc8828261211e565b611bd28282612128565b611bdc828261214c565b611be68282612240565b611bf0828261242f565b611bfa8282612479565b6107b18282612566565b611c0e828261267c565b611c18828261271e565b611c228282612740565b6107b1828261298a565b60006001600160a01b038416158015611c43575082155b8015611c4d575081155b905060006001600160a01b03851615801590611c695750600084115b8015611c755750600083115b905081158015611c83575080155b15611cd3576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610ae8565b60038601839055600186018490558115611cfa576000600287018190556004870155611d66565b8560040154600003611d215760006002870155611d1783426145d8565b6004870155611d66565b85546001600160a01b03868116911614611d66578554600090611d4d906001600160a01b0316876129b7565b6002880154909150611d5f90826129c3565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b600054610100900460ff16611df15760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b8051611dfc90612a20565b611e04612af0565b611e118160200151612b53565b611e1e8160400151612bb5565b611e2b8160600151612c17565b611e388160800151612c79565b611e458160a00151612cdb565b611e4e81612d3d565b50565b600054610100900460ff16611eaa5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b6107b1816115f4565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611f1057611f106145ae565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611f605750816003145b80611f6b5750816005145b80611f765750816007145b80611f815750816008145b80611f8c575081600a145b80611f97575081600c145b15611fa45750601f610c99565b81600214611fb45750601e610c99565b611fbd83612d96565b611fc857601c611fcb565b601d5b60ff169392505050565b600081815260018301602052604081205480156120be576000611ff96001836145eb565b855490915060009061200d906001906145eb565b905081811461207257600086600001828154811061202d5761202d614353565b906000526020600020015490508087600001848154811061205057612050614353565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612083576120836145fe565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c99565b6000915050610c99565b5092915050565b600081815260018301602052604081205461211657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c99565b506000610c99565b6107b18282612dd2565b60045460ff16156107b15760405163181e462560e31b815260040160405180910390fd5b5a60055560408051608081018252600654808252600754602083015260085492820192909252600954606082015290600090158061218b575081513a11155b9050806121d05781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610ae8565b6020820151156109075760006121e6483a6145eb565b6020840151909150811115806122385760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610ae8918491600401918252602082015260400190565b505050505050565b600a54600b54600c54600e5460ff909316924282111561227c5760405163013ce60b60e01b815242600482015260248101839052604401610ae8565b600084600281111561229057612290613e9a565b0361234957826000036122a557505050505050565b806000036122bf576122b783426145d8565b600d55612238565b60006122cb83426145eb565b905060006122d985836145c4565b905060006122e78683614534565b6122f190846145eb565b90508381111561231d5760405163013ce60b60e01b815242600482015260248101869052604401610ae8565b856123298360016145d8565b6123339190614534565b61233d90866145d8565b600d5550612238915050565b814210158015612362575061235e81836145d8565b4211155b15612371576122b78284612e67565b6000600185600281111561238757612387613e9a565b1461239a5761239542611a94565b6123a3565b6123a383611a7d565b905060006123b18483612eff565b9050804210156123dd5760405163013ce60b60e01b815242600482015260248101829052604401610ae8565b60006123e984836145d8565b905042811080156124165760405163013ce60b60e01b815242600482015260248101839052604401610ae8565b6124208388612e67565b600d5550505050505050505050565b61243882610d6a565b6107b1576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610ae8565b600061248483611555565b80519091506001600160a01b031661249b57505050565b6000836001600160a01b031682600001516001600160a01b0316146124d7576124d26124cb8584600001516129b7565b84906129c3565b6124d9565b825b9050600082602001518210158015612501575060408301511580612501575082604001518211155b905080610657578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610ae8565b600061257183611910565b6040805160a08101825282546001600160a01b0316808252600184015460208301526002840154928201929092526003830154606082015260049092015460808301529091506125c057505050565b6000836001600160a01b031682600001516001600160a01b0316146125f5576125f06124cb8584600001516129b7565b6125f7565b825b905060008260800151421061260d576000612613565b82604001515b61261d90836145d8565b9050826020015181111561065757825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610ae8565b600061268783611910565b80549091506001600160a01b031661269e57505050565b80546000906001600160a01b038581169116146126d45781546126cf906124cb9086906001600160a01b03166129b7565b6126d6565b825b9050816004015442106126ff576000600283015560038201546126f990426145d8565b60048301555b8082600201600082825461271391906145d8565b909155505050505050565b600d5460000361272c575050565b612737600d54612f27565b50506000600d55565b60055460000361277c576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a6005546127b591906145eb565b905060006127c33a83614534565b905060008360400151600014806127de575083604001518211155b905080612828578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610ae8929190918252602082015260400190565b60006005556060840151158015906128405750600085115b15612238576000612913306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ac9190614614565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290d9190614614565b886129b7565b905060006129218483612f5c565b9050600061292f8289612fce565b9050866060015181111561297f5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610ae8918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610dae8383613097565b600082820283158015906129e65750828482816129e2576129e26145ae565b0414155b15612a0e57604051637472527d60e11b81526004810185905260248101849052604401610ae8565b670de0b6b3a764000090049392505050565b600054610100900460ff16612a795760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b612ae781600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015612abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae29190614614565b61328d565b611e4e816132ef565b600054610100900460ff16612b495760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b612b5161338a565b565b600054610100900460ff16612bac5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e816133e3565b600054610100900460ff16612c0e5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e81613458565b600054610100900460ff16612c705760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e816134cd565b600054610100900460ff16612cd25760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e8161357b565b600054610100900460ff16612d345760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e81613659565b600054610100900460ff16611e4e5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b6000612da3600483614631565b158015612db95750612db6606483614631565b15155b80610c995750612dcb61019083614631565b1592915050565b600254156107b1576001546002546040517feb056bbb00000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401600060405180830381600087803b158015612e5357600080fd5b505af1158015612238573d6000803e3d6000fd5b600080600080612e7686613737565b919450925090506000612e8986846145d8565b90506000612e98600c83614631565b90506000612ea7600c846145c4565b612eb190876145d8565b905060006002600a5460ff166002811115612ece57612ece613e9a565b14612ed95784612ee3565b612ee38284611f4f565b9050612ef18a838584613756565b9a9950505050505050505050565b6000806000612f0d42613737565b5091509150612f1e85838387613756565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016113cd565b60008282028315801590612f7f575082848281612f7b57612f7b6145ae565b0414155b15612fa757604051637472527d60e11b81526004810185905260248101849052604401610ae8565b8015612fc457670de0b6b3a7640000600019820104600101611a75565b6000949350505050565b60008160000361300a576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361301a57506000610c99565b670de0b6b3a764000083810290848281613036576130366145ae565b0414613078576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610ae8565b82600182038161308a5761308a6145ae565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131119190614614565b90506001600160a01b038116613162576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610ae8565b600061316c61377e565b905080516000146131fd57816001600160a01b031663355efdd961318f876137fe565b613198876137fe565b846040518463ffffffff1660e01b81526004016131b793929190614645565b602060405180830381865afa1580156131d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f891906144ae565b612f1e565b816001600160a01b031663ac41865a613215876137fe565b61321e876137fe565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613269573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1e91906144ae565b600054610100900460ff166132e65760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e81613832565b600054610100900460ff166133485760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208101516040820151611e4e91906116e5565b600054610100900460ff16612b515760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b600054610100900460ff1661343c5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e8160000151826020015183604001518460600151611944565b600054610100900460ff166134b15760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b611e4e8160000151826020015183604001518460600151610ea7565b600054610100900460ff166135265760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80516135319061137b565b60005b8160200151518110156107b1576135698260200151828151811061355a5761355a614353565b60200260200101516001611168565b806135738161437f565b915050613534565b600054610100900460ff166135d45760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80518051602082015160408301516135ed9291906118bc565b60005b8260200151518110156107405760008360200151828151811061361557613615614353565b60200260200101519050600081602001519050613644826000015182600001518360200151846040015161127b565b505080806136519061437f565b9150506135f0565b600054610100900460ff166136b25760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b80518051602082015160408301516136cb929190611866565b60005b826020015151811015610740576000836020015182815181106136f3576136f3614353565b602002602001015190506000816020015190506137228260000151826000015183602001518460400151611495565b5050808061372f9061437f565b9150506136ce565b60008080613749620151808504611eb3565b9196909550909350915050565b6000612f1e848484613767896138cb565b6137708a6138e9565b6137798b613905565b613912565b6060600061378a61396e565b9050368111156137a857505060408051600081526020810190915290565b8067ffffffffffffffff8111156137c1576137c1613ba1565b6040519080825280601f01601f1916602001820160405280156137eb576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0383161461382a5781610c99565b610c99613989565b600054610100900460ff1661388b5760405162461bcd60e51b815260206004820152602b602482015260008051602061471883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610ae8565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000806138db6201518084614631565b9050610dae610e10826145c4565b6000806138f8610e1084614631565b9050610dae603c826145c4565b6000610c99603c83614631565b600081613920603c85614534565b61392c610e1087614534565b6201518061393b8b8b8b613a15565b6139459190614534565b61394f91906145d8565b61395991906145d8565b61396391906145d8565b979650505050505050565b6000602436101561397f5750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa1580156139ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a109190614614565b905090565b60006107b2841015613a2657600080fd5b838383600062253d8c60046064600c613a40600e88614671565b613a4a9190614691565b613a56886113246146bf565b613a6091906146bf565b613a6a9190614691565b613a759060036146e7565b613a7f9190614691565b600c80613a8d600e88614671565b613a979190614691565b613aa290600c6146e7565b613aad600288614671565b613ab79190614671565b613ac39061016f6146e7565b613acd9190614691565b6004600c613adc600e89614671565b613ae69190614691565b613af2896112c06146bf565b613afc91906146bf565b613b08906105b56146e7565b613b129190614691565b613b1e617d4b87614671565b613b2891906146bf565b613b3291906146bf565b613b3c9190614671565b613b469190614671565b98975050505050505050565b803560ff81168114613b6357600080fd5b919050565b60008060008060808587031215613b7e57600080fd5b613b8785613b52565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613bda57613bda613ba1565b60405290565b6040805190810167ffffffffffffffff81118282101715613bda57613bda613ba1565b60405160c0810167ffffffffffffffff81118282101715613bda57613bda613ba1565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c4f57613c4f613ba1565b604052919050565b600067ffffffffffffffff821115613c7157613c71613ba1565b5060051b60200190565b6001600160a01b0381168114611e4e57600080fd5b8035613b6381613c7b565b600082601f830112613cac57600080fd5b81356020613cc1613cbc83613c57565b613c26565b82815260059290921b84018101918181019086841115613ce057600080fd5b8286015b84811015613d04578035613cf781613c7b565b8352918301918301613ce4565b509695505050505050565b8015158114611e4e57600080fd5b60008060408385031215613d3057600080fd5b823567ffffffffffffffff80821115613d4857600080fd5b613d5486838701613c9b565b9350602091508185013581811115613d6b57600080fd5b85019050601f81018613613d7e57600080fd5b8035613d8c613cbc82613c57565b81815260059190911b82018301908381019088831115613dab57600080fd5b928401925b82841015613dd2578335613dc381613d0f565b82529284019290840190613db0565b80955050505050509250929050565b600060208284031215613df357600080fd5b8135610dae81613c7b565b60008060008060808587031215613e1457600080fd5b8435613e1f81613c7b565b93506020850135613e2f81613c7b565b93969395505050506040820135916060013590565b803560028110613b6357600080fd5b600060208284031215613e6557600080fd5b610dae82613e44565b60008060408385031215613e8157600080fd5b8235613e8c81613c7b565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613ed257634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613eeb57600080fd5b50508035926020909101359150565b600060608284031215613f0c57600080fd5b6040516060810181811067ffffffffffffffff82111715613f2f57613f2f613ba1565b6040529050808235613f4081613c7b565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613f7157600080fd5b613f79613bb7565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613fb557600080fd5b613fbd613bb7565b9050613fc882613b52565b815260208201356020820152604082013560408201526060820135606082015292915050565b60006040828403121561400057600080fd5b614008613be0565b905061401382613e44565b8152602082013567ffffffffffffffff81111561402f57600080fd5b61403b84828501613c9b565b60208301525092915050565b60006080828403121561405957600080fd5b614061613be0565b9050813561406e81613c7b565b815261407d8360208401613efa565b602082015292915050565b6000608080838503121561409b57600080fd5b6140a3613be0565b91506140af8484613efa565b8252606083013567ffffffffffffffff8111156140cb57600080fd5b8301601f810185136140dc57600080fd5b803560206140ec613cbc83613c57565b82815260079290921b8301810191818101908884111561410b57600080fd5b938201935b83851015614131576141228986614047565b82529385019390820190614110565b808388015250505050505092915050565b6000608080838503121561415557600080fd5b61415d613be0565b91506141698484613efa565b8252606083013567ffffffffffffffff81111561418557600080fd5b8301601f8101851361419657600080fd5b803560206141a6613cbc83613c57565b82815260079290921b830181019181810190888411156141c557600080fd5b938201935b83851015614131576141dc8986614047565b825293850193908201906141ca565b600080604083850312156141fe57600080fd5b823567ffffffffffffffff8082111561421657600080fd5b908401906101c0828703121561422b57600080fd5b614233613c03565b61423d8784613efa565b815261424c8760608501613f5f565b602082015261425e8760e08501613fa3565b60408201526101608301358281111561427657600080fd5b61428288828601613fee565b6060830152506101808301358281111561429b57600080fd5b6142a788828601614088565b6080830152506101a0830135828111156142c057600080fd5b6142cc88828601614142565b60a08301525093506142e391505060208401613c90565b90509250929050565b60008060006060848603121561430157600080fd5b833561430c81613c7b565b95602085013595506040909401359392505050565b6000806000806080858703121561433757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161439157614391614369565b5060010190565b60005b838110156143b357818101518382015260200161439b565b50506000910152565b600081518084526143d4816020860160208601614398565b601f01601f19169290920160200192915050565b6001600160a01b038416815260606020820152600061440a60608301856143bc565b9050826040830152949350505050565b60006020828403121561442c57600080fd5b815167ffffffffffffffff8082111561444457600080fd5b818401915084601f83011261445857600080fd5b81518181111561446a5761446a613ba1565b61447d601f8201601f1916602001613c26565b915080825285602082850101111561449457600080fd5b6144a5816020840160208601614398565b50949350505050565b6000602082840312156144c057600080fd5b5051919050565b600081518084526020808501945080840160005b838110156144f7578151875295820195908201906001016144db565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612f1e60608301846144c7565b8082028115828204841417610c9957610c99614369565b60006001600160a01b0380871683528086166020840152506001600160e01b0319841660408301526080606083015261458760808301846144c7565b9695505050505050565b6000602082840312156145a357600080fd5b8151610dae81613d0f565b634e487b7160e01b600052601260045260246000fd5b6000826145d3576145d36145ae565b500490565b80820180821115610c9957610c99614369565b81810381811115610c9957610c99614369565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561462657600080fd5b8151610dae81613c7b565b600082614640576146406145ae565b500690565b60006001600160a01b03808616835280851660208401525060606040830152612f1e60608301846143bc565b81810360008312801583831316838312821617156120c8576120c8614369565b6000826146a0576146a06145ae565b600160ff1b8214600019841416156146ba576146ba614369565b500590565b80820182811260008312801582168215821617156146df576146df614369565b505092915050565b80820260008212600160ff1b8414161561470357614703614369565b8181058314821517610c9957610c9961436956fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a2646970667358221220552526aa7c7fb856a461275dbaac2d4a47ac94de853d8784e89e24d40899f9c464736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
