{
    "_format": "hh-sol-artifact-1",
    "contractName": "StreamrConfigV1_1",
    "sourceName": "contracts/OperatorTokenomics/StreamrConfigV1_1.sol",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "limit",
                    "type": "uint256"
                }
            ],
            "name": "TooHigh",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "limit",
                    "type": "uint256"
                }
            ],
            "name": "TooLow",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "previousAdmin",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "newAdmin",
                    "type": "address"
                }
            ],
            "name": "AdminChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "beacon",
                    "type": "address"
                }
            ],
            "name": "BeaconUpgraded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "string",
                    "name": "key",
                    "type": "string"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "newValue",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newAddress",
                    "type": "address"
                }
            ],
            "name": "ConfigChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "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": "address",
                    "name": "implementation",
                    "type": "address"
                }
            ],
            "name": "Upgraded",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "CONFIGURATOR_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "DEFAULT_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": "earlyLeaverPenaltyWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "fishermanRewardFraction",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "flagProtectionSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "flagReviewerCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "flagReviewerRewardWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "flagReviewerSelectionIterations",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "flagStakeWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "flaggerRewardWei",
            "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": "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": [],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "maxAllowedEarningsFraction",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "maxPenaltyPeriodSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "maxQueueSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minEligibleVoterAge",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minEligibleVoterFractionOfAllStake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minimumDelegationSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minimumDelegationWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minimumSelfDelegationFraction",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minimumStakeWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "operatorContractOnlyJoinPolicy",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "operatorFactory",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "protocolFeeBeneficiary",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "protocolFeeFraction",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "proxiableUUID",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "randomOracle",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "renounceRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "reviewPeriodSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "revokeRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newEarlyLeaverPenaltyWei",
                    "type": "uint256"
                }
            ],
            "name": "setEarlyLeaverPenaltyWei",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newFishermanRewardFraction",
                    "type": "uint256"
                }
            ],
            "name": "setFishermanRewardFraction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newFlagProtectionSeconds",
                    "type": "uint256"
                }
            ],
            "name": "setFlagProtectionSeconds",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newFlagReviewerCount",
                    "type": "uint256"
                }
            ],
            "name": "setFlagReviewerCount",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newFlagReviewerRewardWei",
                    "type": "uint256"
                }
            ],
            "name": "setFlagReviewerRewardWei",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newFlagReviewerSelectionIterations",
                    "type": "uint256"
                }
            ],
            "name": "setFlagReviewerSelectionIterations",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newFlagStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "setFlagStakeWei",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newFlaggerRewardWei",
                    "type": "uint256"
                }
            ],
            "name": "setFlaggerRewardWei",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMaxAllowedEarningsFraction",
                    "type": "uint256"
                }
            ],
            "name": "setMaxAllowedEarningsFraction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMaxPenaltyPeriodSeconds",
                    "type": "uint256"
                }
            ],
            "name": "setMaxPenaltyPeriodSeconds",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMaxQueueSeconds",
                    "type": "uint256"
                }
            ],
            "name": "setMaxQueueSeconds",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "ageLimitSeconds",
                    "type": "uint256"
                }
            ],
            "name": "setMinEligibleVoterAge",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMinEligibleVoterFractionOfAllStake",
                    "type": "uint256"
                }
            ],
            "name": "setMinEligibleVoterFractionOfAllStake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMinimumDelegationSeconds",
                    "type": "uint256"
                }
            ],
            "name": "setMinimumDelegationSeconds",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMinimumDelegationWei",
                    "type": "uint256"
                }
            ],
            "name": "setMinimumDelegationWei",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMinimumSelfDelegationFraction",
                    "type": "uint256"
                }
            ],
            "name": "setMinimumSelfDelegationFraction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operatorContractOnlyJoinPolicyAddress",
                    "type": "address"
                }
            ],
            "name": "setOperatorContractOnlyJoinPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operatorFactoryAddress",
                    "type": "address"
                }
            ],
            "name": "setOperatorFactory",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newProtocolFeeBeneficiary",
                    "type": "address"
                }
            ],
            "name": "setProtocolFeeBeneficiary",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newProtocolFeeFraction",
                    "type": "uint256"
                }
            ],
            "name": "setProtocolFeeFraction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newRandomOracle",
                    "type": "address"
                }
            ],
            "name": "setRandomOracle",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newReviewPeriodSeconds",
                    "type": "uint256"
                }
            ],
            "name": "setReviewPeriodSeconds",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newSlashingFraction",
                    "type": "uint256"
                }
            ],
            "name": "setSlashingFraction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "sponsorshipFactoryAddress",
                    "type": "address"
                }
            ],
            "name": "setSponsorshipFactory",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "streamRegistryAddress_",
                    "type": "address"
                }
            ],
            "name": "setStreamRegistryAddress",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newTrustedForwarder",
                    "type": "address"
                }
            ],
            "name": "setTrustedForwarder",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newVotingPeriodSeconds",
                    "type": "uint256"
                }
            ],
            "name": "setVotingPeriodSeconds",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "slashingFraction",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "sponsorshipFactory",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamRegistryAddress",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "trustedForwarder",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newImplementation",
                    "type": "address"
                }
            ],
            "name": "upgradeTo",
            "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": [],
            "name": "voterRegistry",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "votingPeriodSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612a1661004c60003960008181610f6b01528181610fab015281816111200152818161116001526111d80152612a166000f3fe6080604052600436106103855760003560e01c80638cc9a8c4116101d3578063be60040e11610103578063dad5ca321161009b578063dad5ca3214610ab7578063e2811d6714610ace578063e2e8bcd814610ae5578063ef20784614610afb578063f72c0d8b14610b1b578063f94ca55114610b3d578063f9b2f3c914610b5d578063fc1e490f14610b7d578063ffb6e4da14610b9357600080fd5b8063be60040e146109a5578063c2146f66146109c6578063cb85fe35146109e6578063ce4f5636146109fd578063ceb80df214610a1d578063d2d5028c14610a3e578063d547741f14610a55578063d853015e14610a75578063da74222814610a9757600080fd5b8063a810edd711610176578063a810edd7146108b3578063a8d045d9146108d3578063ae5a9afe146108ea578063aeca7c781461090a578063af424c8e14610921578063afbd6c6c14610941578063b18dccc214610957578063bbb23c3f1461096e578063bca315601461098e57600080fd5b80638cc9a8c4146107cf57806391d14854146107e65780639482e795146108065780639585b0be146108265780639739b08c146108465780639ce68dc314610866578063a217fddf1461087d578063a224c1981461089257600080fd5b80635290c248116102b957806375b238fc1161025157806375b238fc146106c957806378e72833146106eb5780637b0c2842146107015780637b94dead146107225780637da0a877146107385780637e8d889a146107595780638129fc1c1461077957806381929a6f1461078e578063887f44fe146107ae57600080fd5b80635290c248146105c057806352d1902d146105f95780635efca0a91461060e57806362250c671461062f578063663163721461064f57806366ba24f3146106645780636aac44e9146106845780636abd9e411461069b5780636c29b3b7146106b257600080fd5b80632f2ff15d1161032c5780632f2ff15d146104bf57806336568abe146104df5780633659cfe6146104ff5780633a0298eb1461051f5780633a2a9a50146105365780634022fd5c1461054d5780634b3fb81b1461056d5780634d836fd21461058d5780634f1ef286146105ad57600080fd5b806301ffc9a71461038a578063055d7109146103bf57806319770c57146103e15780631cedd51e14610401578063246e62d914610421578063248a9ca314610441578063269594a81461047f578063274a38f31461049f575b600080fd5b34801561039657600080fd5b506103aa6103a536600461254d565b610bb3565b60405190151581526020015b60405180910390f35b3480156103cb57600080fd5b506103df6103da366004612593565b610bea565b005b3480156103ed57600080fd5b506103df6103fc3660046125ae565b610c68565b34801561040d57600080fd5b506103df61041c3660046125ae565b610cac565b34801561042d57600080fd5b506103df61043c3660046125ae565b610cf3565b34801561044d57600080fd5b5061047161045c3660046125ae565b60009081526065602052604090206001015490565b6040519081526020016103b6565b34801561048b57600080fd5b506103df61049a3660046125ae565b610db4565b3480156104ab57600080fd5b506103df6104ba3660046125ae565b610e38565b3480156104cb57600080fd5b506103df6104da3660046125c7565b610eb9565b3480156104eb57600080fd5b506103df6104fa3660046125c7565b610ee3565b34801561050b57600080fd5b506103df61051a366004612593565b610f61565b34801561052b57600080fd5b506104716101035481565b34801561054257600080fd5b506104716101065481565b34801561055957600080fd5b506103df6105683660046125ae565b611029565b34801561057957600080fd5b506103df610588366004612593565b611072565b34801561059957600080fd5b506103df6105a83660046125ae565b6110cf565b6103df6105bb366004612609565b611116565b3480156105cc57600080fd5b50610110546105e1906001600160a01b031681565b6040516001600160a01b0390911681526020016103b6565b34801561060557600080fd5b506104716111cb565b34801561061a57600080fd5b5061010f546105e1906001600160a01b031681565b34801561063b57600080fd5b506103df61064a3660046125ae565b611279565b34801561065b57600080fd5b50610471611303565b34801561067057600080fd5b506103df61067f3660046125ae565b611335565b34801561069057600080fd5b506104716101005481565b3480156106a757600080fd5b5061047161010e5481565b3480156106be57600080fd5b506104716101025481565b3480156106d557600080fd5b506104716000805160206129c183398151915281565b3480156106f757600080fd5b5061047160ff5481565b34801561070d57600080fd5b50610114546105e1906001600160a01b031681565b34801561072e57600080fd5b5061047160fc5481565b34801561074457600080fd5b50610112546105e1906001600160a01b031681565b34801561076557600080fd5b506103df6107743660046125ae565b6113ba565b34801561078557600080fd5b506103df611404565b34801561079a57600080fd5b506103df6107a93660046125ae565b6116f0565b3480156107ba57600080fd5b50610113546105e1906001600160a01b031681565b3480156107db57600080fd5b506104716101165481565b3480156107f257600080fd5b506103aa6108013660046125c7565b611737565b34801561081257600080fd5b506103df6108213660046125ae565b611762565b34801561083257600080fd5b506103df610841366004612593565b6117f8565b34801561085257600080fd5b506103df6108613660046125ae565b611859565b34801561087257600080fd5b506104716101075481565b34801561088957600080fd5b50610471600081565b34801561089e57600080fd5b50610115546105e1906001600160a01b031681565b3480156108bf57600080fd5b506103df6108ce366004612593565b6118cb565b3480156108df57600080fd5b506104716101055481565b3480156108f657600080fd5b506103df6109053660046125ae565b611933565b34801561091657600080fd5b506104716101015481565b34801561092d57600080fd5b506103df61093c3660046125ae565b61197c565b34801561094d57600080fd5b5061047160fd5481565b34801561096357600080fd5b5061047161010c5481565b34801561097a57600080fd5b506103df6109893660046125ae565b6119f8565b34801561099a57600080fd5b506104716101085481565b3480156109b157600080fd5b50610111546105e1906001600160a01b031681565b3480156109d257600080fd5b506103df6109e13660046125ae565b611a7d565b3480156109f257600080fd5b5061047161010d5481565b348015610a0957600080fd5b506103df610a183660046125ae565b611ac6565b348015610a2957600080fd5b50610104546105e1906001600160a01b031681565b348015610a4a57600080fd5b5061047161010a5481565b348015610a6157600080fd5b506103df610a703660046125c7565b611b0d565b348015610a8157600080fd5b5061047160008051602061293a83398151915281565b348015610aa357600080fd5b506103df610ab2366004612593565b611b32565b348015610ac357600080fd5b506104716101095481565b348015610ada57600080fd5b5061047161010b5481565b348015610af157600080fd5b5061047160fe5481565b348015610b0757600080fd5b506103df610b163660046125ae565b611b8d565b348015610b2757600080fd5b5061047160008051602061295a83398151915281565b348015610b4957600080fd5b506103df610b58366004612593565b611bd9565b348015610b6957600080fd5b506103df610b78366004612593565b611c85565b348015610b8957600080fd5b5061047160fb5481565b348015610b9f57600080fd5b506103df610bae3660046125ae565b611cdc565b60006001600160e01b03198216637965db0b60e01b1480610be457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061293a833981519152610c0281611d67565b61011480546001600160a01b0319166001600160a01b0384169081179091556040517473747265616d52656769737472794164647265737360581b81526000906015015b6040519081900381209060008051602061291a83398151915290600090a45050565b60008051602061293a833981519152610c8081611d67565b6101098290556040516f666c616767657252657761726457656960801b81526000908390601001610c46565b60008051602061293a833981519152610cc481611d67565b61010d82905560405172766f74696e67506572696f645365636f6e647360681b81526000908390601301610c46565b60008051602061293a833981519152610d0b81611d67565b6000610d3c6101085461010754610d2291906126e1565b60fb54610d3790670de0b6b3a7640000612700565b611d71565b905080831015610d6e57604051637e4b459360e01b815260048101849052602481018290526044015b60405180910390fd5b61010b8390556040516b666c61675374616b6557656960a01b81526000908490600c016040519081900381209060008051602061291a83398151915290600090a4505050565b60008051602061293a833981519152610dcc81611d67565b61010754821015610dff5761010754604051637e4b459360e01b8152610d65918491600401918252602082015260400190565b61010a8290556040517f666c6167526576696577657253656c656374696f6e497465726174696f6e730081526000908390601f01610c46565b60008051602061293a833981519152610e5081611d67565b670de0b6b3a7640000821115610e8a57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b61010382905560405172383937ba37b1b7b62332b2a33930b1ba34b7b760691b81526000908390601301610c46565b600082815260656020526040902060010154610ed481611d67565b610ede8383611dae565b505050565b6001600160a01b0381163314610f535760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610d65565b610f5d8282611e34565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610fa95760405162461bcd60e51b8152600401610d6590612717565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fdb611e9b565b6001600160a01b0316146110015760405162461bcd60e51b8152600401610d6590612763565b61100a81611eb7565b6040805160008082526020820190925261102691839190611ecf565b50565b60008051602061293a83398151915261104181611d67565b61010e82905560405174666c616750726f74656374696f6e5365636f6e647360581b81526000908390601501610c46565b60008051602061293a83398151915261108a81611d67565b61010f80546001600160a01b0319166001600160a01b0384169081179091556040517173706f6e736f7273686970466163746f727960701b8152600090601201610c46565b60008051602061293a8339815191526110e781611d67565b60fd829055604051736d696e696d756d44656c65676174696f6e57656960601b81526000908390601401610c46565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361115e5760405162461bcd60e51b8152600401610d6590612717565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611190611e9b565b6001600160a01b0316146111b65760405162461bcd60e51b8152600401610d6590612763565b6111bf82611eb7565b610f5d82826001611ecf565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112665760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610d65565b5060008051602061297a83398151915290565b60008051602061293a83398151915261129181611d67565b670de0b6b3a76400008211156112cb57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b60fc8290556040517f6d696e696d756d53656c6644656c65676174696f6e4672616374696f6e00000081526000908390601d01610c46565b6000611330610108546101075461131a91906126e1565b6101095461132891906127af565b60fb54611d71565b905090565b60008051602061293a83398151915261134d81611d67565b600182101561137957604051637e4b459360e01b81526004810183905260016024820152604401610d65565b61010782905561010a54821115611393576101075461010a555b60405170199b1859d4995d9a595dd95c90dbdd5b9d607a1b81526000908390601101610c46565b60008051602061293a8339815191526113d281611d67565b60ff829055604051766d617850656e616c7479506572696f645365636f6e647360481b81526000908390601701610c46565b600054610100900460ff16158080156114245750600054600160ff909116105b8061143e5750303b15801561143e575060005460ff166001145b6114a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d65565b6000805460ff1916600117905580156114c4576000805461ff0019166101001790555b6114cc61203a565b6114d461203a565b6114ec6000805160206129c1833981519152336120a7565b61150460008051602061295a833981519152336120a7565b61151c60008051602061293a833981519152336120a7565b6115346000805160206129c1833981519152806120b1565b61155a60008051602061295a8339815191526000805160206129c18339815191526120b1565b61158060008051602061293a8339815191526000805160206129c18339815191526120b1565b61159167016345785d8a000061197c565b6115a469010f0cf064dd59200000611933565b6115b466b1a2bc2ec50000611279565b6115c5670de0b6b3a76400006110cf565b6115d16202a300611b8d565b6115dd621275006113ba565b6115e962278d00611859565b6115f966b1a2bc2ec50000611cdc565b61160a6703782dace9d900006119f8565b61161a66b1a2bc2ec50000610e38565b611623336117f8565b61162d6000611ac6565b61163d6611c37937e08000611762565b6116476007611335565b6116596801158e460913d00000611a7d565b61166b68138400eca364a00000610c68565b6116756014610db4565b611687681b1ae4d6e2ef500000610cf3565b611692610e106116f0565b61169d610384610cac565b6116a8610e10611029565b8015611026576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008051602061293a83398151915261170881611d67565b61010c82905560405172726576696577506572696f645365636f6e647360681b81526000908390601301610c46565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061293a83398151915261177a81611d67565b670de0b6b3a76400008211156117b457604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b6101058290556040517f6d696e456c696769626c65566f7465724672616374696f6e4f66416c6c5374618152616b6560f01b60208201526000908390602201610c46565b60008051602061293a83398151915261181081611d67565b61010480546001600160a01b0319166001600160a01b0384169081179091556040517570726f746f636f6c46656542656e656669636961727960501b8152600090601601610c46565b60008051602061293a83398151915261187181611d67565b60ff5482116118a15760ff54604051637e4b459360e01b8152610d65918491600401918252602082015260400190565b60fe8290556040516e6d617851756575655365636f6e647360881b81526000908390600f01610c46565b60008051602061293a8339815191526118e381611d67565b61011380546001600160a01b0319166001600160a01b0384169081179091556040517f6f70657261746f72436f6e74726163744f6e6c794a6f696e506f6c69637900008152600090601e01610c46565b60008051602061293a83398151915261194b81611d67565b610100829055604051746561726c794c656176657250656e616c747957656960581b81526000908390601501610c46565b60008051602061293a83398151915261199481611d67565b670de0b6b3a764000082106119cd57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b60fb8290556040516f39b630b9b434b733a33930b1ba34b7b760811b81526000908390601001610c46565b60008051602061293a833981519152611a1081611d67565b670de0b6b3a7640000821115611a4a57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b610102829055604051763334b9b432b936b0b72932bbb0b932233930b1ba34b7b760491b81526000908390601701610c46565b60008051602061293a833981519152611a9581611d67565b61010882905560405174666c6167526576696577657252657761726457656960581b81526000908390601501610c46565b60008051602061293a833981519152611ade81611d67565b610106829055604051726d696e456c696769626c65566f74657241676560681b81526000908390601301610c46565b600082815260656020526040902060010154611b2881611d67565b610ede8383611e34565b60008051602061293a833981519152611b4a81611d67565b61011280546001600160a01b0319166001600160a01b0384169081179091556040516f3a393ab9ba32b22337b93bb0b93232b960811b8152600090601001610c46565b60008051602061293a833981519152611ba581611d67565b610116829055604051776d696e696d756d44656c65676174696f6e5365636f6e647360401b81526000908390601801610c46565b60008051602061293a833981519152611bf181611d67565b61011080546001600160a01b0384166001600160a01b031991821681179092556101118054909116821790556040516e6f70657261746f72466163746f727960881b8152600090600f016040519081900381209060008051602061291a83398151915290600090a4816001600160a01b03166000604051610c46906c766f746572526567697374727960981b8152600d0190565b60008051602061293a833981519152611c9d81611d67565b61011580546001600160a01b0319166001600160a01b0384169081179091556040516b72616e646f6d4f7261636c6560a01b8152600090600c01610c46565b60008051602061293a833981519152611cf481611d67565b670de0b6b3a7640000821115611d2e57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b6101018290556040517f6d6178416c6c6f7765644561726e696e67734672616374696f6e00000000000081526000908390601a01610c46565b61102681336120fc565b600081600181611d8986670de0b6b3a76400006126e1565b611d9391906127af565b611d9d9190612700565b611da791906127c7565b9392505050565b611db88282611737565b610f5d5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611df03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611e3e8282611737565b15610f5d5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061297a833981519152546001600160a01b031690565b60008051602061295a833981519152610f5d81611d67565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611f0257610ede83612155565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f5c575060408051601f3d908101601f19168201909252611f59918101906127e9565b60015b611fbf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d65565b60008051602061297a833981519152811461202e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d65565b50610ede8383836121f1565b600054610100900460ff166120a55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d65565b565b610f5d8282611dae565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6121068282611737565b610f5d576121138161221c565b61211e83602061222e565b60405160200161212f92919061282e565b60408051601f198184030181529082905262461bcd60e51b8252610d659160040161289d565b6001600160a01b0381163b6121c25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d65565b60008051602061297a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6121fa836123ca565b6000825111806122075750805b15610ede57612216838361240a565b50505050565b6060610be46001600160a01b03831660145b6060600061223d8360026126e1565b6122489060026127af565b67ffffffffffffffff811115612260576122606125f3565b6040519080825280601f01601f19166020018201604052801561228a576020820181803683370190505b509050600360fc1b816000815181106122a5576122a56128d0565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106122d4576122d46128d0565b60200101906001600160f81b031916908160001a90535060006122f88460026126e1565b6123039060016127af565b90505b600181111561237b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612337576123376128d0565b1a60f81b82828151811061234d5761234d6128d0565b60200101906001600160f81b031916908160001a90535060049490941c93612374816128e6565b9050612306565b508315611da75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d65565b6123d381612155565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611da7838360405180606001604052806027815260200161299a602791396060600080856001600160a01b03168560405161244791906128fd565b600060405180830381855af49150503d8060008114612482576040519150601f19603f3d011682016040523d82523d6000602084013e612487565b606091505b5091509150612498868383876124a2565b9695505050505050565b6060831561251157825160000361250a576001600160a01b0385163b61250a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d65565b508161251b565b61251b8383612523565b949350505050565b8151156125335781518083602001fd5b8060405162461bcd60e51b8152600401610d65919061289d565b60006020828403121561255f57600080fd5b81356001600160e01b031981168114611da757600080fd5b80356001600160a01b038116811461258e57600080fd5b919050565b6000602082840312156125a557600080fd5b611da782612577565b6000602082840312156125c057600080fd5b5035919050565b600080604083850312156125da57600080fd5b823591506125ea60208401612577565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561261c57600080fd5b61262583612577565b9150602083013567ffffffffffffffff8082111561264257600080fd5b818501915085601f83011261265657600080fd5b813581811115612668576126686125f3565b604051601f8201601f19908116603f01168101908382118183101715612690576126906125f3565b816040528281528860208487010111156126a957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156126fb576126fb6126cb565b500290565b600082821015612712576127126126cb565b500390565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600082198211156127c2576127c26126cb565b500190565b6000826127e457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156127fb57600080fd5b5051919050565b60005b8381101561281d578181015183820152602001612805565b838111156122165750506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612860816017850160208801612802565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612891816028840160208801612802565b01602801949350505050565b60208152600082518060208401526128bc816040850160208701612802565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b6000816128f5576128f56126cb565b506000190190565b6000825161290f818460208701612802565b919091019291505056fe0378fef41f6809e49c98b88328d92d19c96e56c48a18f31dd74e3a20fa7148d63b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220666304f5ded1ad511aaf96ab13cbb4724ba212ab02b26c5fab8b9866de6d3e0a64736f6c634300080d0033",
    "deployedBytecode": "0x6080604052600436106103855760003560e01c80638cc9a8c4116101d3578063be60040e11610103578063dad5ca321161009b578063dad5ca3214610ab7578063e2811d6714610ace578063e2e8bcd814610ae5578063ef20784614610afb578063f72c0d8b14610b1b578063f94ca55114610b3d578063f9b2f3c914610b5d578063fc1e490f14610b7d578063ffb6e4da14610b9357600080fd5b8063be60040e146109a5578063c2146f66146109c6578063cb85fe35146109e6578063ce4f5636146109fd578063ceb80df214610a1d578063d2d5028c14610a3e578063d547741f14610a55578063d853015e14610a75578063da74222814610a9757600080fd5b8063a810edd711610176578063a810edd7146108b3578063a8d045d9146108d3578063ae5a9afe146108ea578063aeca7c781461090a578063af424c8e14610921578063afbd6c6c14610941578063b18dccc214610957578063bbb23c3f1461096e578063bca315601461098e57600080fd5b80638cc9a8c4146107cf57806391d14854146107e65780639482e795146108065780639585b0be146108265780639739b08c146108465780639ce68dc314610866578063a217fddf1461087d578063a224c1981461089257600080fd5b80635290c248116102b957806375b238fc1161025157806375b238fc146106c957806378e72833146106eb5780637b0c2842146107015780637b94dead146107225780637da0a877146107385780637e8d889a146107595780638129fc1c1461077957806381929a6f1461078e578063887f44fe146107ae57600080fd5b80635290c248146105c057806352d1902d146105f95780635efca0a91461060e57806362250c671461062f578063663163721461064f57806366ba24f3146106645780636aac44e9146106845780636abd9e411461069b5780636c29b3b7146106b257600080fd5b80632f2ff15d1161032c5780632f2ff15d146104bf57806336568abe146104df5780633659cfe6146104ff5780633a0298eb1461051f5780633a2a9a50146105365780634022fd5c1461054d5780634b3fb81b1461056d5780634d836fd21461058d5780634f1ef286146105ad57600080fd5b806301ffc9a71461038a578063055d7109146103bf57806319770c57146103e15780631cedd51e14610401578063246e62d914610421578063248a9ca314610441578063269594a81461047f578063274a38f31461049f575b600080fd5b34801561039657600080fd5b506103aa6103a536600461254d565b610bb3565b60405190151581526020015b60405180910390f35b3480156103cb57600080fd5b506103df6103da366004612593565b610bea565b005b3480156103ed57600080fd5b506103df6103fc3660046125ae565b610c68565b34801561040d57600080fd5b506103df61041c3660046125ae565b610cac565b34801561042d57600080fd5b506103df61043c3660046125ae565b610cf3565b34801561044d57600080fd5b5061047161045c3660046125ae565b60009081526065602052604090206001015490565b6040519081526020016103b6565b34801561048b57600080fd5b506103df61049a3660046125ae565b610db4565b3480156104ab57600080fd5b506103df6104ba3660046125ae565b610e38565b3480156104cb57600080fd5b506103df6104da3660046125c7565b610eb9565b3480156104eb57600080fd5b506103df6104fa3660046125c7565b610ee3565b34801561050b57600080fd5b506103df61051a366004612593565b610f61565b34801561052b57600080fd5b506104716101035481565b34801561054257600080fd5b506104716101065481565b34801561055957600080fd5b506103df6105683660046125ae565b611029565b34801561057957600080fd5b506103df610588366004612593565b611072565b34801561059957600080fd5b506103df6105a83660046125ae565b6110cf565b6103df6105bb366004612609565b611116565b3480156105cc57600080fd5b50610110546105e1906001600160a01b031681565b6040516001600160a01b0390911681526020016103b6565b34801561060557600080fd5b506104716111cb565b34801561061a57600080fd5b5061010f546105e1906001600160a01b031681565b34801561063b57600080fd5b506103df61064a3660046125ae565b611279565b34801561065b57600080fd5b50610471611303565b34801561067057600080fd5b506103df61067f3660046125ae565b611335565b34801561069057600080fd5b506104716101005481565b3480156106a757600080fd5b5061047161010e5481565b3480156106be57600080fd5b506104716101025481565b3480156106d557600080fd5b506104716000805160206129c183398151915281565b3480156106f757600080fd5b5061047160ff5481565b34801561070d57600080fd5b50610114546105e1906001600160a01b031681565b34801561072e57600080fd5b5061047160fc5481565b34801561074457600080fd5b50610112546105e1906001600160a01b031681565b34801561076557600080fd5b506103df6107743660046125ae565b6113ba565b34801561078557600080fd5b506103df611404565b34801561079a57600080fd5b506103df6107a93660046125ae565b6116f0565b3480156107ba57600080fd5b50610113546105e1906001600160a01b031681565b3480156107db57600080fd5b506104716101165481565b3480156107f257600080fd5b506103aa6108013660046125c7565b611737565b34801561081257600080fd5b506103df6108213660046125ae565b611762565b34801561083257600080fd5b506103df610841366004612593565b6117f8565b34801561085257600080fd5b506103df6108613660046125ae565b611859565b34801561087257600080fd5b506104716101075481565b34801561088957600080fd5b50610471600081565b34801561089e57600080fd5b50610115546105e1906001600160a01b031681565b3480156108bf57600080fd5b506103df6108ce366004612593565b6118cb565b3480156108df57600080fd5b506104716101055481565b3480156108f657600080fd5b506103df6109053660046125ae565b611933565b34801561091657600080fd5b506104716101015481565b34801561092d57600080fd5b506103df61093c3660046125ae565b61197c565b34801561094d57600080fd5b5061047160fd5481565b34801561096357600080fd5b5061047161010c5481565b34801561097a57600080fd5b506103df6109893660046125ae565b6119f8565b34801561099a57600080fd5b506104716101085481565b3480156109b157600080fd5b50610111546105e1906001600160a01b031681565b3480156109d257600080fd5b506103df6109e13660046125ae565b611a7d565b3480156109f257600080fd5b5061047161010d5481565b348015610a0957600080fd5b506103df610a183660046125ae565b611ac6565b348015610a2957600080fd5b50610104546105e1906001600160a01b031681565b348015610a4a57600080fd5b5061047161010a5481565b348015610a6157600080fd5b506103df610a703660046125c7565b611b0d565b348015610a8157600080fd5b5061047160008051602061293a83398151915281565b348015610aa357600080fd5b506103df610ab2366004612593565b611b32565b348015610ac357600080fd5b506104716101095481565b348015610ada57600080fd5b5061047161010b5481565b348015610af157600080fd5b5061047160fe5481565b348015610b0757600080fd5b506103df610b163660046125ae565b611b8d565b348015610b2757600080fd5b5061047160008051602061295a83398151915281565b348015610b4957600080fd5b506103df610b58366004612593565b611bd9565b348015610b6957600080fd5b506103df610b78366004612593565b611c85565b348015610b8957600080fd5b5061047160fb5481565b348015610b9f57600080fd5b506103df610bae3660046125ae565b611cdc565b60006001600160e01b03198216637965db0b60e01b1480610be457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061293a833981519152610c0281611d67565b61011480546001600160a01b0319166001600160a01b0384169081179091556040517473747265616d52656769737472794164647265737360581b81526000906015015b6040519081900381209060008051602061291a83398151915290600090a45050565b60008051602061293a833981519152610c8081611d67565b6101098290556040516f666c616767657252657761726457656960801b81526000908390601001610c46565b60008051602061293a833981519152610cc481611d67565b61010d82905560405172766f74696e67506572696f645365636f6e647360681b81526000908390601301610c46565b60008051602061293a833981519152610d0b81611d67565b6000610d3c6101085461010754610d2291906126e1565b60fb54610d3790670de0b6b3a7640000612700565b611d71565b905080831015610d6e57604051637e4b459360e01b815260048101849052602481018290526044015b60405180910390fd5b61010b8390556040516b666c61675374616b6557656960a01b81526000908490600c016040519081900381209060008051602061291a83398151915290600090a4505050565b60008051602061293a833981519152610dcc81611d67565b61010754821015610dff5761010754604051637e4b459360e01b8152610d65918491600401918252602082015260400190565b61010a8290556040517f666c6167526576696577657253656c656374696f6e497465726174696f6e730081526000908390601f01610c46565b60008051602061293a833981519152610e5081611d67565b670de0b6b3a7640000821115610e8a57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b61010382905560405172383937ba37b1b7b62332b2a33930b1ba34b7b760691b81526000908390601301610c46565b600082815260656020526040902060010154610ed481611d67565b610ede8383611dae565b505050565b6001600160a01b0381163314610f535760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610d65565b610f5d8282611e34565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610fa95760405162461bcd60e51b8152600401610d6590612717565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fdb611e9b565b6001600160a01b0316146110015760405162461bcd60e51b8152600401610d6590612763565b61100a81611eb7565b6040805160008082526020820190925261102691839190611ecf565b50565b60008051602061293a83398151915261104181611d67565b61010e82905560405174666c616750726f74656374696f6e5365636f6e647360581b81526000908390601501610c46565b60008051602061293a83398151915261108a81611d67565b61010f80546001600160a01b0319166001600160a01b0384169081179091556040517173706f6e736f7273686970466163746f727960701b8152600090601201610c46565b60008051602061293a8339815191526110e781611d67565b60fd829055604051736d696e696d756d44656c65676174696f6e57656960601b81526000908390601401610c46565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361115e5760405162461bcd60e51b8152600401610d6590612717565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611190611e9b565b6001600160a01b0316146111b65760405162461bcd60e51b8152600401610d6590612763565b6111bf82611eb7565b610f5d82826001611ecf565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112665760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610d65565b5060008051602061297a83398151915290565b60008051602061293a83398151915261129181611d67565b670de0b6b3a76400008211156112cb57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b60fc8290556040517f6d696e696d756d53656c6644656c65676174696f6e4672616374696f6e00000081526000908390601d01610c46565b6000611330610108546101075461131a91906126e1565b6101095461132891906127af565b60fb54611d71565b905090565b60008051602061293a83398151915261134d81611d67565b600182101561137957604051637e4b459360e01b81526004810183905260016024820152604401610d65565b61010782905561010a54821115611393576101075461010a555b60405170199b1859d4995d9a595dd95c90dbdd5b9d607a1b81526000908390601101610c46565b60008051602061293a8339815191526113d281611d67565b60ff829055604051766d617850656e616c7479506572696f645365636f6e647360481b81526000908390601701610c46565b600054610100900460ff16158080156114245750600054600160ff909116105b8061143e5750303b15801561143e575060005460ff166001145b6114a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d65565b6000805460ff1916600117905580156114c4576000805461ff0019166101001790555b6114cc61203a565b6114d461203a565b6114ec6000805160206129c1833981519152336120a7565b61150460008051602061295a833981519152336120a7565b61151c60008051602061293a833981519152336120a7565b6115346000805160206129c1833981519152806120b1565b61155a60008051602061295a8339815191526000805160206129c18339815191526120b1565b61158060008051602061293a8339815191526000805160206129c18339815191526120b1565b61159167016345785d8a000061197c565b6115a469010f0cf064dd59200000611933565b6115b466b1a2bc2ec50000611279565b6115c5670de0b6b3a76400006110cf565b6115d16202a300611b8d565b6115dd621275006113ba565b6115e962278d00611859565b6115f966b1a2bc2ec50000611cdc565b61160a6703782dace9d900006119f8565b61161a66b1a2bc2ec50000610e38565b611623336117f8565b61162d6000611ac6565b61163d6611c37937e08000611762565b6116476007611335565b6116596801158e460913d00000611a7d565b61166b68138400eca364a00000610c68565b6116756014610db4565b611687681b1ae4d6e2ef500000610cf3565b611692610e106116f0565b61169d610384610cac565b6116a8610e10611029565b8015611026576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008051602061293a83398151915261170881611d67565b61010c82905560405172726576696577506572696f645365636f6e647360681b81526000908390601301610c46565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061293a83398151915261177a81611d67565b670de0b6b3a76400008211156117b457604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b6101058290556040517f6d696e456c696769626c65566f7465724672616374696f6e4f66416c6c5374618152616b6560f01b60208201526000908390602201610c46565b60008051602061293a83398151915261181081611d67565b61010480546001600160a01b0319166001600160a01b0384169081179091556040517570726f746f636f6c46656542656e656669636961727960501b8152600090601601610c46565b60008051602061293a83398151915261187181611d67565b60ff5482116118a15760ff54604051637e4b459360e01b8152610d65918491600401918252602082015260400190565b60fe8290556040516e6d617851756575655365636f6e647360881b81526000908390600f01610c46565b60008051602061293a8339815191526118e381611d67565b61011380546001600160a01b0319166001600160a01b0384169081179091556040517f6f70657261746f72436f6e74726163744f6e6c794a6f696e506f6c69637900008152600090601e01610c46565b60008051602061293a83398151915261194b81611d67565b610100829055604051746561726c794c656176657250656e616c747957656960581b81526000908390601501610c46565b60008051602061293a83398151915261199481611d67565b670de0b6b3a764000082106119cd57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b60fb8290556040516f39b630b9b434b733a33930b1ba34b7b760811b81526000908390601001610c46565b60008051602061293a833981519152611a1081611d67565b670de0b6b3a7640000821115611a4a57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b610102829055604051763334b9b432b936b0b72932bbb0b932233930b1ba34b7b760491b81526000908390601701610c46565b60008051602061293a833981519152611a9581611d67565b61010882905560405174666c6167526576696577657252657761726457656960581b81526000908390601501610c46565b60008051602061293a833981519152611ade81611d67565b610106829055604051726d696e456c696769626c65566f74657241676560681b81526000908390601301610c46565b600082815260656020526040902060010154611b2881611d67565b610ede8383611e34565b60008051602061293a833981519152611b4a81611d67565b61011280546001600160a01b0319166001600160a01b0384169081179091556040516f3a393ab9ba32b22337b93bb0b93232b960811b8152600090601001610c46565b60008051602061293a833981519152611ba581611d67565b610116829055604051776d696e696d756d44656c65676174696f6e5365636f6e647360401b81526000908390601801610c46565b60008051602061293a833981519152611bf181611d67565b61011080546001600160a01b0384166001600160a01b031991821681179092556101118054909116821790556040516e6f70657261746f72466163746f727960881b8152600090600f016040519081900381209060008051602061291a83398151915290600090a4816001600160a01b03166000604051610c46906c766f746572526567697374727960981b8152600d0190565b60008051602061293a833981519152611c9d81611d67565b61011580546001600160a01b0319166001600160a01b0384169081179091556040516b72616e646f6d4f7261636c6560a01b8152600090600c01610c46565b60008051602061293a833981519152611cf481611d67565b670de0b6b3a7640000821115611d2e57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d65565b6101018290556040517f6d6178416c6c6f7765644561726e696e67734672616374696f6e00000000000081526000908390601a01610c46565b61102681336120fc565b600081600181611d8986670de0b6b3a76400006126e1565b611d9391906127af565b611d9d9190612700565b611da791906127c7565b9392505050565b611db88282611737565b610f5d5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611df03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611e3e8282611737565b15610f5d5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061297a833981519152546001600160a01b031690565b60008051602061295a833981519152610f5d81611d67565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611f0257610ede83612155565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f5c575060408051601f3d908101601f19168201909252611f59918101906127e9565b60015b611fbf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d65565b60008051602061297a833981519152811461202e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d65565b50610ede8383836121f1565b600054610100900460ff166120a55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d65565b565b610f5d8282611dae565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6121068282611737565b610f5d576121138161221c565b61211e83602061222e565b60405160200161212f92919061282e565b60408051601f198184030181529082905262461bcd60e51b8252610d659160040161289d565b6001600160a01b0381163b6121c25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d65565b60008051602061297a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6121fa836123ca565b6000825111806122075750805b15610ede57612216838361240a565b50505050565b6060610be46001600160a01b03831660145b6060600061223d8360026126e1565b6122489060026127af565b67ffffffffffffffff811115612260576122606125f3565b6040519080825280601f01601f19166020018201604052801561228a576020820181803683370190505b509050600360fc1b816000815181106122a5576122a56128d0565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106122d4576122d46128d0565b60200101906001600160f81b031916908160001a90535060006122f88460026126e1565b6123039060016127af565b90505b600181111561237b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612337576123376128d0565b1a60f81b82828151811061234d5761234d6128d0565b60200101906001600160f81b031916908160001a90535060049490941c93612374816128e6565b9050612306565b508315611da75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d65565b6123d381612155565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611da7838360405180606001604052806027815260200161299a602791396060600080856001600160a01b03168560405161244791906128fd565b600060405180830381855af49150503d8060008114612482576040519150601f19603f3d011682016040523d82523d6000602084013e612487565b606091505b5091509150612498868383876124a2565b9695505050505050565b6060831561251157825160000361250a576001600160a01b0385163b61250a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d65565b508161251b565b61251b8383612523565b949350505050565b8151156125335781518083602001fd5b8060405162461bcd60e51b8152600401610d65919061289d565b60006020828403121561255f57600080fd5b81356001600160e01b031981168114611da757600080fd5b80356001600160a01b038116811461258e57600080fd5b919050565b6000602082840312156125a557600080fd5b611da782612577565b6000602082840312156125c057600080fd5b5035919050565b600080604083850312156125da57600080fd5b823591506125ea60208401612577565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561261c57600080fd5b61262583612577565b9150602083013567ffffffffffffffff8082111561264257600080fd5b818501915085601f83011261265657600080fd5b813581811115612668576126686125f3565b604051601f8201601f19908116603f01168101908382118183101715612690576126906125f3565b816040528281528860208487010111156126a957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156126fb576126fb6126cb565b500290565b600082821015612712576127126126cb565b500390565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600082198211156127c2576127c26126cb565b500190565b6000826127e457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156127fb57600080fd5b5051919050565b60005b8381101561281d578181015183820152602001612805565b838111156122165750506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612860816017850160208801612802565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612891816028840160208801612802565b01602801949350505050565b60208152600082518060208401526128bc816040850160208701612802565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b6000816128f5576128f56126cb565b506000190190565b6000825161290f818460208701612802565b919091019291505056fe0378fef41f6809e49c98b88328d92d19c96e56c48a18f31dd74e3a20fa7148d63b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220666304f5ded1ad511aaf96ab13cbb4724ba212ab02b26c5fab8b9866de6d3e0a64736f6c634300080d0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
