{
  "_format": "hh-sol-artifact-1",
  "contractName": "HandleOver",
  "sourceName": "contracts/primitives/HandleOver.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "what",
          "type": "bytes4"
        },
        {
          "internalType": "uint256[]",
          "name": "how",
          "type": "uint256[]"
        }
      ],
      "name": "AuthSenderNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "aInflated",
          "type": "uint256"
        }
      ],
      "name": "FixedPointDivInternal",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "FixedPointMulOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FixedPointZeroDivision",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceInputLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceTokenZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAmountZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "TaskConnectorZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskGasNotInitialized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskGasPriceLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "date",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedDate",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedWindow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidFrequency",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        }
      ],
      "name": "TaskInvalidFrequencyMode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidThresholdInput",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidVolumeLimitInput",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "priorityFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskPriorityFeeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "connectorId",
          "type": "bytes32"
        }
      ],
      "name": "TaskSameBalanceConnectors",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "smartVault",
          "type": "address"
        }
      ],
      "name": "TaskSmartVaultPriceOracleNotSet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskThresholdTokenZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "TaskTimeLockActive",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TaskTokenNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskTokenThresholdNotMet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTokenZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCost",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTxCostLimitPctAboveOne",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCostPct",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitPctExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskUnpaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "volume",
          "type": "uint256"
        }
      ],
      "name": "TaskVolumeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskVolumeLimitTokenZero",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "BalanceConnectorsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "CustomTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "CustomVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "DefaultTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "DefaultVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Executed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "GasLimitsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        }
      ],
      "name": "TimeLockAllowedAtSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TimeLockSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "added",
          "type": "bool"
        }
      ],
      "name": "TokensAcceptanceListSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "acceptanceType",
          "type": "uint8"
        }
      ],
      "name": "TokensAcceptanceTypeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "EXECUTION_TYPE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "authorizer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "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": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "smartVault",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "previousBalanceConnectorId",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "nextBalanceConnectorId",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct BaseTask.BaseConfig",
                  "name": "baseConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "gasPriceLimit",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "priorityFeeLimit",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "txCostLimit",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "txCostLimitPct",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct GasLimitedTask.GasLimitConfig",
                  "name": "gasLimitConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "mode",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "frequency",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "allowedAt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "window",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct TimeLockedTask.TimeLockConfig",
                  "name": "timeLockConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
                      "name": "acceptanceType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address[]",
                      "name": "tokens",
                      "type": "address[]"
                    }
                  ],
                  "internalType": "struct TokenIndexedTask.TokenIndexConfig",
                  "name": "tokenIndexConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "min",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "max",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct TokenThresholdTask.Threshold",
                      "name": "defaultThreshold",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "min",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "max",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct TokenThresholdTask.Threshold",
                          "name": "threshold",
                          "type": "tuple"
                        }
                      ],
                      "internalType": "struct TokenThresholdTask.CustomThresholdConfig[]",
                      "name": "customThresholdConfigs",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct TokenThresholdTask.TokenThresholdConfig",
                  "name": "tokenThresholdConfig",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "period",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                      "name": "defaultVolumeLimit",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "amount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "period",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                          "name": "volumeLimit",
                          "type": "tuple"
                        }
                      ],
                      "internalType": "struct VolumeLimitedTask.CustomVolumeLimitConfig[]",
                      "name": "customVolumeLimitConfigs",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct VolumeLimitedTask.VolumeLimitConfig",
                  "name": "volumeLimitConfig",
                  "type": "tuple"
                }
              ],
              "internalType": "struct Task.TaskConfig",
              "name": "taskConfig",
              "type": "tuple"
            }
          ],
          "internalType": "struct HandleOver.HandleOverConfig",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "isTokenAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "setBalanceConnectors",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setCustomTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setCustomVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setDefaultTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setDefaultVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newGasPriceLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPriorityFeeLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "setGasLimits",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "setTimeLock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "bool[]",
          "name": "added",
          "type": "bool[]"
        }
      ],
      "name": "setTokensAcceptanceList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "newTokensAcceptanceType",
          "type": "uint8"
        }
      ],
      "name": "setTokensAcceptanceType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "smartVault",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokensAcceptanceType",
      "outputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61447580620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636aacaad811610104578063b187bd26116100a2578063d45a76cf11610071578063d45a76cf1461059d578063d534ef21146105b0578063e6b5be98146105c3578063f9eaee0d146105d657600080fd5b8063b187bd2614610543578063c267621e14610560578063d09edf3114610571578063d3feb6021461058a57600080fd5b806390333ba8116100de57806390333ba814610490578063a0c3774f146104a3578063a3374177146104b6578063a5900c4d146104e957600080fd5b80636aacaad8146104295780637125590a146104755780638456cb591461048857600080fd5b80633f4ba83a1161017c5780634fd49efd1161014b5780634fd49efd1461037f57806351a424b1146103aa5780635670e2ce146103e25780635ea54eee146103fd57600080fd5b80633f4ba83a14610315578063423a4b401461031d57806342d4693e146103305780634a45a3a81461034a57600080fd5b8063221a8c68116101b8578063221a8c68146102385780632384c32d146102dc57806330eae572146102ef5780633bd9ef281461030257600080fd5b80630fe105e8146101df578063119a5e96146101f45780632197238414610225575b600080fd5b6101f26101ed3660046139bc565b6105e9565b005b6101fc610622565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6101f2610233366004613b89565b610659565b6102aa610246366004613c4d565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a00161021c565b6101f26102ea366004613c6a565b610709565b6101f26102fd366004613cbf565b610738565b6101f2610310366004613cda565b610779565b6101f26107c2565b6101f261032b366004613c6a565b610849565b600f5461033d9060ff1681565b60405161021c9190613d1c565b6103717f32e0087cbe19420ae911c1ab95ccd883988b6e030a11e3bd538ccc5f08aa76c681565b60405190815260200161021c565b600154610392906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b6103bd6103b8366004613c4d565b610878565b604080516001600160a01b03909416845260208401929092529082015260600161021c565b6002546003546040805192835260208301919091520161021c565b60065460075460085460095460408051948552602085019390935291830152606082015260800161021c565b6102aa6040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6101f2610483366004613d44565b6108a1565b6101f26108cc565b6101f261049e366004613d66565b61093e565b6103716104b1366004613c4d565b610971565b6103bd604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103bd6104f7366004613c4d565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b6004546105509060ff1681565b604051901515815260200161021c565b6001546001600160a01b0316610392565b600054610392906201000090046001600160a01b031681565b6101f2610598366004613d66565b610a08565b6102aa6105ab366004613c4d565b610a35565b6101f26105be366004613fe3565b610aa4565b6101f26105d1366004614100565b610bca565b6105506105e4366004613c4d565b610bf9565b6105f88460ff16848484610c44565b61060f336000356001600160e01b03191683610cef565b61061b85858585610d36565b5050505050565b600a5460009081908190819060ff16600281111561064257610642613d06565b600b54600c54600e54935093509350935090919293565b61066f336000356001600160e01b031916610fdb565b80518251146106aa576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610704576106f28382815181106106cb576106cb614132565b60200260200101518383815181106106e5576106e5614132565b6020026020010151610ff7565b806106fc8161415e565b9150506106ad565b505050565b610715848484846110a1565b61072c336000356001600160e01b03191683610cef565b61061b8585858561110a565b61075581600181111561074d5761074d613d06565b60ff166111c3565b61076c336000356001600160e01b03191683610cef565b6107758261120a565b5050565b6107838282611267565b61079a336000356001600160e01b03191683610cef565b816000036107ae576107ab83610971565b91505b6107b883836112d6565b610704838361135a565b6107d8336000356001600160e01b031916610fdb565b60045460ff16610814576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610855848484846110a1565b61086c336000356001600160e01b03191683610cef565b61061b8585858561136e565b6000806000806108878561142e565b805160208201516040909201519097919650945092505050565b6108ab82826114b9565b6108c2336000356001600160e01b03191683610cef565b6107048383611513565b6108e2336000356001600160e01b031916610fdb565b60045460ff16156109065760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b61094983838361155f565b610960336000356001600160e01b03191683610cef565b61096b8484846115f1565b50505050565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa1580156109de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a029190614177565b92915050565b610a1383838361155f565b610a2a336000356001600160e01b03191683610cef565b61096b848484611647565b600080600080600080610a47876116a3565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b600054610100900460ff1615808015610ac45750600054600160ff909116105b80610ade5750303b158015610ade575060005460ff166001145b610b555760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610b78576000805461ff0019166101001790555b610b81826116d7565b8015610775576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610bd684848484610c44565b610bed336000356001600160e01b03191683610cef565b61061b85858585611747565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610c2f57610c2f613d06565b14610c3b578015610c3d565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610c7b57610c7b614132565b6020026020010181815250508381600181518110610c9b57610c9b614132565b6020026020010181815250508281600281518110610cbb57610cbb614132565b6020026020010181815250508181600381518110610cdb57610cdb614132565b602002602001018181525050949350505050565b610cfa8383836117e2565b610704578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610b4c939291906141cb565b60ff8416610de7576000811180610d4d5750600082115b15610de25782600003610d7f5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b4c565b801580610d8b57508281115b15610db557604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b4c565b81600003610de257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b610f44565b82600003610e145760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b4c565b801580610e2c5750610e296224ea00846141fd565b81115b15610e5657604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b4c565b81600003610e8357604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b60001960ff851601610ec557601c610e9a83611880565b1115610de257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b60011960ff851601610f0d57610eda82611897565b610ee383611880565b14610de257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610b4c565b8360ff166002811115610f5957610f59613d06565b600a805460ff19166001836002811115610f7557610f75613d06565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107759083908390610cef565b6001600160a01b038216611037576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061104c576110476010836118ba565b611057565b6110576010836118cf565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c82604051611095911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106110e1576110e1614132565b602002602001018181525050836001600160a01b031681600181518110610c9b57610c9b614132565b6001600160a01b03841661114a576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061116e908484846118e4565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b6040805160018082528183019092526060916020808301908036833701905050905081816000815181106111f9576111f9614132565b602002602001018181525050919050565b600f805482919060ff19166001838181111561122857611228613d06565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a8160405161125c9190613d1c565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b0316816000815181106112a4576112a4614132565b60200260200101818152505081816001815181106112c4576112c4614132565b60200260200101818152505092915050565b6112e082826119c1565b6001600160a01b038216611320576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610775576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113648282611a07565b6107758282611a8d565b6001600160a01b0384166113ae576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206113d290848484611ab5565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611420929190918252602082015260400190565b60405180910390a350505050565b61145b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156114845780611487565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c816000815181106114f0576114f0614132565b6020026020010181815250508160001c816001815181106112c4576112c4614132565b8161153457604051632daea95560e21b815260048101839052602401610b4c565b8061155557604051632daea95560e21b815260048101829052602401610b4c565b6107758282611c21565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061159e5761159e614132565b60200260200101818152505082816001815181106115be576115be614132565b60200260200101818152505081816002815181106115de576115de614132565b6020026020010181815250509392505050565b6115fe6016848484611ab5565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b61165460128484846118e4565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156116ce5780610c3d565b60169392505050565b600054610100900460ff166117305760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b805161173b90611ca4565b61174481611d51565b50565b670de0b6b3a7640000811115611789576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001610fcd565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611837908790309088908890600401614214565b602060405180830381865afa158015611854573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611878919061425a565b949350505050565b6000611878611892620151808461428d565b611daa565b600080806118ab611892620151808661428d565b50915091506118788282611e46565b6000610c3d836001600160a01b038416611ecc565b6000610c3d836001600160a01b038416611fc6565b60006001600160a01b0384161580156118fb575082155b8015611905575081155b905060006001600160a01b0385161580159061192957508215806119295750838310155b905081158015611937575080155b15611987576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b4c565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b6119cb8282612015565b6119d5828261201f565b6119df8282612043565b6119e9828261212f565b6119f3828261231e565b6119fd8282612368565b6107758282612455565b60035415610775576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611a7157600080fd5b505af1158015611a85573d6000803e3d6000fd5b505050505050565b611a97828261256b565b611aa1828261260d565b611aab828261262f565b6107758282612879565b60006001600160a01b038416158015611acc575082155b8015611ad6575081155b905060006001600160a01b03851615801590611af25750600084115b8015611afe5750600083115b905081158015611b0c575080155b15611b5c576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b4c565b60038601839055600186018490558115611b83576000600287018190556004870155611bef565b8560040154600003611baa5760006002870155611ba083426142a1565b6004870155611bef565b85546001600160a01b03868116911614611bef578554600090611bd6906001600160a01b0316876128a6565b6002880154909150611be890826128b2565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b8082148015611c2f57508115155b15611c69576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610b4c565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff16611cfd5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b8051611d089061290f565b611d106129df565b611d1d8160200151612a42565b611d2a8160400151612aa4565b611d378160600151612b06565b611d448160800151612b68565b61173b8160a00151612bca565b600054610100900460ff166117445760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611e0757611e07614277565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611e575750816003145b80611e625750816005145b80611e6d5750816007145b80611e785750816008145b80611e83575081600a145b80611e8e575081600c145b15611e9b5750601f610a02565b81600214611eab5750601e610a02565b611eb483612c2c565b611ebf57601c611ec2565b601d5b60ff169392505050565b60008181526001830160205260408120548015611fb5576000611ef06001836142b4565b8554909150600090611f04906001906142b4565b9050818114611f69576000866000018281548110611f2457611f24614132565b9060005260206000200154905080876000018481548110611f4757611f47614132565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611f7a57611f7a6142c7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a02565b6000915050610a02565b5092915050565b600081815260018301602052604081205461200d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a02565b506000610a02565b6107758282612c68565b60045460ff16156107755760405163181e462560e31b815260040160405180910390fd5b5a600555604080516080810182526006548082526007546020830152600854928201929092526009546060820152906000901580612082575081513a11155b9050806120c75781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610b4c565b60208201511561096b5760006120dd483a6142b4565b602084015190915081111580611a855760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610b4c918491600401918252602082015260400190565b600a54600b54600c54600e5460ff909316924282111561216b5760405163013ce60b60e01b815242600482015260248101839052604401610b4c565b600084600281111561217f5761217f613d06565b03612238578260000361219457505050505050565b806000036121ae576121a683426142a1565b600d55611a85565b60006121ba83426142b4565b905060006121c8858361428d565b905060006121d686836141fd565b6121e090846142b4565b90508381111561220c5760405163013ce60b60e01b815242600482015260248101869052604401610b4c565b856122188360016142a1565b61222291906141fd565b61222c90866142a1565b600d5550611a85915050565b814210158015612251575061224d81836142a1565b4211155b15612260576121a68284612cbb565b6000600185600281111561227657612276613d06565b146122895761228442611897565b612292565b61229283611880565b905060006122a08483612d53565b9050804210156122cc5760405163013ce60b60e01b815242600482015260248101829052604401610b4c565b60006122d884836142a1565b905042811080156123055760405163013ce60b60e01b815242600482015260248101839052604401610b4c565b61230f8388612cbb565b600d5550505050505050505050565b61232782610bf9565b610775576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610b4c565b60006123738361142e565b80519091506001600160a01b031661238a57505050565b6000836001600160a01b031682600001516001600160a01b0316146123c6576123c16123ba8584600001516128a6565b84906128b2565b6123c8565b825b90506000826020015182101580156123f05750604083015115806123f0575082604001518211155b90508061061b578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610b4c565b6000612460836116a3565b6040805160a08101825282546001600160a01b0316808252600184015460208301526002840154928201929092526003830154606082015260049092015460808301529091506124af57505050565b6000836001600160a01b031682600001516001600160a01b0316146124e4576124df6123ba8584600001516128a6565b6124e6565b825b90506000826080015142106124fc576000612502565b82604001515b61250c90836142a1565b9050826020015181111561061b57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610b4c565b6000612576836116a3565b80549091506001600160a01b031661258d57505050565b80546000906001600160a01b038581169116146125c35781546125be906123ba9086906001600160a01b03166128a6565b6125c5565b825b9050816004015442106125ee576000600283015560038201546125e890426142a1565b60048301555b8082600201600082825461260291906142a1565b909155505050505050565b600d5460000361261b575050565b612626600d54612d7b565b50506000600d55565b60055460000361266b576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a6005546126a491906142b4565b905060006126b23a836141fd565b905060008360400151600014806126cd575083604001518211155b905080612717578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610b4c929190918252602082015260400190565b600060055560608401511580159061272f5750600085115b15611a85576000612802306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279b91906142dd565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fc91906142dd565b886128a6565b905060006128108483612db0565b9050600061281e8289612e22565b9050866060015181111561286e5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610b4c918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610c3d8383612eeb565b600082820283158015906128d55750828482816128d1576128d1614277565b0414155b156128fd57604051637472527d60e11b81526004810185905260248101849052604401610b4c565b670de0b6b3a764000090049392505050565b600054610100900460ff166129685760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b6129d681600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d191906142dd565b6130e1565b61174481613143565b600054610100900460ff16612a385760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b612a406131de565b565b600054610100900460ff16612a9b5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b61174481613237565b600054610100900460ff16612afd5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b611744816132ac565b600054610100900460ff16612b5f5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b61174481613321565b600054610100900460ff16612bc15760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b611744816133cf565b600054610100900460ff16612c235760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b611744816134ad565b6000612c396004836142fa565b158015612c4f5750612c4c6064836142fa565b15155b80610a025750612c61610190836142fa565b1592915050565b600254156107755760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611a57565b600080600080612cca8661358b565b919450925090506000612cdd86846142a1565b90506000612cec600c836142fa565b90506000612cfb600c8461428d565b612d0590876142a1565b905060006002600a5460ff166002811115612d2257612d22613d06565b14612d2d5784612d37565b612d378284611e46565b9050612d458a8385846135aa565b9a9950505050505050505050565b6000806000612d614261358b565b5091509150612d72858383876135aa565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad0649060200161125c565b60008282028315801590612dd3575082848281612dcf57612dcf614277565b0414155b15612dfb57604051637472527d60e11b81526004810185905260248101849052604401610b4c565b8015612e1857670de0b6b3a7640000600019820104600101611878565b6000949350505050565b600081600003612e5e576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003612e6e57506000610a02565b670de0b6b3a764000083810290848281612e8a57612e8a614277565b0414612ecc576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610b4c565b826001820381612ede57612ede614277565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6591906142dd565b90506001600160a01b038116612fb6576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610b4c565b6000612fc06135d2565b9050805160001461305157816001600160a01b031663355efdd9612fe387613652565b612fec87613652565b846040518463ffffffff1660e01b815260040161300b9392919061430e565b602060405180830381865afa158015613028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304c9190614177565b612d72565b816001600160a01b031663ac41865a61306987613652565b61307287613652565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156130bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d729190614177565b600054610100900460ff1661313a5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b61174481613686565b600054610100900460ff1661319c5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055602081015160408201516117449190611513565b600054610100900460ff16612a405760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b600054610100900460ff166132905760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b6117448160000151826020015183604001518460600151611747565b600054610100900460ff166133055760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b6117448160000151826020015183604001518460600151610d36565b600054610100900460ff1661337a5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b80516133859061120a565b60005b816020015151811015610775576133bd826020015182815181106133ae576133ae614132565b60200260200101516001610ff7565b806133c78161415e565b915050613388565b600054610100900460ff166134285760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b8051805160208201516040830151613441929190611647565b60005b8260200151518110156107045760008360200151828151811061346957613469614132565b60200260200101519050600081602001519050613498826000015182600001518360200151846040015161110a565b505080806134a59061415e565b915050613444565b600054610100900460ff166135065760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b805180516020820151604083015161351f9291906115f1565b60005b8260200151518110156107045760008360200151828151811061354757613547614132565b60200260200101519050600081602001519050613576826000015182600001518360200151846040015161136e565b505080806135839061415e565b915050613522565b6000808061359d620151808504611daa565b9196909550909350915050565b6000612d728484846135bb8961371f565b6135c48a61373d565b6135cd8b613759565b613766565b606060006135de6137c2565b9050368111156135fc57505060408051600081526020810190915290565b8067ffffffffffffffff811115613615576136156139f5565b6040519080825280601f01601f19166020018201604052801561363f576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0383161461367e5781610a02565b610a026137dd565b600054610100900460ff166136df5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008061372f62015180846142fa565b9050610c3d610e108261428d565b60008061374c610e10846142fa565b9050610c3d603c8261428d565b6000610a02603c836142fa565b600081613774603c856141fd565b613780610e10876141fd565b6201518061378f8b8b8b613869565b61379991906141fd565b6137a391906142a1565b6137ad91906142a1565b6137b791906142a1565b979650505050505050565b600060243610156137d35750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015613840573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386491906142dd565b905090565b60006107b284101561387a57600080fd5b838383600062253d8c60046064600c613894600e88614379565b61389e9190614399565b6138aa886113246143c7565b6138b491906143c7565b6138be9190614399565b6138c99060036143ef565b6138d39190614399565b600c806138e1600e88614379565b6138eb9190614399565b6138f690600c6143ef565b613901600288614379565b61390b9190614379565b6139179061016f6143ef565b6139219190614399565b6004600c613930600e89614379565b61393a9190614399565b613946896112c06143c7565b61395091906143c7565b61395c906105b56143ef565b6139669190614399565b613972617d4b87614379565b61397c91906143c7565b61398691906143c7565b6139909190614379565b61399a9190614379565b98975050505050505050565b803560ff811681146139b757600080fd5b919050565b600080600080608085870312156139d257600080fd5b6139db856139a6565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b60405290565b6040805190810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b6040516020810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b60405160c0810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ac657613ac66139f5565b604052919050565b600067ffffffffffffffff821115613ae857613ae86139f5565b5060051b60200190565b6001600160a01b038116811461174457600080fd5b600082601f830112613b1857600080fd5b81356020613b2d613b2883613ace565b613a9d565b82815260059290921b84018101918181019086841115613b4c57600080fd5b8286015b84811015613b70578035613b6381613af2565b8352918301918301613b50565b509695505050505050565b801515811461174457600080fd5b60008060408385031215613b9c57600080fd5b823567ffffffffffffffff80821115613bb457600080fd5b613bc086838701613b07565b9350602091508185013581811115613bd757600080fd5b85019050601f81018613613bea57600080fd5b8035613bf8613b2882613ace565b81815260059190911b82018301908381019088831115613c1757600080fd5b928401925b82841015613c3e578335613c2f81613b7b565b82529284019290840190613c1c565b80955050505050509250929050565b600060208284031215613c5f57600080fd5b8135610c3d81613af2565b60008060008060808587031215613c8057600080fd5b8435613c8b81613af2565b93506020850135613c9b81613af2565b93969395505050506040820135916060013590565b8035600281106139b757600080fd5b600060208284031215613cd157600080fd5b610c3d82613cb0565b60008060408385031215613ced57600080fd5b8235613cf881613af2565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613d3e57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613d5757600080fd5b50508035926020909101359150565b600080600060608486031215613d7b57600080fd5b8335613d8681613af2565b95602085013595506040909401359392505050565b600060608284031215613dad57600080fd5b6040516060810181811067ffffffffffffffff82111715613dd057613dd06139f5565b6040529050808235613de181613af2565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613e1257600080fd5b613e1a613a0b565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613e5657600080fd5b613e5e613a0b565b9050613e69826139a6565b815260208201356020820152604082013560408201526060820135606082015292915050565b600060408284031215613ea157600080fd5b613ea9613a34565b9050613eb482613cb0565b8152602082013567ffffffffffffffff811115613ed057600080fd5b613edc84828501613b07565b60208301525092915050565b600060808284031215613efa57600080fd5b613f02613a34565b90508135613f0f81613af2565b8152613f1e8360208401613d9b565b602082015292915050565b60006080808385031215613f3c57600080fd5b613f44613a34565b9150613f508484613d9b565b8252606083013567ffffffffffffffff811115613f6c57600080fd5b8301601f81018513613f7d57600080fd5b80356020613f8d613b2883613ace565b82815260079290921b83018101918181019088841115613fac57600080fd5b938201935b83851015613fd257613fc38986613ee8565b82529385019390820190613fb1565b808388015250505050505092915050565b600060208284031215613ff557600080fd5b813567ffffffffffffffff8082111561400d57600080fd5b908301906020828603121561402157600080fd5b614029613a57565b82358281111561403857600080fd5b92909201916101c0838703121561404e57600080fd5b614056613a7a565b6140608785613d9b565b815261406f8760608601613e00565b60208201526140818760e08601613e44565b60408201526101608401358381111561409957600080fd5b6140a588828701613e8f565b606083015250610180840135838111156140be57600080fd5b6140ca88828701613f29565b6080830152506101a0840135838111156140e357600080fd5b6140ef88828701613f29565b60a083015250815295945050505050565b6000806000806080858703121561411657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161417057614170614148565b5060010190565b60006020828403121561418957600080fd5b5051919050565b600081518084526020808501945080840160005b838110156141c0578151875295820195908201906001016141a4565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612d726060830184614190565b8082028115828204841417610a0257610a02614148565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526142506080830184614190565b9695505050505050565b60006020828403121561426c57600080fd5b8151610c3d81613b7b565b634e487b7160e01b600052601260045260246000fd5b60008261429c5761429c614277565b500490565b80820180821115610a0257610a02614148565b81810381811115610a0257610a02614148565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156142ef57600080fd5b8151610c3d81613af2565b60008261430957614309614277565b500690565b60006001600160a01b038086168352602081861681850152606060408501528451915081606085015260005b828110156143565785810182015185820160800152810161433a565b50506000608082850101526080601f19601f830116840101915050949350505050565b8181036000831280158383131683831282161715611fbf57611fbf614148565b6000826143a8576143a8614277565b600160ff1b8214600019841416156143c2576143c2614148565b500590565b80820182811260008312801582168215821617156143e7576143e7614148565b505092915050565b80820260008212600160ff1b8414161561440b5761440b614148565b8181058314821517610a0257610a0261414856fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a2646970667358221220dd5ead3d3a2e73d41ec62697d74b71fba7e2ec0a95c9a4137d0f275adcdfe72d64736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636aacaad811610104578063b187bd26116100a2578063d45a76cf11610071578063d45a76cf1461059d578063d534ef21146105b0578063e6b5be98146105c3578063f9eaee0d146105d657600080fd5b8063b187bd2614610543578063c267621e14610560578063d09edf3114610571578063d3feb6021461058a57600080fd5b806390333ba8116100de57806390333ba814610490578063a0c3774f146104a3578063a3374177146104b6578063a5900c4d146104e957600080fd5b80636aacaad8146104295780637125590a146104755780638456cb591461048857600080fd5b80633f4ba83a1161017c5780634fd49efd1161014b5780634fd49efd1461037f57806351a424b1146103aa5780635670e2ce146103e25780635ea54eee146103fd57600080fd5b80633f4ba83a14610315578063423a4b401461031d57806342d4693e146103305780634a45a3a81461034a57600080fd5b8063221a8c68116101b8578063221a8c68146102385780632384c32d146102dc57806330eae572146102ef5780633bd9ef281461030257600080fd5b80630fe105e8146101df578063119a5e96146101f45780632197238414610225575b600080fd5b6101f26101ed3660046139bc565b6105e9565b005b6101fc610622565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6101f2610233366004613b89565b610659565b6102aa610246366004613c4d565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a00161021c565b6101f26102ea366004613c6a565b610709565b6101f26102fd366004613cbf565b610738565b6101f2610310366004613cda565b610779565b6101f26107c2565b6101f261032b366004613c6a565b610849565b600f5461033d9060ff1681565b60405161021c9190613d1c565b6103717f32e0087cbe19420ae911c1ab95ccd883988b6e030a11e3bd538ccc5f08aa76c681565b60405190815260200161021c565b600154610392906001600160a01b031681565b6040516001600160a01b03909116815260200161021c565b6103bd6103b8366004613c4d565b610878565b604080516001600160a01b03909416845260208401929092529082015260600161021c565b6002546003546040805192835260208301919091520161021c565b60065460075460085460095460408051948552602085019390935291830152606082015260800161021c565b6102aa6040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6101f2610483366004613d44565b6108a1565b6101f26108cc565b6101f261049e366004613d66565b61093e565b6103716104b1366004613c4d565b610971565b6103bd604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103bd6104f7366004613c4d565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b6004546105509060ff1681565b604051901515815260200161021c565b6001546001600160a01b0316610392565b600054610392906201000090046001600160a01b031681565b6101f2610598366004613d66565b610a08565b6102aa6105ab366004613c4d565b610a35565b6101f26105be366004613fe3565b610aa4565b6101f26105d1366004614100565b610bca565b6105506105e4366004613c4d565b610bf9565b6105f88460ff16848484610c44565b61060f336000356001600160e01b03191683610cef565b61061b85858585610d36565b5050505050565b600a5460009081908190819060ff16600281111561064257610642613d06565b600b54600c54600e54935093509350935090919293565b61066f336000356001600160e01b031916610fdb565b80518251146106aa576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610704576106f28382815181106106cb576106cb614132565b60200260200101518383815181106106e5576106e5614132565b6020026020010151610ff7565b806106fc8161415e565b9150506106ad565b505050565b610715848484846110a1565b61072c336000356001600160e01b03191683610cef565b61061b8585858561110a565b61075581600181111561074d5761074d613d06565b60ff166111c3565b61076c336000356001600160e01b03191683610cef565b6107758261120a565b5050565b6107838282611267565b61079a336000356001600160e01b03191683610cef565b816000036107ae576107ab83610971565b91505b6107b883836112d6565b610704838361135a565b6107d8336000356001600160e01b031916610fdb565b60045460ff16610814576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610855848484846110a1565b61086c336000356001600160e01b03191683610cef565b61061b8585858561136e565b6000806000806108878561142e565b805160208201516040909201519097919650945092505050565b6108ab82826114b9565b6108c2336000356001600160e01b03191683610cef565b6107048383611513565b6108e2336000356001600160e01b031916610fdb565b60045460ff16156109065760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b61094983838361155f565b610960336000356001600160e01b03191683610cef565b61096b8484846115f1565b50505050565b6001546002546040517ebc489400000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038381166024830152600092169062bc489490604401602060405180830381865afa1580156109de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a029190614177565b92915050565b610a1383838361155f565b610a2a336000356001600160e01b03191683610cef565b61096b848484611647565b600080600080600080610a47876116a3565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b600054610100900460ff1615808015610ac45750600054600160ff909116105b80610ade5750303b158015610ade575060005460ff166001145b610b555760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610b78576000805461ff0019166101001790555b610b81826116d7565b8015610775576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610bd684848484610c44565b610bed336000356001600160e01b03191683610cef565b61061b85858585611747565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610c2f57610c2f613d06565b14610c3b578015610c3d565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610c7b57610c7b614132565b6020026020010181815250508381600181518110610c9b57610c9b614132565b6020026020010181815250508281600281518110610cbb57610cbb614132565b6020026020010181815250508181600381518110610cdb57610cdb614132565b602002602001018181525050949350505050565b610cfa8383836117e2565b610704578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610b4c939291906141cb565b60ff8416610de7576000811180610d4d5750600082115b15610de25782600003610d7f5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b4c565b801580610d8b57508281115b15610db557604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b4c565b81600003610de257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b610f44565b82600003610e145760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b4c565b801580610e2c5750610e296224ea00846141fd565b81115b15610e5657604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b4c565b81600003610e8357604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b60001960ff851601610ec557601c610e9a83611880565b1115610de257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b60011960ff851601610f0d57610eda82611897565b610ee383611880565b14610de257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b4c565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610b4c565b8360ff166002811115610f5957610f59613d06565b600a805460ff19166001836002811115610f7557610f75613d06565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107759083908390610cef565b6001600160a01b038216611037576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061104c576110476010836118ba565b611057565b6110576010836118cf565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c82604051611095911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b0316816000815181106110e1576110e1614132565b602002602001018181525050836001600160a01b031681600181518110610c9b57610c9b614132565b6001600160a01b03841661114a576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061116e908484846118e4565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b6040805160018082528183019092526060916020808301908036833701905050905081816000815181106111f9576111f9614132565b602002602001018181525050919050565b600f805482919060ff19166001838181111561122857611228613d06565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a8160405161125c9190613d1c565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b0316816000815181106112a4576112a4614132565b60200260200101818152505081816001815181106112c4576112c4614132565b60200260200101818152505092915050565b6112e082826119c1565b6001600160a01b038216611320576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610775576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113648282611a07565b6107758282611a8d565b6001600160a01b0384166113ae576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206113d290848484611ab5565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611420929190918252602082015260400190565b60405180910390a350505050565b61145b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156114845780611487565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c816000815181106114f0576114f0614132565b6020026020010181815250508160001c816001815181106112c4576112c4614132565b8161153457604051632daea95560e21b815260048101839052602401610b4c565b8061155557604051632daea95560e21b815260048101829052602401610b4c565b6107758282611c21565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b03168160008151811061159e5761159e614132565b60200260200101818152505082816001815181106115be576115be614132565b60200260200101818152505081816002815181106115de576115de614132565b6020026020010181815250509392505050565b6115fe6016848484611ab5565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b61165460128484846118e4565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156116ce5780610c3d565b60169392505050565b600054610100900460ff166117305760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b805161173b90611ca4565b61174481611d51565b50565b670de0b6b3a7640000811115611789576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001610fcd565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611837908790309088908890600401614214565b602060405180830381865afa158015611854573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611878919061425a565b949350505050565b6000611878611892620151808461428d565b611daa565b600080806118ab611892620151808661428d565b50915091506118788282611e46565b6000610c3d836001600160a01b038416611ecc565b6000610c3d836001600160a01b038416611fc6565b60006001600160a01b0384161580156118fb575082155b8015611905575081155b905060006001600160a01b0385161580159061192957508215806119295750838310155b905081158015611937575080155b15611987576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b4c565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b6119cb8282612015565b6119d5828261201f565b6119df8282612043565b6119e9828261212f565b6119f3828261231e565b6119fd8282612368565b6107758282612455565b60035415610775576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611a7157600080fd5b505af1158015611a85573d6000803e3d6000fd5b505050505050565b611a97828261256b565b611aa1828261260d565b611aab828261262f565b6107758282612879565b60006001600160a01b038416158015611acc575082155b8015611ad6575081155b905060006001600160a01b03851615801590611af25750600084115b8015611afe5750600083115b905081158015611b0c575080155b15611b5c576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b4c565b60038601839055600186018490558115611b83576000600287018190556004870155611bef565b8560040154600003611baa5760006002870155611ba083426142a1565b6004870155611bef565b85546001600160a01b03868116911614611bef578554600090611bd6906001600160a01b0316876128a6565b6002880154909150611be890826128b2565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b8082148015611c2f57508115155b15611c69576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610b4c565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff16611cfd5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b8051611d089061290f565b611d106129df565b611d1d8160200151612a42565b611d2a8160400151612aa4565b611d378160600151612b06565b611d448160800151612b68565b61173b8160a00151612bca565b600054610100900460ff166117445760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611e0757611e07614277565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b60008160011480611e575750816003145b80611e625750816005145b80611e6d5750816007145b80611e785750816008145b80611e83575081600a145b80611e8e575081600c145b15611e9b5750601f610a02565b81600214611eab5750601e610a02565b611eb483612c2c565b611ebf57601c611ec2565b601d5b60ff169392505050565b60008181526001830160205260408120548015611fb5576000611ef06001836142b4565b8554909150600090611f04906001906142b4565b9050818114611f69576000866000018281548110611f2457611f24614132565b9060005260206000200154905080876000018481548110611f4757611f47614132565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611f7a57611f7a6142c7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a02565b6000915050610a02565b5092915050565b600081815260018301602052604081205461200d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a02565b506000610a02565b6107758282612c68565b60045460ff16156107755760405163181e462560e31b815260040160405180910390fd5b5a600555604080516080810182526006548082526007546020830152600854928201929092526009546060820152906000901580612082575081513a11155b9050806120c75781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610b4c565b60208201511561096b5760006120dd483a6142b4565b602084015190915081111580611a855760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610b4c918491600401918252602082015260400190565b600a54600b54600c54600e5460ff909316924282111561216b5760405163013ce60b60e01b815242600482015260248101839052604401610b4c565b600084600281111561217f5761217f613d06565b03612238578260000361219457505050505050565b806000036121ae576121a683426142a1565b600d55611a85565b60006121ba83426142b4565b905060006121c8858361428d565b905060006121d686836141fd565b6121e090846142b4565b90508381111561220c5760405163013ce60b60e01b815242600482015260248101869052604401610b4c565b856122188360016142a1565b61222291906141fd565b61222c90866142a1565b600d5550611a85915050565b814210158015612251575061224d81836142a1565b4211155b15612260576121a68284612cbb565b6000600185600281111561227657612276613d06565b146122895761228442611897565b612292565b61229283611880565b905060006122a08483612d53565b9050804210156122cc5760405163013ce60b60e01b815242600482015260248101829052604401610b4c565b60006122d884836142a1565b905042811080156123055760405163013ce60b60e01b815242600482015260248101839052604401610b4c565b61230f8388612cbb565b600d5550505050505050505050565b61232782610bf9565b610775576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610b4c565b60006123738361142e565b80519091506001600160a01b031661238a57505050565b6000836001600160a01b031682600001516001600160a01b0316146123c6576123c16123ba8584600001516128a6565b84906128b2565b6123c8565b825b90506000826020015182101580156123f05750604083015115806123f0575082604001518211155b90508061061b578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610b4c565b6000612460836116a3565b6040805160a08101825282546001600160a01b0316808252600184015460208301526002840154928201929092526003830154606082015260049092015460808301529091506124af57505050565b6000836001600160a01b031682600001516001600160a01b0316146124e4576124df6123ba8584600001516128a6565b6124e6565b825b90506000826080015142106124fc576000612502565b82604001515b61250c90836142a1565b9050826020015181111561061b57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610b4c565b6000612576836116a3565b80549091506001600160a01b031661258d57505050565b80546000906001600160a01b038581169116146125c35781546125be906123ba9086906001600160a01b03166128a6565b6125c5565b825b9050816004015442106125ee576000600283015560038201546125e890426142a1565b60048301555b8082600201600082825461260291906142a1565b909155505050505050565b600d5460000361261b575050565b612626600d54612d7b565b50506000600d55565b60055460000361266b576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a6005546126a491906142b4565b905060006126b23a836141fd565b905060008360400151600014806126cd575083604001518211155b905080612717578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610b4c929190918252602082015260400190565b600060055560608401511580159061272f5750600085115b15611a85576000612802306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279b91906142dd565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fc91906142dd565b886128a6565b905060006128108483612db0565b9050600061281e8289612e22565b9050866060015181111561286e5760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610b4c918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610c3d8383612eeb565b600082820283158015906128d55750828482816128d1576128d1614277565b0414155b156128fd57604051637472527d60e11b81526004810185905260248101849052604401610b4c565b670de0b6b3a764000090049392505050565b600054610100900460ff166129685760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b6129d681600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d191906142dd565b6130e1565b61174481613143565b600054610100900460ff16612a385760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b612a406131de565b565b600054610100900460ff16612a9b5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b61174481613237565b600054610100900460ff16612afd5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b611744816132ac565b600054610100900460ff16612b5f5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b61174481613321565b600054610100900460ff16612bc15760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b611744816133cf565b600054610100900460ff16612c235760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b611744816134ad565b6000612c396004836142fa565b158015612c4f5750612c4c6064836142fa565b15155b80610a025750612c61610190836142fa565b1592915050565b600254156107755760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611a57565b600080600080612cca8661358b565b919450925090506000612cdd86846142a1565b90506000612cec600c836142fa565b90506000612cfb600c8461428d565b612d0590876142a1565b905060006002600a5460ff166002811115612d2257612d22613d06565b14612d2d5784612d37565b612d378284611e46565b9050612d458a8385846135aa565b9a9950505050505050505050565b6000806000612d614261358b565b5091509150612d72858383876135aa565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad0649060200161125c565b60008282028315801590612dd3575082848281612dcf57612dcf614277565b0414155b15612dfb57604051637472527d60e11b81526004810185905260248101849052604401610b4c565b8015612e1857670de0b6b3a7640000600019820104600101611878565b6000949350505050565b600081600003612e5e576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003612e6e57506000610a02565b670de0b6b3a764000083810290848281612e8a57612e8a614277565b0414612ecc576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610b4c565b826001820381612ede57612ede614277565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6591906142dd565b90506001600160a01b038116612fb6576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610b4c565b6000612fc06135d2565b9050805160001461305157816001600160a01b031663355efdd9612fe387613652565b612fec87613652565b846040518463ffffffff1660e01b815260040161300b9392919061430e565b602060405180830381865afa158015613028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304c9190614177565b612d72565b816001600160a01b031663ac41865a61306987613652565b61307287613652565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156130bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d729190614177565b600054610100900460ff1661313a5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b61174481613686565b600054610100900460ff1661319c5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055602081015160408201516117449190611513565b600054610100900460ff16612a405760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b600054610100900460ff166132905760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b6117448160000151826020015183604001518460600151611747565b600054610100900460ff166133055760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b6117448160000151826020015183604001518460600151610d36565b600054610100900460ff1661337a5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b80516133859061120a565b60005b816020015151811015610775576133bd826020015182815181106133ae576133ae614132565b60200260200101516001610ff7565b806133c78161415e565b915050613388565b600054610100900460ff166134285760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b8051805160208201516040830151613441929190611647565b60005b8260200151518110156107045760008360200151828151811061346957613469614132565b60200260200101519050600081602001519050613498826000015182600001518360200151846040015161110a565b505080806134a59061415e565b915050613444565b600054610100900460ff166135065760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b805180516020820151604083015161351f9291906115f1565b60005b8260200151518110156107045760008360200151828151811061354757613547614132565b60200260200101519050600081602001519050613576826000015182600001518360200151846040015161136e565b505080806135839061415e565b915050613522565b6000808061359d620151808504611daa565b9196909550909350915050565b6000612d728484846135bb8961371f565b6135c48a61373d565b6135cd8b613759565b613766565b606060006135de6137c2565b9050368111156135fc57505060408051600081526020810190915290565b8067ffffffffffffffff811115613615576136156139f5565b6040519080825280601f01601f19166020018201604052801561363f576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0383161461367e5781610a02565b610a026137dd565b600054610100900460ff166136df5760405162461bcd60e51b815260206004820152602b602482015260008051602061442083398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b4c565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008061372f62015180846142fa565b9050610c3d610e108261428d565b60008061374c610e10846142fa565b9050610c3d603c8261428d565b6000610a02603c836142fa565b600081613774603c856141fd565b613780610e10876141fd565b6201518061378f8b8b8b613869565b61379991906141fd565b6137a391906142a1565b6137ad91906142a1565b6137b791906142a1565b979650505050505050565b600060243610156137d35750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015613840573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386491906142dd565b905090565b60006107b284101561387a57600080fd5b838383600062253d8c60046064600c613894600e88614379565b61389e9190614399565b6138aa886113246143c7565b6138b491906143c7565b6138be9190614399565b6138c99060036143ef565b6138d39190614399565b600c806138e1600e88614379565b6138eb9190614399565b6138f690600c6143ef565b613901600288614379565b61390b9190614379565b6139179061016f6143ef565b6139219190614399565b6004600c613930600e89614379565b61393a9190614399565b613946896112c06143c7565b61395091906143c7565b61395c906105b56143ef565b6139669190614399565b613972617d4b87614379565b61397c91906143c7565b61398691906143c7565b6139909190614379565b61399a9190614379565b98975050505050505050565b803560ff811681146139b757600080fd5b919050565b600080600080608085870312156139d257600080fd5b6139db856139a6565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b60405290565b6040805190810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b6040516020810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b60405160c0810167ffffffffffffffff81118282101715613a2e57613a2e6139f5565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ac657613ac66139f5565b604052919050565b600067ffffffffffffffff821115613ae857613ae86139f5565b5060051b60200190565b6001600160a01b038116811461174457600080fd5b600082601f830112613b1857600080fd5b81356020613b2d613b2883613ace565b613a9d565b82815260059290921b84018101918181019086841115613b4c57600080fd5b8286015b84811015613b70578035613b6381613af2565b8352918301918301613b50565b509695505050505050565b801515811461174457600080fd5b60008060408385031215613b9c57600080fd5b823567ffffffffffffffff80821115613bb457600080fd5b613bc086838701613b07565b9350602091508185013581811115613bd757600080fd5b85019050601f81018613613bea57600080fd5b8035613bf8613b2882613ace565b81815260059190911b82018301908381019088831115613c1757600080fd5b928401925b82841015613c3e578335613c2f81613b7b565b82529284019290840190613c1c565b80955050505050509250929050565b600060208284031215613c5f57600080fd5b8135610c3d81613af2565b60008060008060808587031215613c8057600080fd5b8435613c8b81613af2565b93506020850135613c9b81613af2565b93969395505050506040820135916060013590565b8035600281106139b757600080fd5b600060208284031215613cd157600080fd5b610c3d82613cb0565b60008060408385031215613ced57600080fd5b8235613cf881613af2565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613d3e57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613d5757600080fd5b50508035926020909101359150565b600080600060608486031215613d7b57600080fd5b8335613d8681613af2565b95602085013595506040909401359392505050565b600060608284031215613dad57600080fd5b6040516060810181811067ffffffffffffffff82111715613dd057613dd06139f5565b6040529050808235613de181613af2565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613e1257600080fd5b613e1a613a0b565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613e5657600080fd5b613e5e613a0b565b9050613e69826139a6565b815260208201356020820152604082013560408201526060820135606082015292915050565b600060408284031215613ea157600080fd5b613ea9613a34565b9050613eb482613cb0565b8152602082013567ffffffffffffffff811115613ed057600080fd5b613edc84828501613b07565b60208301525092915050565b600060808284031215613efa57600080fd5b613f02613a34565b90508135613f0f81613af2565b8152613f1e8360208401613d9b565b602082015292915050565b60006080808385031215613f3c57600080fd5b613f44613a34565b9150613f508484613d9b565b8252606083013567ffffffffffffffff811115613f6c57600080fd5b8301601f81018513613f7d57600080fd5b80356020613f8d613b2883613ace565b82815260079290921b83018101918181019088841115613fac57600080fd5b938201935b83851015613fd257613fc38986613ee8565b82529385019390820190613fb1565b808388015250505050505092915050565b600060208284031215613ff557600080fd5b813567ffffffffffffffff8082111561400d57600080fd5b908301906020828603121561402157600080fd5b614029613a57565b82358281111561403857600080fd5b92909201916101c0838703121561404e57600080fd5b614056613a7a565b6140608785613d9b565b815261406f8760608601613e00565b60208201526140818760e08601613e44565b60408201526101608401358381111561409957600080fd5b6140a588828701613e8f565b606083015250610180840135838111156140be57600080fd5b6140ca88828701613f29565b6080830152506101a0840135838111156140e357600080fd5b6140ef88828701613f29565b60a083015250815295945050505050565b6000806000806080858703121561411657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161417057614170614148565b5060010190565b60006020828403121561418957600080fd5b5051919050565b600081518084526020808501945080840160005b838110156141c0578151875295820195908201906001016141a4565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612d726060830184614190565b8082028115828204841417610a0257610a02614148565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526142506080830184614190565b9695505050505050565b60006020828403121561426c57600080fd5b8151610c3d81613b7b565b634e487b7160e01b600052601260045260246000fd5b60008261429c5761429c614277565b500490565b80820180821115610a0257610a02614148565b81810381811115610a0257610a02614148565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156142ef57600080fd5b8151610c3d81613af2565b60008261430957614309614277565b500690565b60006001600160a01b038086168352602081861681850152606060408501528451915081606085015260005b828110156143565785810182015185820160800152810161433a565b50506000608082850101526080601f19601f830116840101915050949350505050565b8181036000831280158383131683831282161715611fbf57611fbf614148565b6000826143a8576143a8614277565b600160ff1b8214600019841416156143c2576143c2614148565b500590565b80820182811260008312801582168215821617156143e7576143e7614148565b505092915050565b80820260008212600160ff1b8414161561440b5761440b614148565b8181058314821517610a0257610a0261414856fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a2646970667358221220dd5ead3d3a2e73d41ec62697d74b71fba7e2ec0a95c9a4137d0f275adcdfe72d64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
