{
    "_format": "hh-sol-artifact-1",
    "contractName": "VoteKickPolicy",
    "sourceName": "contracts/OperatorTokenomics/SponsorshipPolicies/VoteKickPolicy.sol",
    "abi": [
        {
            "inputs": [],
            "name": "AccessDenied",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "AccessDeniedDATATokenOnly",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "lockedStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "ActiveFlag",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "CannotIncreaseStakeUsingReduceStakeTo",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "FlaggingNotSupported",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "penaltyWei",
                    "type": "uint256"
                }
            ],
            "name": "LeavePenalty",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "MinOperatorCountZero",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "minimumStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "MinimumStake",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "moduleAddress",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "callBytes",
                    "type": "bytes"
                }
            ],
            "name": "ModuleCallError",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "callBytes",
                    "type": "bytes"
                }
            ],
            "name": "ModuleGetError",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "OperatorNotStaked",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "enum IKickPolicy.FlagState",
                    "name": "status",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "votesForKick",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "votesAgainstKick",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "voter",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "voterWeight",
                    "type": "int256"
                }
            ],
            "name": "FlagUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "flagger",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "targetStakeAtRiskWei",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "reviewerCount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "flagMetadata",
                    "type": "string"
                }
            ],
            "name": "Flagged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "endTimeStamp",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "defaultedWeiPerStake",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "defaultedWei",
                    "type": "uint256"
                }
            ],
            "name": "InsolvencyEnded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "startTimeStamp",
                    "type": "uint256"
                }
            ],
            "name": "InsolvencyStarted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "OperatorJoined",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "OperatorKicked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "returnedStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "OperatorLeft",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "OperatorSlashed",
            "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": "sponsor",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "SponsorshipReceived",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "totalStakedWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "remainingWei",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "operatorCount",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "bool",
                    "name": "isRunning",
                    "type": "bool"
                }
            ],
            "name": "SponsorshipUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "lockedStakeWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "minimumStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "StakeLockUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "stakedWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "earningsWei",
                    "type": "uint256"
                }
            ],
            "name": "StakeUpdate",
            "type": "event"
        },
        {
            "stateMutability": "nonpayable",
            "type": "fallback"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IJoinPolicy",
                    "name": "newJoinPolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "addJoinPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "allocationPolicy",
            "outputs": [
                {
                    "internalType": "contract IAllocationPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "earningsWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "internalType": "string",
                    "name": "metadataJsonString",
                    "type": "string"
                }
            ],
            "name": "flag",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "flagMetadataJson",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "forceUnstake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "forfeitedStakeWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "getEarnings",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "allocation",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                }
            ],
            "name": "getFlag",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "flagData",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "flagMetadata",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                }
            ],
            "name": "getFlagData",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "flagData",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "getLeavePenalty",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "leavePenalty",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "getMinimumStakeOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getMyStake",
            "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": [
                {
                    "internalType": "string",
                    "name": "streamId_",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "metadata_",
                    "type": "string"
                },
                {
                    "internalType": "contract StreamrConfig",
                    "name": "globalStreamrConfig",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256[3]",
                    "name": "initParams",
                    "type": "uint256[3]"
                },
                {
                    "internalType": "contract IAllocationPolicy",
                    "name": "initialAllocationPolicy",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "isFunded",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "isRunning",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "joinPolicies",
            "outputs": [
                {
                    "internalType": "contract IJoinPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "joinTimeOfOperator",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "kickPolicy",
            "outputs": [
                {
                    "internalType": "contract IKickPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "leavePolicy",
            "outputs": [
                {
                    "internalType": "contract ILeavePolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "lockedStakeWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "metadata",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minHorizonSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minOperatorCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "minimumStakeOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "individualMinimumStakeWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "flagger",
                    "type": "address"
                }
            ],
            "name": "onFlag",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "onTokenTransfer",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "voteData",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "voterAddress",
                    "type": "address"
                }
            ],
            "name": "onVote",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "operatorCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "targetStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "reduceStakeTo",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "remainingWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "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": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "revokeRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IAllocationPolicy",
                    "name": "newAllocationPolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setAllocationPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IKickPolicy",
                    "name": "newKickPolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setKickPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract ILeavePolicy",
                    "name": "newLeavePolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setLeavePolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "setParam",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "solventUntilTimestamp",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "horizon",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "sponsor",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "stake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "stakedWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamId",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamrConfig",
            "outputs": [
                {
                    "internalType": "contract StreamrConfig",
                    "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": "token",
            "outputs": [
                {
                    "internalType": "contract IERC677",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalStakedWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unstake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "voteData",
                    "type": "bytes32"
                }
            ],
            "name": "voteOnFlag",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "withdraw",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50614e67806100206000396000f3fe608060405234801561001057600080fd5b50600436106102d75760003560e01c8063584cb7cf11610188578063a5b83ce4116100e4578063d547741f11610092578063d547741f14610761578063da5a517b14610774578063df4bbd2214610787578063f4408e4b1461078f578063fa267ddf14610797578063fbbabed9146107a0578063fc0c546a146107b3576102d7565b8063a5b83ce4146106dc578063acbeddd7146106ef578063adc9772e14610702578063b6cce5e214610715578063b9efec9514610728578063c02755351461073b578063d11d8fc41461074e576102d7565b80637db18807116101415780637db188071461066c5780637e11d1c61461067f57806391a113031461069257806391d148541461069b57806398833130146106ae578063a217fddf146106c1578063a4c0ed36146106c9576102d7565b8063584cb7cf14610624578063625eb6c81461063757806371b906eb1461064a578063759e30d8146106525780637c6543031461065b5780637c6f315814610663576102d7565b806334a0f881116102375780633ccfd60b116101f05780633ccfd60b146105b457806340947369146105bc5780634562980f146105c557806348611fcd146105d85780634a45d2e6146105eb5780635499dca5146105fc57806354a991b414610611576102d7565b806334a0f8811461052f578063357e47fe1461053857806336568abe1461055957806338106e4d1461056c578063392f37e91461057f5780633a1c0aa814610594576102d7565b806319d164f11161029457806319d164f1146104915780632014e5d1146104b1578063248a9ca3146104be5780632b308a56146104e15780632def6620146104f45780632f2ff15d146104fc578063303cbe571461050f576102d7565b806301ffc9a7146103f757806304a105911461041f57806309f359be1461043457806311648a4c14610455578063131b9c041461045e57806314c948eb14610471575b60003660603330146102fc57604051634ca8886760e01b815260040160405180910390fd5b816000848261030c6014826145c7565b610318928592906145de565b61032191614608565b60601c905060008581866103366020876145c7565b92610343939291906145de565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051949550938493506001600160a01b038716925061039591508590614662565b600060405180830381855af49150503d80600081146103d0576040519150601f19603f3d011682016040523d82523d6000602084013e6103d5565b606091505b5091509150816103e757805181602001fd5b8051975060200195505050505050f35b61040a61040536600461467e565b6107c6565b60405190151581526020015b60405180910390f35b61043261042d3660046146bd565b6107fd565b005b6104476104423660046146e9565b61087f565b604051908152602001610416565b61044760a75481565b61044761046c3660046146e9565b6109ce565b61044761047f3660046146e9565b60a06020526000908152604090205481565b61044761049f3660046146e9565b60a26020526000908152604090205481565b60a65460a554101561040a565b6104476104cc366004614706565b60009081526065602052604090206001015490565b6104326104ef3660046146bd565b610a33565b610447610aaa565b61043261050a36600461471f565b610b45565b61044761051d3660046146e9565b60a16020526000908152604090205481565b61044760a45481565b61054b6105463660046146e9565b610b6f565b60405161041692919061477b565b61043261056736600461471f565b610c77565b61044761057a366004614706565b610cf5565b610587610e96565b6040516104169190614794565b609a546105a7906001600160a01b031681565b60405161041691906147a7565b610447610f24565b61044760a65481565b6104326105d3366004614804565b610fb1565b6104476105e63660046146e9565b61116d565b6104326105f9366004614706565b50565b33600090815260a06020526040902054610447565b609b546105a7906001600160a01b031681565b609c546105a7906001600160a01b031681565b6105a7610645366004614706565b6111b5565b6104476111df565b61044760a35481565b61040a611212565b61044760a55481565b61058761067a3660046146e9565b611230565b61043261068d3660046148d9565b611249565b61044760a85481565b61040a6106a936600461471f565b6112c7565b6097546105a7906001600160a01b031681565b610447600081565b6104326106d736600461499d565b6112f2565b6104326106ea3660046146bd565b61135a565b6104326106fd3660046146bd565b6113bd565b6104326107103660046146bd565b611406565b610432610723366004614706565b611486565b6104326107363660046146bd565b61150d565b6104476107493660046146e9565b611556565b61043261075c3660046149f9565b61166b565b61043261076f36600461471f565b612516565b6104476107823660046146e9565b61253b565b610447612583565b610587612595565b61044760a95481565b6104326107ae366004614a27565b6125a2565b6098546105a7906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b14806107f757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006108088161289b565b609b80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108799190632522e97360e11b906044015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526128a5565b50505050565b600080609760009054906101000a90046001600160a01b03166001600160a01b031663663163726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190614a69565b6001600160a01b038416600090815260a2602090815260408083205460ab9092528220549293509190036109bc576109b981609760009054906101000a90046001600160a01b03166001600160a01b031663fc1e490f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190614a69565b6109b490670de0b6b3a76400006145c7565b612946565b90505b6109c68183612983565b949350505050565b609a546040516000916107f791636e9bb3f760e01b916109fc9186916001600160a01b031690602401614a82565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612999565b6000610a3e8161289b565b609980546001810182556000919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b03851617905560405160248101839052610879908490632522e97360e11b90604401610842565b60003381610ab78261253b565b90508015610ae0576040516301e1d66b60e21b8152600481018290526024015b60405180910390fd5b6001600160a01b038216600090815260a2602052604090205415610b35576001600160a01b038216600090815260a2602052604090819020549051635df79f0d60e11b81526004810191909152602401610ad7565b610b3e82612a2f565b9250505090565b600082815260656020526040902060010154610b608161289b565b610b6a8383612df9565b505050565b609c546000906060906001600160a01b0316610b9e5760405163213a65f360e11b815260040160405180910390fd5b609c54604051610bcb9163c027553560e01b916109fc9187916001600160a01b0390911690602401614a82565b6001600160a01b0384166000908152609f60205260409020805491935090610bf290614a9c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1e90614a9c565b8015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b820191906000526020600020905b815481529060010190602001808311610c4e57829003601f168201915b50505050509050915091565b6001600160a01b0381163314610ce75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610ad7565b610cf18282612e7f565b5050565b33600081815260a060205260408120549091908310610d275760405163aa4c075760e01b815260040160405180910390fd5b6000610d328261116d565b905080841015610d58576040516305f48c3560e11b815260048101829052602401610ad7565b6001600160a01b038216600090815260a06020526040902054610d87908390610d829087906145c7565b612ee6565b60985460405163a9059cbb60e01b81529194506001600160a01b03169063a9059cbb90610dba9085908790600401614ad0565b6020604051808303816000875af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd9190614ae9565b506001600160a01b038216600081815260a06020526040902054600080516020614db283398151915290610e30856109ce565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051610e87929190918252602082015260400190565b60405180910390a35050919050565b609e8054610ea390614a9c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecf90614a9c565b8015610f1c5780601f10610ef157610100808354040283529160200191610f1c565b820191906000526020600020905b815481529060010190602001808311610eff57829003601f168201915b505050505081565b33600081815260a160205260408120549091908203610f56576040516314625d5d60e21b815260040160405180910390fd5b610f5f81612fd6565b91508115610fad576001600160a01b038116600081815260a06020526040808220549051600080516020614db283398151915292610fa4928252602082015260400190565b60405180910390a25b5090565b600054610100900460ff1615808015610fd15750600054600160ff909116105b80610feb5750303b158015610feb575060005460ff166001145b61104e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ad7565b6000805460ff191660011790558015611071576000805461ff0019166101001790555b63ffffffff8335811660a75560208401351660a68190556040840135906000036110ae5760405163309f1b0d60e21b815260040160405180910390fd5b609880546001600160a01b0319166001600160a01b0387161790556110d5609d8b8b61448e565b506110e2609e898961448e565b50609780546001600160a01b0319166001600160a01b0388161790556111066130ab565b611111600033613118565b61111b838261150d565b508015611162576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b609c546000906001600160a01b031661118857506000919050565b609c546040516107f7916304f9acdf60e11b916109fc9186916001600160a01b0390911690602401614a82565b609981815481106111c557600080fd5b6000918252602090912001546001600160a01b0316905081565b609a5460405160009161120d91631bc8977160e31b916109fc916001600160a01b03909116906024016147a7565b905090565b600060a754426112229190614b21565b61122a6111df565b11905090565b609f6020526000908152604090208054610ea390614a9c565b6001600160a01b0382166000908152609f6020908152604090912082516112729284019061450e565b50609c546001600160a01b031661129c5760405163213a65f360e11b815260040160405180910390fd5b609c54610b6a906001600160a01b031663344763f160e21b8433604051602401610842929190614a82565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6098546001600160a01b0316331461131d5760405163118d9d7160e11b815260040160405180910390fd5b601481900361133b57813560601c6113358185613122565b50610879565b60208190036113505781356113358185613122565b610879848461338b565b609c546001600160a01b03166113835760405163213a65f360e11b815260040160405180910390fd5b609c546040516001600160a01b03848116602483015260448201849052336064830152610b6a92169063fbbabed960e01b90608401610842565b60006113c88161289b565b609c80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108799190632522e97360e11b90604401610842565b6098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b815260040161143893929190614b39565b6020604051808303816000875af1158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190614ae9565b50610cf18282613122565b8015611503576098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b81526004016114be93929190614b39565b6020604051808303816000875af11580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115019190614ae9565b505b6105f9338261338b565b60006115188161289b565b609a80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108799190632522e97360e11b90604401610842565b6001600160a01b038116600090815260ab6020526040812054810361157d57506000919050565b6001600160a01b03808316600090815260aa602090815260408083205460ab83528184205460b284528285205460b090945291909320549290931692916115c990640100000000614b5d565b6115d39190614b92565b6001600160a01b038516600090815260b2602090815260408083205460b19092529091205461160790640100000000614b5d565b6116119190614b92565b6040805160609590951b6001600160601b031916602086015260e093841b6001600160e01b0319908116603487015292841b83166038860152921b16603c830152016040516020818303038152906040526107f790614ba6565b816001600160a01b0316816001600160a01b0316036116c35760405162461bcd60e51b815260206004820152601460248201527332b93937b92fb1b0b73737ba233630b3a9b2b63360611b6044820152606401610ad7565b6001600160a01b038216600090815260ab602052604090205415801561170057506001600160a01b038216600090815260b6602052604090205442115b6117445760405162461bcd60e51b815260206004820152601560248201527432b93937b92fb1b0b73737ba233630b3a0b3b0b4b760591b6044820152606401610ad7565b6001600160a01b038216600090815260a060205260409020546117a55760405162461bcd60e51b8152602060048201526019602482015278195c9c9bdc97d99b1859d5185c99d95d139bdd14dd185ad959603a1b6044820152606401610ad7565b6097546040805163fc1e490f60e01b81529051670de0b6b3a7640000926001600160a01b03169163fc1e490f9160048083019260209291908290030181865afa1580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a9190614a69565b6001600160a01b03808516600090815260a06020908152604091829020546097548351633318b1b960e11b815293516118a295929491909216926366316372926004808401938290030181865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190614a69565b612983565b6118ac9190614b5d565b6118b69190614b92565b6001600160a01b038316600090815260ad6020908152604080832084905560a2909152812080549091906118eb908490614b21565b90915550506001600160a01b038216600090815260a0602090815260408083205460a290925290912054111561197a576001600160a01b038216600090815260ad602090815260408083205460a2909252822080549192909161194f9084906145c7565b90915550506001600160a01b038216600090815260ad60205260408120819055610b6a908390613548565b6001600160a01b03828116600090815260aa602090815260409182902080546001600160a01b03191685851617905560975482516358c6e66160e11b8152925193169263b18dccc29260048082019392918290030181865afa1580156119e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a089190614a69565b611a129042614b21565b6001600160a01b03808416600090815260ab602090815260409182902093909355609754815163cb85fe3560e01b8152915192169263cb85fe35926004808401938290030181865afa158015611a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a909190614a69565b6001600160a01b038316600090815260ab6020526040902054611ab39190614b21565b6001600160a01b03808416600090815260ac602090815260409182902093909355609754815163e2811d6760e01b8152915192169263e2811d67926004808401938290030181865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190614a69565b6001600160a01b03808416600090815260b360209081526040918290209390935560975481516305e518ab60e51b8152915192169263bca31560926004808401938290030181865afa158015611b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baf9190614a69565b6001600160a01b03808416600090815260b56020908152604091829020939093556097548151636d6ae51960e11b8152915192169263dad5ca32926004808401938290030181865afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d9190614a69565b6001600160a01b03808416600090815260b4602090815260408083209490945560b3815283822054928516825260a29052918220805491929091611c72908490614b21565b90915550611c8190508161087f565b6001600160a01b038216600090815260a060205260409020541015611cdf5760405162461bcd60e51b81526020600482015260146024820152736572726f725f6e6f74456e6f7567685374616b6560601b6044820152606401610ad7565b60975460408051635f30020760e11b815290516000926001600160a01b03169163be60040e9160048083019260209291908290030181865afa158015611d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4d9190614bca565b90506000816001600160a01b03166342169e486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db39190614a69565b905060008111611dfe5760405162461bcd60e51b81526020600482015260166024820152756572726f725f6e6f456c696769626c65566f7465727360501b6044820152606401610ad7565b60975460408051639ce68dc360e01b815290516000926001600160a01b031691639ce68dc39160048083019260209291908290030181865afa158015611e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6c9190614a69565b905060a082901b6001600160a01b0386161760008080805b6001600160a01b038a16600090815260ae602052604090205486118015611f29575085811080611f295750609760009054906101000a90046001600160a01b03166001600160a01b031663d2d5028c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f269190614a69565b81105b1561230d57611f39602082614be7565b6000036120c65760975460408051631444983360e31b815290516000926001600160a01b03169163a224c1989160048083019260209291908290030181865afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae9190614bca565b6001600160a01b03161461209d57609760009054906101000a90046001600160a01b03166001600160a01b031663a224c1986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120339190614bca565b6001600160a01b031663f5b0fe546040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120969190614a69565b94506120ce565b6040805160208101879052016040516020818303038152906040528051906020012094506120ce565b600885901c94505b60006001600160a01b03891663da58c7d96120e98a89614be7565b6040518263ffffffff1660e01b815260040161210791815260200190565b602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190614bca565b9050896001600160a01b0316816001600160a01b0316148061217b57508a6001600160a01b0316816001600160a01b0316145b806121ab57506001600160a01b03808c16600090815260af60209081526040808320938516835292905290812054135b156121b657506122fb565b6040516364f1abb760e01b81526001600160a01b038216906364f1abb7906121e2908e906004016147a7565b600060405180830381600087803b1580156121fc57600080fd5b505af192505050801561220d575060015b61221757506122fb565b6001600160a01b038b8116600090815260ae6020908152604080832080546001810182559084528284200180546001600160a01b03191694861694851790558051636114c8c760e11b8152905192939263c229918e926004808401939192918290030181865afa15801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b39190614a69565b90506122bf8187614b21565b6001600160a01b03808e16600090815260af602090815260408083209387168352929052208290559550848111156122f8578094508193505b50505b8061230581614bfb565b915050611e84565b508261231a836002614b5d565b1015801561234057506001600160a01b038916600090815260ae60205260409020546002105b1561239a5761234f82846145c7565b925061235c6001846145c7565b6001600160a01b03808b16600090815260af602090815260408083209386168352929052205561238d6001846145c7565b6123979084614b21565b92505b6001600160a01b038916600090815260b26020908152604080832086905560ae90915290205461240c5760405162461bcd60e51b815260206004820152601b60248201527f6572726f725f6661696c6564546f46696e6452657669657765727300000000006044820152606401610ad7565b6001600160a01b038816600081815260a26020526040902054600080516020614dd28339815191529061243e8b61087f565b6040805192835260208301919091520160405180910390a26001600160a01b038916600081815260a26020526040902054600080516020614dd2833981519152906124888c61087f565b6040805192835260208301919091520160405180910390a26001600160a01b03808a16600081815260ae602090815260408083205460ad835281842054609f90935292819020905192948d1693927fbfc2ea38f654c28196c9b1c7a859115b1d74103c705d851743383e2bcd8f762492612503929091614c14565b60405180910390a4505050505050505050565b6000828152606560205260409020600101546125318161289b565b610b6a8383612e7f565b609b546000906001600160a01b031661255657506000919050565b609b546040516107f7916318820b1b60e01b916109fc9186916001600160a01b0390911690602401614a82565b60003361258f81612a2f565b91505090565b609d8054610ea390614a9c565b6001600160a01b038316600090815260ab60205260409020546125fa5760405162461bcd60e51b815260206004820152601060248201526f195c9c9bdc97db9bdd119b1859d9d95960821b6044820152606401610ad7565b6001600160a01b038316600090815260ab6020526040902054421161265a5760405162461bcd60e51b8152602060048201526016602482015275195c9c9bdc97dd9bdd1a5b99d39bdd14dd185c9d195960521b6044820152606401610ad7565b6001600160a01b038316600090815260ac602052604090205442111561268357610b6a83613654565b6001600160a01b03808416600090815260af6020908152604080832093851683529290529081205482918112156126f15760405162461bcd60e51b8152602060048201526012602482015271195c9c9bdc97d85b1c9958591e559bdd195960721b6044820152606401610ad7565b600081136127375760405162461bcd60e51b81526020600482015260136024820152726572726f725f7265766965776572734f6e6c7960681b6044820152606401610ad7565b600060018086169003612799576001600160a01b03808716600081815260af602090815260408083209488168352938152838220600019905591815260b0909152908120805484929061278b908490614b21565b909155508291506127f29050565b6001600160a01b03808716600081815260af602090815260408083209488168352938152838220600119905591815260b190915290812080548492906127e0908490614b21565b909155506127ef905082614cc4565b90505b6001600160a01b03831660016001600160a01b038816600081815260b0602090815260408083205460b1835292819020548151938452918301919091528101859052600080516020614df28339815191529060600160405180910390a46001600160a01b038616600090815260b2602090815260408083205460b183528184205460b09093529220546128859190614b21565b036128935761289386613654565b505050505050565b6105f98133613864565b6000806000846001600160a01b0316846040516128c29190614662565b600060405180830381855af49150503d80600081146128fd576040519150601f19603f3d011682016040523d82523d6000602084013e612902565b606091505b50915091508161293a57805160000361293257848460405163918623b760e01b8152600401610ad7929190614ce0565b805181602001fd5b60200151949350505050565b60008160018161295e86670de0b6b3a7640000614b5d565b6129689190614b21565b61297291906145c7565b61297c9190614b92565b9392505050565b6000818311612992578161297c565b5090919050565b6000806000306001600160a01b0316846040516129b69190614662565b600060405180830381855afa9150503d80600081146129f1576040519150601f19603f3d011682016040523d82523d6000602084013e6129f6565b606091505b509150915081612a24578051600003612932578360405163029801d760e41b8152600401610ad79190614794565b602001519392505050565b6001600160a01b038116600090815260a160205260408120548103612a67576040516314625d5d60e21b815260040160405180910390fd5b6001600160a01b038216600090815260a2602052604090205415612af6576001600160a01b038216600090815260a2602052604081208054919055612aac83826138bd565b60a36000828254612abd9190614b21565b909155505060408051600080825260208201526001600160a01b03851691600080516020614dd2833981519152910160405180910390a2505b6000612b018361253b565b90508015612bed576098546097546040805163675c06f960e11b815290516001600160a01b039384169363a9059cbb93169163ceb80df29160048083019260209291908290030181865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b819190614bca565b612b8b86856138bd565b6040518363ffffffff1660e01b8152600401612ba8929190614ad0565b6020604051808303816000875af1158015612bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612beb9190614ae9565b505b6000612bf884612fd6565b6001600160a01b038516600090815260a0602052604081205460a58054939450909260019290612c299084906145c7565b925050819055508060a46000828254612c4291906145c7565b90915550506001600160a01b03808616600090815260a06020908152604080832083905560a190915280822091909155609a549051612c97929190911690630c8a99c360e11b906108429089906024016147a7565b5060408051600080825260208201526001600160a01b03871691600080516020614db2833981519152910160405180910390a260a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051612d09929190918252602082015260400190565b60405180910390a3846001600160a01b03167f14a9c4ce3dc5694e8873bfea05304d57d64ba56ee7ad9ad5fe40b3d8e4e4d3f082604051612d4c91815260200190565b60405180910390a2609854604051630200057560e51b81526001600160a01b038781166004830152602482018490526060604483015260056064830152647374616b6560d81b608483015290911690634000aea09060a4016020604051808303816000875af1925050508015612ddf575060408051601f3d908101601f19168201909252612ddc91810190614ae9565b60015b15612de657505b612df08183614b21565b95945050505050565b612e0382826112c7565b610cf15760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e3b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612e8982826112c7565b15610cf15760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216600090815260a0602090815260408083205460a290925282205410612f17575060006107f7565b6001600160a01b038316600090815260a2602090815260408083205460a090925290912054612f51918491612f4c91906145c7565b613989565b6001600160a01b038416600090815260a06020526040812080549293508392909190612f7e9084906145c7565b925050819055508060a46000828254612f9791906145c7565b9091555050609a54612fcf906001600160a01b0316630e178d9360e41b85612fbe85614cc4565b604051602401610842929190614ad0565b5092915050565b609a54604051600091613006916001600160a01b0390911690633a82b50d60e01b906108429086906024016147a7565b905080156130a657609854604051630200057560e51b81526001600160a01b0384811660048301526024820184905260606044830152600a60648301526930b63637b1b0ba34b7b760b11b608483015290911690634000aea09060a4016020604051808303816000875af192505050801561309e575060408051601f3d908101601f1916820190925261309b91810190614ae9565b60015b156130a6575b505b919050565b600054610100900460ff166131165760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610ad7565b565b610cf18282612df9565b6001600160a01b038216600090815260a060205260408120805480159284929161314d908490614b21565b925050819055508160a460008282546131669190614b21565b90915550600090506131778461116d565b6001600160a01b038516600090815260a060205260409020549091508111156131b6576040516305f48c3560e11b815260048101829052602401610ad7565b81156132c557600160a560008282546131cf9190614b21565b90915550506001600160a01b038416600090815260a1602052604081204290555b60995481101561325f5760006099828154811061320f5761320f614b0b565b6000918252602090912001546040516001600160a01b03909116915061324a9082906307b88ea560e01b90610842908a908a90602401614ad0565b5050808061325790614bfb565b9150506131f0565b50609a5460405161328b916001600160a01b0316906318932a6760e21b906108429088906024016147a7565b506040516001600160a01b038516907fa2ab3900cad3f350c9333a5814b4c581dee01f3ca964bbf8cd96e061a00da0d290600090a26132f4565b609a546040516132f2916001600160a01b031690630e178d9360e41b906108429088908890602401614ad0565b505b6001600160a01b038416600081815260a06020526040902054600080516020614db283398151915290613326876109ce565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a85460405161337d929190918252602082015260400190565b60405180910390a350505050565b60a85460a35460a45460a9546098546040516370a0823160e01b81526001600160a01b03909116906370a08231906133c79030906004016147a7565b602060405180830381865afa1580156133e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134089190614a69565b61341291906145c7565b61341c91906145c7565b61342691906145c7565b60a88190556000906134399083906145c7565b9050600061344784836145c7565b609a54604051919250613479916001600160a01b0390911690636fff860d60e01b906108429089908790602401614ad0565b50846001600160a01b03167fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd99856040516134b591815260200190565b60405180910390a280156134fa576040518181526000907fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd999060200160405180910390a25b60a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051613539929190918252602082015260400190565b60405180910390a35050505050565b600081156135a05761355a8383612ee6565b9050826001600160a01b03167fa005d3b8f5c8149659f2afc06ed99732d5891377a370a723669418ca1ca29ced8260405161359791815260200190565b60405180910390a25b60006135ab84612a2f565b90506001600160a01b0384163b15613619576040516320fed94f60e01b815260048101839052602481018290526001600160a01b038516906320fed94f90604401600060405180830381600087803b15801561360657600080fd5b505af1925050508015613617575060015b505b6040516001600160a01b038516907f85f399dce17fd584cfb835af46f245bced9a3bc29310ff3a4beb5f8a51d2ac0890600090a25092915050565b6001600160a01b038116600090815260b1602090815260408083205460b09092528220541161368b5761368682613998565b613694565b61369482613dee565b6098546097546040805163675c06f960e11b815290519394506001600160a01b039283169363a9059cbb939092169163ceb80df2916004808201926020929091908290030181865afa1580156136ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137129190614bca565b836040518363ffffffff1660e01b8152600401613730929190614ad0565b6020604051808303816000875af115801561374f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137739190614ae9565b506001600160a01b038216600090815260aa6020908152604080832080546001600160a01b031916905560ab825280832083905560ac825280832083905560ad825280832083905560ae90915281206137cb91614582565b6001600160a01b038216600090815260b06020908152604080832083905560b1825280832083905560b2825280832083905560b4825280832083905560b5825280832083905560b390915281205560a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051613858929190918252602082015260400190565b60405180910390a35050565b61386e82826112c7565b610cf15761387b816141bf565b6138868360206141d1565b604051602001613897929190614d04565b60408051601f198184030181529082905262461bcd60e51b8252610ad791600401614794565b6000816000036138cf575060006107f7565b6138d98383612ee6565b90506001600160a01b0383163b1561394057604051633dfb89db60e11b8152600481018290526001600160a01b03841690637bf713b690602401600060405180830381600087803b15801561392d57600080fd5b505af192505050801561393e575060015b505b826001600160a01b03167fa005d3b8f5c8149659f2afc06ed99732d5891377a370a723669418ca1ca29ced8260405161397b91815260200190565b60405180910390a292915050565b6000818310612992578161297c565b6001600160a01b03808216600090815260aa602090815260408083205460ae83528184205460ad84528285205460a290945291842054939416929091908111613a0e576001600160a01b038516600090815260a2602052604081208054839290613a039084906145c7565b90915550613a6d9050565b6001600160a01b038516600090815260a26020526040902054613a3190826145c7565b60a36000828254613a4291906145c7565b90915550506001600160a01b038516600090815260a26020526040812055613a6a8185614b21565b93505b6001600160a01b038516600090815260a0602052604090205415613ad6576001600160a01b038516600081815260a26020526040902054600080516020614dd283398151915290613abd8861087f565b6040805192835260208301919091520160405180910390a25b609760009054906101000a90046001600160a01b03166001600160a01b0316636abd9e416040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b4d9190614a69565b613b579042614b21565b6001600160a01b038616600090815260b66020526040812091909155805b83811015613c4e576001600160a01b038716600090815260ae60205260408120805483908110613ba757613ba7614b0b565b60009182526020808320909101546001600160a01b038b8116845260af8352604080852091909216808552925290912054909150600201613c13576001600160a01b038816600090815260b56020526040902054613c0690829061436d565b613c109084614b21565b92505b6001600160a01b03808916600090815260af602090815260408083209490931682529290925281205580613c4681614bfb565b915050613b75565b506001600160a01b03808716600090815260b36020908152604080832054938816835260a29091529020548111613cbd576001600160a01b038516600090815260a2602052604081208054839290613ca79084906145c7565b90915550613cb7905085836138bd565b50613d26565b6001600160a01b038516600090815260a26020526040902054613ce090826145c7565b60a36000828254613cf191906145c7565b90915550506001600160a01b038516600090815260a26020526040812055613d1982826145c7565b613d239087614b21565b95505b6001600160a01b038516600090815260a0602052604090205415613d8f576001600160a01b038516600081815260a26020526040902054600080516020614dd283398151915290613d768861087f565b6040805192835260208301919091520160405180910390a25b600060036001600160a01b038916600081815260b0602090815260408083205460b1835281842054825191825292810192909252810191909152600080516020614df28339815191529060600160405180910390a45050505050919050565b6001600160a01b03808216600090815260aa602090815260408083205460ae83528184205460ad84528285205460a290945291842054939416929091908111613e6f576001600160a01b038516600090815260a2602052604081208054839290613e599084906145c7565b90915550613e6990508582613548565b50613f1e565b6001600160a01b038516600090815260a26020526040902054613e9290826145c7565b60a36000828254613ea391906145c7565b90915550506001600160a01b038516600090815260a26020908152604080832083905560a090915290205415613f1e576001600160a01b038516600081815260a26020526040902054600080516020614dd283398151915290613f058861087f565b6040805192835260208301919091520160405180910390a25b6001600160a01b03808616600090815260b36020908152604080832054938716835260a29091529020548111613fb0576001600160a01b038416600090815260a2602052604081208054839290613f769084906145c7565b90915550506001600160a01b038616600090815260b46020526040902054613f9f90859061436d565b613fa990836145c7565b915061400f565b6001600160a01b038416600090815260a26020526040902054613fd390826145c7565b60a36000828254613fe491906145c7565b90915550506001600160a01b038416600090815260a2602052604081205561400c8186614b21565b94505b6001600160a01b038416600090815260a0602052604090205415614078576001600160a01b038416600081815260a26020526040902054600080516020614dd28339815191529061405f8761087f565b6040805192835260208301919091520160405180910390a25b60005b83811015614154576001600160a01b038716600090815260ae602052604081208054839081106140ad576140ad614b0b565b60009182526020808320909101546001600160a01b038b8116845260af8352604080852091909216808552925290912054909150600101614119576001600160a01b038816600090815260b5602052604090205461410c90829061436d565b61411690856145c7565b93505b6001600160a01b03808916600090815260af60209081526040808320949093168252929092528120558061414c81614bfb565b91505061407b565b5061415f8286614b21565b9450600060026001600160a01b038816600081815260b0602090815260408083205460b1835281842054825191825292810192909252810191909152600080516020614df28339815191529060600160405180910390a450505050919050565b60606107f76001600160a01b03831660145b606060006141e0836002614b5d565b6141eb906002614b21565b67ffffffffffffffff811115614203576142036148c3565b6040519080825280601f01601f19166020018201604052801561422d576020820181803683370190505b509050600360fc1b8160008151811061424857614248614b0b565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061427757614277614b0b565b60200101906001600160f81b031916908160001a905350600061429b846002614b5d565b6142a6906001614b21565b90505b600181111561431e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106142da576142da614b0b565b1a60f81b8282815181106142f0576142f0614b0b565b60200101906001600160f81b031916908160001a90535060049490941c9361431781614d73565b90506142a9565b50831561297c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ad7565b60408051600481526024810182526020810180516001600160e01b0316638da5cb5b60e01b1790529051600091829182916001600160a01b038716916143b39190614662565b6000604051808303816000865af19150503d80600081146143f0576040519150601f19603f3d011682016040523d82523d6000602084013e6143f5565b606091505b5091509150818015614408575080516020145b1561448657609854604051630200057560e51b81526001600160a01b0390911690634000aea09061444190889088908690600401614d8a565b6020604051808303816000875af192505050801561447c575060408051601f3d908101601f1916820190925261447991810190614ae9565b60015b1561448657508392505b505092915050565b82805461449a90614a9c565b90600052602060002090601f0160209004810192826144bc5760008555614502565b82601f106144d55782800160ff19823516178555614502565b82800160010185558215614502579182015b828111156145025782358255916020019190600101906144e7565b50610fad92915061459c565b82805461451a90614a9c565b90600052602060002090601f01602090048101928261453c5760008555614502565b82601f1061455557805160ff1916838001178555614502565b82800160010185558215614502579182015b82811115614502578251825591602001919060010190614567565b50805460008255906000526020600020908101906105f991905b5b80821115610fad576000815560010161459d565b634e487b7160e01b600052601160045260246000fd5b6000828210156145d9576145d96145b1565b500390565b600080858511156145ee57600080fd5b838611156145fb57600080fd5b5050820193919092039150565b6001600160601b031981358181169160148510156144865760149490940360031b84901b1690921692915050565b60005b83811015614651578181015183820152602001614639565b838111156108795750506000910152565b60008251614674818460208701614636565b9190910192915050565b60006020828403121561469057600080fd5b81356001600160e01b03198116811461297c57600080fd5b6001600160a01b03811681146105f957600080fd5b600080604083850312156146d057600080fd5b82356146db816146a8565b946020939093013593505050565b6000602082840312156146fb57600080fd5b813561297c816146a8565b60006020828403121561471857600080fd5b5035919050565b6000806040838503121561473257600080fd5b823591506020830135614744816146a8565b809150509250929050565b60008151808452614767816020860160208601614636565b601f01601f19169290920160200192915050565b8281526040602082015260006109c6604083018461474f565b60208152600061297c602083018461474f565b6001600160a01b0391909116815260200190565b60008083601f8401126147cd57600080fd5b50813567ffffffffffffffff8111156147e557600080fd5b6020830191508360208285010111156147fd57600080fd5b9250929050565b600080600080600080600080610100898b03121561482157600080fd5b883567ffffffffffffffff8082111561483957600080fd5b6148458c838d016147bb565b909a50985060208b013591508082111561485e57600080fd5b5061486b8b828c016147bb565b909750955050604089013561487f816146a8565b9350606089013561488f816146a8565b925060e089018a8111156148a257600080fd5b60808a019250356148b2816146a8565b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156148ec57600080fd5b82356148f7816146a8565b9150602083013567ffffffffffffffff8082111561491457600080fd5b818501915085601f83011261492857600080fd5b81358181111561493a5761493a6148c3565b604051601f8201601f19908116603f01168101908382118183101715614962576149626148c3565b8160405282815288602084870101111561497b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080606085870312156149b357600080fd5b84356149be816146a8565b935060208501359250604085013567ffffffffffffffff8111156149e157600080fd5b6149ed878288016147bb565b95989497509550505050565b60008060408385031215614a0c57600080fd5b8235614a17816146a8565b91506020830135614744816146a8565b600080600060608486031215614a3c57600080fd5b8335614a47816146a8565b9250602084013591506040840135614a5e816146a8565b809150509250925092565b600060208284031215614a7b57600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b600181811c90821680614ab057607f821691505b6020821081036130a457634e487b7160e01b600052602260045260246000fd5b6001600160a01b03929092168252602082015260400190565b600060208284031215614afb57600080fd5b8151801515811461297c57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008219821115614b3457614b346145b1565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000816000190483118215151615614b7757614b776145b1565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614ba157614ba1614b7c565b500490565b805160208083015191908110156130a45760001960209190910360031b1b16919050565b600060208284031215614bdc57600080fd5b815161297c816146a8565b600082614bf657614bf6614b7c565b500690565b600060018201614c0d57614c0d6145b1565b5060010190565b828152600060206040818401526000845481600182811c915080831680614c3c57607f831692505b8583108103614c5957634e487b7160e01b85526022600452602485fd5b6040880183905260608801818015614c785760018114614c8957614cb4565b60ff19861682528782019650614cb4565b60008b81526020902060005b86811015614cae57815484820152908501908901614c95565b83019750505b50949a9950505050505050505050565b6000600160ff1b8201614cd957614cd96145b1565b5060000390565b6001600160a01b03831681526040602082018190526000906109c69083018461474f565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614d36816017850160208801614636565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614d67816028840160208801614636565b01602801949350505050565b600081614d8257614d826145b1565b506000190190565b60018060a01b0384168152826020820152606060408201526000612df0606083018461474f56fe5d179bbeed3396160151c93c13d38566dc1643f25a316cca998cd25f45a8bd3f7785543bdf6fdde3b8486c62fa277837a6032d5819acf53e664ef0c45332fcb27dcb8032e88752534faa495e623b33aa8a0aeeb94c02debf5d97782e5cca873438a9ab06ef5f5ea75fd622f984e03b2393343b6039c656e874e3fa9e3ddcd7b2a26469706673582212209e2bfd7ff91e6b9338667a913c5b8c8ead561197397cd8f43fc4850c192a255f64736f6c634300080d0033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102d75760003560e01c8063584cb7cf11610188578063a5b83ce4116100e4578063d547741f11610092578063d547741f14610761578063da5a517b14610774578063df4bbd2214610787578063f4408e4b1461078f578063fa267ddf14610797578063fbbabed9146107a0578063fc0c546a146107b3576102d7565b8063a5b83ce4146106dc578063acbeddd7146106ef578063adc9772e14610702578063b6cce5e214610715578063b9efec9514610728578063c02755351461073b578063d11d8fc41461074e576102d7565b80637db18807116101415780637db188071461066c5780637e11d1c61461067f57806391a113031461069257806391d148541461069b57806398833130146106ae578063a217fddf146106c1578063a4c0ed36146106c9576102d7565b8063584cb7cf14610624578063625eb6c81461063757806371b906eb1461064a578063759e30d8146106525780637c6543031461065b5780637c6f315814610663576102d7565b806334a0f881116102375780633ccfd60b116101f05780633ccfd60b146105b457806340947369146105bc5780634562980f146105c557806348611fcd146105d85780634a45d2e6146105eb5780635499dca5146105fc57806354a991b414610611576102d7565b806334a0f8811461052f578063357e47fe1461053857806336568abe1461055957806338106e4d1461056c578063392f37e91461057f5780633a1c0aa814610594576102d7565b806319d164f11161029457806319d164f1146104915780632014e5d1146104b1578063248a9ca3146104be5780632b308a56146104e15780632def6620146104f45780632f2ff15d146104fc578063303cbe571461050f576102d7565b806301ffc9a7146103f757806304a105911461041f57806309f359be1461043457806311648a4c14610455578063131b9c041461045e57806314c948eb14610471575b60003660603330146102fc57604051634ca8886760e01b815260040160405180910390fd5b816000848261030c6014826145c7565b610318928592906145de565b61032191614608565b60601c905060008581866103366020876145c7565b92610343939291906145de565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051949550938493506001600160a01b038716925061039591508590614662565b600060405180830381855af49150503d80600081146103d0576040519150601f19603f3d011682016040523d82523d6000602084013e6103d5565b606091505b5091509150816103e757805181602001fd5b8051975060200195505050505050f35b61040a61040536600461467e565b6107c6565b60405190151581526020015b60405180910390f35b61043261042d3660046146bd565b6107fd565b005b6104476104423660046146e9565b61087f565b604051908152602001610416565b61044760a75481565b61044761046c3660046146e9565b6109ce565b61044761047f3660046146e9565b60a06020526000908152604090205481565b61044761049f3660046146e9565b60a26020526000908152604090205481565b60a65460a554101561040a565b6104476104cc366004614706565b60009081526065602052604090206001015490565b6104326104ef3660046146bd565b610a33565b610447610aaa565b61043261050a36600461471f565b610b45565b61044761051d3660046146e9565b60a16020526000908152604090205481565b61044760a45481565b61054b6105463660046146e9565b610b6f565b60405161041692919061477b565b61043261056736600461471f565b610c77565b61044761057a366004614706565b610cf5565b610587610e96565b6040516104169190614794565b609a546105a7906001600160a01b031681565b60405161041691906147a7565b610447610f24565b61044760a65481565b6104326105d3366004614804565b610fb1565b6104476105e63660046146e9565b61116d565b6104326105f9366004614706565b50565b33600090815260a06020526040902054610447565b609b546105a7906001600160a01b031681565b609c546105a7906001600160a01b031681565b6105a7610645366004614706565b6111b5565b6104476111df565b61044760a35481565b61040a611212565b61044760a55481565b61058761067a3660046146e9565b611230565b61043261068d3660046148d9565b611249565b61044760a85481565b61040a6106a936600461471f565b6112c7565b6097546105a7906001600160a01b031681565b610447600081565b6104326106d736600461499d565b6112f2565b6104326106ea3660046146bd565b61135a565b6104326106fd3660046146bd565b6113bd565b6104326107103660046146bd565b611406565b610432610723366004614706565b611486565b6104326107363660046146bd565b61150d565b6104476107493660046146e9565b611556565b61043261075c3660046149f9565b61166b565b61043261076f36600461471f565b612516565b6104476107823660046146e9565b61253b565b610447612583565b610587612595565b61044760a95481565b6104326107ae366004614a27565b6125a2565b6098546105a7906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b14806107f757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006108088161289b565b609b80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108799190632522e97360e11b906044015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526128a5565b50505050565b600080609760009054906101000a90046001600160a01b03166001600160a01b031663663163726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190614a69565b6001600160a01b038416600090815260a2602090815260408083205460ab9092528220549293509190036109bc576109b981609760009054906101000a90046001600160a01b03166001600160a01b031663fc1e490f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190614a69565b6109b490670de0b6b3a76400006145c7565b612946565b90505b6109c68183612983565b949350505050565b609a546040516000916107f791636e9bb3f760e01b916109fc9186916001600160a01b031690602401614a82565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612999565b6000610a3e8161289b565b609980546001810182556000919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b03851617905560405160248101839052610879908490632522e97360e11b90604401610842565b60003381610ab78261253b565b90508015610ae0576040516301e1d66b60e21b8152600481018290526024015b60405180910390fd5b6001600160a01b038216600090815260a2602052604090205415610b35576001600160a01b038216600090815260a2602052604090819020549051635df79f0d60e11b81526004810191909152602401610ad7565b610b3e82612a2f565b9250505090565b600082815260656020526040902060010154610b608161289b565b610b6a8383612df9565b505050565b609c546000906060906001600160a01b0316610b9e5760405163213a65f360e11b815260040160405180910390fd5b609c54604051610bcb9163c027553560e01b916109fc9187916001600160a01b0390911690602401614a82565b6001600160a01b0384166000908152609f60205260409020805491935090610bf290614a9c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1e90614a9c565b8015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b820191906000526020600020905b815481529060010190602001808311610c4e57829003601f168201915b50505050509050915091565b6001600160a01b0381163314610ce75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610ad7565b610cf18282612e7f565b5050565b33600081815260a060205260408120549091908310610d275760405163aa4c075760e01b815260040160405180910390fd5b6000610d328261116d565b905080841015610d58576040516305f48c3560e11b815260048101829052602401610ad7565b6001600160a01b038216600090815260a06020526040902054610d87908390610d829087906145c7565b612ee6565b60985460405163a9059cbb60e01b81529194506001600160a01b03169063a9059cbb90610dba9085908790600401614ad0565b6020604051808303816000875af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfd9190614ae9565b506001600160a01b038216600081815260a06020526040902054600080516020614db283398151915290610e30856109ce565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051610e87929190918252602082015260400190565b60405180910390a35050919050565b609e8054610ea390614a9c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecf90614a9c565b8015610f1c5780601f10610ef157610100808354040283529160200191610f1c565b820191906000526020600020905b815481529060010190602001808311610eff57829003601f168201915b505050505081565b33600081815260a160205260408120549091908203610f56576040516314625d5d60e21b815260040160405180910390fd5b610f5f81612fd6565b91508115610fad576001600160a01b038116600081815260a06020526040808220549051600080516020614db283398151915292610fa4928252602082015260400190565b60405180910390a25b5090565b600054610100900460ff1615808015610fd15750600054600160ff909116105b80610feb5750303b158015610feb575060005460ff166001145b61104e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ad7565b6000805460ff191660011790558015611071576000805461ff0019166101001790555b63ffffffff8335811660a75560208401351660a68190556040840135906000036110ae5760405163309f1b0d60e21b815260040160405180910390fd5b609880546001600160a01b0319166001600160a01b0387161790556110d5609d8b8b61448e565b506110e2609e898961448e565b50609780546001600160a01b0319166001600160a01b0388161790556111066130ab565b611111600033613118565b61111b838261150d565b508015611162576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b609c546000906001600160a01b031661118857506000919050565b609c546040516107f7916304f9acdf60e11b916109fc9186916001600160a01b0390911690602401614a82565b609981815481106111c557600080fd5b6000918252602090912001546001600160a01b0316905081565b609a5460405160009161120d91631bc8977160e31b916109fc916001600160a01b03909116906024016147a7565b905090565b600060a754426112229190614b21565b61122a6111df565b11905090565b609f6020526000908152604090208054610ea390614a9c565b6001600160a01b0382166000908152609f6020908152604090912082516112729284019061450e565b50609c546001600160a01b031661129c5760405163213a65f360e11b815260040160405180910390fd5b609c54610b6a906001600160a01b031663344763f160e21b8433604051602401610842929190614a82565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6098546001600160a01b0316331461131d5760405163118d9d7160e11b815260040160405180910390fd5b601481900361133b57813560601c6113358185613122565b50610879565b60208190036113505781356113358185613122565b610879848461338b565b609c546001600160a01b03166113835760405163213a65f360e11b815260040160405180910390fd5b609c546040516001600160a01b03848116602483015260448201849052336064830152610b6a92169063fbbabed960e01b90608401610842565b60006113c88161289b565b609c80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108799190632522e97360e11b90604401610842565b6098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b815260040161143893929190614b39565b6020604051808303816000875af1158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190614ae9565b50610cf18282613122565b8015611503576098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b81526004016114be93929190614b39565b6020604051808303816000875af11580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115019190614ae9565b505b6105f9338261338b565b60006115188161289b565b609a80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108799190632522e97360e11b90604401610842565b6001600160a01b038116600090815260ab6020526040812054810361157d57506000919050565b6001600160a01b03808316600090815260aa602090815260408083205460ab83528184205460b284528285205460b090945291909320549290931692916115c990640100000000614b5d565b6115d39190614b92565b6001600160a01b038516600090815260b2602090815260408083205460b19092529091205461160790640100000000614b5d565b6116119190614b92565b6040805160609590951b6001600160601b031916602086015260e093841b6001600160e01b0319908116603487015292841b83166038860152921b16603c830152016040516020818303038152906040526107f790614ba6565b816001600160a01b0316816001600160a01b0316036116c35760405162461bcd60e51b815260206004820152601460248201527332b93937b92fb1b0b73737ba233630b3a9b2b63360611b6044820152606401610ad7565b6001600160a01b038216600090815260ab602052604090205415801561170057506001600160a01b038216600090815260b6602052604090205442115b6117445760405162461bcd60e51b815260206004820152601560248201527432b93937b92fb1b0b73737ba233630b3a0b3b0b4b760591b6044820152606401610ad7565b6001600160a01b038216600090815260a060205260409020546117a55760405162461bcd60e51b8152602060048201526019602482015278195c9c9bdc97d99b1859d5185c99d95d139bdd14dd185ad959603a1b6044820152606401610ad7565b6097546040805163fc1e490f60e01b81529051670de0b6b3a7640000926001600160a01b03169163fc1e490f9160048083019260209291908290030181865afa1580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a9190614a69565b6001600160a01b03808516600090815260a06020908152604091829020546097548351633318b1b960e11b815293516118a295929491909216926366316372926004808401938290030181865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190614a69565b612983565b6118ac9190614b5d565b6118b69190614b92565b6001600160a01b038316600090815260ad6020908152604080832084905560a2909152812080549091906118eb908490614b21565b90915550506001600160a01b038216600090815260a0602090815260408083205460a290925290912054111561197a576001600160a01b038216600090815260ad602090815260408083205460a2909252822080549192909161194f9084906145c7565b90915550506001600160a01b038216600090815260ad60205260408120819055610b6a908390613548565b6001600160a01b03828116600090815260aa602090815260409182902080546001600160a01b03191685851617905560975482516358c6e66160e11b8152925193169263b18dccc29260048082019392918290030181865afa1580156119e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a089190614a69565b611a129042614b21565b6001600160a01b03808416600090815260ab602090815260409182902093909355609754815163cb85fe3560e01b8152915192169263cb85fe35926004808401938290030181865afa158015611a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a909190614a69565b6001600160a01b038316600090815260ab6020526040902054611ab39190614b21565b6001600160a01b03808416600090815260ac602090815260409182902093909355609754815163e2811d6760e01b8152915192169263e2811d67926004808401938290030181865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190614a69565b6001600160a01b03808416600090815260b360209081526040918290209390935560975481516305e518ab60e51b8152915192169263bca31560926004808401938290030181865afa158015611b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baf9190614a69565b6001600160a01b03808416600090815260b56020908152604091829020939093556097548151636d6ae51960e11b8152915192169263dad5ca32926004808401938290030181865afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d9190614a69565b6001600160a01b03808416600090815260b4602090815260408083209490945560b3815283822054928516825260a29052918220805491929091611c72908490614b21565b90915550611c8190508161087f565b6001600160a01b038216600090815260a060205260409020541015611cdf5760405162461bcd60e51b81526020600482015260146024820152736572726f725f6e6f74456e6f7567685374616b6560601b6044820152606401610ad7565b60975460408051635f30020760e11b815290516000926001600160a01b03169163be60040e9160048083019260209291908290030181865afa158015611d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4d9190614bca565b90506000816001600160a01b03166342169e486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db39190614a69565b905060008111611dfe5760405162461bcd60e51b81526020600482015260166024820152756572726f725f6e6f456c696769626c65566f7465727360501b6044820152606401610ad7565b60975460408051639ce68dc360e01b815290516000926001600160a01b031691639ce68dc39160048083019260209291908290030181865afa158015611e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6c9190614a69565b905060a082901b6001600160a01b0386161760008080805b6001600160a01b038a16600090815260ae602052604090205486118015611f29575085811080611f295750609760009054906101000a90046001600160a01b03166001600160a01b031663d2d5028c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f269190614a69565b81105b1561230d57611f39602082614be7565b6000036120c65760975460408051631444983360e31b815290516000926001600160a01b03169163a224c1989160048083019260209291908290030181865afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae9190614bca565b6001600160a01b03161461209d57609760009054906101000a90046001600160a01b03166001600160a01b031663a224c1986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120339190614bca565b6001600160a01b031663f5b0fe546040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120969190614a69565b94506120ce565b6040805160208101879052016040516020818303038152906040528051906020012094506120ce565b600885901c94505b60006001600160a01b03891663da58c7d96120e98a89614be7565b6040518263ffffffff1660e01b815260040161210791815260200190565b602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190614bca565b9050896001600160a01b0316816001600160a01b0316148061217b57508a6001600160a01b0316816001600160a01b0316145b806121ab57506001600160a01b03808c16600090815260af60209081526040808320938516835292905290812054135b156121b657506122fb565b6040516364f1abb760e01b81526001600160a01b038216906364f1abb7906121e2908e906004016147a7565b600060405180830381600087803b1580156121fc57600080fd5b505af192505050801561220d575060015b61221757506122fb565b6001600160a01b038b8116600090815260ae6020908152604080832080546001810182559084528284200180546001600160a01b03191694861694851790558051636114c8c760e11b8152905192939263c229918e926004808401939192918290030181865afa15801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b39190614a69565b90506122bf8187614b21565b6001600160a01b03808e16600090815260af602090815260408083209387168352929052208290559550848111156122f8578094508193505b50505b8061230581614bfb565b915050611e84565b508261231a836002614b5d565b1015801561234057506001600160a01b038916600090815260ae60205260409020546002105b1561239a5761234f82846145c7565b925061235c6001846145c7565b6001600160a01b03808b16600090815260af602090815260408083209386168352929052205561238d6001846145c7565b6123979084614b21565b92505b6001600160a01b038916600090815260b26020908152604080832086905560ae90915290205461240c5760405162461bcd60e51b815260206004820152601b60248201527f6572726f725f6661696c6564546f46696e6452657669657765727300000000006044820152606401610ad7565b6001600160a01b038816600081815260a26020526040902054600080516020614dd28339815191529061243e8b61087f565b6040805192835260208301919091520160405180910390a26001600160a01b038916600081815260a26020526040902054600080516020614dd2833981519152906124888c61087f565b6040805192835260208301919091520160405180910390a26001600160a01b03808a16600081815260ae602090815260408083205460ad835281842054609f90935292819020905192948d1693927fbfc2ea38f654c28196c9b1c7a859115b1d74103c705d851743383e2bcd8f762492612503929091614c14565b60405180910390a4505050505050505050565b6000828152606560205260409020600101546125318161289b565b610b6a8383612e7f565b609b546000906001600160a01b031661255657506000919050565b609b546040516107f7916318820b1b60e01b916109fc9186916001600160a01b0390911690602401614a82565b60003361258f81612a2f565b91505090565b609d8054610ea390614a9c565b6001600160a01b038316600090815260ab60205260409020546125fa5760405162461bcd60e51b815260206004820152601060248201526f195c9c9bdc97db9bdd119b1859d9d95960821b6044820152606401610ad7565b6001600160a01b038316600090815260ab6020526040902054421161265a5760405162461bcd60e51b8152602060048201526016602482015275195c9c9bdc97dd9bdd1a5b99d39bdd14dd185c9d195960521b6044820152606401610ad7565b6001600160a01b038316600090815260ac602052604090205442111561268357610b6a83613654565b6001600160a01b03808416600090815260af6020908152604080832093851683529290529081205482918112156126f15760405162461bcd60e51b8152602060048201526012602482015271195c9c9bdc97d85b1c9958591e559bdd195960721b6044820152606401610ad7565b600081136127375760405162461bcd60e51b81526020600482015260136024820152726572726f725f7265766965776572734f6e6c7960681b6044820152606401610ad7565b600060018086169003612799576001600160a01b03808716600081815260af602090815260408083209488168352938152838220600019905591815260b0909152908120805484929061278b908490614b21565b909155508291506127f29050565b6001600160a01b03808716600081815260af602090815260408083209488168352938152838220600119905591815260b190915290812080548492906127e0908490614b21565b909155506127ef905082614cc4565b90505b6001600160a01b03831660016001600160a01b038816600081815260b0602090815260408083205460b1835292819020548151938452918301919091528101859052600080516020614df28339815191529060600160405180910390a46001600160a01b038616600090815260b2602090815260408083205460b183528184205460b09093529220546128859190614b21565b036128935761289386613654565b505050505050565b6105f98133613864565b6000806000846001600160a01b0316846040516128c29190614662565b600060405180830381855af49150503d80600081146128fd576040519150601f19603f3d011682016040523d82523d6000602084013e612902565b606091505b50915091508161293a57805160000361293257848460405163918623b760e01b8152600401610ad7929190614ce0565b805181602001fd5b60200151949350505050565b60008160018161295e86670de0b6b3a7640000614b5d565b6129689190614b21565b61297291906145c7565b61297c9190614b92565b9392505050565b6000818311612992578161297c565b5090919050565b6000806000306001600160a01b0316846040516129b69190614662565b600060405180830381855afa9150503d80600081146129f1576040519150601f19603f3d011682016040523d82523d6000602084013e6129f6565b606091505b509150915081612a24578051600003612932578360405163029801d760e41b8152600401610ad79190614794565b602001519392505050565b6001600160a01b038116600090815260a160205260408120548103612a67576040516314625d5d60e21b815260040160405180910390fd5b6001600160a01b038216600090815260a2602052604090205415612af6576001600160a01b038216600090815260a2602052604081208054919055612aac83826138bd565b60a36000828254612abd9190614b21565b909155505060408051600080825260208201526001600160a01b03851691600080516020614dd2833981519152910160405180910390a2505b6000612b018361253b565b90508015612bed576098546097546040805163675c06f960e11b815290516001600160a01b039384169363a9059cbb93169163ceb80df29160048083019260209291908290030181865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b819190614bca565b612b8b86856138bd565b6040518363ffffffff1660e01b8152600401612ba8929190614ad0565b6020604051808303816000875af1158015612bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612beb9190614ae9565b505b6000612bf884612fd6565b6001600160a01b038516600090815260a0602052604081205460a58054939450909260019290612c299084906145c7565b925050819055508060a46000828254612c4291906145c7565b90915550506001600160a01b03808616600090815260a06020908152604080832083905560a190915280822091909155609a549051612c97929190911690630c8a99c360e11b906108429089906024016147a7565b5060408051600080825260208201526001600160a01b03871691600080516020614db2833981519152910160405180910390a260a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051612d09929190918252602082015260400190565b60405180910390a3846001600160a01b03167f14a9c4ce3dc5694e8873bfea05304d57d64ba56ee7ad9ad5fe40b3d8e4e4d3f082604051612d4c91815260200190565b60405180910390a2609854604051630200057560e51b81526001600160a01b038781166004830152602482018490526060604483015260056064830152647374616b6560d81b608483015290911690634000aea09060a4016020604051808303816000875af1925050508015612ddf575060408051601f3d908101601f19168201909252612ddc91810190614ae9565b60015b15612de657505b612df08183614b21565b95945050505050565b612e0382826112c7565b610cf15760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e3b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612e8982826112c7565b15610cf15760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216600090815260a0602090815260408083205460a290925282205410612f17575060006107f7565b6001600160a01b038316600090815260a2602090815260408083205460a090925290912054612f51918491612f4c91906145c7565b613989565b6001600160a01b038416600090815260a06020526040812080549293508392909190612f7e9084906145c7565b925050819055508060a46000828254612f9791906145c7565b9091555050609a54612fcf906001600160a01b0316630e178d9360e41b85612fbe85614cc4565b604051602401610842929190614ad0565b5092915050565b609a54604051600091613006916001600160a01b0390911690633a82b50d60e01b906108429086906024016147a7565b905080156130a657609854604051630200057560e51b81526001600160a01b0384811660048301526024820184905260606044830152600a60648301526930b63637b1b0ba34b7b760b11b608483015290911690634000aea09060a4016020604051808303816000875af192505050801561309e575060408051601f3d908101601f1916820190925261309b91810190614ae9565b60015b156130a6575b505b919050565b600054610100900460ff166131165760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610ad7565b565b610cf18282612df9565b6001600160a01b038216600090815260a060205260408120805480159284929161314d908490614b21565b925050819055508160a460008282546131669190614b21565b90915550600090506131778461116d565b6001600160a01b038516600090815260a060205260409020549091508111156131b6576040516305f48c3560e11b815260048101829052602401610ad7565b81156132c557600160a560008282546131cf9190614b21565b90915550506001600160a01b038416600090815260a1602052604081204290555b60995481101561325f5760006099828154811061320f5761320f614b0b565b6000918252602090912001546040516001600160a01b03909116915061324a9082906307b88ea560e01b90610842908a908a90602401614ad0565b5050808061325790614bfb565b9150506131f0565b50609a5460405161328b916001600160a01b0316906318932a6760e21b906108429088906024016147a7565b506040516001600160a01b038516907fa2ab3900cad3f350c9333a5814b4c581dee01f3ca964bbf8cd96e061a00da0d290600090a26132f4565b609a546040516132f2916001600160a01b031690630e178d9360e41b906108429088908890602401614ad0565b505b6001600160a01b038416600081815260a06020526040902054600080516020614db283398151915290613326876109ce565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a85460405161337d929190918252602082015260400190565b60405180910390a350505050565b60a85460a35460a45460a9546098546040516370a0823160e01b81526001600160a01b03909116906370a08231906133c79030906004016147a7565b602060405180830381865afa1580156133e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134089190614a69565b61341291906145c7565b61341c91906145c7565b61342691906145c7565b60a88190556000906134399083906145c7565b9050600061344784836145c7565b609a54604051919250613479916001600160a01b0390911690636fff860d60e01b906108429089908790602401614ad0565b50846001600160a01b03167fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd99856040516134b591815260200190565b60405180910390a280156134fa576040518181526000907fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd999060200160405180910390a25b60a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051613539929190918252602082015260400190565b60405180910390a35050505050565b600081156135a05761355a8383612ee6565b9050826001600160a01b03167fa005d3b8f5c8149659f2afc06ed99732d5891377a370a723669418ca1ca29ced8260405161359791815260200190565b60405180910390a25b60006135ab84612a2f565b90506001600160a01b0384163b15613619576040516320fed94f60e01b815260048101839052602481018290526001600160a01b038516906320fed94f90604401600060405180830381600087803b15801561360657600080fd5b505af1925050508015613617575060015b505b6040516001600160a01b038516907f85f399dce17fd584cfb835af46f245bced9a3bc29310ff3a4beb5f8a51d2ac0890600090a25092915050565b6001600160a01b038116600090815260b1602090815260408083205460b09092528220541161368b5761368682613998565b613694565b61369482613dee565b6098546097546040805163675c06f960e11b815290519394506001600160a01b039283169363a9059cbb939092169163ceb80df2916004808201926020929091908290030181865afa1580156136ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137129190614bca565b836040518363ffffffff1660e01b8152600401613730929190614ad0565b6020604051808303816000875af115801561374f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137739190614ae9565b506001600160a01b038216600090815260aa6020908152604080832080546001600160a01b031916905560ab825280832083905560ac825280832083905560ad825280832083905560ae90915281206137cb91614582565b6001600160a01b038216600090815260b06020908152604080832083905560b1825280832083905560b2825280832083905560b4825280832083905560b5825280832083905560b390915281205560a65460a5541015151560a55463ffffffff16600080516020614e1283398151915260a45460a854604051613858929190918252602082015260400190565b60405180910390a35050565b61386e82826112c7565b610cf15761387b816141bf565b6138868360206141d1565b604051602001613897929190614d04565b60408051601f198184030181529082905262461bcd60e51b8252610ad791600401614794565b6000816000036138cf575060006107f7565b6138d98383612ee6565b90506001600160a01b0383163b1561394057604051633dfb89db60e11b8152600481018290526001600160a01b03841690637bf713b690602401600060405180830381600087803b15801561392d57600080fd5b505af192505050801561393e575060015b505b826001600160a01b03167fa005d3b8f5c8149659f2afc06ed99732d5891377a370a723669418ca1ca29ced8260405161397b91815260200190565b60405180910390a292915050565b6000818310612992578161297c565b6001600160a01b03808216600090815260aa602090815260408083205460ae83528184205460ad84528285205460a290945291842054939416929091908111613a0e576001600160a01b038516600090815260a2602052604081208054839290613a039084906145c7565b90915550613a6d9050565b6001600160a01b038516600090815260a26020526040902054613a3190826145c7565b60a36000828254613a4291906145c7565b90915550506001600160a01b038516600090815260a26020526040812055613a6a8185614b21565b93505b6001600160a01b038516600090815260a0602052604090205415613ad6576001600160a01b038516600081815260a26020526040902054600080516020614dd283398151915290613abd8861087f565b6040805192835260208301919091520160405180910390a25b609760009054906101000a90046001600160a01b03166001600160a01b0316636abd9e416040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b4d9190614a69565b613b579042614b21565b6001600160a01b038616600090815260b66020526040812091909155805b83811015613c4e576001600160a01b038716600090815260ae60205260408120805483908110613ba757613ba7614b0b565b60009182526020808320909101546001600160a01b038b8116845260af8352604080852091909216808552925290912054909150600201613c13576001600160a01b038816600090815260b56020526040902054613c0690829061436d565b613c109084614b21565b92505b6001600160a01b03808916600090815260af602090815260408083209490931682529290925281205580613c4681614bfb565b915050613b75565b506001600160a01b03808716600090815260b36020908152604080832054938816835260a29091529020548111613cbd576001600160a01b038516600090815260a2602052604081208054839290613ca79084906145c7565b90915550613cb7905085836138bd565b50613d26565b6001600160a01b038516600090815260a26020526040902054613ce090826145c7565b60a36000828254613cf191906145c7565b90915550506001600160a01b038516600090815260a26020526040812055613d1982826145c7565b613d239087614b21565b95505b6001600160a01b038516600090815260a0602052604090205415613d8f576001600160a01b038516600081815260a26020526040902054600080516020614dd283398151915290613d768861087f565b6040805192835260208301919091520160405180910390a25b600060036001600160a01b038916600081815260b0602090815260408083205460b1835281842054825191825292810192909252810191909152600080516020614df28339815191529060600160405180910390a45050505050919050565b6001600160a01b03808216600090815260aa602090815260408083205460ae83528184205460ad84528285205460a290945291842054939416929091908111613e6f576001600160a01b038516600090815260a2602052604081208054839290613e599084906145c7565b90915550613e6990508582613548565b50613f1e565b6001600160a01b038516600090815260a26020526040902054613e9290826145c7565b60a36000828254613ea391906145c7565b90915550506001600160a01b038516600090815260a26020908152604080832083905560a090915290205415613f1e576001600160a01b038516600081815260a26020526040902054600080516020614dd283398151915290613f058861087f565b6040805192835260208301919091520160405180910390a25b6001600160a01b03808616600090815260b36020908152604080832054938716835260a29091529020548111613fb0576001600160a01b038416600090815260a2602052604081208054839290613f769084906145c7565b90915550506001600160a01b038616600090815260b46020526040902054613f9f90859061436d565b613fa990836145c7565b915061400f565b6001600160a01b038416600090815260a26020526040902054613fd390826145c7565b60a36000828254613fe491906145c7565b90915550506001600160a01b038416600090815260a2602052604081205561400c8186614b21565b94505b6001600160a01b038416600090815260a0602052604090205415614078576001600160a01b038416600081815260a26020526040902054600080516020614dd28339815191529061405f8761087f565b6040805192835260208301919091520160405180910390a25b60005b83811015614154576001600160a01b038716600090815260ae602052604081208054839081106140ad576140ad614b0b565b60009182526020808320909101546001600160a01b038b8116845260af8352604080852091909216808552925290912054909150600101614119576001600160a01b038816600090815260b5602052604090205461410c90829061436d565b61411690856145c7565b93505b6001600160a01b03808916600090815260af60209081526040808320949093168252929092528120558061414c81614bfb565b91505061407b565b5061415f8286614b21565b9450600060026001600160a01b038816600081815260b0602090815260408083205460b1835281842054825191825292810192909252810191909152600080516020614df28339815191529060600160405180910390a450505050919050565b60606107f76001600160a01b03831660145b606060006141e0836002614b5d565b6141eb906002614b21565b67ffffffffffffffff811115614203576142036148c3565b6040519080825280601f01601f19166020018201604052801561422d576020820181803683370190505b509050600360fc1b8160008151811061424857614248614b0b565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061427757614277614b0b565b60200101906001600160f81b031916908160001a905350600061429b846002614b5d565b6142a6906001614b21565b90505b600181111561431e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106142da576142da614b0b565b1a60f81b8282815181106142f0576142f0614b0b565b60200101906001600160f81b031916908160001a90535060049490941c9361431781614d73565b90506142a9565b50831561297c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ad7565b60408051600481526024810182526020810180516001600160e01b0316638da5cb5b60e01b1790529051600091829182916001600160a01b038716916143b39190614662565b6000604051808303816000865af19150503d80600081146143f0576040519150601f19603f3d011682016040523d82523d6000602084013e6143f5565b606091505b5091509150818015614408575080516020145b1561448657609854604051630200057560e51b81526001600160a01b0390911690634000aea09061444190889088908690600401614d8a565b6020604051808303816000875af192505050801561447c575060408051601f3d908101601f1916820190925261447991810190614ae9565b60015b1561448657508392505b505092915050565b82805461449a90614a9c565b90600052602060002090601f0160209004810192826144bc5760008555614502565b82601f106144d55782800160ff19823516178555614502565b82800160010185558215614502579182015b828111156145025782358255916020019190600101906144e7565b50610fad92915061459c565b82805461451a90614a9c565b90600052602060002090601f01602090048101928261453c5760008555614502565b82601f1061455557805160ff1916838001178555614502565b82800160010185558215614502579182015b82811115614502578251825591602001919060010190614567565b50805460008255906000526020600020908101906105f991905b5b80821115610fad576000815560010161459d565b634e487b7160e01b600052601160045260246000fd5b6000828210156145d9576145d96145b1565b500390565b600080858511156145ee57600080fd5b838611156145fb57600080fd5b5050820193919092039150565b6001600160601b031981358181169160148510156144865760149490940360031b84901b1690921692915050565b60005b83811015614651578181015183820152602001614639565b838111156108795750506000910152565b60008251614674818460208701614636565b9190910192915050565b60006020828403121561469057600080fd5b81356001600160e01b03198116811461297c57600080fd5b6001600160a01b03811681146105f957600080fd5b600080604083850312156146d057600080fd5b82356146db816146a8565b946020939093013593505050565b6000602082840312156146fb57600080fd5b813561297c816146a8565b60006020828403121561471857600080fd5b5035919050565b6000806040838503121561473257600080fd5b823591506020830135614744816146a8565b809150509250929050565b60008151808452614767816020860160208601614636565b601f01601f19169290920160200192915050565b8281526040602082015260006109c6604083018461474f565b60208152600061297c602083018461474f565b6001600160a01b0391909116815260200190565b60008083601f8401126147cd57600080fd5b50813567ffffffffffffffff8111156147e557600080fd5b6020830191508360208285010111156147fd57600080fd5b9250929050565b600080600080600080600080610100898b03121561482157600080fd5b883567ffffffffffffffff8082111561483957600080fd5b6148458c838d016147bb565b909a50985060208b013591508082111561485e57600080fd5b5061486b8b828c016147bb565b909750955050604089013561487f816146a8565b9350606089013561488f816146a8565b925060e089018a8111156148a257600080fd5b60808a019250356148b2816146a8565b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156148ec57600080fd5b82356148f7816146a8565b9150602083013567ffffffffffffffff8082111561491457600080fd5b818501915085601f83011261492857600080fd5b81358181111561493a5761493a6148c3565b604051601f8201601f19908116603f01168101908382118183101715614962576149626148c3565b8160405282815288602084870101111561497b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080606085870312156149b357600080fd5b84356149be816146a8565b935060208501359250604085013567ffffffffffffffff8111156149e157600080fd5b6149ed878288016147bb565b95989497509550505050565b60008060408385031215614a0c57600080fd5b8235614a17816146a8565b91506020830135614744816146a8565b600080600060608486031215614a3c57600080fd5b8335614a47816146a8565b9250602084013591506040840135614a5e816146a8565b809150509250925092565b600060208284031215614a7b57600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b600181811c90821680614ab057607f821691505b6020821081036130a457634e487b7160e01b600052602260045260246000fd5b6001600160a01b03929092168252602082015260400190565b600060208284031215614afb57600080fd5b8151801515811461297c57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008219821115614b3457614b346145b1565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000816000190483118215151615614b7757614b776145b1565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614ba157614ba1614b7c565b500490565b805160208083015191908110156130a45760001960209190910360031b1b16919050565b600060208284031215614bdc57600080fd5b815161297c816146a8565b600082614bf657614bf6614b7c565b500690565b600060018201614c0d57614c0d6145b1565b5060010190565b828152600060206040818401526000845481600182811c915080831680614c3c57607f831692505b8583108103614c5957634e487b7160e01b85526022600452602485fd5b6040880183905260608801818015614c785760018114614c8957614cb4565b60ff19861682528782019650614cb4565b60008b81526020902060005b86811015614cae57815484820152908501908901614c95565b83019750505b50949a9950505050505050505050565b6000600160ff1b8201614cd957614cd96145b1565b5060000390565b6001600160a01b03831681526040602082018190526000906109c69083018461474f565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614d36816017850160208801614636565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614d67816028840160208801614636565b01602801949350505050565b600081614d8257614d826145b1565b506000190190565b60018060a01b0384168152826020820152606060408201526000612df0606083018461474f56fe5d179bbeed3396160151c93c13d38566dc1643f25a316cca998cd25f45a8bd3f7785543bdf6fdde3b8486c62fa277837a6032d5819acf53e664ef0c45332fcb27dcb8032e88752534faa495e623b33aa8a0aeeb94c02debf5d97782e5cca873438a9ab06ef5f5ea75fd622f984e03b2393343b6039c656e874e3fa9e3ddcd7b2a26469706673582212209e2bfd7ff91e6b9338667a913c5b8c8ead561197397cd8f43fc4850c192a255f64736f6c634300080d0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
