{
  "_format": "hh-sol-artifact-1",
  "contractName": "PollingReject",
  "sourceName": "contracts/governance/implementation/PollingReject.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_proposalSettings",
          "type": "uint256[]"
        },
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_priceSubmitter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_addressUpdater",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_proposers",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldAbsoluteThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAbsoluteThreshold",
          "type": "uint256"
        }
      ],
      "name": "AbsoluteThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldExecutionDelay",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newExecutionDelay",
          "type": "uint256"
        }
      ],
      "name": "ExecutionDelaySet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldExecutionPeriod",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newExecutionPeriod",
          "type": "uint256"
        }
      ],
      "name": "ExecutionPeriodSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAfterTimestamp",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "encodedCall",
          "type": "bytes"
        }
      ],
      "name": "GovernanceCallTimelocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "initialGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceInitialised",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "governanceSettings",
          "type": "address"
        }
      ],
      "name": "GovernedProductionModeEntered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "bytes[]",
          "name": "calldatas",
          "type": "bytes[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "endTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "votePowerBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "wrappingThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "absoluteThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "relativeThreshold",
          "type": "uint256"
        }
      ],
      "name": "ProposalCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldProposalThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newProposalThreshold",
          "type": "uint256"
        }
      ],
      "name": "ProposalThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "addedProposers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "removedProposers",
          "type": "address[]"
        }
      ],
      "name": "ProposersChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldRelativeThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newRelativeThreshold",
          "type": "uint256"
        }
      ],
      "name": "RelativeThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TimelockedGovernanceCallCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "TimelockedGovernanceCallExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "support",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weight",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "VoteCast",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldVotePowerLifeTimeDays",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newVotePowerLifeTimeDays",
          "type": "uint256"
        }
      ],
      "name": "VotePowerLifeTimeDaysSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldVotingDelay",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newVotingDelay",
          "type": "uint256"
        }
      ],
      "name": "VotingDelaySet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldVotingPeriod",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newVotingPeriod",
          "type": "uint256"
        }
      ],
      "name": "VotingPeriodSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldVpBlockPeriodSeconds",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newVpBlockPeriodSeconds",
          "type": "uint256"
        }
      ],
      "name": "VpBlockPeriodSecondsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldWrappingThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newWrappingThreshold",
          "type": "uint256"
        }
      ],
      "name": "WrappingThresholdSet",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BALLOT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "absoluteThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_selector",
          "type": "bytes4"
        }
      ],
      "name": "cancelGovernanceCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_support",
          "type": "uint8"
        }
      ],
      "name": "castVote",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_support",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "_v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "castVoteBySig",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_support",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "_reason",
          "type": "string"
        }
      ],
      "name": "castVoteWithReason",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "chainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_proposersToAdd",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "_proposersToRemove",
          "type": "address[]"
        }
      ],
      "name": "changeProposers",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "_calldatas",
          "type": "bytes[]"
        },
        {
          "internalType": "bytes32",
          "name": "_descriptionHash",
          "type": "bytes32"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_description",
          "type": "string"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_selector",
          "type": "bytes4"
        }
      ],
      "name": "executeGovernanceCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "executionDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "executionPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ftsoManager",
      "outputs": [
        {
          "internalType": "contract IIFtsoManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAddressUpdater",
      "outputs": [
        {
          "internalType": "address",
          "name": "_addressUpdater",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "_calldatas",
          "type": "bytes[]"
        },
        {
          "internalType": "bytes32",
          "name": "_descriptionHash",
          "type": "bytes32"
        }
      ],
      "name": "getProposalId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        }
      ],
      "name": "getProposalInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_votePowerBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_voteStartTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_voteEndTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_execStartTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_execEndTime",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_executed",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        }
      ],
      "name": "getProposalVP",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_totalVP",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_for",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_against",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_abstain",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVotePowerLifeTimeDays",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVpBlockPeriodSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governanceSettings",
      "outputs": [
        {
          "internalType": "contract IGovernanceSettings",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "hasVoted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_initialGovernance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isProposer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "priceSubmitter",
      "outputs": [
        {
          "internalType": "contract IPriceSubmitter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "productionMode",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposalThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "_calldatas",
          "type": "bytes[]"
        },
        {
          "internalType": "string",
          "name": "_description",
          "type": "string"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_description",
          "type": "string"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "quorum",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "relativeThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_absoluteThresholdBIPS",
          "type": "uint256"
        }
      ],
      "name": "setAbsoluteThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_executionDelaySeconds",
          "type": "uint256"
        }
      ],
      "name": "setExecutionDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_executionPeriodSeconds",
          "type": "uint256"
        }
      ],
      "name": "setExecutionPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalThresholdBIPS",
          "type": "uint256"
        }
      ],
      "name": "setProposalThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_relativeThresholdBIPS",
          "type": "uint256"
        }
      ],
      "name": "setRelativeThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_votePowerLifeTimeDays",
          "type": "uint256"
        }
      ],
      "name": "setVotePowerLifeTimeDays",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_votingDelaySeconds",
          "type": "uint256"
        }
      ],
      "name": "setVotingDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_votingPeriodSeconds",
          "type": "uint256"
        }
      ],
      "name": "setVotingPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_vpBlockPeriodSeconds",
          "type": "uint256"
        }
      ],
      "name": "setVpBlockPeriodSeconds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_wrappingThresholdBIPS",
          "type": "uint256"
        }
      ],
      "name": "setWrappingThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        }
      ],
      "name": "state",
      "outputs": [
        {
          "internalType": "enum IGovernor.ProposalState",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "supply",
      "outputs": [
        {
          "internalType": "contract IISupply",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "switchToProductionMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "name": "timelockedCalls",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "allowedAfterTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "encodedCall",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_contractNameHashes",
          "type": "bytes32[]"
        },
        {
          "internalType": "address[]",
          "name": "_contractAddresses",
          "type": "address[]"
        }
      ],
      "name": "updateContractAddresses",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votePower",
      "outputs": [
        {
          "internalType": "contract IIGovernanceVotePower",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "wrappingThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6101606040523480156200001257600080fd5b506040516200513438038062005134833981016040819052620000359162000914565b80858585858083856000815181106200004a57fe5b6020026020010151866001815181106200006057fe5b6020026020010151876002815181106200007657fe5b6020026020010151886003815181106200008c57fe5b602002602001015189600481518110620000a257fe5b60200260200101518a600581518110620000b857fe5b60200260200101518b600681518110620000ce57fe5b60200260200101518c600781518110620000e457fe5b60200260200101518d600881518110620000fa57fe5b60200260200101518e6009815181106200011057fe5b60200260200101518a806200012a620002ea60201b60201c565b6200013462000311565b815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200017d6200032c565b60a0526200018d81848462000330565b60805261010052505050506001600160a01b03811615620001b357620001b38162000394565b506001600160a01b03811662000203576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b506200020f8a62000457565b6200021a8962000499565b6200022588620004db565b620002308762000549565b6200023b866200058b565b6200024685620005f0565b620002518462000632565b6200025c8362000674565b6200026782620006b6565b6200027281620006f8565b5050466101205250620002909750889650506200075f945050505050565b505060601b6001600160601b0319166101405250620002de9050816000604051908082528060200260200182016040528015620002d7578160200160208202803683370190505b5062000783565b50505050505062000b7d565b60408051808201909152600d81526c141bdb1b1a5b99d4995a9958dd609a1b602082015290565b6040805180820190915260018152603160f81b602082015290565b4690565b60008383836200033f6200032c565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b600054600160a01b900460ff1615620003f4576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b7fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461600254826040516200048c92919062000b2d565b60405180910390a1600255565b7fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9360045482604051620004ce92919062000b2d565b60405180910390a1600455565b60008111620005075760405162461bcd60e51b8152600401620004fe9062000af6565b60405180910390fd5b7f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828600554826040516200053c92919062000b2d565b60405180910390a1600555565b7f2056b1a79eedb94135a24bdb0827c0ac4823d13d69f5cf7923ee5751c53ff645600654826040516200057e92919062000b2d565b60405180910390a1600655565b60008111620005ae5760405162461bcd60e51b8152600401620004fe9062000abf565b7fdcd7d6f89a192742519ec6798e6340b4e43748282ac27856e823a2579b50fe4360075482604051620005e392919062000b2d565b60405180910390a1600755565b7fb0696527788a80f2825d3fd8b9e9c017c6b3d7f5eb5a54eaa86deaa286d10c38600854826040516200062592919062000b2d565b60405180910390a1600855565b7fa679132e53a14a0f5674480a8def108a2856034a2338cb9a064e7e2f8badf29e600954826040516200066792919062000b2d565b60405180910390a1600955565b7fd0f8dc4a59c4d23c896412e4f16b39936e8fd83972acf00d91af64bd3511e51a600a5482604051620006a992919062000b2d565b60405180910390a1600a55565b7f631d262a54e429270a60189077cb4562e4131dc775629e446fd5a0fa684adb15600b5482604051620006eb92919062000b2d565b60405180910390a1600b55565b6113888110156200071d5760405162461bcd60e51b8152600401620004fe9062000a88565b7f4d66ba28c0bc0eb2229d86d7f91e743c971140fcda7f8783e1cbaa0fdfe65465600c54826040516200075292919062000b2d565b60405180910390a1600c55565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b7f4b8f4e528b6d075c6c9d025e58db64e36b460c1516341b1ab7339b4c6d5bcb8a8282604051620007b692919062000a56565b60405180910390a160005b82518110156200081957600160136000858481518110620007de57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101620007c1565b5060005b815181101562000875576000601360008484815181106200083a57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016200081d565b505050565b80516001600160a01b03811681146200089257600080fd5b919050565b600082601f830112620008a8578081fd5b81516020620008c1620008bb8362000b5f565b62000b3b565b8281528181019085830183850287018401881015620008de578586fd5b855b858110156200090757620008f4826200087a565b84529284019290840190600101620008e0565b5090979650505050505050565b600080600080600060a086880312156200092c578081fd5b85516001600160401b038082111562000943578283fd5b818801915088601f83011262000957578283fd5b815160206200096a620008bb8362000b5f565b82815281810190858301838502870184018e101562000987578788fd5b8796505b84871015620009ab5780518352600196909601959183019183016200098b565b509950620009bd90508a82016200087a565b97505050620009cf604089016200087a565b9450620009df606089016200087a565b93506080880151915080821115620009f5578283fd5b5062000a048882890162000897565b9150509295509295909350565b6000815180845260208085019450808401835b8381101562000a4b5781516001600160a01b03168752958201959082019060010162000a24565b509495945050505050565b60006040825262000a6b604083018562000a11565b828103602084015262000a7f818562000a11565b95945050505050565b6020808252601e908201527f696e76616c6964205f72656c61746976655468726573686f6c64424950530000604082015260600190565b60208082526018908201527f657865637574696f6e20706572696f6420746f6f206c6f770000000000000000604082015260600190565b60208082526015908201527f766f74696e6720706572696f6420746f6f206c6f770000000000000000000000604082015260600190565b918252602082015260400190565b6040518181016001600160401b038111828210171562000b5757fe5b604052919050565b60006001600160401b0382111562000b7357fe5b5060209081020190565b60805160a05160c05160e05161010051610120516101405160601c61455662000bde600039806117285280612e3e5250806111ce52806121db525080612a0a525080612a4c525080612a2b5250806129b15250806129e152506145566000f3fe6080604052600436106102ff5760003560e01c80639d6a890f11610190578063dd3fa0f9116100dc578063ece40cc111610095578063f5a983831161006f578063f5a98383146108a1578063f8ce560a146108b6578063f9117862146108d6578063f937d6ad146108eb576102ff565b8063ece40cc114610857578063f17c9d7614610877578063f2f3a74c1461088c576102ff565b8063dd3fa0f9146107b8578063deaaa7cc146107cd578063e17f212e146107e2578063e4917d9f146107f7578063ea0217cf14610817578063eb9019d414610837576102ff565b8063b4df57fe11610149578063bc903cb811610123578063bc903cb814610730578063bd590d7e14610763578063d11d0d5814610783578063d99e4b7614610798576102ff565b8063b4df57fe146106cb578063b58131b0146106eb578063ba1b458614610700576102ff565b80639d6a890f146106165780639e22422014610636578063a7a6224a1461064b578063a8f8a6681461066b578063aa98df391461068b578063b00c0b76146106ab576102ff565b806360e775321161024f57806370b0f660116102085780637b3c71d3116101e25780637b3c71d3146105ac5780637d5e81e2146105cc5780638b257989146105ec5780639a8a059214610601576102ff565b806370b0f6601461053e57806374e6310e1461055e57806374ec29a01461058c576102ff565b806360e775321461049457806361bbfcad146104b457806362354e03146104d457806367fc4029146104e95780636a714a9f146105095780636df5f8ca1461051e576102ff565b80633bccf4fd116102bc5780635267a15d116102965780635267a15d1461042a578063567813881461043f5780635aa6e6751461045f5780635ff2707914610474576102ff565b80633bccf4fd146103b05780633e4f49e6146103d057806343859632146103fd576102ff565b806302a251a314610304578063047fc9aa1461032f57806311a7aaaa1461035157806312d0e9fe146103665780632656227d146103885780633932abb11461039b575b600080fd5b34801561031057600080fd5b50610319610900565b6040516103269190613e91565b60405180910390f35b34801561033b57600080fd5b50610344610907565b6040516103269190613df7565b34801561035d57600080fd5b50610344610916565b34801561037257600080fd5b50610386610381366004613b91565b610925565b005b6103196103963660046138f1565b610970565b3480156103a757600080fd5b50610319610987565b3480156103bc57600080fd5b506103196103cb366004613c9d565b61098d565b3480156103dc57600080fd5b506103f06103eb366004613b91565b610a53565b6040516103269190613eb3565b34801561040957600080fd5b5061041d610418366004613bc1565b610a74565b6040516103269190613e86565b34801561043657600080fd5b50610344610aa4565b34801561044b57600080fd5b5061031961045a366004613bf0565b610ac9565b34801561046b57600080fd5b50610344610aed565b34801561048057600080fd5b5061038661048f366004613ac5565b610b82565b3480156104a057600080fd5b506103866104af366004613b91565b610ed7565b3480156104c057600080fd5b506103866104cf366004613b91565b610f0f565b3480156104e057600080fd5b50610344610f47565b3480156104f557600080fd5b50610386610504366004613ac5565b610f52565b34801561051557600080fd5b5061031961103a565b34801561052a57600080fd5b50610386610539366004613b91565b611040565b34801561054a57600080fd5b50610386610559366004613b91565b611078565b34801561056a57600080fd5b5061057e610579366004613ac5565b6110b0565b6040516103269291906143c4565b34801561059857600080fd5b5061041d6105a7366004613849565b611156565b3480156105b857600080fd5b506103196105c7366004613c1b565b611174565b3480156105d857600080fd5b506103196105e736600461397d565b6111b8565b3480156105f857600080fd5b506103196111c6565b34801561060d57600080fd5b506103196111cc565b34801561062257600080fd5b50610386610631366004613849565b6111f0565b34801561064257600080fd5b506103196112a9565b34801561065757600080fd5b50610386610666366004613890565b6112af565b34801561067757600080fd5b506103196106863660046138f1565b6112fc565b34801561069757600080fd5b506103196106a6366004613b09565b61130a565b3480156106b757600080fd5b506103866106c6366004613a25565b611351565b3480156106d757600080fd5b506103866106e6366004613b91565b6113f8565b3480156106f757600080fd5b50610319611430565b34801561070c57600080fd5b5061072061071b366004613b91565b611436565b60405161032694939291906143eb565b34801561073c57600080fd5b5061075061074b366004613b91565b611467565b6040516103269796959493929190613e24565b34801561076f57600080fd5b5061031961077e366004613b09565b6114b6565b34801561078f57600080fd5b50610319611505565b3480156107a457600080fd5b506103866107b3366004613b91565b61150b565b3480156107c457600080fd5b50610319611543565b3480156107d957600080fd5b50610319611549565b3480156107ee57600080fd5b5061041d61156d565b34801561080357600080fd5b50610386610812366004613b91565b61157d565b34801561082357600080fd5b50610386610832366004613b91565b6115b5565b34801561084357600080fd5b50610319610852366004613865565b6115ed565b34801561086357600080fd5b50610386610872366004613b91565b6115f9565b34801561088357600080fd5b50610344611631565b34801561089857600080fd5b50610319611640565b3480156108ad57600080fd5b50610386611646565b3480156108c257600080fd5b506103196108d1366004613b91565b611700565b3480156108e257600080fd5b50610319611720565b3480156108f757600080fd5b50610344611726565b6005545b90565b6012546001600160a01b031681565b6011546001600160a01b031681565b600054600160b01b900460ff16806109475750600054600160a81b900460ff16155b156109625761095461174a565b61095d81611781565b61096d565b61096d6000366117c1565b50565b600061097e85858585611944565b95945050505050565b60045490565b6000806109eb6109e67f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f89896040516020016109cb93929190613e9a565b60405160208183030381529060405280519060200120611a4d565b611a99565b905060006109fb82878787611aea565b90506001600160a01b038116610a2c5760405162461bcd60e51b8152600401610a23906140b5565b60405180910390fd5b610a4788828960405180602001604052806000815250611c5f565b98975050505050505050565b6000818152600f60205260408120610a6c908390611d10565b90505b919050565b60008281526010602090815260408083206001600160a01b038516845260030190915290205460ff165b92915050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b6000610ae683338460405180602001604052806000815250611c5f565b9392505050565b60008054600160a81b900460ff16610b10576000546001600160a01b0316610b7d565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5057600080fd5b505afa158015610b64573d6000803e3d6000fd5b505050506040513d6020811015610b7a57600080fd5b50515b905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b158015610bc657600080fd5b505afa158015610bda573d6000803e3d6000fd5b505050506040513d6020811015610bf057600080fd5b5051610c33576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054610c9f576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015610cf5576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d8f5780601f10610d6457610100808354040283529160200191610d8f565b820191906000526020600020905b815481529060010190602001808311610d7257829003601f168201915b5050506001600160e01b0319861660009081526001602081905260408220828155949550909250610dc391508301826135a9565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b60208310610e0b5780518252601f199092019160209182019101610dec565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e6d576040519150601f19603f3d011682016040523d82523d6000602084013e610e72565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a1610ed181611dd2565b50505050565b600054600160b01b900460ff1680610ef95750600054600160a81b900460ff16155b1561096257610f0661174a565b61095d81611def565b600054600160b01b900460ff1680610f315750600054600160a81b900460ff16155b1561096257610f3e61174a565b61095d81611e2f565b60076001609c1b0181565b610f5a611e91565b6001600160e01b03198116600090815260016020526040902054610fc5576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190611035908301826135a9565b505050565b60095490565b600054600160b01b900460ff16806110625750600054600160a81b900460ff16155b156109625761106f61174a565b61095d81611ef0565b600054600160b01b900460ff168061109a5750600054600160a81b900460ff16155b15610962576110a761174a565b61095d81611f30565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f8101859004850286018501909652858552909491939290919083018282801561114c5780601f106111215761010080835404028352916020019161114c565b820191906000526020600020905b81548152906001019060200180831161112f57829003601f168201915b5050505050905082565b6001600160a01b031660009081526013602052604090205460ff1690565b600061097e85338686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c5f92505050565b600061097e85858585611f70565b60065490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160a01b900460ff1615611246576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b600c5490565b600054600160b01b900460ff16806112d15750600054600160a81b900460ff16155b156112ed576112de61174a565b6112e882826120ed565b6112f8565b6112f86000366117c1565b5050565b600061097e858585856121d7565b60408051600080825260208201818152828401828152606084019094529092610a6c9291908461134a565b60608152602001906001900390816113355790505b5085611f70565b611359610aa4565b6001600160a01b0316336001600160a01b0316146113b5576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b6113ee6113e983836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250612235565b612359565b6112f8828261237d565b600054600160b01b900460ff168061141a5750600054600160a81b900460ff16155b156109625761142761174a565b61095d81612463565b60025490565b6000908152601060209081526040808320600f90925290912060090154600282015460018301549254919390929190565b6000908152600f602052604090208054600182015460028301546003840154600485015460058601546006909601546001600160a01b0390951696939592949193909291610100900460ff1690565b60408051600080825260208201818152828401828152606084019094529092610a6c929190846114f6565b60608152602001906001900390816114e15790505b50611500866124a3565b611944565b60075490565b600054600160b01b900460ff168061152d5750600054600160a81b900460ff16155b156109625761153a61174a565b61095d816124ae565b600a5490565b7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b600054600160a81b900460ff1681565b600054600160b01b900460ff168061159f5750600054600160a81b900460ff16155b15610962576115ac61174a565b61095d8161250e565b600054600160b01b900460ff16806115d75750600054600160a81b900460ff16155b15610962576115e461174a565b61095d8161254e565b6000610ae683836125ae565b600054600160b01b900460ff168061161b5750600054600160a81b900460ff16155b156109625761162861174a565b61095d81612631565b600d546001600160a01b031681565b600b5490565b61164e611e91565b600054600160a81b900460ff16156116ad576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b6000610a6c61170e83612671565b612710611719611640565b9190612769565b60085490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160b01b900460ff16156117775733301461176557fe5b6000805460ff60b01b1916905561177f565b61177f611e91565b565b7fa679132e53a14a0f5674480a8def108a2856034a2338cb9a064e7e2f8badf29e600954826040516117b49291906143dd565b60405180910390a1600955565b6117c9611e91565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d602081101561183b57600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b031986168152600160208181526040909220845181558483015180519194506118bf939285019201906135ed565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b6000611952858585856121d7565b6000818152600f60205260409020600681015491925090610100900460ff161561198e5760405162461bcd60e51b8152600401610a2390614286565b80546001600160a01b031633146119b75760405162461bcd60e51b8152600401610a2390614021565b60006119c38383611d10565b905060048160068111156119d357fe5b146119f05760405162461bcd60e51b8152600401610a239061424f565b60068201805461ff001916610100179055611a0c878787612875565b7f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f83604051611a3b9190613e91565b60405180910390a15050949350505050565b6000611a576129ad565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611b4b5760405162461bcd60e51b81526004018080602001828103825260228152602001806144bc6022913960400191505060405180910390fd5b8360ff16601b1480611b6057508360ff16601c145b611b9b5760405162461bcd60e51b81526004018080602001828103825260228152602001806144de6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611bf7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661097e576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b6000848152600f602052604081206001611c798783611d10565b6006811115611c8457fe5b14611ca15760405162461bcd60e51b8152600401610a23906141c0565b6000611cb18683600101546125ae565b9050611cbf87878784612a77565b856001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda488878488604051611cfe9493929190614406565b60405180910390a29695505050505050565b6006810154600090610100900460ff1615611d2d57506006610a9e565b6002820154611d4e5760405162461bcd60e51b8152600401610a23906140e5565b4282600201541115611d6257506000610a9e565b4282600301541115611d7657506001610a9e565b611d808383612b4a565b15611dc957600682015460ff16611d9957506004610a9e565b4282600401541115611dad57506003610a9e565b4282600501541115611dc157506004610a9e565b506005610a9e565b50600292915050565b3d604051818101604052816000823e8215611deb578181f35b8181fd5b7fb0696527788a80f2825d3fd8b9e9c017c6b3d7f5eb5a54eaa86deaa286d10c3860085482604051611e229291906143dd565b60405180910390a1600855565b611388811015611e515760405162461bcd60e51b8152600401610a2390613f2e565b7f4d66ba28c0bc0eb2229d86d7f91e743c971140fcda7f8783e1cbaa0fdfe65465600c5482604051611e849291906143dd565b60405180910390a1600c55565b611e99610aed565b6001600160a01b0316336001600160a01b03161461177f576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b7f631d262a54e429270a60189077cb4562e4131dc775629e446fd5a0fa684adb15600b5482604051611f239291906143dd565b60405180910390a1600b55565b7fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9360045482604051611f639291906143dd565b60405180910390a1600455565b6000806000611f7d612bbf565b915091506000611f8c83612671565b905061201b611f99611543565b60125460405163d9330e6360e01b8152612710916001600160a01b03169063d9330e6390611fcb908990600401613e91565b60206040518083038186803b158015611fe357600080fd5b505afa158015611ff7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190613ba9565b81101561203a5760405162461bcd60e51b8152600401610a2390613ec7565b6120443384612f28565b6120605760405162461bcd60e51b8152600401610a2390613f9c565b600080612074338b8b8b8b8a8a308b612f44565b915091507ff2d67c3691b9395ea4ec30c23df6c26b69de83978dc869dc454316649b3b397682338c8c8c866002015487600301548e89600101546120b6611543565b8b600701548c600801546040516120d89c9b9a999897969594939291906142bd565b60405180910390a15098975050505050505050565b7f4b8f4e528b6d075c6c9d025e58db64e36b460c1516341b1ab7339b4c6d5bcb8a828260405161211e929190613e61565b60405180910390a160005b825181101561217e5760016013600085848151811061214457fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101612129565b5060005b81518110156110355760006013600084848151811061219d57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101612182565b60007f0000000000000000000000000000000000000000000000000000000000000000308686868660405160200161221496959493929190614360565b60408051601f19818403018152919052805160209091012095945050505050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612279578181015183820152602001612261565b50505050905090810190601f1680156122a65780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b865181101561230e578681815181106122dc57fe5b6020026020010151831415612306578581815181106122f757fe5b6020026020010151915061230e565b6001016122c7565b506001600160a01b03811661097e576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b6123ab82826040518060400160405280600b81526020016a233a39b7a6b0b730b3b2b960a91b815250612235565b601160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506123fa828260405180604001604052806006815260200165537570706c7960d01b815250612235565b601260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600061245883836040518060400160405280601381526020017223b7bb32b93730b731b2ab37ba32a837bbb2b960691b815250612235565b9050611035816133c7565b7fd0f8dc4a59c4d23c896412e4f16b39936e8fd83972acf00d91af64bd3511e51a600a54826040516124969291906143dd565b60405180910390a1600a55565b805160209091012090565b600081116124ce5760405162461bcd60e51b8152600401610a2390614112565b7fdcd7d6f89a192742519ec6798e6340b4e43748282ac27856e823a2579b50fe43600754826040516125019291906143dd565b60405180910390a1600755565b7f2056b1a79eedb94135a24bdb0827c0ac4823d13d69f5cf7923ee5751c53ff645600654826040516125419291906143dd565b60405180910390a1600655565b6000811161256e5760405162461bcd60e51b8152600401610a2390614191565b7f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828600554826040516125a19291906143dd565b60405180910390a1600555565b600d54604051631257fcdb60e31b81526000916001600160a01b0316906392bfe6d8906125e19086908690600401613e0b565b60206040518083038186803b1580156125f957600080fd5b505afa15801561260d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190613ba9565b7fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461600254826040516126649291906143dd565b60405180910390a1600255565b600d5460408051636537188360e01b815290516000926001600160a01b0316916365371883916004808301926020929190829003018186803b1580156126b657600080fd5b505afa1580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee9190613aed565b6001600160a01b0316633e5aa26a836040518263ffffffff1660e01b81526004016127199190613e91565b60206040518083038186803b15801561273157600080fd5b505afa158015612745573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c9190613ba9565b60008082116127b2576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b836127bf57506000610ae6565b838302838582816127cc57fe5b0414156127e5578281816127dc57fe5b04915050610ae6565b60008386816127f057fe5b04905060008487816127fe57fe5b069050600085878161280c57fe5b049050600086888161281a57fe5b0690506128686128348861282e86856133e9565b90613442565b61286261284186866133e9565b61286261284e89876133e9565b6128628d61285c8c8b6133e9565b906133e9565b906134a9565b9998505050505050505050565b6000805b83518110156128a75783818151811061288e57fe5b6020026020010151820191508080600101915050612879565b508034146128c75760405162461bcd60e51b8152600401610a2390614149565b60005b84518110156129a6576000808683815181106128e257fe5b60200260200101516001600160a01b03168684815181106128ff57fe5b602002602001015186858151811061291357fe5b60200260200101516040516129289190613ddb565b60006040518083038185875af1925050503d8060008114612965576040519150601f19603f3d011682016040523d82523d6000602084013e61296a565b606091505b50915091508161299c578051156129845780518082602001fd5b60405162461bcd60e51b8152600401610a2390613fea565b50506001016128ca565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006129d8613503565b1415612a0557507f0000000000000000000000000000000000000000000000000000000000000000610904565b612a707f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613507565b9050610904565b60008481526010602090815260408083206001600160a01b0387168452600381019092529091205460ff1615612abf5760405162461bcd60e51b8152600401610a2390614224565b6001600160a01b03841660009081526003820160205260408120805460ff1916600117905560ff168360ff161415612b0057600181018054830190556129a6565b60ff831660011415612b1b57600281018054830190556129a6565b60ff831660021415612b32578054820181556129a6565b60405162461bcd60e51b8152600401610a23906141ed565b600082815260106020526040812060098301546007840154612b6e91612710612769565b81600101541015612b83576001915050610a9e565b600181015460028201546008850154612ba192909101612710612769565b816001015411612bb5576001915050610a9e565b5060009392505050565b6000806000601160009054906101000a90046001600160a01b03166001600160a01b031663e7c830d46040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1257600080fd5b505afa158015612c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4a9190613ba9565b60115460405163e5399da360e01b81529192506000916001600160a01b039091169063e5399da390612c80908590600401613e91565b60606040518083038186803b158015612c9857600080fd5b505afa158015612cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd09190613b3c565b9050436000612cdd61103a565b90506000600d60009054906101000a90046001600160a01b03166001600160a01b031663a72ec4b66040518163ffffffff1660e01b815260040160206040518083038186803b158015612d2f57600080fd5b505afa158015612d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d679190613ba9565b90505b8415612e2c5760115460405163e5399da360e01b81526000916001600160a01b03169063e5399da390612da5906000198a0190600401613e91565b60606040518083038186803b158015612dbd57600080fd5b505afa158015612dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df59190613b3c565b604081015190915042038381101580612e115750828260200151105b15612e1d575050612e2c565b50600019909501949350612d6a565b600084602001519050600042905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9557600080fd5b505afa158015612ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecd9190613ba9565b905060008282604051602001612ee49291906143dd565b6040516020818303038152906040528051906020012060001c905060008488038281612f0c57fe5b6040909a015199069097039a5096985050505050505050509091565b6000612f3383611156565b8015610ae65750610ae68383613569565b60008088518a5114612f685760405162461bcd60e51b8152600401610a2390613ef7565b87518a5114612f895760405162461bcd60e51b8152600401610a2390613ef7565b6000612f9f8b8b8b612f9a8c6124a3565b6121d7565b6000818152600f6020526040902060028101549192509015612fd35760405162461bcd60e51b8152600401610a2390613f65565b80546001600160a01b0319166001600160a01b038e81169190911782556001820189905560408051633932abb160e01b8152905191881691633932abb191600480820192602092909190829003018186803b15801561303157600080fd5b505afa158015613045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130699190613ba9565b42018160020181905550856001600160a01b03166302a251a36040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ac57600080fd5b505afa1580156130c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e49190613ba9565b8160020154018160030181905550856001600160a01b031663f91178626040518163ffffffff1660e01b815260040160206040518083038186803b15801561312b57600080fd5b505afa15801561313f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131639190613ba9565b603c02603c0260180287826003015403106131905760405162461bcd60e51b8152600401610a239061406e565b8b51156132bf5760068101805460ff1916600117905560408051638b25798960e01b815290516001600160a01b03881691638b257989916004808301926020929190829003018186803b1580156131e657600080fd5b505afa1580156131fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321e9190613ba9565b60038201540160048201819055600e54111561323d57600e5460048201555b856001600160a01b031663d11d0d586040518163ffffffff1660e01b815260040160206040518083038186803b15801561327657600080fd5b505afa15801561328a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ae9190613ba9565b60048201540160058201819055600e555b856001600160a01b031663f2f3a74c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132f857600080fd5b505afa15801561330c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133309190613ba9565b8160070181905550856001600160a01b0316639e2242206040518163ffffffff1660e01b815260040160206040518083038186803b15801561337157600080fd5b505afa158015613385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a99190613ba9565b600882015560098101949094559b929a509198505050505050505050565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000826133f857506000610a9e565b8282028284828161340557fe5b0414610ae65760405162461bcd60e51b81526004018080602001828103825260218152602001806145006021913960400191505060405180910390fd5b6000808211613498576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816134a157fe5b049392505050565b600082820183811015610ae6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b4690565b6000838383613514613503565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b600080613574611430565b90508015806135a1575061359461358a84612671565b8290612710612769565b61359e85856125ae565b10155b949350505050565b50805460018160011615610100020316600290046000825580601f106135cf575061096d565b601f01602090049060005260206000209081019061096d9190613679565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826136235760008555613669565b82601f1061363c57805160ff1916838001178555613669565b82800160010185558215613669579182015b8281111561366957825182559160200191906001019061364e565b50613675929150613679565b5090565b5b80821115613675576000815560010161367a565b600067ffffffffffffffff8311156136a257fe5b6136b5601f8401601f1916602001614438565b90508281528383830111156136c957600080fd5b828260208301376000602084830101529392505050565b600082601f8301126136f0578081fd5b813560206137056137008361445c565b614438565b8281528181019085830183850287018401881015613721578586fd5b855b85811015613748578135613736816144a6565b84529284019290840190600101613723565b5090979650505050505050565b600082601f830112613765578081fd5b813560206137756137008361445c565b82815281810190858301855b85811015613748578135880189603f82011261379b578788fd5b6137ac8a878301356040840161368e565b8552509284019290840190600101613781565b600082601f8301126137cf578081fd5b813560206137df6137008361445c565b82815281810190858301838502870184018810156137fb578586fd5b855b85811015613748578135845292840192908401906001016137fd565b600082601f830112613829578081fd5b610ae68383356020850161368e565b803560ff81168114610a6f57600080fd5b60006020828403121561385a578081fd5b8135610ae6816144a6565b60008060408385031215613877578081fd5b8235613882816144a6565b946020939093013593505050565b600080604083850312156138a2578182fd5b823567ffffffffffffffff808211156138b9578384fd5b6138c5868387016136e0565b935060208501359150808211156138da578283fd5b506138e7858286016136e0565b9150509250929050565b60008060008060808587031215613906578182fd5b843567ffffffffffffffff8082111561391d578384fd5b613929888389016136e0565b9550602087013591508082111561393e578384fd5b61394a888389016137bf565b9450604087013591508082111561395f578384fd5b5061396c87828801613755565b949793965093946060013593505050565b60008060008060808587031215613992578182fd5b843567ffffffffffffffff808211156139a9578384fd5b6139b5888389016136e0565b955060208701359150808211156139ca578384fd5b6139d6888389016137bf565b945060408701359150808211156139eb578384fd5b6139f788838901613755565b93506060870135915080821115613a0c578283fd5b50613a1987828801613819565b91505092959194509250565b60008060408385031215613a37578182fd5b823567ffffffffffffffff80821115613a4e578384fd5b818501915085601f830112613a61578384fd5b81356020613a716137008361445c565b82815281810190858301838502870184018b1015613a8d578889fd5b8896505b84871015613aaf578035835260019690960195918301918301613a91565b50965050860135925050808211156138da578283fd5b600060208284031215613ad6578081fd5b81356001600160e01b031981168114610ae6578182fd5b600060208284031215613afe578081fd5b8151610ae6816144a6565b600060208284031215613b1a578081fd5b813567ffffffffffffffff811115613b30578182fd5b6135a184828501613819565b600060608284031215613b4d578081fd5b6040516060810181811067ffffffffffffffff82111715613b6a57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215613ba2578081fd5b5035919050565b600060208284031215613bba578081fd5b5051919050565b60008060408385031215613bd3578182fd5b823591506020830135613be5816144a6565b809150509250929050565b60008060408385031215613c02578182fd5b82359150613c1260208401613838565b90509250929050565b60008060008060608587031215613c30578182fd5b84359350613c4060208601613838565b9250604085013567ffffffffffffffff80821115613c5c578384fd5b818701915087601f830112613c6f578384fd5b813581811115613c7d578485fd5b886020828501011115613c8e578485fd5b95989497505060200194505050565b600080600080600060a08688031215613cb4578283fd5b85359450613cc460208701613838565b9350613cd260408701613838565b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b83811015613d225781516001600160a01b031687529582019590820190600101613cfd565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015613d73578284038952613d61848351613daf565b98850198935090840190600101613d49565b5091979650505050505050565b6000815180845260208085019450808401835b83811015613d2257815187529582019590820190600101613d93565b60008151808452613dc781602086016020860161447a565b601f01601f19169290920160200192915050565b60008251613ded81846020870161447a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03979097168752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b600060408252613e746040830185613cea565b828103602084015261097e8185613cea565b901515815260200190565b90815260200190565b928352602083019190915260ff16604082015260600190565b6020810160078310613ec157fe5b91905290565b6020808252601690820152757772617070656420737570706c7920746f6f206c6f7760501b604082015260600190565b60208082526017908201527f696e76616c69642070726f706f73616c206c656e677468000000000000000000604082015260600190565b6020808252601e908201527f696e76616c6964205f72656c61746976655468726573686f6c64424950530000604082015260600190565b60208082526017908201527f70726f706f73616c20616c726561647920657869737473000000000000000000604082015260600190565b6020808252602e908201527f7375626d6974746572206973206e6f7420656c696769626c6520746f2073756260408201526d1b5a5d0818481c1c9bdc1bdcd85b60921b606082015260800190565b6020808252601d908201527f63616c6c20726576657274656420776974686f7574206d657373616765000000604082015260600190565b6020808252602d908201527f70726f706f73616c2063616e206f6e6c7920626520657865637574656420627960408201526c1034ba3990383937b837b9b2b960991b606082015260800190565b60208082526027908201527f766f746520706f77657220626c6f636b20697320746f6f2066617220696e20746040820152661a19481c185cdd60ca1b606082015260800190565b602080825260169082015275696e76616c696420766f7465207369676e617475726560501b604082015260600190565b6020808252601390820152721d5b9adb9bdddb881c1c9bdc1bdcd85b081a59606a1b604082015260600190565b60208082526018908201527f657865637574696f6e20706572696f6420746f6f206c6f770000000000000000604082015260600190565b60208082526028908201527f73756d206f66205f76616c75657320646f6573206e6f7420657175616c73206d60408201526773672e76616c756560c01b606082015260800190565b602080825260159082015274766f74696e6720706572696f6420746f6f206c6f7760581b604082015260600190565b60208082526013908201527270726f706f73616c206e6f742061637469766560681b604082015260600190565b6020808252601f908201527f696e76616c69642076616c756520666f7220656e756d20566f74655479706500604082015260600190565b6020808252601190820152701d9bdd1948185b1c9958591e4818d85cdd607a1b604082015260600190565b6020808252601f908201527f70726f706f73616c206e6f7420696e20657865637574696f6e20737461746500604082015260600190565b60208082526019908201527f70726f706f73616c20616c726561647920657865637574656400000000000000604082015260600190565b8c81526001600160a01b038c166020820152610180604082018190526000906142e88382018e613cea565b905082810360608401526142fc818d613d80565b90508281036080840152614310818c613d2d565b90508960a08401528860c084015282810360e08401526143308189613daf565b915050856101008301528461012083015283610140830152826101608301529d9c50505050505050505050505050565b8681526001600160a01b038616602082015260c06040820181905260009061438a90830187613cea565b828103606084015261439c8187613d80565b905082810360808401526143b08186613d2d565b9150508260a0830152979650505050505050565b6000838252604060208301526135a16040830184613daf565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b600085825260ff851660208301528360408301526080606083015261442e6080830184613daf565b9695505050505050565b60405181810167ffffffffffffffff8111828210171561445457fe5b604052919050565b600067ffffffffffffffff82111561447057fe5b5060209081020190565b60005b8381101561449557818101518382015260200161447d565b83811115610ed15750506000910152565b6001600160a01b038116811461096d57600080fdfe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a56e586d739af9b7929a5a6b4324a88361d9b3031c59a14269a377bcdaaff8c664736f6c63430007060033",
  "deployedBytecode": "0x6080604052600436106102ff5760003560e01c80639d6a890f11610190578063dd3fa0f9116100dc578063ece40cc111610095578063f5a983831161006f578063f5a98383146108a1578063f8ce560a146108b6578063f9117862146108d6578063f937d6ad146108eb576102ff565b8063ece40cc114610857578063f17c9d7614610877578063f2f3a74c1461088c576102ff565b8063dd3fa0f9146107b8578063deaaa7cc146107cd578063e17f212e146107e2578063e4917d9f146107f7578063ea0217cf14610817578063eb9019d414610837576102ff565b8063b4df57fe11610149578063bc903cb811610123578063bc903cb814610730578063bd590d7e14610763578063d11d0d5814610783578063d99e4b7614610798576102ff565b8063b4df57fe146106cb578063b58131b0146106eb578063ba1b458614610700576102ff565b80639d6a890f146106165780639e22422014610636578063a7a6224a1461064b578063a8f8a6681461066b578063aa98df391461068b578063b00c0b76146106ab576102ff565b806360e775321161024f57806370b0f660116102085780637b3c71d3116101e25780637b3c71d3146105ac5780637d5e81e2146105cc5780638b257989146105ec5780639a8a059214610601576102ff565b806370b0f6601461053e57806374e6310e1461055e57806374ec29a01461058c576102ff565b806360e775321461049457806361bbfcad146104b457806362354e03146104d457806367fc4029146104e95780636a714a9f146105095780636df5f8ca1461051e576102ff565b80633bccf4fd116102bc5780635267a15d116102965780635267a15d1461042a578063567813881461043f5780635aa6e6751461045f5780635ff2707914610474576102ff565b80633bccf4fd146103b05780633e4f49e6146103d057806343859632146103fd576102ff565b806302a251a314610304578063047fc9aa1461032f57806311a7aaaa1461035157806312d0e9fe146103665780632656227d146103885780633932abb11461039b575b600080fd5b34801561031057600080fd5b50610319610900565b6040516103269190613e91565b60405180910390f35b34801561033b57600080fd5b50610344610907565b6040516103269190613df7565b34801561035d57600080fd5b50610344610916565b34801561037257600080fd5b50610386610381366004613b91565b610925565b005b6103196103963660046138f1565b610970565b3480156103a757600080fd5b50610319610987565b3480156103bc57600080fd5b506103196103cb366004613c9d565b61098d565b3480156103dc57600080fd5b506103f06103eb366004613b91565b610a53565b6040516103269190613eb3565b34801561040957600080fd5b5061041d610418366004613bc1565b610a74565b6040516103269190613e86565b34801561043657600080fd5b50610344610aa4565b34801561044b57600080fd5b5061031961045a366004613bf0565b610ac9565b34801561046b57600080fd5b50610344610aed565b34801561048057600080fd5b5061038661048f366004613ac5565b610b82565b3480156104a057600080fd5b506103866104af366004613b91565b610ed7565b3480156104c057600080fd5b506103866104cf366004613b91565b610f0f565b3480156104e057600080fd5b50610344610f47565b3480156104f557600080fd5b50610386610504366004613ac5565b610f52565b34801561051557600080fd5b5061031961103a565b34801561052a57600080fd5b50610386610539366004613b91565b611040565b34801561054a57600080fd5b50610386610559366004613b91565b611078565b34801561056a57600080fd5b5061057e610579366004613ac5565b6110b0565b6040516103269291906143c4565b34801561059857600080fd5b5061041d6105a7366004613849565b611156565b3480156105b857600080fd5b506103196105c7366004613c1b565b611174565b3480156105d857600080fd5b506103196105e736600461397d565b6111b8565b3480156105f857600080fd5b506103196111c6565b34801561060d57600080fd5b506103196111cc565b34801561062257600080fd5b50610386610631366004613849565b6111f0565b34801561064257600080fd5b506103196112a9565b34801561065757600080fd5b50610386610666366004613890565b6112af565b34801561067757600080fd5b506103196106863660046138f1565b6112fc565b34801561069757600080fd5b506103196106a6366004613b09565b61130a565b3480156106b757600080fd5b506103866106c6366004613a25565b611351565b3480156106d757600080fd5b506103866106e6366004613b91565b6113f8565b3480156106f757600080fd5b50610319611430565b34801561070c57600080fd5b5061072061071b366004613b91565b611436565b60405161032694939291906143eb565b34801561073c57600080fd5b5061075061074b366004613b91565b611467565b6040516103269796959493929190613e24565b34801561076f57600080fd5b5061031961077e366004613b09565b6114b6565b34801561078f57600080fd5b50610319611505565b3480156107a457600080fd5b506103866107b3366004613b91565b61150b565b3480156107c457600080fd5b50610319611543565b3480156107d957600080fd5b50610319611549565b3480156107ee57600080fd5b5061041d61156d565b34801561080357600080fd5b50610386610812366004613b91565b61157d565b34801561082357600080fd5b50610386610832366004613b91565b6115b5565b34801561084357600080fd5b50610319610852366004613865565b6115ed565b34801561086357600080fd5b50610386610872366004613b91565b6115f9565b34801561088357600080fd5b50610344611631565b34801561089857600080fd5b50610319611640565b3480156108ad57600080fd5b50610386611646565b3480156108c257600080fd5b506103196108d1366004613b91565b611700565b3480156108e257600080fd5b50610319611720565b3480156108f757600080fd5b50610344611726565b6005545b90565b6012546001600160a01b031681565b6011546001600160a01b031681565b600054600160b01b900460ff16806109475750600054600160a81b900460ff16155b156109625761095461174a565b61095d81611781565b61096d565b61096d6000366117c1565b50565b600061097e85858585611944565b95945050505050565b60045490565b6000806109eb6109e67f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f89896040516020016109cb93929190613e9a565b60405160208183030381529060405280519060200120611a4d565b611a99565b905060006109fb82878787611aea565b90506001600160a01b038116610a2c5760405162461bcd60e51b8152600401610a23906140b5565b60405180910390fd5b610a4788828960405180602001604052806000815250611c5f565b98975050505050505050565b6000818152600f60205260408120610a6c908390611d10565b90505b919050565b60008281526010602090815260408083206001600160a01b038516845260030190915290205460ff165b92915050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b6000610ae683338460405180602001604052806000815250611c5f565b9392505050565b60008054600160a81b900460ff16610b10576000546001600160a01b0316610b7d565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5057600080fd5b505afa158015610b64573d6000803e3d6000fd5b505050506040513d6020811015610b7a57600080fd5b50515b905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b158015610bc657600080fd5b505afa158015610bda573d6000803e3d6000fd5b505050506040513d6020811015610bf057600080fd5b5051610c33576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054610c9f576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015610cf5576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d8f5780601f10610d6457610100808354040283529160200191610d8f565b820191906000526020600020905b815481529060010190602001808311610d7257829003601f168201915b5050506001600160e01b0319861660009081526001602081905260408220828155949550909250610dc391508301826135a9565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b60208310610e0b5780518252601f199092019160209182019101610dec565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e6d576040519150601f19603f3d011682016040523d82523d6000602084013e610e72565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a1610ed181611dd2565b50505050565b600054600160b01b900460ff1680610ef95750600054600160a81b900460ff16155b1561096257610f0661174a565b61095d81611def565b600054600160b01b900460ff1680610f315750600054600160a81b900460ff16155b1561096257610f3e61174a565b61095d81611e2f565b60076001609c1b0181565b610f5a611e91565b6001600160e01b03198116600090815260016020526040902054610fc5576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190611035908301826135a9565b505050565b60095490565b600054600160b01b900460ff16806110625750600054600160a81b900460ff16155b156109625761106f61174a565b61095d81611ef0565b600054600160b01b900460ff168061109a5750600054600160a81b900460ff16155b15610962576110a761174a565b61095d81611f30565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f8101859004850286018501909652858552909491939290919083018282801561114c5780601f106111215761010080835404028352916020019161114c565b820191906000526020600020905b81548152906001019060200180831161112f57829003601f168201915b5050505050905082565b6001600160a01b031660009081526013602052604090205460ff1690565b600061097e85338686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c5f92505050565b600061097e85858585611f70565b60065490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160a01b900460ff1615611246576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b600c5490565b600054600160b01b900460ff16806112d15750600054600160a81b900460ff16155b156112ed576112de61174a565b6112e882826120ed565b6112f8565b6112f86000366117c1565b5050565b600061097e858585856121d7565b60408051600080825260208201818152828401828152606084019094529092610a6c9291908461134a565b60608152602001906001900390816113355790505b5085611f70565b611359610aa4565b6001600160a01b0316336001600160a01b0316146113b5576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b6113ee6113e983836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250612235565b612359565b6112f8828261237d565b600054600160b01b900460ff168061141a5750600054600160a81b900460ff16155b156109625761142761174a565b61095d81612463565b60025490565b6000908152601060209081526040808320600f90925290912060090154600282015460018301549254919390929190565b6000908152600f602052604090208054600182015460028301546003840154600485015460058601546006909601546001600160a01b0390951696939592949193909291610100900460ff1690565b60408051600080825260208201818152828401828152606084019094529092610a6c929190846114f6565b60608152602001906001900390816114e15790505b50611500866124a3565b611944565b60075490565b600054600160b01b900460ff168061152d5750600054600160a81b900460ff16155b156109625761153a61174a565b61095d816124ae565b600a5490565b7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b600054600160a81b900460ff1681565b600054600160b01b900460ff168061159f5750600054600160a81b900460ff16155b15610962576115ac61174a565b61095d8161250e565b600054600160b01b900460ff16806115d75750600054600160a81b900460ff16155b15610962576115e461174a565b61095d8161254e565b6000610ae683836125ae565b600054600160b01b900460ff168061161b5750600054600160a81b900460ff16155b156109625761162861174a565b61095d81612631565b600d546001600160a01b031681565b600b5490565b61164e611e91565b600054600160a81b900460ff16156116ad576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b6000610a6c61170e83612671565b612710611719611640565b9190612769565b60085490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160b01b900460ff16156117775733301461176557fe5b6000805460ff60b01b1916905561177f565b61177f611e91565b565b7fa679132e53a14a0f5674480a8def108a2856034a2338cb9a064e7e2f8badf29e600954826040516117b49291906143dd565b60405180910390a1600955565b6117c9611e91565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d602081101561183b57600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b031986168152600160208181526040909220845181558483015180519194506118bf939285019201906135ed565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b6000611952858585856121d7565b6000818152600f60205260409020600681015491925090610100900460ff161561198e5760405162461bcd60e51b8152600401610a2390614286565b80546001600160a01b031633146119b75760405162461bcd60e51b8152600401610a2390614021565b60006119c38383611d10565b905060048160068111156119d357fe5b146119f05760405162461bcd60e51b8152600401610a239061424f565b60068201805461ff001916610100179055611a0c878787612875565b7f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f83604051611a3b9190613e91565b60405180910390a15050949350505050565b6000611a576129ad565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611b4b5760405162461bcd60e51b81526004018080602001828103825260228152602001806144bc6022913960400191505060405180910390fd5b8360ff16601b1480611b6057508360ff16601c145b611b9b5760405162461bcd60e51b81526004018080602001828103825260228152602001806144de6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611bf7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661097e576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b6000848152600f602052604081206001611c798783611d10565b6006811115611c8457fe5b14611ca15760405162461bcd60e51b8152600401610a23906141c0565b6000611cb18683600101546125ae565b9050611cbf87878784612a77565b856001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda488878488604051611cfe9493929190614406565b60405180910390a29695505050505050565b6006810154600090610100900460ff1615611d2d57506006610a9e565b6002820154611d4e5760405162461bcd60e51b8152600401610a23906140e5565b4282600201541115611d6257506000610a9e565b4282600301541115611d7657506001610a9e565b611d808383612b4a565b15611dc957600682015460ff16611d9957506004610a9e565b4282600401541115611dad57506003610a9e565b4282600501541115611dc157506004610a9e565b506005610a9e565b50600292915050565b3d604051818101604052816000823e8215611deb578181f35b8181fd5b7fb0696527788a80f2825d3fd8b9e9c017c6b3d7f5eb5a54eaa86deaa286d10c3860085482604051611e229291906143dd565b60405180910390a1600855565b611388811015611e515760405162461bcd60e51b8152600401610a2390613f2e565b7f4d66ba28c0bc0eb2229d86d7f91e743c971140fcda7f8783e1cbaa0fdfe65465600c5482604051611e849291906143dd565b60405180910390a1600c55565b611e99610aed565b6001600160a01b0316336001600160a01b03161461177f576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b7f631d262a54e429270a60189077cb4562e4131dc775629e446fd5a0fa684adb15600b5482604051611f239291906143dd565b60405180910390a1600b55565b7fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9360045482604051611f639291906143dd565b60405180910390a1600455565b6000806000611f7d612bbf565b915091506000611f8c83612671565b905061201b611f99611543565b60125460405163d9330e6360e01b8152612710916001600160a01b03169063d9330e6390611fcb908990600401613e91565b60206040518083038186803b158015611fe357600080fd5b505afa158015611ff7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190613ba9565b81101561203a5760405162461bcd60e51b8152600401610a2390613ec7565b6120443384612f28565b6120605760405162461bcd60e51b8152600401610a2390613f9c565b600080612074338b8b8b8b8a8a308b612f44565b915091507ff2d67c3691b9395ea4ec30c23df6c26b69de83978dc869dc454316649b3b397682338c8c8c866002015487600301548e89600101546120b6611543565b8b600701548c600801546040516120d89c9b9a999897969594939291906142bd565b60405180910390a15098975050505050505050565b7f4b8f4e528b6d075c6c9d025e58db64e36b460c1516341b1ab7339b4c6d5bcb8a828260405161211e929190613e61565b60405180910390a160005b825181101561217e5760016013600085848151811061214457fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101612129565b5060005b81518110156110355760006013600084848151811061219d57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101612182565b60007f0000000000000000000000000000000000000000000000000000000000000000308686868660405160200161221496959493929190614360565b60408051601f19818403018152919052805160209091012095945050505050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612279578181015183820152602001612261565b50505050905090810190601f1680156122a65780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b865181101561230e578681815181106122dc57fe5b6020026020010151831415612306578581815181106122f757fe5b6020026020010151915061230e565b6001016122c7565b506001600160a01b03811661097e576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b6123ab82826040518060400160405280600b81526020016a233a39b7a6b0b730b3b2b960a91b815250612235565b601160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506123fa828260405180604001604052806006815260200165537570706c7960d01b815250612235565b601260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600061245883836040518060400160405280601381526020017223b7bb32b93730b731b2ab37ba32a837bbb2b960691b815250612235565b9050611035816133c7565b7fd0f8dc4a59c4d23c896412e4f16b39936e8fd83972acf00d91af64bd3511e51a600a54826040516124969291906143dd565b60405180910390a1600a55565b805160209091012090565b600081116124ce5760405162461bcd60e51b8152600401610a2390614112565b7fdcd7d6f89a192742519ec6798e6340b4e43748282ac27856e823a2579b50fe43600754826040516125019291906143dd565b60405180910390a1600755565b7f2056b1a79eedb94135a24bdb0827c0ac4823d13d69f5cf7923ee5751c53ff645600654826040516125419291906143dd565b60405180910390a1600655565b6000811161256e5760405162461bcd60e51b8152600401610a2390614191565b7f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828600554826040516125a19291906143dd565b60405180910390a1600555565b600d54604051631257fcdb60e31b81526000916001600160a01b0316906392bfe6d8906125e19086908690600401613e0b565b60206040518083038186803b1580156125f957600080fd5b505afa15801561260d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190613ba9565b7fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461600254826040516126649291906143dd565b60405180910390a1600255565b600d5460408051636537188360e01b815290516000926001600160a01b0316916365371883916004808301926020929190829003018186803b1580156126b657600080fd5b505afa1580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee9190613aed565b6001600160a01b0316633e5aa26a836040518263ffffffff1660e01b81526004016127199190613e91565b60206040518083038186803b15801561273157600080fd5b505afa158015612745573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c9190613ba9565b60008082116127b2576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b836127bf57506000610ae6565b838302838582816127cc57fe5b0414156127e5578281816127dc57fe5b04915050610ae6565b60008386816127f057fe5b04905060008487816127fe57fe5b069050600085878161280c57fe5b049050600086888161281a57fe5b0690506128686128348861282e86856133e9565b90613442565b61286261284186866133e9565b61286261284e89876133e9565b6128628d61285c8c8b6133e9565b906133e9565b906134a9565b9998505050505050505050565b6000805b83518110156128a75783818151811061288e57fe5b6020026020010151820191508080600101915050612879565b508034146128c75760405162461bcd60e51b8152600401610a2390614149565b60005b84518110156129a6576000808683815181106128e257fe5b60200260200101516001600160a01b03168684815181106128ff57fe5b602002602001015186858151811061291357fe5b60200260200101516040516129289190613ddb565b60006040518083038185875af1925050503d8060008114612965576040519150601f19603f3d011682016040523d82523d6000602084013e61296a565b606091505b50915091508161299c578051156129845780518082602001fd5b60405162461bcd60e51b8152600401610a2390613fea565b50506001016128ca565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006129d8613503565b1415612a0557507f0000000000000000000000000000000000000000000000000000000000000000610904565b612a707f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613507565b9050610904565b60008481526010602090815260408083206001600160a01b0387168452600381019092529091205460ff1615612abf5760405162461bcd60e51b8152600401610a2390614224565b6001600160a01b03841660009081526003820160205260408120805460ff1916600117905560ff168360ff161415612b0057600181018054830190556129a6565b60ff831660011415612b1b57600281018054830190556129a6565b60ff831660021415612b32578054820181556129a6565b60405162461bcd60e51b8152600401610a23906141ed565b600082815260106020526040812060098301546007840154612b6e91612710612769565b81600101541015612b83576001915050610a9e565b600181015460028201546008850154612ba192909101612710612769565b816001015411612bb5576001915050610a9e565b5060009392505050565b6000806000601160009054906101000a90046001600160a01b03166001600160a01b031663e7c830d46040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1257600080fd5b505afa158015612c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4a9190613ba9565b60115460405163e5399da360e01b81529192506000916001600160a01b039091169063e5399da390612c80908590600401613e91565b60606040518083038186803b158015612c9857600080fd5b505afa158015612cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd09190613b3c565b9050436000612cdd61103a565b90506000600d60009054906101000a90046001600160a01b03166001600160a01b031663a72ec4b66040518163ffffffff1660e01b815260040160206040518083038186803b158015612d2f57600080fd5b505afa158015612d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d679190613ba9565b90505b8415612e2c5760115460405163e5399da360e01b81526000916001600160a01b03169063e5399da390612da5906000198a0190600401613e91565b60606040518083038186803b158015612dbd57600080fd5b505afa158015612dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df59190613b3c565b604081015190915042038381101580612e115750828260200151105b15612e1d575050612e2c565b50600019909501949350612d6a565b600084602001519050600042905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9557600080fd5b505afa158015612ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecd9190613ba9565b905060008282604051602001612ee49291906143dd565b6040516020818303038152906040528051906020012060001c905060008488038281612f0c57fe5b6040909a015199069097039a5096985050505050505050509091565b6000612f3383611156565b8015610ae65750610ae68383613569565b60008088518a5114612f685760405162461bcd60e51b8152600401610a2390613ef7565b87518a5114612f895760405162461bcd60e51b8152600401610a2390613ef7565b6000612f9f8b8b8b612f9a8c6124a3565b6121d7565b6000818152600f6020526040902060028101549192509015612fd35760405162461bcd60e51b8152600401610a2390613f65565b80546001600160a01b0319166001600160a01b038e81169190911782556001820189905560408051633932abb160e01b8152905191881691633932abb191600480820192602092909190829003018186803b15801561303157600080fd5b505afa158015613045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130699190613ba9565b42018160020181905550856001600160a01b03166302a251a36040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ac57600080fd5b505afa1580156130c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e49190613ba9565b8160020154018160030181905550856001600160a01b031663f91178626040518163ffffffff1660e01b815260040160206040518083038186803b15801561312b57600080fd5b505afa15801561313f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131639190613ba9565b603c02603c0260180287826003015403106131905760405162461bcd60e51b8152600401610a239061406e565b8b51156132bf5760068101805460ff1916600117905560408051638b25798960e01b815290516001600160a01b03881691638b257989916004808301926020929190829003018186803b1580156131e657600080fd5b505afa1580156131fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321e9190613ba9565b60038201540160048201819055600e54111561323d57600e5460048201555b856001600160a01b031663d11d0d586040518163ffffffff1660e01b815260040160206040518083038186803b15801561327657600080fd5b505afa15801561328a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ae9190613ba9565b60048201540160058201819055600e555b856001600160a01b031663f2f3a74c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132f857600080fd5b505afa15801561330c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133309190613ba9565b8160070181905550856001600160a01b0316639e2242206040518163ffffffff1660e01b815260040160206040518083038186803b15801561337157600080fd5b505afa158015613385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a99190613ba9565b600882015560098101949094559b929a509198505050505050505050565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000826133f857506000610a9e565b8282028284828161340557fe5b0414610ae65760405162461bcd60e51b81526004018080602001828103825260218152602001806145006021913960400191505060405180910390fd5b6000808211613498576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816134a157fe5b049392505050565b600082820183811015610ae6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b4690565b6000838383613514613503565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b600080613574611430565b90508015806135a1575061359461358a84612671565b8290612710612769565b61359e85856125ae565b10155b949350505050565b50805460018160011615610100020316600290046000825580601f106135cf575061096d565b601f01602090049060005260206000209081019061096d9190613679565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826136235760008555613669565b82601f1061363c57805160ff1916838001178555613669565b82800160010185558215613669579182015b8281111561366957825182559160200191906001019061364e565b50613675929150613679565b5090565b5b80821115613675576000815560010161367a565b600067ffffffffffffffff8311156136a257fe5b6136b5601f8401601f1916602001614438565b90508281528383830111156136c957600080fd5b828260208301376000602084830101529392505050565b600082601f8301126136f0578081fd5b813560206137056137008361445c565b614438565b8281528181019085830183850287018401881015613721578586fd5b855b85811015613748578135613736816144a6565b84529284019290840190600101613723565b5090979650505050505050565b600082601f830112613765578081fd5b813560206137756137008361445c565b82815281810190858301855b85811015613748578135880189603f82011261379b578788fd5b6137ac8a878301356040840161368e565b8552509284019290840190600101613781565b600082601f8301126137cf578081fd5b813560206137df6137008361445c565b82815281810190858301838502870184018810156137fb578586fd5b855b85811015613748578135845292840192908401906001016137fd565b600082601f830112613829578081fd5b610ae68383356020850161368e565b803560ff81168114610a6f57600080fd5b60006020828403121561385a578081fd5b8135610ae6816144a6565b60008060408385031215613877578081fd5b8235613882816144a6565b946020939093013593505050565b600080604083850312156138a2578182fd5b823567ffffffffffffffff808211156138b9578384fd5b6138c5868387016136e0565b935060208501359150808211156138da578283fd5b506138e7858286016136e0565b9150509250929050565b60008060008060808587031215613906578182fd5b843567ffffffffffffffff8082111561391d578384fd5b613929888389016136e0565b9550602087013591508082111561393e578384fd5b61394a888389016137bf565b9450604087013591508082111561395f578384fd5b5061396c87828801613755565b949793965093946060013593505050565b60008060008060808587031215613992578182fd5b843567ffffffffffffffff808211156139a9578384fd5b6139b5888389016136e0565b955060208701359150808211156139ca578384fd5b6139d6888389016137bf565b945060408701359150808211156139eb578384fd5b6139f788838901613755565b93506060870135915080821115613a0c578283fd5b50613a1987828801613819565b91505092959194509250565b60008060408385031215613a37578182fd5b823567ffffffffffffffff80821115613a4e578384fd5b818501915085601f830112613a61578384fd5b81356020613a716137008361445c565b82815281810190858301838502870184018b1015613a8d578889fd5b8896505b84871015613aaf578035835260019690960195918301918301613a91565b50965050860135925050808211156138da578283fd5b600060208284031215613ad6578081fd5b81356001600160e01b031981168114610ae6578182fd5b600060208284031215613afe578081fd5b8151610ae6816144a6565b600060208284031215613b1a578081fd5b813567ffffffffffffffff811115613b30578182fd5b6135a184828501613819565b600060608284031215613b4d578081fd5b6040516060810181811067ffffffffffffffff82111715613b6a57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215613ba2578081fd5b5035919050565b600060208284031215613bba578081fd5b5051919050565b60008060408385031215613bd3578182fd5b823591506020830135613be5816144a6565b809150509250929050565b60008060408385031215613c02578182fd5b82359150613c1260208401613838565b90509250929050565b60008060008060608587031215613c30578182fd5b84359350613c4060208601613838565b9250604085013567ffffffffffffffff80821115613c5c578384fd5b818701915087601f830112613c6f578384fd5b813581811115613c7d578485fd5b886020828501011115613c8e578485fd5b95989497505060200194505050565b600080600080600060a08688031215613cb4578283fd5b85359450613cc460208701613838565b9350613cd260408701613838565b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b83811015613d225781516001600160a01b031687529582019590820190600101613cfd565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015613d73578284038952613d61848351613daf565b98850198935090840190600101613d49565b5091979650505050505050565b6000815180845260208085019450808401835b83811015613d2257815187529582019590820190600101613d93565b60008151808452613dc781602086016020860161447a565b601f01601f19169290920160200192915050565b60008251613ded81846020870161447a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03979097168752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b600060408252613e746040830185613cea565b828103602084015261097e8185613cea565b901515815260200190565b90815260200190565b928352602083019190915260ff16604082015260600190565b6020810160078310613ec157fe5b91905290565b6020808252601690820152757772617070656420737570706c7920746f6f206c6f7760501b604082015260600190565b60208082526017908201527f696e76616c69642070726f706f73616c206c656e677468000000000000000000604082015260600190565b6020808252601e908201527f696e76616c6964205f72656c61746976655468726573686f6c64424950530000604082015260600190565b60208082526017908201527f70726f706f73616c20616c726561647920657869737473000000000000000000604082015260600190565b6020808252602e908201527f7375626d6974746572206973206e6f7420656c696769626c6520746f2073756260408201526d1b5a5d0818481c1c9bdc1bdcd85b60921b606082015260800190565b6020808252601d908201527f63616c6c20726576657274656420776974686f7574206d657373616765000000604082015260600190565b6020808252602d908201527f70726f706f73616c2063616e206f6e6c7920626520657865637574656420627960408201526c1034ba3990383937b837b9b2b960991b606082015260800190565b60208082526027908201527f766f746520706f77657220626c6f636b20697320746f6f2066617220696e20746040820152661a19481c185cdd60ca1b606082015260800190565b602080825260169082015275696e76616c696420766f7465207369676e617475726560501b604082015260600190565b6020808252601390820152721d5b9adb9bdddb881c1c9bdc1bdcd85b081a59606a1b604082015260600190565b60208082526018908201527f657865637574696f6e20706572696f6420746f6f206c6f770000000000000000604082015260600190565b60208082526028908201527f73756d206f66205f76616c75657320646f6573206e6f7420657175616c73206d60408201526773672e76616c756560c01b606082015260800190565b602080825260159082015274766f74696e6720706572696f6420746f6f206c6f7760581b604082015260600190565b60208082526013908201527270726f706f73616c206e6f742061637469766560681b604082015260600190565b6020808252601f908201527f696e76616c69642076616c756520666f7220656e756d20566f74655479706500604082015260600190565b6020808252601190820152701d9bdd1948185b1c9958591e4818d85cdd607a1b604082015260600190565b6020808252601f908201527f70726f706f73616c206e6f7420696e20657865637574696f6e20737461746500604082015260600190565b60208082526019908201527f70726f706f73616c20616c726561647920657865637574656400000000000000604082015260600190565b8c81526001600160a01b038c166020820152610180604082018190526000906142e88382018e613cea565b905082810360608401526142fc818d613d80565b90508281036080840152614310818c613d2d565b90508960a08401528860c084015282810360e08401526143308189613daf565b915050856101008301528461012083015283610140830152826101608301529d9c50505050505050505050505050565b8681526001600160a01b038616602082015260c06040820181905260009061438a90830187613cea565b828103606084015261439c8187613d80565b905082810360808401526143b08186613d2d565b9150508260a0830152979650505050505050565b6000838252604060208301526135a16040830184613daf565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b600085825260ff851660208301528360408301526080606083015261442e6080830184613daf565b9695505050505050565b60405181810167ffffffffffffffff8111828210171561445457fe5b604052919050565b600067ffffffffffffffff82111561447057fe5b5060209081020190565b60005b8381101561449557818101518382015260200161447d565b83811115610ed15750506000910152565b6001600160a01b038116811461096d57600080fdfe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a56e586d739af9b7929a5a6b4324a88361d9b3031c59a14269a377bcdaaff8c664736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
