{
  "_format": "hh-sol-artifact-1",
  "contractName": "Keep3rJobFundableLiquidityForTest",
  "sourceName": "solidity/for-test/peripherals/jobs/Keep3rJobFundableLiquidityForTest.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_kph",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_keep3rV1",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_keep3rV1Proxy",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_kp3rWethPool",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "BondsLocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondsUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Disputed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DisputerExistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DisputerUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobDisputed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityInsufficient",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityLessThanMin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobUnavailable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LiquidityPairApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LiquidityPairUnapproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LiquidityPairUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinRewardPeriod",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoGovernanceZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyDisputer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyGovernance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyJobOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyPendingGovernance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyPendingJobOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlySlasher",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SlasherExistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "SlasherUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnbondsLocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnbondsUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_bondTime",
          "type": "uint256"
        }
      ],
      "name": "BondTimeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_keeper",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bonding",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Bonding",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "DisputerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "DisputerRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        }
      ],
      "name": "FeeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_pendingGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "GovernanceSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_inflationPeriod",
          "type": "uint256"
        }
      ],
      "name": "InflationPeriodChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "JobOwnershipAssent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_pendingOwner",
          "type": "address"
        }
      ],
      "name": "JobOwnershipChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keep3rHelper",
          "type": "address"
        }
      ],
      "name": "Keep3rHelperChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keep3rV1",
          "type": "address"
        }
      ],
      "name": "Keep3rV1Change",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_keep3rV1Proxy",
          "type": "address"
        }
      ],
      "name": "Keep3rV1ProxyChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_kp3rWethPool",
          "type": "address"
        }
      ],
      "name": "Kp3rWethPoolChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "LiquidityAddition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "LiquidityApproval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_rewardedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_currentCredits",
          "type": "uint256"
        }
      ],
      "name": "LiquidityCreditsForced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_rewardedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_currentCredits",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_periodCredits",
          "type": "uint256"
        }
      ],
      "name": "LiquidityCreditsReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_liquidityMinimum",
          "type": "uint256"
        }
      ],
      "name": "LiquidityMinimumChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "LiquidityRevocation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "LiquidityWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_rewardPeriodTime",
          "type": "uint256"
        }
      ],
      "name": "RewardPeriodTimeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "SlasherAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "SlasherRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_unbondTime",
          "type": "uint256"
        }
      ],
      "name": "UnbondTimeChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_keeperOrJob",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_unbonding",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Unbonding",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "acceptJobOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "addDisputer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "addLiquidityToJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "addSlasher",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "approveLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "approvedLiquidities",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bondTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "canActivateAfter",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "canWithdrawAfter",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "changeJobOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "disputers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "disputes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "firstSeen",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "forceLiquidityCreditsToJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "hasBonded",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inflationPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "internalJobLiquidities",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "internalSettleJobAccountance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "jobLiquidityCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_liquidityCredits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobPendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "jobPeriodCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_periodCredits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobTokenCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "jobs",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keep3rHelper",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keep3rV1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keep3rV1Proxy",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "keepers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "kp3rWethPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "liquidityAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidityMinimum",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "observeLiquidity",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int56",
              "name": "current",
              "type": "int56"
            },
            {
              "internalType": "int56",
              "name": "difference",
              "type": "int56"
            },
            {
              "internalType": "uint256",
              "name": "period",
              "type": "uint256"
            }
          ],
          "internalType": "struct IKeep3rJobFundableLiquidity.TickCache",
          "name": "_tickCache",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "pendingBonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "pendingUnbonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "quoteLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_periodCredits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        }
      ],
      "name": "removeDisputer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_slasher",
          "type": "address"
        }
      ],
      "name": "removeSlasher",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "revokeLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPeriodTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "rewardedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "setApprovedLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondTime",
          "type": "uint256"
        }
      ],
      "name": "setBondTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        }
      ],
      "name": "setFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "setGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_inflationPeriod",
          "type": "uint256"
        }
      ],
      "name": "setInflationPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "setJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "setJobLiquidity",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_keep3rHelper",
          "type": "address"
        }
      ],
      "name": "setKeep3rHelper",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_keep3rV1",
          "type": "address"
        }
      ],
      "name": "setKeep3rV1",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_keep3rV1Proxy",
          "type": "address"
        }
      ],
      "name": "setKeep3rV1Proxy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_kp3rWethPool",
          "type": "address"
        }
      ],
      "name": "setKp3rWethPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_liquidityMinimum",
          "type": "uint256"
        }
      ],
      "name": "setLiquidityMinimum",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "setRevokedLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_rewardPeriodTime",
          "type": "uint256"
        }
      ],
      "name": "setRewardPeriodTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_unbondTime",
          "type": "uint256"
        }
      ],
      "name": "setUnbondTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "slashers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "totalJobCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_credits",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unbondLiquidityFromJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unbondTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "viewTickCache",
      "outputs": [
        {
          "components": [
            {
              "internalType": "int56",
              "name": "current",
              "type": "int56"
            },
            {
              "internalType": "int56",
              "name": "difference",
              "type": "int56"
            },
            {
              "internalType": "uint256",
              "name": "period",
              "type": "uint256"
            }
          ],
          "internalType": "struct IKeep3rJobFundableLiquidity.TickCache",
          "name": "_tickCache",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "viewTickOrder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "withdrawLiquidityFromJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "workCompleted",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "workedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b5060405162003b9b38038062003b9b8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b61393f806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106103475760003560e01c80638bb6dfa8116101c0578063b87fcbff11610100578063b87fcbff14610849578063c7ae40d01461086c578063cacdf93d1461087f578063cb4be2bb14610892578063cb54694d146108a5578063cd22af1b146108b8578063ddca3f43146108e3578063deaf81d4146108ec578063e326ac43146108ff578063e485dc0e1461091f578063ebbb619414610932578063ec00cdfc14610945578063f0f346b914610958578063f11a1d1a1461096b578063f136a09d1461097e578063f39c38a01461099e578063fc253d2b146109b1578063fe75bc46146109ba57600080fd5b80638bb6dfa8146106c05780638cb22b76146106d35780638fe204dd146106f6578063951dc22c1461070957806398e90a0f146107115780639d5c33d81461073a578063a21458091461074d578063a39744b514610760578063a662031b1461078b578063a676f9ff1461079e578063a7d2e784146107be578063aac6aa9c146107c7578063ab033ea9146107da578063b0103b1a146107ed578063b239223314610810578063b600702a14610823578063b7e773401461083657600080fd5b806352a4de291161028b57806352a4de2914610578578063594a3a931461058b57806359a2255e1461059e5780635aa6e675146105b15780635ebe23f0146105c4578063633fb68f146105cd57806364bb43ee146105d657806368a9f19c146105e9578063694798e6146105fc57806369fe0e2d146106275780636cf262bc1461063a57806372da828a1461064d57806375a9f7ff14610660578063768b5d90146106735780637b40c9131461067c5780637c8fce231461068f578063878c723e1461069757600080fd5b8063034d4c611461034c57806307b435c2146103725780630c620bce1461039d5780630d6a1f87146103b25780631101eb41146103c557806315006b82146103da578063160e1e3114610405578063165e62e714610418578063168f92e7146104555780631b44555e146104805780631ef94b91146104a057806321040b01146104c0578063238efcbc146104eb578063274a8db4146104f3578063280b656c146105265780633e525d2014610539578063454c50311461054c575b600080fd5b61035f61035a366004613451565b6109cd565b6040519081526020015b60405180910390f35b61035f61038036600461348b565b601260209081526000928352604080842090915290825290205481565b6103a5610ad3565b6040516103699190613698565b61035f6103c0366004613550565b610ae4565b6103d86103d336600461350f565b610bea565b005b61035f6103e836600461348b565b601060209081526000928352604080842090915290825290205481565b6103d8610413366004613451565b610d44565b61042b610426366004613451565b610eaa565b604080518251600690810b825260208085015190910b908201529181015190820152606001610369565b61035f61046336600461348b565b600960209081526000928352604080842090915290825290205481565b61035f61048e366004613451565b60056020526000908152604090205481565b601b546104b3906001600160a01b031681565b6040516103699190613628565b61035f6104ce36600461348b565b601360209081526000928352604080842090915290825290205481565b6103d861125b565b610516610501366004613451565b601a6020526000908152604090205460ff1681565b6040519015158152602001610369565b6103d8610534366004613451565b6112e7565b6103d8610547366004613451565b6112f6565b61051661055a366004613451565b6001600160a01b03166000908152600f602052604090205460ff1690565b6103d861058636600461350f565b611302565b6103d861059936600461348b565b611550565b6103d86105ac366004613451565b6115f5565b6017546104b3906001600160a01b031681565b61035f601f5481565b61035f60215481565b6103d86105e4366004613451565b6116a7565b6103d86105f7366004613451565b611729565b61035f61060a36600461348b565b602760209081526000928352604080842090915290825290205481565b6103d86106353660046135da565b6117e1565b61035f610648366004613451565b611841565b6103d861065b366004613451565b611977565b6103a561066e366004613451565b611a14565b61035f60225481565b601e546104b3906001600160a01b031681565b6103a5611a38565b6104b36106a5366004613451565b6001602052600090815260409020546001600160a01b031681565b61035f6106ce366004613451565b611a44565b6105166106e1366004613451565b60146020526000908152604090205460ff1681565b6103d86107043660046135da565b611ae7565b6103a5611b45565b6104b361071f366004613451565b6002602052600090815260409020546001600160a01b031681565b6103d8610748366004613451565b611b51565b6103d861075b3660046134c4565b611c09565b61035f61076e36600461348b565b600860209081526000928352604080842090915290825290205481565b6103d8610799366004613451565b611dd9565b61035f6107ac366004613451565b60286020526000908152604090205481565b61035f60205481565b6103d86107d5366004613451565b611de4565b6103d86107e8366004613451565b611e98565b6105166107fb366004613451565b60076020526000908152604090205460ff1681565b6103d861081e3660046135da565b611f0e565b6103d8610831366004613451565b611f6e565b6103d86108443660046135da565b612193565b610516610857366004613451565b60196020526000908152604090205460ff1681565b601c546104b3906001600160a01b031681565b61051661088d36600461348b565b6121f3565b6103d86108a0366004613451565b61221c565b6103d86108b33660046135da565b6122b9565b61035f6108c636600461348b565b601160209081526000928352604080842090915290825290205481565b61035f60245481565b6103d86108fa366004613451565b61233d565b61035f61090d366004613451565b60066020526000908152604090205481565b61042b61092d366004613451565b612348565b6103d86109403660046135da565b6123a4565b6103d8610953366004613451565b612404565b6103d8610966366004613451565b6124a1565b601d546104b3906001600160a01b031681565b61035f61098c366004613451565b60296020526000908152604090205481565b6018546104b3906001600160a01b031681565b61035f60235481565b6103d86109c8366004613550565b612555565b6000806109d983611841565b60225490915042906109f4906109ef9083613803565b612645565b6001600160a01b0385166000908152602860205260409020541115610a98576022546001600160a01b038516600090815260286020526040902054610a399042613803565b10610a75576022546001600160a01b038516600090815260286020526040902054610a649190613768565b610a6e9082613803565b9050610aae565b6001600160a01b038416600090815260286020526040902054610a6e9082613803565b610aa142612645565b610aab9082613803565b90505b610ab8818361265f565b610ac185611a44565b610acb9190613768565b949350505050565b6060610adf6025612689565b905090565b6000610af1602584612696565b15610be4576000610b0184610eaa565b90508060400151600014610be2576001600160a01b0384166000908152600f602052604081205460ff16610b42578160200151610b3d90613875565b610b48565b81602001515b601d5460225460405163a0d2710760e01b8152929350610bd9926001600160a01b039092169163a0d2710791610b84918991879160040161374f565b60206040518083038186803b158015610b9c57600080fd5b505afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd491906135f3565b6126b8565b92505050610be4565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610c2657604051636efb4f4160e11b815260040160405180910390fd5b602054610c339042613768565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610c82908490613768565b90915550610c9390508484846126c9565b6001600160a01b038085166000908152602760209081526040808320938716835292905220548015801590610cd25750602154610cd082866128d7565b105b15610cf057604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610d3591815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610d6f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610d965760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610df7908490600401613628565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e47919061357c565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa90610e9f908390613628565b60405180910390a150565b610eb261340f565b610ebb42612645565b6001600160a01b0383166000908152602a60205260409020600101541415610f3157506001600160a01b03166000908152602a602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b600080610f45602254426109ef9190613803565b6001600160a01b0385166000908152602a60205260409020600101549091508114156110a957604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602a602052604090205490915060060b610fb242612645565b610fbc9042613803565b82600081518110610fcf57610fcf6138de565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261102b929190911690869060040161363c565b60606040518083038186803b15801561104357600080fd5b505afa158015611057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107b9190613597565b600692830b90920b808852919550611095918391506137b3565b600690810b900b6020860152506112329050565b6001600160a01b0384166000908152602a6020526040902060010154811115611232576040805160028082526060820183526000926020830190803683370190505090506110f642612645565b6111009042613803565b81600081518110611113576111136138de565b602002602001019063ffffffff16908163ffffffff168152505060225461113942612645565b6111439042613803565b61114d9190613768565b81600181518110611160576111606138de565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d91926111b8921690869060040161363c565b60606040518083038186803b1580156111d057600080fd5b505afa1580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190613597565b600692830b90920b80885291955091506112239082906137b3565b600690810b900b602086015250505b811561124b5761124142612645565b6040840152611253565b600060408401525b50505b919050565b6018546001600160a01b0316331461128657604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b6916112dd91613628565b60405180910390a1565b6112f26025826129f5565b5050565b6112ff81612a0a565b50565b6002600054141561132e5760405162461bcd60e51b815260040161132590613718565b60405180910390fd5b600260005561133e602583612696565b61135b5760405163e0b6aead60e01b815260040160405180910390fd5b611366601584612696565b61138357604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090206113a590836129f5565b506113af83612a0a565b6021546001600160a01b038085166000908152602760209081526040808320938716835292905220546113ed906113e7908490613768565b846128d7565b101561140c57604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260286020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a261148a6001600160a01b038316333084612a68565b6001600160a01b038084166000908152602760209081526040808320938616835292905290812080548392906114c1908490613768565b909155506114d49050610bd482846128d7565b6001600160a01b0384166000908152600b6020526040812080549091906114fc908490613768565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b6001600160a01b03828116600090815260016020526040902054839116331461158c57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b0381811660009081526002602052604090205482911633146116315760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b031633146116d2576040516354348f0360e01b815260040160405180910390fd5b6116dd602582612ad9565b6116fa57604051630a8d08b160e01b815260040160405180910390fd5b7f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5681604051610e9f9190613628565b6017546001600160a01b03163314611754576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff161561178e5760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b90610e9f908390613628565b6017546001600160a01b0316331461180c576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610e9f565b6000805b6001600160a01b0383166000908152600d6020526040902061186690612aee565b811015611971576001600160a01b0383166000908152600d6020526040812061188f9083612af8565b905061189c602582612696565b1561195e5760006118ac82610eaa565b9050806040015160001461195c576001600160a01b0382166000908152600f602052604081205460ff166118ed5781602001516118e890613875565b6118f3565b81602001515b601d546001600160a01b03888116600090815260276020908152604080832089851684529091529081902054602254915163a0d2710760e01b815294955061194e94929093169263a0d2710792610b8492879160040161374f565b6119589086613768565b9450505b505b508061196981613846565b915050611845565b50919050565b6017546001600160a01b031633146119a2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166119c95760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090610e9f908390613628565b6001600160a01b0381166000908152600d60205260409020606090610be490612689565b6060610adf6015612689565b600080611a5083611841565b6022546001600160a01b03851660009081526028602052604090205491925090611a7a9042613803565b1015610be45760008111611aa6576001600160a01b0383166000908152600a6020526040902054611ae0565b6001600160a01b0383166000908152600b6020908152604080832054600a90925290912054611ad6908390613794565b611ae09190613780565b9150611971565b6017546001600160a01b03163314611b12576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610e9f565b6060610adf6003612689565b6017546001600160a01b03163314611b7c576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1615611bb65760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f90610e9f908390613628565b6001600160a01b038381166000908152600160205260409020548491163314611c4557604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b038216611c6c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260136020908152604080832093871683529290522054611caf5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220544211611cf4576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff1615611d2e576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660008181526013602090815260408083209488168084529482528083208054908490559383526012825280832085845290915281205590611d7b908483612b04565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca792886284604051611dca91815260200190565b60405180910390a45050505050565b6112f26015826129f5565b6017546001600160a01b03163314611e0f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16611e48576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02590610e9f908390613628565b6017546001600160a01b03163314611ec3576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610e9f908390613628565b6017546001600160a01b03163314611f39576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610e9f565b6017546001600160a01b03163314611f99576040516354348f0360e01b815260040160405180910390fd5b611fa46025826129f5565b611fc15760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffa57600080fd5b505afa15801561200e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612032919061346e565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b815291169163696a437b916120869190600401613628565b60206040518083038186803b15801561209e57600080fd5b505afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d6919061357c565b6001600160a01b0382166000908152600f60205260409020805460ff191691151591909117905561210681610eaa565b6001600160a01b0382166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b161791909117815591810151600190920191909155517fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b90610e9f908390613628565b6017546001600160a01b031633146121be576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610e9f565b6001600160a01b0382166000908152600d6020526040812061221590836129f5565b9392505050565b6017546001600160a01b03163314612247576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811661226e5760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090610e9f908390613628565b6017546001600160a01b031633146122e4576040516354348f0360e01b815260040160405180910390fd5b6201518081101561230857604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610e9f565b6112f2602582612ad9565b61235061340f565b506001600160a01b03166000908152602a602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b6017546001600160a01b031633146123cf576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610e9f565b6017546001600160a01b0316331461242f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166124565760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90610e9f908390613628565b6017546001600160a01b031633146124cc576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1661250557604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e90610e9f908390613628565b6017546001600160a01b03163314612580576040516354348f0360e01b815260040160405180910390fd5b61258b601583612696565b6125a857604051636211d34960e01b815260040160405180910390fd5b6125b182612a0a565b6001600160a01b0382166000908152600a6020526040812080548392906125d9908490613768565b90915550506001600160a01b038216600081815260286020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d192612639928252602082015260400190565b60405180910390a25050565b6000602254826126559190613861565b610be49083613803565b6000602254831015611971576022546126788385613794565b6126829190613780565b9050610be4565b6060600061221583612b39565b6001600160a01b03811660009081526001830160205260408120541515612215565b6000610be482602254602354612b95565b600260005414156126ec5760405162461bcd60e51b815260040161132590613718565b600260009081556001600160a01b0384168152600d602052604090206127129083612696565b61272e576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602760209081526040808320938616835292905220548111156127745760405163435b562560e01b815260040160405180910390fd5b61277d83612c43565b600061278c610bd483856128d7565b6001600160a01b0385166000908152600b602052604090205490915015612842576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546127dd908390613794565b6127e79190613780565b6001600160a01b0385166000908152600a60205260408120805490919061280f908490613803565b90915550506001600160a01b0384166000908152600b60205260408120805483929061283c908490613803565b90915550505b6001600160a01b03808516600090815260276020908152604080832093871683529290529081208054849290612879908490613803565b90915550506001600160a01b038085166000908152602760209081526040808320938716835292905220546128cc576001600160a01b0384166000908152600d602052604090206128ca9084612ad9565b505b505060016000555050565b6001600160a01b0381166000908152602a602052604081206001015415610be4576001600160a01b0382166000908152600f602052604081205460ff16612949576001600160a01b0383166000908152602a602052604090205461294490600160381b900460060b613875565b61296d565b6001600160a01b0383166000908152602a6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b81529293506001600160a01b039091169163a0d27107916129a5918891869160040161374f565b60206040518083038186803b1580156129bd57600080fd5b505afa1580156129d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb91906135f3565b6000612215836001600160a01b038416612c68565b612a1381612cb7565b50612a1d81612e8d565b6001600160a01b0381166000908152600a6020908152604080832054600b90925290912054612a4c9190612f1b565b6001600160a01b039091166000908152600a6020526040902055565b6040516001600160a01b0380851660248301528316604482015260648101829052612ad39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f31565b50505050565b6000612215836001600160a01b038416613003565b6000610be4825490565b600061221583836130f6565b6040516001600160a01b038316602482015260448101829052612b3490849063a9059cbb60e01b90606401612a9c565b505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015612b8957602002820191906000526020600020905b815481526020019060010190808311612b75575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415612bcf5760008411612bc457600080fd5b508290049050612215565b808411612bdb57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b612c4c81613120565b6001600160a01b039091166000908152600b6020526040902055565b6000818152600183016020526040812054612caf57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610be4565b506000610be4565b6000612cc242612645565b6001600160a01b038316600090815260286020526040902054101561125657612cf2602254426109ef9190613803565b6001600160a01b03831660009081526028602052604090205411612d6857612d1982612c43565b6001600160a01b0382166000908152600b6020908152604080832054600a90925290912055612d4742612645565b6001600160a01b038316600090815260286020526040902055506001919050565b6022546001600160a01b038316600090815260286020526040902054612d8e9042613803565b10612dea57612d9c82612c43565b6001600160a01b0382166000908152600b6020908152604080832054600a83528184205560225460289092528220805491929091612ddb908490613768565b90915550600191506112569050565b612df342612645565b6001600160a01b0383166000908152602960205260409020541015611256576001600160a01b0382166000908152600b6020526040902054612e3483612c43565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120548291612e6491613794565b612e6e9190613780565b6001600160a01b0384166000908152600a602052604090205550919050565b6001600160a01b038116600090815260286020526040902054612ed290612eb49042613803565b6001600160a01b0383166000908152600b602052604090205461265f565b6001600160a01b0382166000908152600a602052604081208054909190612efa908490613768565b90915550506001600160a01b03166000908152602860205260409020429055565b6000818310612f2a5781612215565b5090919050565b6000612f86826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133049092919063ffffffff16565b805190915015612b345780806020019051810190612fa4919061357c565b612b345760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611325565b600081815260018301602052604081205480156130ec576000613027600183613803565b855490915060009061303b90600190613803565b90508181146130a057600086600001828154811061305b5761305b6138de565b906000526020600020015490508087600001848154811061307e5761307e6138de565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806130b1576130b16138c8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610be4565b6000915050610be4565b600082600001828154811061310d5761310d6138de565b9060005260206000200154905092915050565b600061312b42612645565b601e546001600160a01b03166000908152602a6020526040902060010154146131c257601e54613163906001600160a01b0316610eaa565b601e546001600160a01b03166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d602052604090206131e690612aee565b811015611971576001600160a01b0383166000908152600d6020526040812061320f9083612af8565b905061321c602582612696565b156132f15761322a42612645565b6001600160a01b0382166000908152602a6020526040902060010154146132b05761325481610eaa565b6001600160a01b0382166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b038085166000908152602760209081526040808320938516835292905220546132e490610bd490836128d7565b6132ee9084613768565b92505b50806132fc81613846565b9150506131c5565b6060610acb848460008585843b61335d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611325565b600080866001600160a01b03168587604051613379919061360c565b60006040518083038185875af1925050503d80600081146133b6576040519150601f19603f3d011682016040523d82523d6000602084013e6133bb565b606091505b50915091506133cb8282866133d6565b979650505050505050565b606083156133e5575081612215565b8251156133f55782518084602001fd5b8160405162461bcd60e51b815260040161132591906136e5565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461125657600080fd5b8051600681900b811461125657600080fd5b60006020828403121561346357600080fd5b8135612215816138f4565b60006020828403121561348057600080fd5b8151612215816138f4565b6000806040838503121561349e57600080fd5b82356134a9816138f4565b915060208301356134b9816138f4565b809150509250929050565b6000806000606084860312156134d957600080fd5b83356134e4816138f4565b925060208401356134f4816138f4565b91506040840135613504816138f4565b809150509250925092565b60008060006060848603121561352457600080fd5b833561352f816138f4565b9250602084013561353f816138f4565b929592945050506040919091013590565b6000806040838503121561356357600080fd5b823561356e816138f4565b946020939093013593505050565b60006020828403121561358e57600080fd5b6122158261342f565b6000806000606084860312156135ac57600080fd5b6135b58461343f565b92506135c36020850161343f565b91506135d16040850161342f565b90509250925092565b6000602082840312156135ec57600080fd5b5035919050565b60006020828403121561360557600080fd5b5051919050565b6000825161361e81846020870161381a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561368b57845163ffffffff1683529383019391830191600101613669565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136d95783516001600160a01b0316835292840192918401916001016136b4565b50909695505050505050565b602081526000825180602084015261370481604085016020870161381a565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b92835260069190910b6020830152604082015260600190565b6000821982111561377b5761377b61389c565b500190565b60008261378f5761378f6138b2565b500490565b60008160001904831182151516156137ae576137ae61389c565b500290565b60008160060b8360060b6000811281667fffffffffffff19018312811516156137de576137de61389c565b81667fffffffffffff0183138116156137f9576137f961389c565b5090039392505050565b6000828210156138155761381561389c565b500390565b60005b8381101561383557818101518382015260200161381d565b83811115612ad35750506000910152565b600060001982141561385a5761385a61389c565b5060010190565b600082613870576138706138b2565b500690565b60008160060b667fffffffffffff198114156138935761389361389c565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146112ff57600080fdfea264697066735822122052cd4071b868e9336807b54c1db8fd201ce3fd9aea78c61acba980ac545d7fd264736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103475760003560e01c80638bb6dfa8116101c0578063b87fcbff11610100578063b87fcbff14610849578063c7ae40d01461086c578063cacdf93d1461087f578063cb4be2bb14610892578063cb54694d146108a5578063cd22af1b146108b8578063ddca3f43146108e3578063deaf81d4146108ec578063e326ac43146108ff578063e485dc0e1461091f578063ebbb619414610932578063ec00cdfc14610945578063f0f346b914610958578063f11a1d1a1461096b578063f136a09d1461097e578063f39c38a01461099e578063fc253d2b146109b1578063fe75bc46146109ba57600080fd5b80638bb6dfa8146106c05780638cb22b76146106d35780638fe204dd146106f6578063951dc22c1461070957806398e90a0f146107115780639d5c33d81461073a578063a21458091461074d578063a39744b514610760578063a662031b1461078b578063a676f9ff1461079e578063a7d2e784146107be578063aac6aa9c146107c7578063ab033ea9146107da578063b0103b1a146107ed578063b239223314610810578063b600702a14610823578063b7e773401461083657600080fd5b806352a4de291161028b57806352a4de2914610578578063594a3a931461058b57806359a2255e1461059e5780635aa6e675146105b15780635ebe23f0146105c4578063633fb68f146105cd57806364bb43ee146105d657806368a9f19c146105e9578063694798e6146105fc57806369fe0e2d146106275780636cf262bc1461063a57806372da828a1461064d57806375a9f7ff14610660578063768b5d90146106735780637b40c9131461067c5780637c8fce231461068f578063878c723e1461069757600080fd5b8063034d4c611461034c57806307b435c2146103725780630c620bce1461039d5780630d6a1f87146103b25780631101eb41146103c557806315006b82146103da578063160e1e3114610405578063165e62e714610418578063168f92e7146104555780631b44555e146104805780631ef94b91146104a057806321040b01146104c0578063238efcbc146104eb578063274a8db4146104f3578063280b656c146105265780633e525d2014610539578063454c50311461054c575b600080fd5b61035f61035a366004613451565b6109cd565b6040519081526020015b60405180910390f35b61035f61038036600461348b565b601260209081526000928352604080842090915290825290205481565b6103a5610ad3565b6040516103699190613698565b61035f6103c0366004613550565b610ae4565b6103d86103d336600461350f565b610bea565b005b61035f6103e836600461348b565b601060209081526000928352604080842090915290825290205481565b6103d8610413366004613451565b610d44565b61042b610426366004613451565b610eaa565b604080518251600690810b825260208085015190910b908201529181015190820152606001610369565b61035f61046336600461348b565b600960209081526000928352604080842090915290825290205481565b61035f61048e366004613451565b60056020526000908152604090205481565b601b546104b3906001600160a01b031681565b6040516103699190613628565b61035f6104ce36600461348b565b601360209081526000928352604080842090915290825290205481565b6103d861125b565b610516610501366004613451565b601a6020526000908152604090205460ff1681565b6040519015158152602001610369565b6103d8610534366004613451565b6112e7565b6103d8610547366004613451565b6112f6565b61051661055a366004613451565b6001600160a01b03166000908152600f602052604090205460ff1690565b6103d861058636600461350f565b611302565b6103d861059936600461348b565b611550565b6103d86105ac366004613451565b6115f5565b6017546104b3906001600160a01b031681565b61035f601f5481565b61035f60215481565b6103d86105e4366004613451565b6116a7565b6103d86105f7366004613451565b611729565b61035f61060a36600461348b565b602760209081526000928352604080842090915290825290205481565b6103d86106353660046135da565b6117e1565b61035f610648366004613451565b611841565b6103d861065b366004613451565b611977565b6103a561066e366004613451565b611a14565b61035f60225481565b601e546104b3906001600160a01b031681565b6103a5611a38565b6104b36106a5366004613451565b6001602052600090815260409020546001600160a01b031681565b61035f6106ce366004613451565b611a44565b6105166106e1366004613451565b60146020526000908152604090205460ff1681565b6103d86107043660046135da565b611ae7565b6103a5611b45565b6104b361071f366004613451565b6002602052600090815260409020546001600160a01b031681565b6103d8610748366004613451565b611b51565b6103d861075b3660046134c4565b611c09565b61035f61076e36600461348b565b600860209081526000928352604080842090915290825290205481565b6103d8610799366004613451565b611dd9565b61035f6107ac366004613451565b60286020526000908152604090205481565b61035f60205481565b6103d86107d5366004613451565b611de4565b6103d86107e8366004613451565b611e98565b6105166107fb366004613451565b60076020526000908152604090205460ff1681565b6103d861081e3660046135da565b611f0e565b6103d8610831366004613451565b611f6e565b6103d86108443660046135da565b612193565b610516610857366004613451565b60196020526000908152604090205460ff1681565b601c546104b3906001600160a01b031681565b61051661088d36600461348b565b6121f3565b6103d86108a0366004613451565b61221c565b6103d86108b33660046135da565b6122b9565b61035f6108c636600461348b565b601160209081526000928352604080842090915290825290205481565b61035f60245481565b6103d86108fa366004613451565b61233d565b61035f61090d366004613451565b60066020526000908152604090205481565b61042b61092d366004613451565b612348565b6103d86109403660046135da565b6123a4565b6103d8610953366004613451565b612404565b6103d8610966366004613451565b6124a1565b601d546104b3906001600160a01b031681565b61035f61098c366004613451565b60296020526000908152604090205481565b6018546104b3906001600160a01b031681565b61035f60235481565b6103d86109c8366004613550565b612555565b6000806109d983611841565b60225490915042906109f4906109ef9083613803565b612645565b6001600160a01b0385166000908152602860205260409020541115610a98576022546001600160a01b038516600090815260286020526040902054610a399042613803565b10610a75576022546001600160a01b038516600090815260286020526040902054610a649190613768565b610a6e9082613803565b9050610aae565b6001600160a01b038416600090815260286020526040902054610a6e9082613803565b610aa142612645565b610aab9082613803565b90505b610ab8818361265f565b610ac185611a44565b610acb9190613768565b949350505050565b6060610adf6025612689565b905090565b6000610af1602584612696565b15610be4576000610b0184610eaa565b90508060400151600014610be2576001600160a01b0384166000908152600f602052604081205460ff16610b42578160200151610b3d90613875565b610b48565b81602001515b601d5460225460405163a0d2710760e01b8152929350610bd9926001600160a01b039092169163a0d2710791610b84918991879160040161374f565b60206040518083038186803b158015610b9c57600080fd5b505afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd491906135f3565b6126b8565b92505050610be4565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610c2657604051636efb4f4160e11b815260040160405180910390fd5b602054610c339042613768565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610c82908490613768565b90915550610c9390508484846126c9565b6001600160a01b038085166000908152602760209081526040808320938716835292905220548015801590610cd25750602154610cd082866128d7565b105b15610cf057604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610d3591815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610d6f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610d965760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610df7908490600401613628565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e47919061357c565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa90610e9f908390613628565b60405180910390a150565b610eb261340f565b610ebb42612645565b6001600160a01b0383166000908152602a60205260409020600101541415610f3157506001600160a01b03166000908152602a602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b600080610f45602254426109ef9190613803565b6001600160a01b0385166000908152602a60205260409020600101549091508114156110a957604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602a602052604090205490915060060b610fb242612645565b610fbc9042613803565b82600081518110610fcf57610fcf6138de565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261102b929190911690869060040161363c565b60606040518083038186803b15801561104357600080fd5b505afa158015611057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107b9190613597565b600692830b90920b808852919550611095918391506137b3565b600690810b900b6020860152506112329050565b6001600160a01b0384166000908152602a6020526040902060010154811115611232576040805160028082526060820183526000926020830190803683370190505090506110f642612645565b6111009042613803565b81600081518110611113576111136138de565b602002602001019063ffffffff16908163ffffffff168152505060225461113942612645565b6111439042613803565b61114d9190613768565b81600181518110611160576111606138de565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d91926111b8921690869060040161363c565b60606040518083038186803b1580156111d057600080fd5b505afa1580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190613597565b600692830b90920b80885291955091506112239082906137b3565b600690810b900b602086015250505b811561124b5761124142612645565b6040840152611253565b600060408401525b50505b919050565b6018546001600160a01b0316331461128657604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b6916112dd91613628565b60405180910390a1565b6112f26025826129f5565b5050565b6112ff81612a0a565b50565b6002600054141561132e5760405162461bcd60e51b815260040161132590613718565b60405180910390fd5b600260005561133e602583612696565b61135b5760405163e0b6aead60e01b815260040160405180910390fd5b611366601584612696565b61138357604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090206113a590836129f5565b506113af83612a0a565b6021546001600160a01b038085166000908152602760209081526040808320938716835292905220546113ed906113e7908490613768565b846128d7565b101561140c57604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260286020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a261148a6001600160a01b038316333084612a68565b6001600160a01b038084166000908152602760209081526040808320938616835292905290812080548392906114c1908490613768565b909155506114d49050610bd482846128d7565b6001600160a01b0384166000908152600b6020526040812080549091906114fc908490613768565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b6001600160a01b03828116600090815260016020526040902054839116331461158c57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b0381811660009081526002602052604090205482911633146116315760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b031633146116d2576040516354348f0360e01b815260040160405180910390fd5b6116dd602582612ad9565b6116fa57604051630a8d08b160e01b815260040160405180910390fd5b7f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5681604051610e9f9190613628565b6017546001600160a01b03163314611754576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff161561178e5760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b90610e9f908390613628565b6017546001600160a01b0316331461180c576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610e9f565b6000805b6001600160a01b0383166000908152600d6020526040902061186690612aee565b811015611971576001600160a01b0383166000908152600d6020526040812061188f9083612af8565b905061189c602582612696565b1561195e5760006118ac82610eaa565b9050806040015160001461195c576001600160a01b0382166000908152600f602052604081205460ff166118ed5781602001516118e890613875565b6118f3565b81602001515b601d546001600160a01b03888116600090815260276020908152604080832089851684529091529081902054602254915163a0d2710760e01b815294955061194e94929093169263a0d2710792610b8492879160040161374f565b6119589086613768565b9450505b505b508061196981613846565b915050611845565b50919050565b6017546001600160a01b031633146119a2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166119c95760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090610e9f908390613628565b6001600160a01b0381166000908152600d60205260409020606090610be490612689565b6060610adf6015612689565b600080611a5083611841565b6022546001600160a01b03851660009081526028602052604090205491925090611a7a9042613803565b1015610be45760008111611aa6576001600160a01b0383166000908152600a6020526040902054611ae0565b6001600160a01b0383166000908152600b6020908152604080832054600a90925290912054611ad6908390613794565b611ae09190613780565b9150611971565b6017546001600160a01b03163314611b12576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610e9f565b6060610adf6003612689565b6017546001600160a01b03163314611b7c576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1615611bb65760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f90610e9f908390613628565b6001600160a01b038381166000908152600160205260409020548491163314611c4557604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b038216611c6c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260136020908152604080832093871683529290522054611caf5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220544211611cf4576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff1615611d2e576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660008181526013602090815260408083209488168084529482528083208054908490559383526012825280832085845290915281205590611d7b908483612b04565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca792886284604051611dca91815260200190565b60405180910390a45050505050565b6112f26015826129f5565b6017546001600160a01b03163314611e0f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16611e48576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02590610e9f908390613628565b6017546001600160a01b03163314611ec3576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610e9f908390613628565b6017546001600160a01b03163314611f39576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610e9f565b6017546001600160a01b03163314611f99576040516354348f0360e01b815260040160405180910390fd5b611fa46025826129f5565b611fc15760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffa57600080fd5b505afa15801561200e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612032919061346e565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b815291169163696a437b916120869190600401613628565b60206040518083038186803b15801561209e57600080fd5b505afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d6919061357c565b6001600160a01b0382166000908152600f60205260409020805460ff191691151591909117905561210681610eaa565b6001600160a01b0382166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b161791909117815591810151600190920191909155517fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b90610e9f908390613628565b6017546001600160a01b031633146121be576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610e9f565b6001600160a01b0382166000908152600d6020526040812061221590836129f5565b9392505050565b6017546001600160a01b03163314612247576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811661226e5760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090610e9f908390613628565b6017546001600160a01b031633146122e4576040516354348f0360e01b815260040160405180910390fd5b6201518081101561230857604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610e9f565b6112f2602582612ad9565b61235061340f565b506001600160a01b03166000908152602a602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b6017546001600160a01b031633146123cf576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610e9f565b6017546001600160a01b0316331461242f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166124565760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90610e9f908390613628565b6017546001600160a01b031633146124cc576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1661250557604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e90610e9f908390613628565b6017546001600160a01b03163314612580576040516354348f0360e01b815260040160405180910390fd5b61258b601583612696565b6125a857604051636211d34960e01b815260040160405180910390fd5b6125b182612a0a565b6001600160a01b0382166000908152600a6020526040812080548392906125d9908490613768565b90915550506001600160a01b038216600081815260286020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d192612639928252602082015260400190565b60405180910390a25050565b6000602254826126559190613861565b610be49083613803565b6000602254831015611971576022546126788385613794565b6126829190613780565b9050610be4565b6060600061221583612b39565b6001600160a01b03811660009081526001830160205260408120541515612215565b6000610be482602254602354612b95565b600260005414156126ec5760405162461bcd60e51b815260040161132590613718565b600260009081556001600160a01b0384168152600d602052604090206127129083612696565b61272e576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602760209081526040808320938616835292905220548111156127745760405163435b562560e01b815260040160405180910390fd5b61277d83612c43565b600061278c610bd483856128d7565b6001600160a01b0385166000908152600b602052604090205490915015612842576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546127dd908390613794565b6127e79190613780565b6001600160a01b0385166000908152600a60205260408120805490919061280f908490613803565b90915550506001600160a01b0384166000908152600b60205260408120805483929061283c908490613803565b90915550505b6001600160a01b03808516600090815260276020908152604080832093871683529290529081208054849290612879908490613803565b90915550506001600160a01b038085166000908152602760209081526040808320938716835292905220546128cc576001600160a01b0384166000908152600d602052604090206128ca9084612ad9565b505b505060016000555050565b6001600160a01b0381166000908152602a602052604081206001015415610be4576001600160a01b0382166000908152600f602052604081205460ff16612949576001600160a01b0383166000908152602a602052604090205461294490600160381b900460060b613875565b61296d565b6001600160a01b0383166000908152602a6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b81529293506001600160a01b039091169163a0d27107916129a5918891869160040161374f565b60206040518083038186803b1580156129bd57600080fd5b505afa1580156129d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb91906135f3565b6000612215836001600160a01b038416612c68565b612a1381612cb7565b50612a1d81612e8d565b6001600160a01b0381166000908152600a6020908152604080832054600b90925290912054612a4c9190612f1b565b6001600160a01b039091166000908152600a6020526040902055565b6040516001600160a01b0380851660248301528316604482015260648101829052612ad39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f31565b50505050565b6000612215836001600160a01b038416613003565b6000610be4825490565b600061221583836130f6565b6040516001600160a01b038316602482015260448101829052612b3490849063a9059cbb60e01b90606401612a9c565b505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015612b8957602002820191906000526020600020905b815481526020019060010190808311612b75575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415612bcf5760008411612bc457600080fd5b508290049050612215565b808411612bdb57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b612c4c81613120565b6001600160a01b039091166000908152600b6020526040902055565b6000818152600183016020526040812054612caf57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610be4565b506000610be4565b6000612cc242612645565b6001600160a01b038316600090815260286020526040902054101561125657612cf2602254426109ef9190613803565b6001600160a01b03831660009081526028602052604090205411612d6857612d1982612c43565b6001600160a01b0382166000908152600b6020908152604080832054600a90925290912055612d4742612645565b6001600160a01b038316600090815260286020526040902055506001919050565b6022546001600160a01b038316600090815260286020526040902054612d8e9042613803565b10612dea57612d9c82612c43565b6001600160a01b0382166000908152600b6020908152604080832054600a83528184205560225460289092528220805491929091612ddb908490613768565b90915550600191506112569050565b612df342612645565b6001600160a01b0383166000908152602960205260409020541015611256576001600160a01b0382166000908152600b6020526040902054612e3483612c43565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120548291612e6491613794565b612e6e9190613780565b6001600160a01b0384166000908152600a602052604090205550919050565b6001600160a01b038116600090815260286020526040902054612ed290612eb49042613803565b6001600160a01b0383166000908152600b602052604090205461265f565b6001600160a01b0382166000908152600a602052604081208054909190612efa908490613768565b90915550506001600160a01b03166000908152602860205260409020429055565b6000818310612f2a5781612215565b5090919050565b6000612f86826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133049092919063ffffffff16565b805190915015612b345780806020019051810190612fa4919061357c565b612b345760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611325565b600081815260018301602052604081205480156130ec576000613027600183613803565b855490915060009061303b90600190613803565b90508181146130a057600086600001828154811061305b5761305b6138de565b906000526020600020015490508087600001848154811061307e5761307e6138de565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806130b1576130b16138c8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610be4565b6000915050610be4565b600082600001828154811061310d5761310d6138de565b9060005260206000200154905092915050565b600061312b42612645565b601e546001600160a01b03166000908152602a6020526040902060010154146131c257601e54613163906001600160a01b0316610eaa565b601e546001600160a01b03166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d602052604090206131e690612aee565b811015611971576001600160a01b0383166000908152600d6020526040812061320f9083612af8565b905061321c602582612696565b156132f15761322a42612645565b6001600160a01b0382166000908152602a6020526040902060010154146132b05761325481610eaa565b6001600160a01b0382166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b038085166000908152602760209081526040808320938516835292905220546132e490610bd490836128d7565b6132ee9084613768565b92505b50806132fc81613846565b9150506131c5565b6060610acb848460008585843b61335d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611325565b600080866001600160a01b03168587604051613379919061360c565b60006040518083038185875af1925050503d80600081146133b6576040519150601f19603f3d011682016040523d82523d6000602084013e6133bb565b606091505b50915091506133cb8282866133d6565b979650505050505050565b606083156133e5575081612215565b8251156133f55782518084602001fd5b8160405162461bcd60e51b815260040161132591906136e5565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461125657600080fd5b8051600681900b811461125657600080fd5b60006020828403121561346357600080fd5b8135612215816138f4565b60006020828403121561348057600080fd5b8151612215816138f4565b6000806040838503121561349e57600080fd5b82356134a9816138f4565b915060208301356134b9816138f4565b809150509250929050565b6000806000606084860312156134d957600080fd5b83356134e4816138f4565b925060208401356134f4816138f4565b91506040840135613504816138f4565b809150509250925092565b60008060006060848603121561352457600080fd5b833561352f816138f4565b9250602084013561353f816138f4565b929592945050506040919091013590565b6000806040838503121561356357600080fd5b823561356e816138f4565b946020939093013593505050565b60006020828403121561358e57600080fd5b6122158261342f565b6000806000606084860312156135ac57600080fd5b6135b58461343f565b92506135c36020850161343f565b91506135d16040850161342f565b90509250925092565b6000602082840312156135ec57600080fd5b5035919050565b60006020828403121561360557600080fd5b5051919050565b6000825161361e81846020870161381a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561368b57845163ffffffff1683529383019391830191600101613669565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136d95783516001600160a01b0316835292840192918401916001016136b4565b50909695505050505050565b602081526000825180602084015261370481604085016020870161381a565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b92835260069190910b6020830152604082015260600190565b6000821982111561377b5761377b61389c565b500190565b60008261378f5761378f6138b2565b500490565b60008160001904831182151516156137ae576137ae61389c565b500290565b60008160060b8360060b6000811281667fffffffffffff19018312811516156137de576137de61389c565b81667fffffffffffff0183138116156137f9576137f961389c565b5090039392505050565b6000828210156138155761381561389c565b500390565b60005b8381101561383557818101518382015260200161381d565b83811115612ad35750506000910152565b600060001982141561385a5761385a61389c565b5060010190565b600082613870576138706138b2565b500690565b60008160060b667fffffffffffff198114156138935761389361389c565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146112ff57600080fdfea264697066735822122052cd4071b868e9336807b54c1db8fd201ce3fd9aea78c61acba980ac545d7fd264736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
