{
    "_format": "hh-sol-artifact-1",
    "contractName": "StreamrConfig",
    "sourceName": "contracts/OperatorTokenomics/StreamrConfig.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": "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": "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": "0x60a06040523060805234801561001457600080fd5b5060805161297161004c60003960008181610f1e01528181610f5e015281816110d301528181611113015261118b01526129716000f3fe60806040526004361061036f5760003560e01c8063887f44fe116101c8578063be60040e116100f8578063da7422281161009b578063da74222814610a6a578063dad5ca3214610a8a578063e2811d6714610aa1578063e2e8bcd814610ab8578063f72c0d8b14610ace578063f94ca55114610af0578063f9b2f3c914610b10578063fc1e490f14610b30578063ffb6e4da14610b4657600080fd5b8063be60040e14610978578063c2146f6614610999578063cb85fe35146109b9578063ce4f5636146109d0578063ceb80df2146109f0578063d2d5028c14610a11578063d547741f14610a28578063d853015e14610a4857600080fd5b8063a810edd71161016b578063a810edd714610886578063a8d045d9146108a6578063ae5a9afe146108bd578063aeca7c78146108dd578063af424c8e146108f4578063afbd6c6c14610914578063b18dccc21461092a578063bbb23c3f14610941578063bca315601461096157600080fd5b8063887f44fe1461079857806391d14854146107b95780639482e795146107d95780639585b0be146107f95780639739b08c146108195780639ce68dc314610839578063a217fddf14610850578063a224c1981461086557600080fd5b80635290c248116102a35780636c29b3b7116102465780636c29b3b71461069c57806375b238fc146106b357806378e72833146106d55780637b0c2842146106eb5780637b94dead1461070c5780637da0a877146107225780637e8d889a146107435780638129fc1c1461076357806381929a6f1461077857600080fd5b80635290c248146105aa57806352d1902d146105e35780635efca0a9146105f857806362250c6714610619578063663163721461063957806366ba24f31461064e5780636aac44e91461066e5780636abd9e411461068557600080fd5b80632f2ff15d116103165780632f2ff15d146104a957806336568abe146104c95780633659cfe6146104e95780633a0298eb146105095780633a2a9a50146105205780634022fd5c146105375780634b3fb81b146105575780634d836fd2146105775780634f1ef2861461059757600080fd5b806301ffc9a714610374578063055d7109146103a957806319770c57146103cb5780631cedd51e146103eb578063246e62d91461040b578063248a9ca31461042b578063269594a814610469578063274a38f314610489575b600080fd5b34801561038057600080fd5b5061039461038f3660046124a8565b610b66565b60405190151581526020015b60405180910390f35b3480156103b557600080fd5b506103c96103c43660046124ee565b610b9d565b005b3480156103d757600080fd5b506103c96103e6366004612509565b610c1b565b3480156103f757600080fd5b506103c9610406366004612509565b610c5f565b34801561041757600080fd5b506103c9610426366004612509565b610ca6565b34801561043757600080fd5b5061045b610446366004612509565b60009081526065602052604090206001015490565b6040519081526020016103a0565b34801561047557600080fd5b506103c9610484366004612509565b610d67565b34801561049557600080fd5b506103c96104a4366004612509565b610deb565b3480156104b557600080fd5b506103c96104c4366004612522565b610e6c565b3480156104d557600080fd5b506103c96104e4366004612522565b610e96565b3480156104f557600080fd5b506103c96105043660046124ee565b610f14565b34801561051557600080fd5b5061045b6101035481565b34801561052c57600080fd5b5061045b6101065481565b34801561054357600080fd5b506103c9610552366004612509565b610fdc565b34801561056357600080fd5b506103c96105723660046124ee565b611025565b34801561058357600080fd5b506103c9610592366004612509565b611082565b6103c96105a5366004612564565b6110c9565b3480156105b657600080fd5b50610110546105cb906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b3480156105ef57600080fd5b5061045b61117e565b34801561060457600080fd5b5061010f546105cb906001600160a01b031681565b34801561062557600080fd5b506103c9610634366004612509565b61122c565b34801561064557600080fd5b5061045b6112b6565b34801561065a57600080fd5b506103c9610669366004612509565b6112e8565b34801561067a57600080fd5b5061045b6101005481565b34801561069157600080fd5b5061045b61010e5481565b3480156106a857600080fd5b5061045b6101025481565b3480156106bf57600080fd5b5061045b60008051602061291c83398151915281565b3480156106e157600080fd5b5061045b60ff5481565b3480156106f757600080fd5b50610114546105cb906001600160a01b031681565b34801561071857600080fd5b5061045b60fc5481565b34801561072e57600080fd5b50610112546105cb906001600160a01b031681565b34801561074f57600080fd5b506103c961075e366004612509565b61136d565b34801561076f57600080fd5b506103c96113b7565b34801561078457600080fd5b506103c9610793366004612509565b611697565b3480156107a457600080fd5b50610113546105cb906001600160a01b031681565b3480156107c557600080fd5b506103946107d4366004612522565b6116de565b3480156107e557600080fd5b506103c96107f4366004612509565b611709565b34801561080557600080fd5b506103c96108143660046124ee565b61179f565b34801561082557600080fd5b506103c9610834366004612509565b611800565b34801561084557600080fd5b5061045b6101075481565b34801561085c57600080fd5b5061045b600081565b34801561087157600080fd5b50610115546105cb906001600160a01b031681565b34801561089257600080fd5b506103c96108a13660046124ee565b611872565b3480156108b257600080fd5b5061045b6101055481565b3480156108c957600080fd5b506103c96108d8366004612509565b6118da565b3480156108e957600080fd5b5061045b6101015481565b34801561090057600080fd5b506103c961090f366004612509565b611923565b34801561092057600080fd5b5061045b60fd5481565b34801561093657600080fd5b5061045b61010c5481565b34801561094d57600080fd5b506103c961095c366004612509565b61199f565b34801561096d57600080fd5b5061045b6101085481565b34801561098457600080fd5b50610111546105cb906001600160a01b031681565b3480156109a557600080fd5b506103c96109b4366004612509565b611a24565b3480156109c557600080fd5b5061045b61010d5481565b3480156109dc57600080fd5b506103c96109eb366004612509565b611a6d565b3480156109fc57600080fd5b50610104546105cb906001600160a01b031681565b348015610a1d57600080fd5b5061045b61010a5481565b348015610a3457600080fd5b506103c9610a43366004612522565b611ab4565b348015610a5457600080fd5b5061045b60008051602061289583398151915281565b348015610a7657600080fd5b506103c9610a853660046124ee565b611ad9565b348015610a9657600080fd5b5061045b6101095481565b348015610aad57600080fd5b5061045b61010b5481565b348015610ac457600080fd5b5061045b60fe5481565b348015610ada57600080fd5b5061045b6000805160206128b583398151915281565b348015610afc57600080fd5b506103c9610b0b3660046124ee565b611b34565b348015610b1c57600080fd5b506103c9610b2b3660046124ee565b611be0565b348015610b3c57600080fd5b5061045b60fb5481565b348015610b5257600080fd5b506103c9610b61366004612509565b611c37565b60006001600160e01b03198216637965db0b60e01b1480610b9757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020612895833981519152610bb581611cc2565b61011480546001600160a01b0319166001600160a01b0384169081179091556040517473747265616d52656769737472794164647265737360581b81526000906015015b6040519081900381209060008051602061287583398151915290600090a45050565b600080516020612895833981519152610c3381611cc2565b6101098290556040516f666c616767657252657761726457656960801b81526000908390601001610bf9565b600080516020612895833981519152610c7781611cc2565b61010d82905560405172766f74696e67506572696f645365636f6e647360681b81526000908390601301610bf9565b600080516020612895833981519152610cbe81611cc2565b6000610cef6101085461010754610cd5919061263c565b60fb54610cea90670de0b6b3a764000061265b565b611ccc565b905080831015610d2157604051637e4b459360e01b815260048101849052602481018290526044015b60405180910390fd5b61010b8390556040516b666c61675374616b6557656960a01b81526000908490600c016040519081900381209060008051602061287583398151915290600090a4505050565b600080516020612895833981519152610d7f81611cc2565b61010754821015610db25761010754604051637e4b459360e01b8152610d18918491600401918252602082015260400190565b61010a8290556040517f666c6167526576696577657253656c656374696f6e497465726174696f6e730081526000908390601f01610bf9565b600080516020612895833981519152610e0381611cc2565b670de0b6b3a7640000821115610e3d57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b61010382905560405172383937ba37b1b7b62332b2a33930b1ba34b7b760691b81526000908390601301610bf9565b600082815260656020526040902060010154610e8781611cc2565b610e918383611d09565b505050565b6001600160a01b0381163314610f065760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610d18565b610f108282611d8f565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f5c5760405162461bcd60e51b8152600401610d1890612672565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f8e611df6565b6001600160a01b031614610fb45760405162461bcd60e51b8152600401610d18906126be565b610fbd81611e12565b60408051600080825260208201909252610fd991839190611e2a565b50565b600080516020612895833981519152610ff481611cc2565b61010e82905560405174666c616750726f74656374696f6e5365636f6e647360581b81526000908390601501610bf9565b60008051602061289583398151915261103d81611cc2565b61010f80546001600160a01b0319166001600160a01b0384169081179091556040517173706f6e736f7273686970466163746f727960701b8152600090601201610bf9565b60008051602061289583398151915261109a81611cc2565b60fd829055604051736d696e696d756d44656c65676174696f6e57656960601b81526000908390601401610bf9565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111115760405162461bcd60e51b8152600401610d1890612672565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611143611df6565b6001600160a01b0316146111695760405162461bcd60e51b8152600401610d18906126be565b61117282611e12565b610f1082826001611e2a565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610d18565b506000805160206128d583398151915290565b60008051602061289583398151915261124481611cc2565b670de0b6b3a764000082111561127e57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b60fc8290556040517f6d696e696d756d53656c6644656c65676174696f6e4672616374696f6e00000081526000908390601d01610bf9565b60006112e361010854610107546112cd919061263c565b610109546112db919061270a565b60fb54611ccc565b905090565b60008051602061289583398151915261130081611cc2565b600182101561132c57604051637e4b459360e01b81526004810183905260016024820152604401610d18565b61010782905561010a54821115611346576101075461010a555b60405170199b1859d4995d9a595dd95c90dbdd5b9d607a1b81526000908390601101610bf9565b60008051602061289583398151915261138581611cc2565b60ff829055604051766d617850656e616c7479506572696f645365636f6e647360481b81526000908390601701610bf9565b600054610100900460ff16158080156113d75750600054600160ff909116105b806113f15750303b1580156113f1575060005460ff166001145b6114545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d18565b6000805460ff191660011790558015611477576000805461ff0019166101001790555b61147f611f95565b611487611f95565b61149f60008051602061291c83398151915233612002565b6114b76000805160206128b583398151915233612002565b6114cf60008051602061289583398151915233612002565b6114e760008051602061291c8339815191528061200c565b61150d6000805160206128b583398151915260008051602061291c83398151915261200c565b61153360008051602061289583398151915260008051602061291c83398151915261200c565b61154467016345785d8a0000611923565b61155769010f0cf064dd592000006118da565b61156766b1a2bc2ec5000061122c565b611578670de0b6b3a7640000611082565b6115846212750061136d565b61159062278d00611800565b6115a066b1a2bc2ec50000611c37565b6115b16703782dace9d9000061199f565b6115c166b1a2bc2ec50000610deb565b6115ca3361179f565b6115d46000611a6d565b6115e46611c37937e08000611709565b6115ee60076112e8565b6116006801158e460913d00000611a24565b61161268138400eca364a00000610c1b565b61161c6014610d67565b61162e681b1ae4d6e2ef500000610ca6565b611639610e10611697565b611644610384610c5f565b61164f610e10610fdc565b8015610fd9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206128958339815191526116af81611cc2565b61010c82905560405172726576696577506572696f645365636f6e647360681b81526000908390601301610bf9565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061289583398151915261172181611cc2565b670de0b6b3a764000082111561175b57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b6101058290556040517f6d696e456c696769626c65566f7465724672616374696f6e4f66416c6c5374618152616b6560f01b60208201526000908390602201610bf9565b6000805160206128958339815191526117b781611cc2565b61010480546001600160a01b0319166001600160a01b0384169081179091556040517570726f746f636f6c46656542656e656669636961727960501b8152600090601601610bf9565b60008051602061289583398151915261181881611cc2565b60ff5482116118485760ff54604051637e4b459360e01b8152610d18918491600401918252602082015260400190565b60fe8290556040516e6d617851756575655365636f6e647360881b81526000908390600f01610bf9565b60008051602061289583398151915261188a81611cc2565b61011380546001600160a01b0319166001600160a01b0384169081179091556040517f6f70657261746f72436f6e74726163744f6e6c794a6f696e506f6c69637900008152600090601e01610bf9565b6000805160206128958339815191526118f281611cc2565b610100829055604051746561726c794c656176657250656e616c747957656960581b81526000908390601501610bf9565b60008051602061289583398151915261193b81611cc2565b670de0b6b3a7640000821061197457604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b60fb8290556040516f39b630b9b434b733a33930b1ba34b7b760811b81526000908390601001610bf9565b6000805160206128958339815191526119b781611cc2565b670de0b6b3a76400008211156119f157604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b610102829055604051763334b9b432b936b0b72932bbb0b932233930b1ba34b7b760491b81526000908390601701610bf9565b600080516020612895833981519152611a3c81611cc2565b61010882905560405174666c6167526576696577657252657761726457656960581b81526000908390601501610bf9565b600080516020612895833981519152611a8581611cc2565b610106829055604051726d696e456c696769626c65566f74657241676560681b81526000908390601301610bf9565b600082815260656020526040902060010154611acf81611cc2565b610e918383611d8f565b600080516020612895833981519152611af181611cc2565b61011280546001600160a01b0319166001600160a01b0384169081179091556040516f3a393ab9ba32b22337b93bb0b93232b960811b8152600090601001610bf9565b600080516020612895833981519152611b4c81611cc2565b61011080546001600160a01b0384166001600160a01b031991821681179092556101118054909116821790556040516e6f70657261746f72466163746f727960881b8152600090600f016040519081900381209060008051602061287583398151915290600090a4816001600160a01b03166000604051610bf9906c766f746572526567697374727960981b8152600d0190565b600080516020612895833981519152611bf881611cc2565b61011580546001600160a01b0319166001600160a01b0384169081179091556040516b72616e646f6d4f7261636c6560a01b8152600090600c01610bf9565b600080516020612895833981519152611c4f81611cc2565b670de0b6b3a7640000821115611c8957604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b6101018290556040517f6d6178416c6c6f7765644561726e696e67734672616374696f6e00000000000081526000908390601a01610bf9565b610fd98133612057565b600081600181611ce486670de0b6b3a764000061263c565b611cee919061270a565b611cf8919061265b565b611d029190612722565b9392505050565b611d1382826116de565b610f105760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611d4b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611d9982826116de565b15610f105760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206128d5833981519152546001600160a01b031690565b6000805160206128b5833981519152610f1081611cc2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611e5d57610e91836120b0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611eb7575060408051601f3d908101601f19168201909252611eb491810190612744565b60015b611f1a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d18565b6000805160206128d58339815191528114611f895760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d18565b50610e9183838361214c565b600054610100900460ff166120005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d18565b565b610f108282611d09565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b61206182826116de565b610f105761206e81612177565b612079836020612189565b60405160200161208a929190612789565b60408051601f198184030181529082905262461bcd60e51b8252610d18916004016127f8565b6001600160a01b0381163b61211d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d18565b6000805160206128d583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61215583612325565b6000825111806121625750805b15610e91576121718383612365565b50505050565b6060610b976001600160a01b03831660145b6060600061219883600261263c565b6121a390600261270a565b67ffffffffffffffff8111156121bb576121bb61254e565b6040519080825280601f01601f1916602001820160405280156121e5576020820181803683370190505b509050600360fc1b816000815181106122005761220061282b565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061222f5761222f61282b565b60200101906001600160f81b031916908160001a905350600061225384600261263c565b61225e90600161270a565b90505b60018111156122d6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106122925761229261282b565b1a60f81b8282815181106122a8576122a861282b565b60200101906001600160f81b031916908160001a90535060049490941c936122cf81612841565b9050612261565b508315611d025760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d18565b61232e816120b0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611d0283836040518060600160405280602781526020016128f5602791396060600080856001600160a01b0316856040516123a29190612858565b600060405180830381855af49150503d80600081146123dd576040519150601f19603f3d011682016040523d82523d6000602084013e6123e2565b606091505b50915091506123f3868383876123fd565b9695505050505050565b6060831561246c578251600003612465576001600160a01b0385163b6124655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d18565b5081612476565b612476838361247e565b949350505050565b81511561248e5781518083602001fd5b8060405162461bcd60e51b8152600401610d1891906127f8565b6000602082840312156124ba57600080fd5b81356001600160e01b031981168114611d0257600080fd5b80356001600160a01b03811681146124e957600080fd5b919050565b60006020828403121561250057600080fd5b611d02826124d2565b60006020828403121561251b57600080fd5b5035919050565b6000806040838503121561253557600080fd5b82359150612545602084016124d2565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561257757600080fd5b612580836124d2565b9150602083013567ffffffffffffffff8082111561259d57600080fd5b818501915085601f8301126125b157600080fd5b8135818111156125c3576125c361254e565b604051601f8201601f19908116603f011681019083821181831017156125eb576125eb61254e565b8160405282815288602084870101111561260457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561265657612656612626565b500290565b60008282101561266d5761266d612626565b500390565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000821982111561271d5761271d612626565b500190565b60008261273f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561275657600080fd5b5051919050565b60005b83811015612778578181015183820152602001612760565b838111156121715750506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516127bb81601785016020880161275d565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516127ec81602884016020880161275d565b01602801949350505050565b602081526000825180602084015261281781604085016020870161275d565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b60008161285057612850612626565b506000190190565b6000825161286a81846020870161275d565b919091019291505056fe0378fef41f6809e49c98b88328d92d19c96e56c48a18f31dd74e3a20fa7148d63b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220e8eb07f4f2eafbd3e5ac1d9c70bdf55559ea6c24ed02c4f4a9f22a58da26cce564736f6c634300080d0033",
    "deployedBytecode": "0x60806040526004361061036f5760003560e01c8063887f44fe116101c8578063be60040e116100f8578063da7422281161009b578063da74222814610a6a578063dad5ca3214610a8a578063e2811d6714610aa1578063e2e8bcd814610ab8578063f72c0d8b14610ace578063f94ca55114610af0578063f9b2f3c914610b10578063fc1e490f14610b30578063ffb6e4da14610b4657600080fd5b8063be60040e14610978578063c2146f6614610999578063cb85fe35146109b9578063ce4f5636146109d0578063ceb80df2146109f0578063d2d5028c14610a11578063d547741f14610a28578063d853015e14610a4857600080fd5b8063a810edd71161016b578063a810edd714610886578063a8d045d9146108a6578063ae5a9afe146108bd578063aeca7c78146108dd578063af424c8e146108f4578063afbd6c6c14610914578063b18dccc21461092a578063bbb23c3f14610941578063bca315601461096157600080fd5b8063887f44fe1461079857806391d14854146107b95780639482e795146107d95780639585b0be146107f95780639739b08c146108195780639ce68dc314610839578063a217fddf14610850578063a224c1981461086557600080fd5b80635290c248116102a35780636c29b3b7116102465780636c29b3b71461069c57806375b238fc146106b357806378e72833146106d55780637b0c2842146106eb5780637b94dead1461070c5780637da0a877146107225780637e8d889a146107435780638129fc1c1461076357806381929a6f1461077857600080fd5b80635290c248146105aa57806352d1902d146105e35780635efca0a9146105f857806362250c6714610619578063663163721461063957806366ba24f31461064e5780636aac44e91461066e5780636abd9e411461068557600080fd5b80632f2ff15d116103165780632f2ff15d146104a957806336568abe146104c95780633659cfe6146104e95780633a0298eb146105095780633a2a9a50146105205780634022fd5c146105375780634b3fb81b146105575780634d836fd2146105775780634f1ef2861461059757600080fd5b806301ffc9a714610374578063055d7109146103a957806319770c57146103cb5780631cedd51e146103eb578063246e62d91461040b578063248a9ca31461042b578063269594a814610469578063274a38f314610489575b600080fd5b34801561038057600080fd5b5061039461038f3660046124a8565b610b66565b60405190151581526020015b60405180910390f35b3480156103b557600080fd5b506103c96103c43660046124ee565b610b9d565b005b3480156103d757600080fd5b506103c96103e6366004612509565b610c1b565b3480156103f757600080fd5b506103c9610406366004612509565b610c5f565b34801561041757600080fd5b506103c9610426366004612509565b610ca6565b34801561043757600080fd5b5061045b610446366004612509565b60009081526065602052604090206001015490565b6040519081526020016103a0565b34801561047557600080fd5b506103c9610484366004612509565b610d67565b34801561049557600080fd5b506103c96104a4366004612509565b610deb565b3480156104b557600080fd5b506103c96104c4366004612522565b610e6c565b3480156104d557600080fd5b506103c96104e4366004612522565b610e96565b3480156104f557600080fd5b506103c96105043660046124ee565b610f14565b34801561051557600080fd5b5061045b6101035481565b34801561052c57600080fd5b5061045b6101065481565b34801561054357600080fd5b506103c9610552366004612509565b610fdc565b34801561056357600080fd5b506103c96105723660046124ee565b611025565b34801561058357600080fd5b506103c9610592366004612509565b611082565b6103c96105a5366004612564565b6110c9565b3480156105b657600080fd5b50610110546105cb906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b3480156105ef57600080fd5b5061045b61117e565b34801561060457600080fd5b5061010f546105cb906001600160a01b031681565b34801561062557600080fd5b506103c9610634366004612509565b61122c565b34801561064557600080fd5b5061045b6112b6565b34801561065a57600080fd5b506103c9610669366004612509565b6112e8565b34801561067a57600080fd5b5061045b6101005481565b34801561069157600080fd5b5061045b61010e5481565b3480156106a857600080fd5b5061045b6101025481565b3480156106bf57600080fd5b5061045b60008051602061291c83398151915281565b3480156106e157600080fd5b5061045b60ff5481565b3480156106f757600080fd5b50610114546105cb906001600160a01b031681565b34801561071857600080fd5b5061045b60fc5481565b34801561072e57600080fd5b50610112546105cb906001600160a01b031681565b34801561074f57600080fd5b506103c961075e366004612509565b61136d565b34801561076f57600080fd5b506103c96113b7565b34801561078457600080fd5b506103c9610793366004612509565b611697565b3480156107a457600080fd5b50610113546105cb906001600160a01b031681565b3480156107c557600080fd5b506103946107d4366004612522565b6116de565b3480156107e557600080fd5b506103c96107f4366004612509565b611709565b34801561080557600080fd5b506103c96108143660046124ee565b61179f565b34801561082557600080fd5b506103c9610834366004612509565b611800565b34801561084557600080fd5b5061045b6101075481565b34801561085c57600080fd5b5061045b600081565b34801561087157600080fd5b50610115546105cb906001600160a01b031681565b34801561089257600080fd5b506103c96108a13660046124ee565b611872565b3480156108b257600080fd5b5061045b6101055481565b3480156108c957600080fd5b506103c96108d8366004612509565b6118da565b3480156108e957600080fd5b5061045b6101015481565b34801561090057600080fd5b506103c961090f366004612509565b611923565b34801561092057600080fd5b5061045b60fd5481565b34801561093657600080fd5b5061045b61010c5481565b34801561094d57600080fd5b506103c961095c366004612509565b61199f565b34801561096d57600080fd5b5061045b6101085481565b34801561098457600080fd5b50610111546105cb906001600160a01b031681565b3480156109a557600080fd5b506103c96109b4366004612509565b611a24565b3480156109c557600080fd5b5061045b61010d5481565b3480156109dc57600080fd5b506103c96109eb366004612509565b611a6d565b3480156109fc57600080fd5b50610104546105cb906001600160a01b031681565b348015610a1d57600080fd5b5061045b61010a5481565b348015610a3457600080fd5b506103c9610a43366004612522565b611ab4565b348015610a5457600080fd5b5061045b60008051602061289583398151915281565b348015610a7657600080fd5b506103c9610a853660046124ee565b611ad9565b348015610a9657600080fd5b5061045b6101095481565b348015610aad57600080fd5b5061045b61010b5481565b348015610ac457600080fd5b5061045b60fe5481565b348015610ada57600080fd5b5061045b6000805160206128b583398151915281565b348015610afc57600080fd5b506103c9610b0b3660046124ee565b611b34565b348015610b1c57600080fd5b506103c9610b2b3660046124ee565b611be0565b348015610b3c57600080fd5b5061045b60fb5481565b348015610b5257600080fd5b506103c9610b61366004612509565b611c37565b60006001600160e01b03198216637965db0b60e01b1480610b9757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020612895833981519152610bb581611cc2565b61011480546001600160a01b0319166001600160a01b0384169081179091556040517473747265616d52656769737472794164647265737360581b81526000906015015b6040519081900381209060008051602061287583398151915290600090a45050565b600080516020612895833981519152610c3381611cc2565b6101098290556040516f666c616767657252657761726457656960801b81526000908390601001610bf9565b600080516020612895833981519152610c7781611cc2565b61010d82905560405172766f74696e67506572696f645365636f6e647360681b81526000908390601301610bf9565b600080516020612895833981519152610cbe81611cc2565b6000610cef6101085461010754610cd5919061263c565b60fb54610cea90670de0b6b3a764000061265b565b611ccc565b905080831015610d2157604051637e4b459360e01b815260048101849052602481018290526044015b60405180910390fd5b61010b8390556040516b666c61675374616b6557656960a01b81526000908490600c016040519081900381209060008051602061287583398151915290600090a4505050565b600080516020612895833981519152610d7f81611cc2565b61010754821015610db25761010754604051637e4b459360e01b8152610d18918491600401918252602082015260400190565b61010a8290556040517f666c6167526576696577657253656c656374696f6e497465726174696f6e730081526000908390601f01610bf9565b600080516020612895833981519152610e0381611cc2565b670de0b6b3a7640000821115610e3d57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b61010382905560405172383937ba37b1b7b62332b2a33930b1ba34b7b760691b81526000908390601301610bf9565b600082815260656020526040902060010154610e8781611cc2565b610e918383611d09565b505050565b6001600160a01b0381163314610f065760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610d18565b610f108282611d8f565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f5c5760405162461bcd60e51b8152600401610d1890612672565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f8e611df6565b6001600160a01b031614610fb45760405162461bcd60e51b8152600401610d18906126be565b610fbd81611e12565b60408051600080825260208201909252610fd991839190611e2a565b50565b600080516020612895833981519152610ff481611cc2565b61010e82905560405174666c616750726f74656374696f6e5365636f6e647360581b81526000908390601501610bf9565b60008051602061289583398151915261103d81611cc2565b61010f80546001600160a01b0319166001600160a01b0384169081179091556040517173706f6e736f7273686970466163746f727960701b8152600090601201610bf9565b60008051602061289583398151915261109a81611cc2565b60fd829055604051736d696e696d756d44656c65676174696f6e57656960601b81526000908390601401610bf9565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111115760405162461bcd60e51b8152600401610d1890612672565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611143611df6565b6001600160a01b0316146111695760405162461bcd60e51b8152600401610d18906126be565b61117282611e12565b610f1082826001611e2a565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610d18565b506000805160206128d583398151915290565b60008051602061289583398151915261124481611cc2565b670de0b6b3a764000082111561127e57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b60fc8290556040517f6d696e696d756d53656c6644656c65676174696f6e4672616374696f6e00000081526000908390601d01610bf9565b60006112e361010854610107546112cd919061263c565b610109546112db919061270a565b60fb54611ccc565b905090565b60008051602061289583398151915261130081611cc2565b600182101561132c57604051637e4b459360e01b81526004810183905260016024820152604401610d18565b61010782905561010a54821115611346576101075461010a555b60405170199b1859d4995d9a595dd95c90dbdd5b9d607a1b81526000908390601101610bf9565b60008051602061289583398151915261138581611cc2565b60ff829055604051766d617850656e616c7479506572696f645365636f6e647360481b81526000908390601701610bf9565b600054610100900460ff16158080156113d75750600054600160ff909116105b806113f15750303b1580156113f1575060005460ff166001145b6114545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d18565b6000805460ff191660011790558015611477576000805461ff0019166101001790555b61147f611f95565b611487611f95565b61149f60008051602061291c83398151915233612002565b6114b76000805160206128b583398151915233612002565b6114cf60008051602061289583398151915233612002565b6114e760008051602061291c8339815191528061200c565b61150d6000805160206128b583398151915260008051602061291c83398151915261200c565b61153360008051602061289583398151915260008051602061291c83398151915261200c565b61154467016345785d8a0000611923565b61155769010f0cf064dd592000006118da565b61156766b1a2bc2ec5000061122c565b611578670de0b6b3a7640000611082565b6115846212750061136d565b61159062278d00611800565b6115a066b1a2bc2ec50000611c37565b6115b16703782dace9d9000061199f565b6115c166b1a2bc2ec50000610deb565b6115ca3361179f565b6115d46000611a6d565b6115e46611c37937e08000611709565b6115ee60076112e8565b6116006801158e460913d00000611a24565b61161268138400eca364a00000610c1b565b61161c6014610d67565b61162e681b1ae4d6e2ef500000610ca6565b611639610e10611697565b611644610384610c5f565b61164f610e10610fdc565b8015610fd9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206128958339815191526116af81611cc2565b61010c82905560405172726576696577506572696f645365636f6e647360681b81526000908390601301610bf9565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061289583398151915261172181611cc2565b670de0b6b3a764000082111561175b57604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b6101058290556040517f6d696e456c696769626c65566f7465724672616374696f6e4f66416c6c5374618152616b6560f01b60208201526000908390602201610bf9565b6000805160206128958339815191526117b781611cc2565b61010480546001600160a01b0319166001600160a01b0384169081179091556040517570726f746f636f6c46656542656e656669636961727960501b8152600090601601610bf9565b60008051602061289583398151915261181881611cc2565b60ff5482116118485760ff54604051637e4b459360e01b8152610d18918491600401918252602082015260400190565b60fe8290556040516e6d617851756575655365636f6e647360881b81526000908390600f01610bf9565b60008051602061289583398151915261188a81611cc2565b61011380546001600160a01b0319166001600160a01b0384169081179091556040517f6f70657261746f72436f6e74726163744f6e6c794a6f696e506f6c69637900008152600090601e01610bf9565b6000805160206128958339815191526118f281611cc2565b610100829055604051746561726c794c656176657250656e616c747957656960581b81526000908390601501610bf9565b60008051602061289583398151915261193b81611cc2565b670de0b6b3a7640000821061197457604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b60fb8290556040516f39b630b9b434b733a33930b1ba34b7b760811b81526000908390601001610bf9565b6000805160206128958339815191526119b781611cc2565b670de0b6b3a76400008211156119f157604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b610102829055604051763334b9b432b936b0b72932bbb0b932233930b1ba34b7b760491b81526000908390601701610bf9565b600080516020612895833981519152611a3c81611cc2565b61010882905560405174666c6167526576696577657252657761726457656960581b81526000908390601501610bf9565b600080516020612895833981519152611a8581611cc2565b610106829055604051726d696e456c696769626c65566f74657241676560681b81526000908390601301610bf9565b600082815260656020526040902060010154611acf81611cc2565b610e918383611d8f565b600080516020612895833981519152611af181611cc2565b61011280546001600160a01b0319166001600160a01b0384169081179091556040516f3a393ab9ba32b22337b93bb0b93232b960811b8152600090601001610bf9565b600080516020612895833981519152611b4c81611cc2565b61011080546001600160a01b0384166001600160a01b031991821681179092556101118054909116821790556040516e6f70657261746f72466163746f727960881b8152600090600f016040519081900381209060008051602061287583398151915290600090a4816001600160a01b03166000604051610bf9906c766f746572526567697374727960981b8152600d0190565b600080516020612895833981519152611bf881611cc2565b61011580546001600160a01b0319166001600160a01b0384169081179091556040516b72616e646f6d4f7261636c6560a01b8152600090600c01610bf9565b600080516020612895833981519152611c4f81611cc2565b670de0b6b3a7640000821115611c8957604051635952601b60e11b815260048101839052670de0b6b3a76400006024820152604401610d18565b6101018290556040517f6d6178416c6c6f7765644561726e696e67734672616374696f6e00000000000081526000908390601a01610bf9565b610fd98133612057565b600081600181611ce486670de0b6b3a764000061263c565b611cee919061270a565b611cf8919061265b565b611d029190612722565b9392505050565b611d1382826116de565b610f105760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611d4b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611d9982826116de565b15610f105760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206128d5833981519152546001600160a01b031690565b6000805160206128b5833981519152610f1081611cc2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611e5d57610e91836120b0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611eb7575060408051601f3d908101601f19168201909252611eb491810190612744565b60015b611f1a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d18565b6000805160206128d58339815191528114611f895760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d18565b50610e9183838361214c565b600054610100900460ff166120005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d18565b565b610f108282611d09565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b61206182826116de565b610f105761206e81612177565b612079836020612189565b60405160200161208a929190612789565b60408051601f198184030181529082905262461bcd60e51b8252610d18916004016127f8565b6001600160a01b0381163b61211d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d18565b6000805160206128d583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61215583612325565b6000825111806121625750805b15610e91576121718383612365565b50505050565b6060610b976001600160a01b03831660145b6060600061219883600261263c565b6121a390600261270a565b67ffffffffffffffff8111156121bb576121bb61254e565b6040519080825280601f01601f1916602001820160405280156121e5576020820181803683370190505b509050600360fc1b816000815181106122005761220061282b565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061222f5761222f61282b565b60200101906001600160f81b031916908160001a905350600061225384600261263c565b61225e90600161270a565b90505b60018111156122d6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106122925761229261282b565b1a60f81b8282815181106122a8576122a861282b565b60200101906001600160f81b031916908160001a90535060049490941c936122cf81612841565b9050612261565b508315611d025760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d18565b61232e816120b0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611d0283836040518060600160405280602781526020016128f5602791396060600080856001600160a01b0316856040516123a29190612858565b600060405180830381855af49150503d80600081146123dd576040519150601f19603f3d011682016040523d82523d6000602084013e6123e2565b606091505b50915091506123f3868383876123fd565b9695505050505050565b6060831561246c578251600003612465576001600160a01b0385163b6124655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d18565b5081612476565b612476838361247e565b949350505050565b81511561248e5781518083602001fd5b8060405162461bcd60e51b8152600401610d1891906127f8565b6000602082840312156124ba57600080fd5b81356001600160e01b031981168114611d0257600080fd5b80356001600160a01b03811681146124e957600080fd5b919050565b60006020828403121561250057600080fd5b611d02826124d2565b60006020828403121561251b57600080fd5b5035919050565b6000806040838503121561253557600080fd5b82359150612545602084016124d2565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561257757600080fd5b612580836124d2565b9150602083013567ffffffffffffffff8082111561259d57600080fd5b818501915085601f8301126125b157600080fd5b8135818111156125c3576125c361254e565b604051601f8201601f19908116603f011681019083821181831017156125eb576125eb61254e565b8160405282815288602084870101111561260457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561265657612656612626565b500290565b60008282101561266d5761266d612626565b500390565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000821982111561271d5761271d612626565b500190565b60008261273f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561275657600080fd5b5051919050565b60005b83811015612778578181015183820152602001612760565b838111156121715750506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516127bb81601785016020880161275d565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516127ec81602884016020880161275d565b01602801949350505050565b602081526000825180602084015261281781604085016020870161275d565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b60008161285057612850612626565b506000190190565b6000825161286a81846020870161275d565b919091019291505056fe0378fef41f6809e49c98b88328d92d19c96e56c48a18f31dd74e3a20fa7148d63b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220e8eb07f4f2eafbd3e5ac1d9c70bdf55559ea6c24ed02c4f4a9f22a58da26cce564736f6c634300080d0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
