{
  "_format": "hh-sol-artifact-1",
  "contractName": "RelayerRewardsPoolV2",
  "sourceName": "contracts/deprecated/V2/RelayerRewardsPoolV2.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedInnerCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "parameter",
          "type": "string"
        }
      ],
      "name": "InvalidParameter",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "NoRewardsToClaim",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "preferredRelayer",
          "type": "address"
        }
      ],
      "name": "NotPreferredRelayer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerAlreadyRegistered",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerNotRegistered",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "RewardsAlreadyClaimed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "RoundNotEnded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "UnauthorizedUnregister",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "B3TRAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldWeight",
          "type": "uint256"
        }
      ],
      "name": "ClaimWeightUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBlocks",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldBlocks",
          "type": "uint256"
        }
      ],
      "name": "EarlyAccessBlocksUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "EmissionsAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "userCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalActions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalWeightedActions",
          "type": "uint256"
        }
      ],
      "name": "ExpectedActionsReduced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldFee",
          "type": "uint256"
        }
      ],
      "name": "FeeCapUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "PreferredRelayerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actionCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weight",
          "type": "uint256"
        }
      ],
      "name": "RelayerActionRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newDenominator",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldDenominator",
          "type": "uint256"
        }
      ],
      "name": "RelayerFeeDenominatorUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldFee",
          "type": "uint256"
        }
      ],
      "name": "RelayerFeePercentageUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RelayerRewardsClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerUnregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalRewards",
          "type": "uint256"
        }
      ],
      "name": "RewardsDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalAutoVoteUsers",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalActions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalWeightedActions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numRelayers",
          "type": "uint256"
        }
      ],
      "name": "TotalAutoVotingActionsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldWeight",
          "type": "uint256"
        }
      ],
      "name": "VoteWeightUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "XAllocationVotingAddressUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "POOL_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "totalReward",
          "type": "uint256"
        }
      ],
      "name": "calculateRelayerFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "claimableRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "completedWeightedActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getB3trAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClaimWeight",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEarlyAccessBlocks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEmissionsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFeeCap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getMissedAutoVotingUsersCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getPreferredRelayer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRegisteredRelayers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRelayerFeeDenominator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRelayerFeePercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getTotalRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVoteWeight",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getXAllocationVotingAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "upgrader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "b3trAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "emissionsAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "xAllocationVotingAddress",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initializeV2",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isClaimEarlyAccessActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "isRegisteredRelayer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isRewardClaimable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isVoteEarlyAccessActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "userCount",
          "type": "uint256"
        }
      ],
      "name": "reduceExpectedActionsForRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "registerRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "enum RelayerAction",
          "name": "action",
          "type": "uint8"
        }
      ],
      "name": "registerRelayerAction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "b3trAddress",
          "type": "address"
        }
      ],
      "name": "setB3TRAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        }
      ],
      "name": "setClaimWeight",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blocks",
          "type": "uint256"
        }
      ],
      "name": "setEarlyAccessBlocks",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "emissionsAddress",
          "type": "address"
        }
      ],
      "name": "setEmissionsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFeeCap",
          "type": "uint256"
        }
      ],
      "name": "setFeeCap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "setPreferredRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newDenominator",
          "type": "uint256"
        }
      ],
      "name": "setRelayerFeeDenominator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFeePercentage",
          "type": "uint256"
        }
      ],
      "name": "setRelayerFeePercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalAutoVotingUsers",
          "type": "uint256"
        }
      ],
      "name": "setTotalActionsForRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        }
      ],
      "name": "setVoteWeight",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "xAllocationVotingAddress",
          "type": "address"
        }
      ],
      "name": "setXAllocationVotingAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalRelayerActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalRelayerWeightedActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalWeightedActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "unregisterRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "validateClaimDuringEarlyAccess",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "validateVoteDuringEarlyAccess",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613a746200010460003960008181612ed501528181612efe01526130460152613a746000f3fe6080604052600436106102915760003560e01c806301ffc9a7146102965780631459457a146102cb57806314d92307146102ed578063189ca3161461030d5780631bc3a6731461032d578063241f9e2b1461034f578063248a9ca31461037d57806324a697a31461039d57806325d3155e146103bd5780632f2ff15d146103d2578063338111e7146103f257806336568abe1461041257806336a7c134146104325780633bb18a76146104475780633d009cee1461046757806347b0b33e1461048757806348c2bd78146104a75780634f1ef286146104c75780634f6981ee146104da57806352d1902d146104fa57806354fd4d501461050f578063552164ee1461054257806356f1612f1461056257806357181609146105825780635ae1cd14146105a25780635cd8a76b146105c25780635f72790a146105d757806362f29478146105f7578063650e8a761461060c578063675d0f8d1461062c5780636bb07c731461064c5780636c7b69cb1461066c5780636cf88e731461068c5780637f5e98bd146106ac57806385530201146106c157806389a96d35146106e15780638d2340a01461070157806391d14854146107165780639858b78a14610736578063a217fddf14610756578063ac4aa16b1461076b578063ad3cb1cc1461078d578063af54c53a146107be578063b7fe075a146107de578063b8f6dba7146107f3578063be9412df14610815578063d428cffc1461082a578063d547741f1461083f578063d56843921461085f578063d94290e51461087f578063dc404a0e1461089f578063df171b0c146108bf578063e2bbb158146108df578063e5ed920b146108ff578063e78168b51461091f578063e7dfe6721461093f578063f5e57b391461095f578063f72c0d8b1461097f575b600080fd5b3480156102a257600080fd5b506102b66102b13660046133cf565b6109a1565b60405190151581526020015b60405180910390f35b3480156102d757600080fd5b506102eb6102e6366004613415565b6109d8565b005b3480156102f957600080fd5b506102eb61030836600461347a565b610dd5565b34801561031957600080fd5b506102eb610328366004613495565b610fee565b34801561033957600080fd5b506103426110ca565b6040516102c291906134ae565b34801561035b57600080fd5b5061036f61036a3660046134c2565b6110e8565b6040519081526020016102c2565b34801561038957600080fd5b5061036f610398366004613495565b61111d565b3480156103a957600080fd5b506102eb6103b8366004613495565b61113d565b3480156103c957600080fd5b506103426111cd565b3480156103de57600080fd5b506102eb6103ed3660046134ec565b6111eb565b3480156103fe57600080fd5b5061036f61040d3660046134c2565b61120d565b34801561041e57600080fd5b506102eb61042d3660046134ec565b611339565b34801561043e57600080fd5b5061036f611371565b34801561045357600080fd5b506102eb61046236600461347a565b611386565b34801561047357600080fd5b506102b6610482366004613495565b611480565b34801561049357600080fd5b506102eb6104a236600461347a565b61153a565b3480156104b357600080fd5b506102b66104c2366004613495565b611623565b6102eb6104d536600461352e565b6116c0565b3480156104e657600080fd5b5061036f6104f5366004613495565b6116df565b34801561050657600080fd5b5061036f61175d565b34801561051b57600080fd5b506040805180820190915260018152601960f91b60208201525b6040516102c29190613613565b34801561054e57600080fd5b5061036f61055d366004613495565b61177a565b34801561056e57600080fd5b506102eb61057d36600461347a565b61179a565b34801561058e57600080fd5b506102eb61059d36600461347a565b611883565b3480156105ae57600080fd5b506102eb6105bd366004613646565b611975565b3480156105ce57600080fd5b506102eb611ad6565b3480156105e357600080fd5b506102eb6105f2366004613682565b611b77565b34801561060357600080fd5b5061036f611c7d565b34801561061857600080fd5b5061034261062736600461347a565b611c92565b34801561063857600080fd5b506102eb610647366004613495565b611cc3565b34801561065857600080fd5b506102eb610667366004613495565b611db5565b34801561067857600080fd5b506102eb6106873660046134ec565b611e8f565b34801561069857600080fd5b506102eb6106a73660046136a4565b612111565b3480156106b857600080fd5b5061036f6122dd565b3480156106cd57600080fd5b5061036f6106dc366004613495565b6122f2565b3480156106ed57600080fd5b506102eb6106fc366004613495565b612312565b34801561070d57600080fd5b50610342612406565b34801561072257600080fd5b506102b66107313660046134ec565b612421565b34801561074257600080fd5b5061036f6107513660046134c2565b612457565b34801561076257600080fd5b5061036f600081565b34801561077757600080fd5b5061078061248c565b6040516102c291906136f7565b34801561079957600080fd5b50610535604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156107ca57600080fd5b506102eb6107d936600461347a565b6124f8565b3480156107ea57600080fd5b5061036f6125b1565b3480156107ff57600080fd5b5061036f60008051602061393f83398151915281565b34801561082157600080fd5b5061036f6125c6565b34801561083657600080fd5b5061036f6125db565b34801561084b57600080fd5b506102eb61085a3660046134ec565b6125f0565b34801561086b57600080fd5b506102b661087a36600461347a565b61260c565b34801561088b57600080fd5b506102eb61089a366004613495565b61263c565b3480156108ab57600080fd5b5061036f6108ba366004613495565b61270b565b3480156108cb57600080fd5b5061036f6108da366004613495565b612755565b3480156108eb57600080fd5b506102eb6108fa366004613682565b612775565b34801561090b57600080fd5b506102eb61091a366004613646565b612900565b34801561092b57600080fd5b5061036f61093a366004613495565b612a50565b34801561094b57600080fd5b506102eb61095a366004613682565b612a70565b34801561096b57600080fd5b506102b661097a366004613495565b612cda565b34801561098b57600080fd5b5061036f60008051602061397f83398151915281565b60006001600160e01b03198216637965db0b60e01b14806109d257506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006109e2612d1e565b805490915060ff600160401b82041615906001600160401b0316600081158015610a095750825b90506000826001600160401b03166001148015610a255750303b155b905081158015610a33575080155b15610a515760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610a7a57845460ff60401b1916600160401b1785555b6001600160a01b038a16610aee5760405162461bcd60e51b815260206004820152603060248201527f52656c6179657252657761726473506f6f6c3a2061646d696e2063616e6e6f7460448201526f206265207a65726f206164647265737360801b60648201526084015b60405180910390fd5b6001600160a01b038916610b605760405162461bcd60e51b815260206004820152603360248201527f52656c6179657252657761726473506f6f6c3a2075706772616465722063616e6044820152726e6f74206265207a65726f206164647265737360681b6064820152608401610ae5565b6001600160a01b038816610bce5760405162461bcd60e51b815260206004820152602f60248201527f52656c6179657252657761726473506f6f6c3a20623374722063616e6e6f742060448201526e6265207a65726f206164647265737360881b6064820152608401610ae5565b6001600160a01b038716610c415760405162461bcd60e51b815260206004820152603460248201527f52656c6179657252657761726473506f6f6c3a20656d697373696f6e732063616044820152736e6e6f74206265207a65726f206164647265737360601b6064820152608401610ae5565b6001600160a01b038616610cbc5760405162461bcd60e51b815260206004820152603c60248201527f52656c6179657252657761726473506f6f6c3a2078416c6c6f636174696f6e5660448201527b6f74696e672063616e6e6f74206265207a65726f206164647265737360201b6064820152608401610ae5565b610cc4612d42565b610ccc612d4c565b610cd4612d42565b610cdf60008b612d5c565b50610cf860008051602061397f8339815191528a612d5c565b50610d1160008051602061393f8339815191528b612d5c565b506000610d1c612dfd565b80546001600160a01b03808c166001600160a01b0319928316178355600180840180548d8416908516179055600284018054928c1692909316919091179091556003600b830155600c820155600a60108201556064601182015568056bc75e2d63100000601282015562069780600f90910155508315610dc957845460ff60401b1916855560405160008051602061395f83398151915290610dc090600190613744565b60405180910390a15b50505050505050505050565b6001600160a01b0381163314801590610e035750610e0160008051602061393f83398151915233612421565b155b8015610e175750610e15600033612421565b155b15610e39573381604051630147b5b160e31b8152600401610ae5929190613758565b6000610e43612dfd565b6001600160a01b0383166000908152600d8201602052604090205490915060ff16610e83578160405163138cb58960e31b8152600401610ae591906134ae565b6001600160a01b0382166000908152600d820160205260408120805460ff191690555b600e820154811015610fb557826001600160a01b031682600e018281548110610ed157610ed1613772565b6000918252602090912001546001600160a01b031603610fa357600e82018054610efd9060019061379e565b81548110610f0d57610f0d613772565b600091825260209091200154600e830180546001600160a01b039092169183908110610f3b57610f3b613772565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600e01805480610f7c57610f7c6137b1565b600082815260209020810160001990810180546001600160a01b0319169055019055610fb5565b80610fad816137c7565b915050610ea6565b506040516001600160a01b038316907f490a66cc56c789979052c7052fc0c10a6c4627d8e6165caec80db97a4c38352190600090a25050565b60008051602061393f8339815191526110078133612421565b806110185750611018600033612421565b6110345760405162461bcd60e51b8152600401610ae5906137e0565b81600003611072576040516305519d6f60e51b815260206004820152600a6024820152691d9bdd1955d95a59da1d60b21b6044820152606401610ae5565b600061107c612dfd565b600b8101805490859055604051919250907fc6d810f6c3aa465110416db0d540c72fcfe818503d1580fd90df38a482f81af8906110bc908690849061383d565b60405180910390a150505050565b6000806110d5612dfd565b600201546001600160a01b031692915050565b6000806110f3612dfd565b6000938452600401602090815260408085206001600160a01b039690961685529490525050205490565b600080611128612e21565b60009384526020525050604090206001015490565b60008051602061393f8339815191526111568133612421565b806111675750611167600033612421565b6111835760405162461bcd60e51b8152600401610ae5906137e0565b600061118d612dfd565b600f8101805490859055604051919250907f9f49ab705704ba5579e12282116057bb42856ad21fc913b1786bf1effc722b8d906110bc908690849061383d565b6000806111d8612dfd565b600101546001600160a01b031692915050565b6111f48261111d565b6111fd81612e45565b6112078383612d5c565b50505050565b600080611218612dfd565b604051631e804e7760e11b8152600481018590529091503090633d009cee90602401602060405180830381865afa158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b919061384b565b6112895760009150506109d2565b600083815260088201602090815260408083206001600160a01b038816845290915290205460ff16156112c05760009150506109d2565b600083815260058201602090815260408083206001600160a01b03881684528252808320548684526007850183528184205460038601909352922054821580611307575081155b156113195760009450505050506109d2565b81611324848361386d565b61132e9190613884565b979650505050505050565b6001600160a01b03811633146113625760405163334bd91960e11b815260040160405180910390fd5b61136c8282612e52565b505050565b60008061137c612dfd565b6012015492915050565b60008051602061393f83398151915261139f8133612421565b806113b057506113b0600033612421565b6113cc5760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b03821661141e576040516305519d6f60e51b815260206004820152601860248201527778416c6c6f636174696f6e566f74696e674164647265737360401b6044820152606401610ae5565b6000611428612dfd565b6002810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a350505050565b60008061148b612dfd565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa9250505080156114f3575060408051601f3d908101601f191682019092526114f09181019061384b565b60015b6115005750600092915050565b8061150f575060009392505050565b506000928352600781016020908152604080852054600a909301909152909220549190911015919050565b60008051602061393f8339815191526115538133612421565b806115645750611564600033612421565b6115805760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b0382166115c5576040516305519d6f60e51b815260206004820152600b60248201526a623374724164647265737360a81b6044820152606401610ae5565b60006115cf612dfd565b80546001600160a01b038581166001600160a01b03198316811784556040519394509116918291907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a350505050565b60008061162e612dfd565b60028101546040516368377f6d60e11b8152600481018690529192506000916001600160a01b039091169063d06efeda906024015b602060405180830381865afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a491906138a6565b905081600f0154816116b691906138bf565b4310949350505050565b6116c8612eca565b6116d182612f6f565b6116db8282612f87565b5050565b6000806116ea612dfd565b6000848152600782016020908152604080832054600a8501909252909120549192509081811061171f57506000949350505050565b600061172b828461379e565b9050600084600c015485600b015461174391906138bf565b905060006117518284613884565b98975050505050505050565b600061176761303b565b5060008051602061399f83398151915290565b600080611785612dfd565b60009384526003016020525050604090205490565b6001600160a01b0381166117c1576040516305519d6f60e51b8152600401610ae5906138d2565b60006117cb612dfd565b6001600160a01b0383166000908152600d8201602052604090205490915060ff161561180c5781604051634df9fbcf60e01b8152600401610ae591906134ae565b6001600160a01b0382166000818152600d830160209081526040808320805460ff19166001908117909155600e860180549182018155845291832090910180546001600160a01b03191684179055517fc3b80e866c8bfbccbded69771f510856bb44660d40a0b760d9f0781728543e4e9190a25050565b60008051602061393f83398151915261189c8133612421565b806118ad57506118ad600033612421565b6118c95760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b038216611913576040516305519d6f60e51b815260206004820152601060248201526f656d697373696f6e734164647265737360801b6044820152606401610ae5565b600061191d612dfd565b6001810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907fee0bb99897b3f409686cb6e56601a38cea38e9e00d9b28752b3be7b28ea8b0ad90600090a350505050565b600061197f612dfd565b905061198a84612cda565b6119945750505050565b826001600160a01b0316826001600160a01b031603611a2e5760405162461bcd60e51b815260206004820152605c60248201526000805160206139df83398151915260448201527f75736572732063616e6e6f7420636c61696d20666f72207468656d73656c766560648201527b1cc8191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd960221b608482015260a401610ae5565b6001600160a01b0382166000908152600d8201602052604090205460ff16611acc5760405162461bcd60e51b81526020600482015260576024820152600080516020613a1f83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e6720636c606482015276185a5b4819585c9b1e481858d8d95cdcc81c195c9a5bd9604a1b608482015260a401610ae5565b6112078383613084565b60026000611ae2612d1e565b8054909150600160401b900460ff1680611b09575080546001600160401b03808416911610155b15611b275760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1760ff60401b1916815560405160008051602061395f83398151915290611b6b908490613744565b60405180910390a15050565b60008051602061393f833981519152611b908133612421565b80611ba15750611ba1600033612421565b611bbd5760405162461bcd60e51b8152600401610ae5906137e0565b6000611bc7612dfd565b9050611bd483600261386d565b6000858152600683016020526040902055600c810154600b820154611bf991906138bf565b611c03908461386d565b600085815260078301602081815260408084208590556006860182529283902054918152600e85015483518881529182019290925291820192909252606081019190915284907f0cfbd04f27dfdd7116e3d63de583a7cc8a337032164396bb6d7cac1deffbe415906080015b60405180910390a250505050565b600080611c88612dfd565b600f015492915050565b600080611c9d612dfd565b6001600160a01b0393841660009081526013909101602052604090205490921692915050565b60008051602061393f833981519152611cdc8133612421565b80611ced5750611ced600033612421565b611d095760405162461bcd60e51b8152600401610ae5906137e0565b600082118015611d1a575060328211155b611d6b5760405162461bcd60e51b815260206004820152602e60248201526000805160206139ff83398151915260448201526d3e203020616e64203c3d2035302560901b6064820152608401610ae5565b6000611d75612dfd565b60108101805490859055604051919250907f27af4d4dc613005fec6b04e77e25da6e4959b86d30ed1919104596e9211198ee906110bc908690849061383d565b60008051602061393f833981519152611dce8133612421565b80611ddf5750611ddf600033612421565b611dfb5760405162461bcd60e51b8152600401610ae5906137e0565b60008211611e455760405162461bcd60e51b815260206004820152602360248201526000805160206139ff83398151915260448201526203e20360ec1b6064820152608401610ae5565b6000611e4f612dfd565b60128101805490859055604051919250907f3fbd83025056799b6fe5bc1a011ec202bfc22364cb9adb116bb3c71cf47990a6906110bc908690849061383d565b611e97613117565b6000611ea1612dfd565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa158015611eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f11919061384b565b611f315760405163652d87c560e01b815260048101849052602401610ae5565b600083815260088201602090815260408083206001600160a01b038616845290915290205460ff1615611f7b57818360405163ae19b57760e01b8152600401610ae59291906138f3565b60405163338111e760e01b8152600090309063338111e790611fa390869088906004016138f3565b602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906138a6565b90508060000361200b578284604051634c8463db60e01b8152600401610ae59291906138f3565b600084815260088301602090815260408083206001600160a01b038088168552925291829020805460ff191660011790558354915163a9059cbb60e01b815291169063a9059cbb9061206390869085906004016138f3565b6020604051808303816000875af1158015612082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a6919061384b565b6120c3576040516312171d8360e31b815260040160405180910390fd5b83836001600160a01b03167f930b7d519086654efd667eab36b878a04585f80f21637ea555a4317bdc531973836040516120ff91815260200190565b60405180910390a350506116db61314d565b60008051602061393f83398151915261212a8133612421565b8061213b575061213b600033612421565b6121575760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b03851661217e576040516305519d6f60e51b8152600401610ae5906138d2565b6000612188612dfd565b905060008084600181111561219f5761219f61390c565b146121ae5781600c01546121b4565b81600b01545b600086815260048401602090815260408083206001600160a01b038c16845290915281208054929350906121e7836137c7565b909155505060008581526009830160205260408120805491612208836137c7565b9091555050600085815260058301602090815260408083206001600160a01b038b168452909152812080548392906122419084906138bf565b90915550506000858152600a83016020526040812080548392906122669084906138bf565b9091555050600085815260048301602090815260408083206001600160a01b038b811680865291909352928190205490518893928a1692917f8ba2985939970b62349519dc163ea364f1724ad045a94aa004922836e951700d916122cc9190879061383d565b60405180910390a450505050505050565b6000806122e8612dfd565b6011015492915050565b6000806122fd612dfd565b60009384526006016020525050604090205490565b60008051602061393f83398151915261232b8133612421565b8061233c575061233c600033612421565b6123585760405162461bcd60e51b8152600401610ae5906137e0565b600082116123bc5760405162461bcd60e51b815260206004820152602b60248201527f52656c6179657252657761726473506f6f6c3a2044656e6f6d696e61746f722060448201526a06d757374206265203e20360ac1b6064820152608401610ae5565b60006123c6612dfd565b60118101805490859055604051919250907f9e1a0a1bebf6adfae16d1d3786df0b65ff4af6055dbefbc87da9529a239b9bf7906110bc908690849061383d565b600080612411612dfd565b546001600160a01b031692915050565b60008061242c612e21565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080612462612dfd565b6000938452600501602090815260408085206001600160a01b039690961685529490525050205490565b60606000612498612dfd565b600e81018054604080516020808402820181019092528281529394508301828280156124ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116124cf575b505050505091505090565b6000612502612dfd565b90506001600160a01b0382161580159061253757506001600160a01b0382166000908152600d8201602052604090205460ff16155b15612557578160405163138cb58960e31b8152600401610ae591906134ae565b33600081815260138301602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519092917f559697bf1386234c571f4d273988a5c0ddee76b32311191c33a667e4936f9ad691a35050565b6000806125bc612dfd565b6010015492915050565b6000806125d1612dfd565b600c015492915050565b6000806125e6612dfd565b600b015492915050565b6125f98261111d565b61260281612e45565b6112078383612e52565b600080612617612dfd565b6001600160a01b039093166000908152600d9093016020525050604090205460ff1690565b60008051602061393f8339815191526126558133612421565b806126665750612666600033612421565b6126825760405162461bcd60e51b8152600401610ae5906137e0565b816000036126c1576040516305519d6f60e51b815260206004820152600b60248201526a18db185a5b55d95a59da1d60aa1b6044820152606401610ae5565b60006126cb612dfd565b600c8101805490859055604051919250907fac463d979acc1ce3fe80c999b5375a1630b37589687e2a327a1d659787696c6e906110bc908690849061383d565b600080612716612dfd565b6010810154601182015491925090600081612731848861386d565b61273b9190613884565b905061274b81856012015461315e565b9695505050505050565b600080612760612dfd565b6000938452600a016020525050604090205490565b60008051602061393f83398151915261278e8133612421565b8061279f575061279f600033612421565b6127bb5760405162461bcd60e51b8152600401610ae5906137e0565b826000036127f5576040516305519d6f60e51b8152602060048201526006602482015265185b5bdd5b9d60d21b6044820152606401610ae5565b60006127ff612dfd565b80546040516323b872dd60e01b8152336004820152306024820152604481018790529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287a919061384b565b612897576040516312171d8360e31b815260040160405180910390fd5b6000838152600382016020526040812080548692906128b79084906138bf565b909155505060008381526003820160205260409081902054905184917fc47834cdb0191cfa2b90f6ae336198ff404f06226170200c57ab15ade0510ae691611c6f91889161383d565b600061290a612dfd565b905061291584611623565b61291f5750505050565b826001600160a01b0316826001600160a01b0316036129b85760405162461bcd60e51b815260206004820152605b60248201526000805160206139df83398151915260448201527f75736572732063616e6e6f7420766f746520666f72207468656d73656c76657360648201527a08191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd9602a1b608482015260a401610ae5565b6001600160a01b0382166000908152600d8201602052604090205460ff16611acc5760405162461bcd60e51b81526020600482015260516024820152600080516020613a1f83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e672065616064820152701c9b1e481858d8d95cdcc81c195c9a5bd9607a1b608482015260a401610ae5565b600080612a5b612dfd565b60009384526007016020525050604090205490565b60008051602061393f833981519152612a898133612421565b80612a9a5750612a9a600033612421565b612ab65760405162461bcd60e51b8152600401610ae5906137e0565b81600003612af3576040516305519d6f60e51b81526020600482015260096024820152681d5cd95c90dbdd5b9d60ba1b6044820152606401610ae5565b6000612afd612dfd565b90506000612b0c84600261386d565b9050600082600c015483600b0154612b2491906138bf565b612b2e908661386d565b6000878152600685016020526040902054909150821115612ba55760405162461bcd60e51b815260206004820152603d60248201526000805160206139bf83398151915260448201527f65206d6f726520616374696f6e73207468616e20617661696c61626c650000006064820152608401610ae5565b6000868152600784016020526040902054811115612c285760405162461bcd60e51b815260206004820152604660248201526000805160206139bf83398151915260448201527f65206d6f726520776569676874656420616374696f6e73207468616e20617661606482015265696c61626c6560d01b608482015260a401610ae5565b600086815260068401602052604081208054849290612c4890849061379e565b9091555050600086815260078401602052604081208054839290612c6d90849061379e565b90915550506000868152600684016020908152604080832054600787018352928190205481518981529283019390935281019190915286907fdc97cd873d9883808c7cbb3b9fdd91ec6437deb4377e651606aff5aaa7be08379060600160405180910390a2505050505050565b600080612ce5612dfd565b600281015460405163d3a368bd60e01b8152600481018690529192506000916001600160a01b039091169063d3a368bd90602401611663565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613176565b565b612d54613176565b612d4a61319b565b600080612d67612e21565b9050612d738484612421565b612df3576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612da93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d2565b60009150506109d2565b7f33676f94b2c7694b38dc9f1f29c59bfbb522294615c1bff34717ad1fa892600090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b612e4f81336131a3565b50565b600080612e5d612e21565b9050612e698484612421565b15612df3576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d2565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612f5157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612f4560008051602061399f833981519152546001600160a01b031690565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061397f8339815191526116db81612e45565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612fe1575060408051601f3d908101601f19168201909252612fde918101906138a6565b60015b6130005781604051634c9c8ce360e01b8152600401610ae591906134ae565b60008051602061399f833981519152811461303157604051632a87526960e21b815260048101829052602401610ae5565b61136c83836131ce565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061308e612dfd565b6001600160a01b0380851660009081526013830160205260409020549192501680158015906130d757506001600160a01b0381166000908152600d8301602052604090205460ff165b80156130f55750806001600160a01b0316836001600160a01b031614155b15611207578281604051636188505f60e11b8152600401610ae5929190613758565b6000613121613224565b80549091506001190161314757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000613157613224565b6001905550565b600081831061316d578161316f565b825b9392505050565b61317e613248565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b61314d613176565b6131ad8282612421565b6116db57808260405163e2517d3f60e01b8152600401610ae59291906138f3565b6131d782613262565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561321c5761136c82826132be565b6116db613334565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6000613252612d1e565b54600160401b900460ff16919050565b806001600160a01b03163b60000361328f5780604051634c9c8ce360e01b8152600401610ae591906134ae565b60008051602061399f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132db9190613922565b600060405180830381855af49150503d8060008114613316576040519150601f19603f3d011682016040523d82523d6000602084013e61331b565b606091505b509150915061332b858383613353565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b60608261336857613363826133a6565b61316f565b815115801561337f57506001600160a01b0384163b155b1561339f5783604051639996b31560e01b8152600401610ae591906134ae565b5092915050565b8051156133b65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000602082840312156133e157600080fd5b81356001600160e01b03198116811461316f57600080fd5b80356001600160a01b038116811461341057600080fd5b919050565b600080600080600060a0868803121561342d57600080fd5b613436866133f9565b9450613444602087016133f9565b9350613452604087016133f9565b9250613460606087016133f9565b915061346e608087016133f9565b90509295509295909350565b60006020828403121561348c57600080fd5b61316f826133f9565b6000602082840312156134a757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156134d557600080fd5b6134de836133f9565b946020939093013593505050565b600080604083850312156134ff57600080fd5b8235915061350f602084016133f9565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561354157600080fd5b61354a836133f9565b915060208301356001600160401b038082111561356657600080fd5b818501915085601f83011261357a57600080fd5b81358181111561358c5761358c613518565b604051601f8201601f19908116603f011681019083821181831017156135b4576135b4613518565b816040528281528860208487010111156135cd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561360a5781810151838201526020016135f2565b50506000910152565b60208152600082518060208401526136328160408501602087016135ef565b601f01601f19169190910160400192915050565b60008060006060848603121561365b57600080fd5b8335925061366b602085016133f9565b9150613679604085016133f9565b90509250925092565b6000806040838503121561369557600080fd5b50508035926020909101359150565b600080600080608085870312156136ba57600080fd5b6136c3856133f9565b93506136d1602086016133f9565b9250604085013591506060850135600281106136ec57600080fd5b939692955090935050565b6020808252825182820181905260009190848201906040850190845b818110156137385783516001600160a01b031683529284019291840191600101613713565b50909695505050505050565b6001600160401b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156109d2576109d2613788565b634e487b7160e01b600052603160045260246000fd5b6000600182016137d9576137d9613788565b5060010190565b6020808252603d908201527f52656c6179657252657761726473506f6f6c3a2063616c6c6572206d7573742060408201527f686176652061646d696e206f7220706f6f6c2061646d696e20726f6c65000000606082015260800190565b918252602082015260400190565b60006020828403121561385d57600080fd5b8151801515811461316f57600080fd5b80820281158282048414176109d2576109d2613788565b6000826138a157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156138b857600080fd5b5051919050565b808201808211156109d2576109d2613788565b6020808252600790820152663932b630bcb2b960c91b604082015260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052602160045260246000fd5b600082516139348184602087016135ef565b919091019291505056fe24e583e35a20f9ecfc1572e7cb66bcc18ad3cd1650ec40dbf6ad2290e553a9fac7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc52656c6179657252657761726473506f6f6c3a2063616e6e6f7420726564756352656c6179657252657761726473506f6f6c3a206175746f2d766f74696e672052656c6179657252657761726473506f6f6c3a20466565206d7573742062652052656c6179657252657761726473506f6f6c3a2063616c6c6572206973206e6fa2646970667358221220ddbd4d19864227fe85e4f1226986adc0757a27a037d85bc4bedb7063504563b564736f6c63430008140033",
  "deployedBytecode": "0x6080604052600436106102915760003560e01c806301ffc9a7146102965780631459457a146102cb57806314d92307146102ed578063189ca3161461030d5780631bc3a6731461032d578063241f9e2b1461034f578063248a9ca31461037d57806324a697a31461039d57806325d3155e146103bd5780632f2ff15d146103d2578063338111e7146103f257806336568abe1461041257806336a7c134146104325780633bb18a76146104475780633d009cee1461046757806347b0b33e1461048757806348c2bd78146104a75780634f1ef286146104c75780634f6981ee146104da57806352d1902d146104fa57806354fd4d501461050f578063552164ee1461054257806356f1612f1461056257806357181609146105825780635ae1cd14146105a25780635cd8a76b146105c25780635f72790a146105d757806362f29478146105f7578063650e8a761461060c578063675d0f8d1461062c5780636bb07c731461064c5780636c7b69cb1461066c5780636cf88e731461068c5780637f5e98bd146106ac57806385530201146106c157806389a96d35146106e15780638d2340a01461070157806391d14854146107165780639858b78a14610736578063a217fddf14610756578063ac4aa16b1461076b578063ad3cb1cc1461078d578063af54c53a146107be578063b7fe075a146107de578063b8f6dba7146107f3578063be9412df14610815578063d428cffc1461082a578063d547741f1461083f578063d56843921461085f578063d94290e51461087f578063dc404a0e1461089f578063df171b0c146108bf578063e2bbb158146108df578063e5ed920b146108ff578063e78168b51461091f578063e7dfe6721461093f578063f5e57b391461095f578063f72c0d8b1461097f575b600080fd5b3480156102a257600080fd5b506102b66102b13660046133cf565b6109a1565b60405190151581526020015b60405180910390f35b3480156102d757600080fd5b506102eb6102e6366004613415565b6109d8565b005b3480156102f957600080fd5b506102eb61030836600461347a565b610dd5565b34801561031957600080fd5b506102eb610328366004613495565b610fee565b34801561033957600080fd5b506103426110ca565b6040516102c291906134ae565b34801561035b57600080fd5b5061036f61036a3660046134c2565b6110e8565b6040519081526020016102c2565b34801561038957600080fd5b5061036f610398366004613495565b61111d565b3480156103a957600080fd5b506102eb6103b8366004613495565b61113d565b3480156103c957600080fd5b506103426111cd565b3480156103de57600080fd5b506102eb6103ed3660046134ec565b6111eb565b3480156103fe57600080fd5b5061036f61040d3660046134c2565b61120d565b34801561041e57600080fd5b506102eb61042d3660046134ec565b611339565b34801561043e57600080fd5b5061036f611371565b34801561045357600080fd5b506102eb61046236600461347a565b611386565b34801561047357600080fd5b506102b6610482366004613495565b611480565b34801561049357600080fd5b506102eb6104a236600461347a565b61153a565b3480156104b357600080fd5b506102b66104c2366004613495565b611623565b6102eb6104d536600461352e565b6116c0565b3480156104e657600080fd5b5061036f6104f5366004613495565b6116df565b34801561050657600080fd5b5061036f61175d565b34801561051b57600080fd5b506040805180820190915260018152601960f91b60208201525b6040516102c29190613613565b34801561054e57600080fd5b5061036f61055d366004613495565b61177a565b34801561056e57600080fd5b506102eb61057d36600461347a565b61179a565b34801561058e57600080fd5b506102eb61059d36600461347a565b611883565b3480156105ae57600080fd5b506102eb6105bd366004613646565b611975565b3480156105ce57600080fd5b506102eb611ad6565b3480156105e357600080fd5b506102eb6105f2366004613682565b611b77565b34801561060357600080fd5b5061036f611c7d565b34801561061857600080fd5b5061034261062736600461347a565b611c92565b34801561063857600080fd5b506102eb610647366004613495565b611cc3565b34801561065857600080fd5b506102eb610667366004613495565b611db5565b34801561067857600080fd5b506102eb6106873660046134ec565b611e8f565b34801561069857600080fd5b506102eb6106a73660046136a4565b612111565b3480156106b857600080fd5b5061036f6122dd565b3480156106cd57600080fd5b5061036f6106dc366004613495565b6122f2565b3480156106ed57600080fd5b506102eb6106fc366004613495565b612312565b34801561070d57600080fd5b50610342612406565b34801561072257600080fd5b506102b66107313660046134ec565b612421565b34801561074257600080fd5b5061036f6107513660046134c2565b612457565b34801561076257600080fd5b5061036f600081565b34801561077757600080fd5b5061078061248c565b6040516102c291906136f7565b34801561079957600080fd5b50610535604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156107ca57600080fd5b506102eb6107d936600461347a565b6124f8565b3480156107ea57600080fd5b5061036f6125b1565b3480156107ff57600080fd5b5061036f60008051602061393f83398151915281565b34801561082157600080fd5b5061036f6125c6565b34801561083657600080fd5b5061036f6125db565b34801561084b57600080fd5b506102eb61085a3660046134ec565b6125f0565b34801561086b57600080fd5b506102b661087a36600461347a565b61260c565b34801561088b57600080fd5b506102eb61089a366004613495565b61263c565b3480156108ab57600080fd5b5061036f6108ba366004613495565b61270b565b3480156108cb57600080fd5b5061036f6108da366004613495565b612755565b3480156108eb57600080fd5b506102eb6108fa366004613682565b612775565b34801561090b57600080fd5b506102eb61091a366004613646565b612900565b34801561092b57600080fd5b5061036f61093a366004613495565b612a50565b34801561094b57600080fd5b506102eb61095a366004613682565b612a70565b34801561096b57600080fd5b506102b661097a366004613495565b612cda565b34801561098b57600080fd5b5061036f60008051602061397f83398151915281565b60006001600160e01b03198216637965db0b60e01b14806109d257506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006109e2612d1e565b805490915060ff600160401b82041615906001600160401b0316600081158015610a095750825b90506000826001600160401b03166001148015610a255750303b155b905081158015610a33575080155b15610a515760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610a7a57845460ff60401b1916600160401b1785555b6001600160a01b038a16610aee5760405162461bcd60e51b815260206004820152603060248201527f52656c6179657252657761726473506f6f6c3a2061646d696e2063616e6e6f7460448201526f206265207a65726f206164647265737360801b60648201526084015b60405180910390fd5b6001600160a01b038916610b605760405162461bcd60e51b815260206004820152603360248201527f52656c6179657252657761726473506f6f6c3a2075706772616465722063616e6044820152726e6f74206265207a65726f206164647265737360681b6064820152608401610ae5565b6001600160a01b038816610bce5760405162461bcd60e51b815260206004820152602f60248201527f52656c6179657252657761726473506f6f6c3a20623374722063616e6e6f742060448201526e6265207a65726f206164647265737360881b6064820152608401610ae5565b6001600160a01b038716610c415760405162461bcd60e51b815260206004820152603460248201527f52656c6179657252657761726473506f6f6c3a20656d697373696f6e732063616044820152736e6e6f74206265207a65726f206164647265737360601b6064820152608401610ae5565b6001600160a01b038616610cbc5760405162461bcd60e51b815260206004820152603c60248201527f52656c6179657252657761726473506f6f6c3a2078416c6c6f636174696f6e5660448201527b6f74696e672063616e6e6f74206265207a65726f206164647265737360201b6064820152608401610ae5565b610cc4612d42565b610ccc612d4c565b610cd4612d42565b610cdf60008b612d5c565b50610cf860008051602061397f8339815191528a612d5c565b50610d1160008051602061393f8339815191528b612d5c565b506000610d1c612dfd565b80546001600160a01b03808c166001600160a01b0319928316178355600180840180548d8416908516179055600284018054928c1692909316919091179091556003600b830155600c820155600a60108201556064601182015568056bc75e2d63100000601282015562069780600f90910155508315610dc957845460ff60401b1916855560405160008051602061395f83398151915290610dc090600190613744565b60405180910390a15b50505050505050505050565b6001600160a01b0381163314801590610e035750610e0160008051602061393f83398151915233612421565b155b8015610e175750610e15600033612421565b155b15610e39573381604051630147b5b160e31b8152600401610ae5929190613758565b6000610e43612dfd565b6001600160a01b0383166000908152600d8201602052604090205490915060ff16610e83578160405163138cb58960e31b8152600401610ae591906134ae565b6001600160a01b0382166000908152600d820160205260408120805460ff191690555b600e820154811015610fb557826001600160a01b031682600e018281548110610ed157610ed1613772565b6000918252602090912001546001600160a01b031603610fa357600e82018054610efd9060019061379e565b81548110610f0d57610f0d613772565b600091825260209091200154600e830180546001600160a01b039092169183908110610f3b57610f3b613772565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600e01805480610f7c57610f7c6137b1565b600082815260209020810160001990810180546001600160a01b0319169055019055610fb5565b80610fad816137c7565b915050610ea6565b506040516001600160a01b038316907f490a66cc56c789979052c7052fc0c10a6c4627d8e6165caec80db97a4c38352190600090a25050565b60008051602061393f8339815191526110078133612421565b806110185750611018600033612421565b6110345760405162461bcd60e51b8152600401610ae5906137e0565b81600003611072576040516305519d6f60e51b815260206004820152600a6024820152691d9bdd1955d95a59da1d60b21b6044820152606401610ae5565b600061107c612dfd565b600b8101805490859055604051919250907fc6d810f6c3aa465110416db0d540c72fcfe818503d1580fd90df38a482f81af8906110bc908690849061383d565b60405180910390a150505050565b6000806110d5612dfd565b600201546001600160a01b031692915050565b6000806110f3612dfd565b6000938452600401602090815260408085206001600160a01b039690961685529490525050205490565b600080611128612e21565b60009384526020525050604090206001015490565b60008051602061393f8339815191526111568133612421565b806111675750611167600033612421565b6111835760405162461bcd60e51b8152600401610ae5906137e0565b600061118d612dfd565b600f8101805490859055604051919250907f9f49ab705704ba5579e12282116057bb42856ad21fc913b1786bf1effc722b8d906110bc908690849061383d565b6000806111d8612dfd565b600101546001600160a01b031692915050565b6111f48261111d565b6111fd81612e45565b6112078383612d5c565b50505050565b600080611218612dfd565b604051631e804e7760e11b8152600481018590529091503090633d009cee90602401602060405180830381865afa158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b919061384b565b6112895760009150506109d2565b600083815260088201602090815260408083206001600160a01b038816845290915290205460ff16156112c05760009150506109d2565b600083815260058201602090815260408083206001600160a01b03881684528252808320548684526007850183528184205460038601909352922054821580611307575081155b156113195760009450505050506109d2565b81611324848361386d565b61132e9190613884565b979650505050505050565b6001600160a01b03811633146113625760405163334bd91960e11b815260040160405180910390fd5b61136c8282612e52565b505050565b60008061137c612dfd565b6012015492915050565b60008051602061393f83398151915261139f8133612421565b806113b057506113b0600033612421565b6113cc5760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b03821661141e576040516305519d6f60e51b815260206004820152601860248201527778416c6c6f636174696f6e566f74696e674164647265737360401b6044820152606401610ae5565b6000611428612dfd565b6002810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a350505050565b60008061148b612dfd565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa9250505080156114f3575060408051601f3d908101601f191682019092526114f09181019061384b565b60015b6115005750600092915050565b8061150f575060009392505050565b506000928352600781016020908152604080852054600a909301909152909220549190911015919050565b60008051602061393f8339815191526115538133612421565b806115645750611564600033612421565b6115805760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b0382166115c5576040516305519d6f60e51b815260206004820152600b60248201526a623374724164647265737360a81b6044820152606401610ae5565b60006115cf612dfd565b80546001600160a01b038581166001600160a01b03198316811784556040519394509116918291907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a350505050565b60008061162e612dfd565b60028101546040516368377f6d60e11b8152600481018690529192506000916001600160a01b039091169063d06efeda906024015b602060405180830381865afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a491906138a6565b905081600f0154816116b691906138bf565b4310949350505050565b6116c8612eca565b6116d182612f6f565b6116db8282612f87565b5050565b6000806116ea612dfd565b6000848152600782016020908152604080832054600a8501909252909120549192509081811061171f57506000949350505050565b600061172b828461379e565b9050600084600c015485600b015461174391906138bf565b905060006117518284613884565b98975050505050505050565b600061176761303b565b5060008051602061399f83398151915290565b600080611785612dfd565b60009384526003016020525050604090205490565b6001600160a01b0381166117c1576040516305519d6f60e51b8152600401610ae5906138d2565b60006117cb612dfd565b6001600160a01b0383166000908152600d8201602052604090205490915060ff161561180c5781604051634df9fbcf60e01b8152600401610ae591906134ae565b6001600160a01b0382166000818152600d830160209081526040808320805460ff19166001908117909155600e860180549182018155845291832090910180546001600160a01b03191684179055517fc3b80e866c8bfbccbded69771f510856bb44660d40a0b760d9f0781728543e4e9190a25050565b60008051602061393f83398151915261189c8133612421565b806118ad57506118ad600033612421565b6118c95760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b038216611913576040516305519d6f60e51b815260206004820152601060248201526f656d697373696f6e734164647265737360801b6044820152606401610ae5565b600061191d612dfd565b6001810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907fee0bb99897b3f409686cb6e56601a38cea38e9e00d9b28752b3be7b28ea8b0ad90600090a350505050565b600061197f612dfd565b905061198a84612cda565b6119945750505050565b826001600160a01b0316826001600160a01b031603611a2e5760405162461bcd60e51b815260206004820152605c60248201526000805160206139df83398151915260448201527f75736572732063616e6e6f7420636c61696d20666f72207468656d73656c766560648201527b1cc8191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd960221b608482015260a401610ae5565b6001600160a01b0382166000908152600d8201602052604090205460ff16611acc5760405162461bcd60e51b81526020600482015260576024820152600080516020613a1f83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e6720636c606482015276185a5b4819585c9b1e481858d8d95cdcc81c195c9a5bd9604a1b608482015260a401610ae5565b6112078383613084565b60026000611ae2612d1e565b8054909150600160401b900460ff1680611b09575080546001600160401b03808416911610155b15611b275760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1760ff60401b1916815560405160008051602061395f83398151915290611b6b908490613744565b60405180910390a15050565b60008051602061393f833981519152611b908133612421565b80611ba15750611ba1600033612421565b611bbd5760405162461bcd60e51b8152600401610ae5906137e0565b6000611bc7612dfd565b9050611bd483600261386d565b6000858152600683016020526040902055600c810154600b820154611bf991906138bf565b611c03908461386d565b600085815260078301602081815260408084208590556006860182529283902054918152600e85015483518881529182019290925291820192909252606081019190915284907f0cfbd04f27dfdd7116e3d63de583a7cc8a337032164396bb6d7cac1deffbe415906080015b60405180910390a250505050565b600080611c88612dfd565b600f015492915050565b600080611c9d612dfd565b6001600160a01b0393841660009081526013909101602052604090205490921692915050565b60008051602061393f833981519152611cdc8133612421565b80611ced5750611ced600033612421565b611d095760405162461bcd60e51b8152600401610ae5906137e0565b600082118015611d1a575060328211155b611d6b5760405162461bcd60e51b815260206004820152602e60248201526000805160206139ff83398151915260448201526d3e203020616e64203c3d2035302560901b6064820152608401610ae5565b6000611d75612dfd565b60108101805490859055604051919250907f27af4d4dc613005fec6b04e77e25da6e4959b86d30ed1919104596e9211198ee906110bc908690849061383d565b60008051602061393f833981519152611dce8133612421565b80611ddf5750611ddf600033612421565b611dfb5760405162461bcd60e51b8152600401610ae5906137e0565b60008211611e455760405162461bcd60e51b815260206004820152602360248201526000805160206139ff83398151915260448201526203e20360ec1b6064820152608401610ae5565b6000611e4f612dfd565b60128101805490859055604051919250907f3fbd83025056799b6fe5bc1a011ec202bfc22364cb9adb116bb3c71cf47990a6906110bc908690849061383d565b611e97613117565b6000611ea1612dfd565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa158015611eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f11919061384b565b611f315760405163652d87c560e01b815260048101849052602401610ae5565b600083815260088201602090815260408083206001600160a01b038616845290915290205460ff1615611f7b57818360405163ae19b57760e01b8152600401610ae59291906138f3565b60405163338111e760e01b8152600090309063338111e790611fa390869088906004016138f3565b602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906138a6565b90508060000361200b578284604051634c8463db60e01b8152600401610ae59291906138f3565b600084815260088301602090815260408083206001600160a01b038088168552925291829020805460ff191660011790558354915163a9059cbb60e01b815291169063a9059cbb9061206390869085906004016138f3565b6020604051808303816000875af1158015612082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a6919061384b565b6120c3576040516312171d8360e31b815260040160405180910390fd5b83836001600160a01b03167f930b7d519086654efd667eab36b878a04585f80f21637ea555a4317bdc531973836040516120ff91815260200190565b60405180910390a350506116db61314d565b60008051602061393f83398151915261212a8133612421565b8061213b575061213b600033612421565b6121575760405162461bcd60e51b8152600401610ae5906137e0565b6001600160a01b03851661217e576040516305519d6f60e51b8152600401610ae5906138d2565b6000612188612dfd565b905060008084600181111561219f5761219f61390c565b146121ae5781600c01546121b4565b81600b01545b600086815260048401602090815260408083206001600160a01b038c16845290915281208054929350906121e7836137c7565b909155505060008581526009830160205260408120805491612208836137c7565b9091555050600085815260058301602090815260408083206001600160a01b038b168452909152812080548392906122419084906138bf565b90915550506000858152600a83016020526040812080548392906122669084906138bf565b9091555050600085815260048301602090815260408083206001600160a01b038b811680865291909352928190205490518893928a1692917f8ba2985939970b62349519dc163ea364f1724ad045a94aa004922836e951700d916122cc9190879061383d565b60405180910390a450505050505050565b6000806122e8612dfd565b6011015492915050565b6000806122fd612dfd565b60009384526006016020525050604090205490565b60008051602061393f83398151915261232b8133612421565b8061233c575061233c600033612421565b6123585760405162461bcd60e51b8152600401610ae5906137e0565b600082116123bc5760405162461bcd60e51b815260206004820152602b60248201527f52656c6179657252657761726473506f6f6c3a2044656e6f6d696e61746f722060448201526a06d757374206265203e20360ac1b6064820152608401610ae5565b60006123c6612dfd565b60118101805490859055604051919250907f9e1a0a1bebf6adfae16d1d3786df0b65ff4af6055dbefbc87da9529a239b9bf7906110bc908690849061383d565b600080612411612dfd565b546001600160a01b031692915050565b60008061242c612e21565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080612462612dfd565b6000938452600501602090815260408085206001600160a01b039690961685529490525050205490565b60606000612498612dfd565b600e81018054604080516020808402820181019092528281529394508301828280156124ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116124cf575b505050505091505090565b6000612502612dfd565b90506001600160a01b0382161580159061253757506001600160a01b0382166000908152600d8201602052604090205460ff16155b15612557578160405163138cb58960e31b8152600401610ae591906134ae565b33600081815260138301602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519092917f559697bf1386234c571f4d273988a5c0ddee76b32311191c33a667e4936f9ad691a35050565b6000806125bc612dfd565b6010015492915050565b6000806125d1612dfd565b600c015492915050565b6000806125e6612dfd565b600b015492915050565b6125f98261111d565b61260281612e45565b6112078383612e52565b600080612617612dfd565b6001600160a01b039093166000908152600d9093016020525050604090205460ff1690565b60008051602061393f8339815191526126558133612421565b806126665750612666600033612421565b6126825760405162461bcd60e51b8152600401610ae5906137e0565b816000036126c1576040516305519d6f60e51b815260206004820152600b60248201526a18db185a5b55d95a59da1d60aa1b6044820152606401610ae5565b60006126cb612dfd565b600c8101805490859055604051919250907fac463d979acc1ce3fe80c999b5375a1630b37589687e2a327a1d659787696c6e906110bc908690849061383d565b600080612716612dfd565b6010810154601182015491925090600081612731848861386d565b61273b9190613884565b905061274b81856012015461315e565b9695505050505050565b600080612760612dfd565b6000938452600a016020525050604090205490565b60008051602061393f83398151915261278e8133612421565b8061279f575061279f600033612421565b6127bb5760405162461bcd60e51b8152600401610ae5906137e0565b826000036127f5576040516305519d6f60e51b8152602060048201526006602482015265185b5bdd5b9d60d21b6044820152606401610ae5565b60006127ff612dfd565b80546040516323b872dd60e01b8152336004820152306024820152604481018790529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287a919061384b565b612897576040516312171d8360e31b815260040160405180910390fd5b6000838152600382016020526040812080548692906128b79084906138bf565b909155505060008381526003820160205260409081902054905184917fc47834cdb0191cfa2b90f6ae336198ff404f06226170200c57ab15ade0510ae691611c6f91889161383d565b600061290a612dfd565b905061291584611623565b61291f5750505050565b826001600160a01b0316826001600160a01b0316036129b85760405162461bcd60e51b815260206004820152605b60248201526000805160206139df83398151915260448201527f75736572732063616e6e6f7420766f746520666f72207468656d73656c76657360648201527a08191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd9602a1b608482015260a401610ae5565b6001600160a01b0382166000908152600d8201602052604090205460ff16611acc5760405162461bcd60e51b81526020600482015260516024820152600080516020613a1f83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e672065616064820152701c9b1e481858d8d95cdcc81c195c9a5bd9607a1b608482015260a401610ae5565b600080612a5b612dfd565b60009384526007016020525050604090205490565b60008051602061393f833981519152612a898133612421565b80612a9a5750612a9a600033612421565b612ab65760405162461bcd60e51b8152600401610ae5906137e0565b81600003612af3576040516305519d6f60e51b81526020600482015260096024820152681d5cd95c90dbdd5b9d60ba1b6044820152606401610ae5565b6000612afd612dfd565b90506000612b0c84600261386d565b9050600082600c015483600b0154612b2491906138bf565b612b2e908661386d565b6000878152600685016020526040902054909150821115612ba55760405162461bcd60e51b815260206004820152603d60248201526000805160206139bf83398151915260448201527f65206d6f726520616374696f6e73207468616e20617661696c61626c650000006064820152608401610ae5565b6000868152600784016020526040902054811115612c285760405162461bcd60e51b815260206004820152604660248201526000805160206139bf83398151915260448201527f65206d6f726520776569676874656420616374696f6e73207468616e20617661606482015265696c61626c6560d01b608482015260a401610ae5565b600086815260068401602052604081208054849290612c4890849061379e565b9091555050600086815260078401602052604081208054839290612c6d90849061379e565b90915550506000868152600684016020908152604080832054600787018352928190205481518981529283019390935281019190915286907fdc97cd873d9883808c7cbb3b9fdd91ec6437deb4377e651606aff5aaa7be08379060600160405180910390a2505050505050565b600080612ce5612dfd565b600281015460405163d3a368bd60e01b8152600481018690529192506000916001600160a01b039091169063d3a368bd90602401611663565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613176565b565b612d54613176565b612d4a61319b565b600080612d67612e21565b9050612d738484612421565b612df3576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612da93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d2565b60009150506109d2565b7f33676f94b2c7694b38dc9f1f29c59bfbb522294615c1bff34717ad1fa892600090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b612e4f81336131a3565b50565b600080612e5d612e21565b9050612e698484612421565b15612df3576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d2565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612f5157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612f4560008051602061399f833981519152546001600160a01b031690565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061397f8339815191526116db81612e45565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612fe1575060408051601f3d908101601f19168201909252612fde918101906138a6565b60015b6130005781604051634c9c8ce360e01b8152600401610ae591906134ae565b60008051602061399f833981519152811461303157604051632a87526960e21b815260048101829052602401610ae5565b61136c83836131ce565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061308e612dfd565b6001600160a01b0380851660009081526013830160205260409020549192501680158015906130d757506001600160a01b0381166000908152600d8301602052604090205460ff165b80156130f55750806001600160a01b0316836001600160a01b031614155b15611207578281604051636188505f60e11b8152600401610ae5929190613758565b6000613121613224565b80549091506001190161314757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000613157613224565b6001905550565b600081831061316d578161316f565b825b9392505050565b61317e613248565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b61314d613176565b6131ad8282612421565b6116db57808260405163e2517d3f60e01b8152600401610ae59291906138f3565b6131d782613262565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561321c5761136c82826132be565b6116db613334565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6000613252612d1e565b54600160401b900460ff16919050565b806001600160a01b03163b60000361328f5780604051634c9c8ce360e01b8152600401610ae591906134ae565b60008051602061399f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132db9190613922565b600060405180830381855af49150503d8060008114613316576040519150601f19603f3d011682016040523d82523d6000602084013e61331b565b606091505b509150915061332b858383613353565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b60608261336857613363826133a6565b61316f565b815115801561337f57506001600160a01b0384163b155b1561339f5783604051639996b31560e01b8152600401610ae591906134ae565b5092915050565b8051156133b65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000602082840312156133e157600080fd5b81356001600160e01b03198116811461316f57600080fd5b80356001600160a01b038116811461341057600080fd5b919050565b600080600080600060a0868803121561342d57600080fd5b613436866133f9565b9450613444602087016133f9565b9350613452604087016133f9565b9250613460606087016133f9565b915061346e608087016133f9565b90509295509295909350565b60006020828403121561348c57600080fd5b61316f826133f9565b6000602082840312156134a757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156134d557600080fd5b6134de836133f9565b946020939093013593505050565b600080604083850312156134ff57600080fd5b8235915061350f602084016133f9565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561354157600080fd5b61354a836133f9565b915060208301356001600160401b038082111561356657600080fd5b818501915085601f83011261357a57600080fd5b81358181111561358c5761358c613518565b604051601f8201601f19908116603f011681019083821181831017156135b4576135b4613518565b816040528281528860208487010111156135cd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561360a5781810151838201526020016135f2565b50506000910152565b60208152600082518060208401526136328160408501602087016135ef565b601f01601f19169190910160400192915050565b60008060006060848603121561365b57600080fd5b8335925061366b602085016133f9565b9150613679604085016133f9565b90509250925092565b6000806040838503121561369557600080fd5b50508035926020909101359150565b600080600080608085870312156136ba57600080fd5b6136c3856133f9565b93506136d1602086016133f9565b9250604085013591506060850135600281106136ec57600080fd5b939692955090935050565b6020808252825182820181905260009190848201906040850190845b818110156137385783516001600160a01b031683529284019291840191600101613713565b50909695505050505050565b6001600160401b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156109d2576109d2613788565b634e487b7160e01b600052603160045260246000fd5b6000600182016137d9576137d9613788565b5060010190565b6020808252603d908201527f52656c6179657252657761726473506f6f6c3a2063616c6c6572206d7573742060408201527f686176652061646d696e206f7220706f6f6c2061646d696e20726f6c65000000606082015260800190565b918252602082015260400190565b60006020828403121561385d57600080fd5b8151801515811461316f57600080fd5b80820281158282048414176109d2576109d2613788565b6000826138a157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156138b857600080fd5b5051919050565b808201808211156109d2576109d2613788565b6020808252600790820152663932b630bcb2b960c91b604082015260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052602160045260246000fd5b600082516139348184602087016135ef565b919091019291505056fe24e583e35a20f9ecfc1572e7cb66bcc18ad3cd1650ec40dbf6ad2290e553a9fac7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc52656c6179657252657761726473506f6f6c3a2063616e6e6f7420726564756352656c6179657252657761726473506f6f6c3a206175746f2d766f74696e672052656c6179657252657761726473506f6f6c3a20466565206d7573742062652052656c6179657252657761726473506f6f6c3a2063616c6c6572206973206e6fa2646970667358221220ddbd4d19864227fe85e4f1226986adc0757a27a037d85bc4bedb7063504563b564736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
