{
  "_format": "hh-sol-artifact-1",
  "contractName": "StakedTokenV3",
  "sourceName": "contracts/StakedTokenV3.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "stakedToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "rewardToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "unstakeWindow",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "rewardsVault",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "emissionManager",
          "type": "address"
        },
        {
          "internalType": "uint128",
          "name": "distributionDuration",
          "type": "uint128"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "emission",
          "type": "uint256"
        }
      ],
      "name": "AssetConfigUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "AssetIndexUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Cooldown",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cooldownSeconds",
          "type": "uint256"
        }
      ],
      "name": "CooldownSecondsChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "DelegateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "DelegatedPowerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint216",
          "name": "exchangeRate",
          "type": "uint216"
        }
      ],
      "name": "ExchangeRateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "FundsReturned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPercentage",
          "type": "uint256"
        }
      ],
      "name": "MaxSlashablePercentageChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "PendingAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RewardsAccrued",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RewardsClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "RoleClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "destination",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Slashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "windowSeconds",
          "type": "uint256"
        }
      ],
      "name": "SlashingExitWindowDurationChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "SlashingSettled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "UserIndexUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CLAIM_HELPER_ROLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "COOLDOWN_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "COOLDOWN_SECONDS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DELEGATE_BY_TYPE_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DELEGATE_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DISTRIBUTION_END",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EIP712_REVISION",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EMISSION_MANAGER",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EXCHANGE_RATE_UNIT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "INITIAL_EXCHANGE_RATE",
      "outputs": [
        {
          "internalType": "uint216",
          "name": "",
          "type": "uint216"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOWER_BOUND",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRECISION",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REWARDS_VAULT",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REWARD_TOKEN",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SLASH_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "STAKED_TOKEN",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNSTAKE_WINDOW",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_aaveGovernance",
      "outputs": [
        {
          "internalType": "contract ITransferHook",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "_nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "_votingSnapshots",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "blockNumber",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "value",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "_votingSnapshotsCounts",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "assets",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "emissionPerSecond",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "lastUpdateTimestamp",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "claimAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsAndRedeem",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "claimAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsAndRedeemOnBehalf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "claimRewardsOnBehalf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "claimRoleAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "emissionPerSecond",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "totalStaked",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            }
          ],
          "internalType": "struct DistributionTypes.AssetConfigInput[]",
          "name": "assetsConfigInput",
          "type": "tuple[]"
        }
      ],
      "name": "configureAssets",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cooldown",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        }
      ],
      "name": "cooldownOnBehalfOf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        }
      ],
      "name": "delegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "delegateBySig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "delegateByType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "delegateByTypeBySig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "getAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCooldownSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "getDelegateeByType",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExchangeRate",
      "outputs": [
        {
          "internalType": "uint216",
          "name": "",
          "type": "uint216"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMaxSlashablePercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "getPendingAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "getPowerAtBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "enum IGovernancePowerDelegationToken.DelegationType",
          "name": "delegationType",
          "type": "uint8"
        }
      ],
      "name": "getPowerCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "getTotalRewardsBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getUserAssetData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inPostSlashingPeriod",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "slashingAdmin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "cooldownPauseAdmin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "claimHelper",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxSlashablePercentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "cooldownSeconds",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "previewRedeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "previewStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "redeemOnBehalf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "returnFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cooldownSeconds",
          "type": "uint256"
        }
      ],
      "name": "setCooldownSeconds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "setMaxSlashablePercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "setPendingAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "settleSlashing",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destination",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "slash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "stakerRewardsToClaim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "stakersCooldowns",
      "outputs": [
        {
          "internalType": "uint40",
          "name": "timestamp",
          "type": "uint40"
        },
        {
          "internalType": "uint216",
          "name": "amount",
          "type": "uint216"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "totalSupplyAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x610160604052600060095534801561001657600080fd5b50604051614d28380380614d288339810160408190526100359161011e565b858585858585816001600160801b03821661005081426101bd565b608052506001600160a01b0390811660a05295861660c052505091831660e05261010052166101205260036009819055506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e591906101d6565b60ff1690506100f581600a6102e7565b61014052506102f395505050505050565b6001600160a01b038116811461011b57600080fd5b50565b60008060008060008060c0878903121561013757600080fd5b865161014281610106565b602088015190965061015381610106565b60408801516060890151919650945061016b81610106565b608088015190935061017c81610106565b60a08801519092506001600160801b038116811461019957600080fd5b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b808201808211156101d0576101d06101a7565b92915050565b6000602082840312156101e857600080fd5b815160ff811681146101f957600080fd5b9392505050565b6001815b600184111561023b5780850481111561021f5761021f6101a7565b600184161561022d57908102905b60019390931c928002610204565b935093915050565b600082610252575060016101d0565b8161025f575060006101d0565b8160018114610275576002811461027f5761029b565b60019150506101d0565b60ff841115610290576102906101a7565b50506001821b6101d0565b5060208310610133831016604e8410600b84101617156102be575081810a6101d0565b6102cb6000198484610200565b80600019048211156102df576102df6101a7565b029392505050565b60006101f98383610243565b60805160a05160c05160e0516101005161012051610140516149796103af6000396000818161079e01528181610cd901528181610ff601526110670152600081816108dd015261251401526000818161064401526121af01526000818161091f01526124f20152600081816105ca01528181610d82015281816110f9015281816123d10152612dca015260008181610a89015261166d0152600081816108b6015281816137e10152818161381d015261384a01526149796000f3fe608060405234801561001057600080fd5b50600436106104495760003560e01c80638c9a281d11610241578063b2a5dbfa1161013b578063dc937e1c116100c3578063f036bc6811610087578063f036bc6814610b17578063f11b818814610b2b578063f34d96da14610b8d578063f713d8a814610b95578063fde9eb6914610ba857600080fd5b8063dc937e1c14610ac6578063dd62ed3e14610ad9578063dde43cba14610aec578063e6aa216c14610af3578063eab5231814610b0457600080fd5b8063c3863ada1161010a578063c3863ada14610a5e578063c3cda52014610a71578063cbcbb50714610a84578063d505accf14610aab578063dbc0ed8a14610abe57600080fd5b8063b2a5dbfa14610a05578063b2f4201d14610a18578063b9844d8d14610a2b578063c2ffbb9114610a4b57600080fd5b80639c9b5154116101c9578063aa9fbe021161018d578063aa9fbe02146109a8578063aaf5eb68146109cf578063ab406fe6146109d7578063adc9772e146109ea578063aff05aa9146109fd57600080fd5b80639c9b5154146109545780639e3ffce014610967578063a457c2d71461096f578063a6b63eb814610982578063a9059cbb1461099557600080fd5b8063946776cd11610210578063946776cd146108d857806395d89b41146108ff578063981b24d01461090757806399248ea71461091a5780639a99b4f01461094157600080fd5b80638c9a281d146108875780638dbefee21461088f5780638e9b2ca4146108a2578063919cd40f146108b157600080fd5b806341cbf54a116103525780636f50458d116102da578063781603761161029e578063781603761461080c578063787a08a61461082c5780637b5b1157146108345780637bb73c97146108475780637e90d7ef1461086757600080fd5b80636f50458d146107c057806370a08231146107d3578063727a5d57146107e657806372b49d631461079157806374011f56146107f957600080fd5b806358146d171161032157806358146d17146106f85780635b3cc0cf1461071f5780635c19a95c1461077e578063616e0bf9146107915780636198e1351461079957600080fd5b806341cbf54a1461068257806345755dd6146106a95780634575e69b146106bc5780634cdad506146106e557600080fd5b806323b872dd116103d5578063313ce567116103a4578063313ce567146105ec5780633373ee4c14610601578063359c4a961461063f5780633644e51514610666578063395093511461066f57600080fd5b806323b872dd14610578578063250201db1461058b57806330adf81f1461059e578063312f6b83146105c557600080fd5b8063111fd88b1161041c578063111fd88b1461050a578063112d037c1461053557806318160ddd1461054a5780631e9a69501461055257806320fb80b51461056557600080fd5b806302fb4d851461044e57806306fdde0314610474578063091030c314610489578063095ea7b3146104e7575b600080fd5b61046161045c3660046140b1565b610bbb565b6040519081526020015b60405180910390f35b61047c610df9565b60405161046b919061412b565b6104c261049736600461413e565b603e6020526000908152604090205464ffffffffff811690600160281b90046001600160d81b031682565b6040805164ffffffffff90931683526001600160d81b0390911660208301520161046b565b6104fa6104f53660046140b1565b610e8b565b604051901515815260200161046b565b61051d610518366004614159565b610ea3565b6040516001600160a01b03909116815260200161046b565b610548610543366004614172565b610ebe565b005b600254610461565b6105486105603660046140b1565b610f08565b610461610573366004614172565b610f17565b6104fa610586366004614172565b610f68565b61054861059936600461413e565b610f8c565b6104617f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b60125b60405160ff909116815260200161046b565b61046161060f3660046141af565b6001600160a01b038082166000908152603c60209081526040808320938616835260029093019052205492915050565b6104617f000000000000000000000000000000000000000000000000000000000000000081565b61046160435481565b6104fa61067d3660046140b1565b610fd2565b6104617f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d81565b6105486106b7366004614159565b610ff4565b61051d6106ca366004614159565b6000908152604660205260409020546001600160a01b031690565b6104616106f3366004614159565b611159565b610707670de0b6b3a764000081565b6040516001600160d81b03909116815260200161046b565b61075e61072d3660046140b1565b60066020908152600092835260408084209091529082529020546001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161046b565b61054861078c36600461413e565b611184565b604f54610461565b6104617f000000000000000000000000000000000000000000000000000000000000000081565b61051d6107ce3660046141f1565b61119c565b6104616107e136600461413e565b6111be565b6104616107f4366004614159565b6111d9565b610548610807366004614159565b6111fc565b61047c604051806040016040528060018152602001603160f81b81525081565b61054861123f565b610548610842366004614159565b61124a565b61046161085536600461413e565b60076020526000908152604090205481565b61046161087536600461413e565b603d6020526000908152604090205481565b610461600081565b61046161089d36600461413e565b6112bd565b610461670de0b6b3a764000081565b6104617f000000000000000000000000000000000000000000000000000000000000000081565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b61047c611398565b610461610915366004614159565b6113a7565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b61054861094f3660046140b1565b6113b2565b61054861096236600461421b565b6113bd565b610461600181565b6104fa61097d3660046140b1565b611414565b61054861099036600461425d565b61148f565b6104fa6109a33660046140b1565b611514565b6104617f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e581565b6105ef601281565b6105486109e53660046142b2565b611522565b6105486109f83660046140b1565b6115e5565b6105486115f0565b610548610a13366004614345565b611662565b610461610a263660046141f1565b611713565b610461610a3936600461413e565b60446020526000908152604090205481565b610461610a59366004614439565b61173b565b60085461051d906001600160a01b031681565b610548610a7f366004614486565b611764565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b610548610ab93660046144de565b611929565b610461600281565b610548610ad43660046141f1565b611af1565b610461610ae73660046141af565b611afc565b6003610461565b6051546001600160d81b0316610707565b610548610b12366004614549565b611b27565b6051546104fa90600160d81b900460ff1681565b610b67610b3936600461413e565b603c60205260009081526040902080546001909101546001600160801b0380831692600160801b9004169083565b604080516001600160801b0394851681529390921660208401529082015260600161046b565b605054610461565b610548610ba336600461457c565b611b3e565b610548610bb6366004614159565b611d12565b6000610bc76000610ea3565b6001600160a01b0316336001600160a01b031614610c005760405162461bcd60e51b8152600401610bf7906145ae565b60405180910390fd5b605154600160d81b900460ff1615610c5a5760405162461bcd60e51b815260206004820152601d60248201527f50524556494f55535f534c415348494e475f4e4f545f534554544c45440000006044820152606401610bf7565b60008211610c985760405162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b6044820152606401610bf7565b6000610ca360025490565b90506000610cb082611159565b90506000610cc960505483611de390919063ffffffff16565b905080851115610cd7578094505b7f0000000000000000000000000000000000000000000000000000000000000000610d0286846145fb565b1015610d475760405162461bcd60e51b815260206004820152601460248201527352454d41494e494e475f4c545f4d494e494d554d60601b6044820152606401610bf7565b6051805460ff60d81b1916600160d81b179055610d75610d70610d6a87856145fb565b85611e6f565b611ead565b610da96001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168787611f50565b856001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd86604051610de491815260200190565b60405180910390a28493505050505b92915050565b606060038054610e089061460e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e349061460e565b8015610e815780601f10610e5657610100808354040283529160200191610e81565b820191906000526020600020905b815481529060010190602001808311610e6457829003601f168201915b5050505050905090565b600033610e99818585611fb3565b5060019392505050565b6000908152604560205260409020546001600160a01b031690565b610ec86002610ea3565b6001600160a01b0316336001600160a01b031614610ef85760405162461bcd60e51b8152600401610bf790614648565b610f038383836120d7565b505050565b610f133383836120d7565b5050565b6000610f236002610ea3565b6001600160a01b0316336001600160a01b031614610f535760405162461bcd60e51b8152600401610bf790614648565b610f5e848484612458565b90505b9392505050565b600033610f76858285612590565b610f81858585612604565b506001949350505050565b610f966002610ea3565b6001600160a01b0316336001600160a01b031614610fc65760405162461bcd60e51b8152600401610bf790614648565b610fcf81612735565b50565b600033610e99818585610fe58383611afc565b610fef919061467f565b611fb3565b7f00000000000000000000000000000000000000000000000000000000000000008110156110585760405162461bcd60e51b8152602060048201526011602482015270414d4f554e545f4c545f4d494e494d554d60781b6044820152606401610bf7565b600061106360025490565b90507f00000000000000000000000000000000000000000000000000000000000000008110156110c95760405162461bcd60e51b81526020600482015260116024820152705348415245535f4c545f4d494e494d554d60781b6044820152606401610bf7565b60006110d482611159565b90506110ec610d706110e6858461467f565b84611e6f565b6111216001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612818565b6040518381527f278e51d3323fbf18b9fb8df3f8b97e31b145bc1146c52e764cf4aa1bfc4ba17d9060200160405180910390a1505050565b6051546000906001600160d81b031661117a83670de0b6b3a7640000614692565b610df391906146a9565b61119033826000612850565b610fcf33826001612850565b6000806111a883612951565b925050506111b68482612990565b949350505050565b6001600160a01b031660009081526020819052604090205490565b605154600090670de0b6b3a76400009061117a906001600160d81b031684614692565b6112066000610ea3565b6001600160a01b0316336001600160a01b0316146112365760405162461bcd60e51b8152600401610bf7906145ae565b610fcf816129bb565b61124833612735565b565b6112546001610ea3565b6001600160a01b0316336001600160a01b0316146112b45760405162461bcd60e51b815260206004820152601960248201527f43414c4c45525f4e4f545f434f4f4c444f574e5f41444d494e000000000000006044820152606401610bf7565b610fcf81612a41565b604080516001808252818301909252600091829190816020015b611304604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816112d75790505090506040518060600160405280306001600160a01b0316815260200161133c856111be565b815260200161134a60025490565b81525081600081518110611360576113606146cb565b60200260200101819052506113758382612a76565b6001600160a01b0384166000908152603d6020526040902054610f61919061467f565b606060048054610e089061460e565b6000610df360025490565b610f03338383612458565b6113c76002610ea3565b6001600160a01b0316336001600160a01b0316146113f75760405162461bcd60e51b8152600401610bf790614648565b611402848484612458565b5061140e8484836120d7565b50505050565b600033816114228286611afc565b9050838110156114825760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bf7565b610f818286868403611fb3565b60095460039081116114fa5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610bf7565b600981905561150c8686868686612b79565b505050505050565b600033610e99818585612604565b60008281526045602052604090205482906001600160a01b031633146115825760405162461bcd60e51b815260206004820152601560248201527421a0a62622a92fa727aa2fa927a622afa0a226a4a760591b6044820152606401610bf7565b60008381526046602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915591518581527fc3d1bf52795a20771ee6de3e59948fd83e10db956122d4709a3b86c512963855910160405180910390a2505050565b610f13338383612c9d565b6115fa6000610ea3565b6001600160a01b0316336001600160a01b03161461162a5760405162461bcd60e51b8152600401610bf7906145ae565b6051805460ff60d81b191690556040517fcdee157e87ba915be681d4fa3f3d511afe7348eca06448a3accd6ac227fa40af90600090a1565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d25760405162461bcd60e51b815260206004820152601560248201527427a7262cafa2a6a4a9a9a4a7a72fa6a0a720a3a2a960591b6044820152606401610bf7565b60005b8151811015611709576002548282815181106116f3576116f36146cb565b60209081029190910181015101526001016116d5565b50610fcf81612e4a565b600080600061172184612951565b509150915061173282828743612fae565b95945050505050565b600080600061174984612951565b509150915061175a82828888612fae565b9695505050505050565b604080517f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d60208201526001600160a01b03881691810191909152606081018690526080810185905260009060a0016040516020818303038152906040528051906020012090506000604354826040516020016117e29291906146e1565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561184d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118805760405162461bcd60e51b8152600401610bf7906146fc565b6001600160a01b03811660009081526044602052604081208054916118a483614727565b9190505588146118e65760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610bf7565b864211156119065760405162461bcd60e51b8152600401610bf790614740565b611912818a6000612850565b61191e818a6001612850565b505050505050505050565b6001600160a01b03871661196f5760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b6044820152606401610bf7565b8342111561198f5760405162461bcd60e51b8152600401610bf790614740565b6001600160a01b0387811660008181526044602090815260408083205460435482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e086019092528151919092012090939192611a26929190610100016146e1565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611a8e573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611ac85760405162461bcd60e51b8152600401610bf7906146fc565b6001600160a01b038916600090815260446020526040902060018301905561191e898989611fb3565b610f13338383612850565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611b32338484612458565b50610f033384836120d7565b60007f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e588886001811115611b7457611b7461476c565b6040805160208101949094526001600160a01b039092169183019190915260608201526080810187905260a0810186905260c001604051602081830303815290604052805190602001209050600060435482604051602001611bd79291906146e1565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611c42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c755760405162461bcd60e51b8152600401610bf7906146fc565b6001600160a01b0381166000908152604460205260408120805491611c9983614727565b919050558814611cdb5760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610bf7565b86421115611cfb5760405162461bcd60e51b8152600401610bf790614740565b611d06818b8b612850565b50505050505050505050565b60008181526046602052604090205481906001600160a01b03163314611d7a5760405162461bcd60e51b815260206004820152601d60248201527f43414c4c45525f4e4f545f50454e44494e475f524f4c455f41444d494e0000006044820152606401610bf7565b60008281526045602090815260408083208054336001600160a01b0319918216811790925560468452938290208054909416909355518481527f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf91015b60405180910390a25050565b6000821580611df0575081155b15611dfd57506000610df3565b611e09826000196146a9565b831115611e585760405162461bcd60e51b815260206004820152601c60248201527f4d4154485f4d554c5449504c49434154494f4e5f4f564552464c4f57000000006044820152606401610bf7565b612710611e658385614692565b610f6191906146a9565b6000610f6183600181611e8a670de0b6b3a764000087614692565b611e94919061467f565b611e9e91906145fb565b611ea891906146a9565b613088565b806001600160d81b0316600003611efb5760405162461bcd60e51b81526020600482015260126024820152715a45524f5f45584348414e47455f5241544560701b6044820152606401610bf7565b605180546001600160d81b0319166001600160d81b0383169081179091556040519081527fa9c433f9734baa3cf48b209454bb0ace054e191f677ba50e74b696c0d35ef262906020015b60405180910390a150565b6040516001600160a01b038316602482015260448101829052610f0390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526130f5565b6001600160a01b0383166120155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bf7565b6001600160a01b0382166120765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bf7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036120f75760405162461bcd60e51b8152600401610bf790614782565b6001600160a01b0383166000908152603e602090815260409182902082518084019093525464ffffffffff81168352600160281b90046001600160d81b031690820152605154600160d81b900460ff1661223757604f548151612161919064ffffffffff1661467f565b4210156121a85760405162461bcd60e51b815260206004820152601560248201527424a729aaa32324a1a4a2a72a2fa1a7a7a62227aba760591b6044820152606401610bf7565b604f5481517f0000000000000000000000000000000000000000000000000000000000000000916121df9164ffffffffff1661467f565b6121e990426145fb565b11156122375760405162461bcd60e51b815260206004820152601760248201527f554e5354414b455f57494e444f575f46494e49534845440000000000000000006044820152606401610bf7565b6000612242856111be565b605154909150600090600160d81b900460ff1661226c5782602001516001600160d81b031661226e565b815b9050806000036122c05760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f5a45524f5f4d41585f52454445454d41424c4500000000006044820152606401610bf7565b60008185116122cf57846122d1565b815b90506122df878460016131c7565b5060006122eb82611159565b90506122f78883613276565b845164ffffffffff16156123c4578185602001516001600160d81b031661231e91906145fb565b600003612343576001600160a01b0388166000908152603e60205260408120556123c4565b61234c826133a8565b6001600160a01b0389166000908152603e6020526040902054612388916001600160b81b031690600160281b90046001600160d81b03166147af565b6001600160a01b0389166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b6123f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168883611f50565b866001600160a01b0316886001600160a01b03167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc8385604051612446929190918252602082015260400190565b60405180910390a35050505050505050565b60008160000361247a5760405162461bcd60e51b8152600401610bf790614782565b600061249085612489876111be565b60006131c7565b905060008184116124a157836124a3565b815b9050806000036124c55760405162461bcd60e51b8152600401610bf790614782565b6124cf81836145fb565b6001600160a01b038088166000908152603d602052604090209190915561253a907f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008784612818565b846001600160a01b0316866001600160a01b03167f9310ccfcb8de723f578a9e4282ea9f521f05ae40dc08f3068dfad528a65ee3c78360405161257f91815260200190565b60405180910390a395945050505050565b600061259c8484611afc565b9050600019811461140e57818110156125f75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bf7565b61140e8484848403611fb3565b600061260f846111be565b905061261d848260016131c7565b50826001600160a01b0316846001600160a01b03161461272a576000612642846111be565b9050612650848260016131c7565b506001600160a01b0385166000908152603e602090815260409182902082518084019093525464ffffffffff8116808452600160281b9091046001600160d81b03169183019190915215612727578383036126c3576001600160a01b0386166000908152603e6020526040812055612727565b60208101516001600160d81b03166126db85856145fb565b1015612727576126eb84846145fb565b6001600160a01b0387166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b50505b61140e848484613411565b6000612740826111be565b9050806000036127925760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f42414c414e43455f4f4e5f434f4f4c444f574e00000000006044820152606401610bf7565b60408051808201825264ffffffffff42811682526001600160d81b0380851660208085019182526001600160a01b0388166000818152603e9092529086902094519151909216600160281b0292169190911790915590517f8a05f911d8ab7fc50fec37ef4ba7f9bfcb1a3c191c81dcd824ad0946c4e20d6590611dd79084815260200190565b6040516001600160a01b038085166024830152831660448201526064810182905261140e9085906323b872dd60e01b90608401611f7c565b6001600160a01b03821661289a5760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f44454c45474154454560781b6044820152606401610bf7565b60006128a582612951565b9250505060006128b4856111be565b905060006128c28684612990565b6001600160a01b03878116600090815260208690526040902080546001600160a01b03191691881691909117905590506128fe818684876135b5565b846001600160a01b0316866001600160a01b03167fe8d51c8e11bd570db1734c8ec775785330e77007feed45c43b608ef33ff914bd8660405161294191906147f0565b60405180910390a3505050505050565b60008080808460018111156129685761296861476c565b0361297d57506006915060079050603f612989565b50604091506041905060425b9193909250565b6001600160a01b0380831660009081526020839052604081205490911680610f615783915050610df3565b6127108110612a0c5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f534c415348494e475f50455243454e5441474500000000006044820152606401610bf7565b60508190556040518181527fb79c2d6c7f5c95eec9dc05affc0ed002620a4ec6d72b7b0744cc8638168c600a90602001611f45565b604f8190556040518181527fbbf67247b5c97564e30ffc0a355e71c006836de7b9149e09e3d5d6054cb0335590602001611f45565b600080805b8351811015612b71576000603c6000868481518110612a9c57612a9c6146cb565b602090810291909101810151516001600160a01b031682528101919091526040016000908120600181015481548851929450612b0a926001600160801b0380831692600160801b900416908a9088908110612af957612af96146cb565b6020026020010151604001516137b9565b9050612b5b868481518110612b2157612b216146cb565b602002602001015160200151828460020160008b6001600160a01b03166001600160a01b03168152602001908152602001600020546138c4565b612b65908561467f565b93505050600101612a7b565b509392505050565b60408051600380825260808201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612b91579050509050604051806040016040528060008152602001876001600160a01b031681525081600081518110612bec57612bec6146cb565b6020026020010181905250604051806040016040528060018152602001866001600160a01b031681525081600181518110612c2957612c296146cb565b6020026020010181905250604051806040016040528060028152602001856001600160a01b031681525081600281518110612c6657612c666146cb565b6020026020010181905250612c7a816138f0565b612c83836129bb565b612c8c82612a41565b61150c670de0b6b3a7640000611ead565b605154600160d81b900460ff1615612cea5760405162461bcd60e51b815260206004820152601060248201526f534c415348494e475f4f4e474f494e4760801b6044820152606401610bf7565b80600003612d0a5760405162461bcd60e51b8152600401610bf790614782565b6000612d15836111be565b90506000612d2d843084612d2860025490565b613ac2565b90508015612db0576001600160a01b0384166000908152603d6020526040902054612d5990829061467f565b6001600160a01b0385166000818152603d60209081526040918290209390935580519182529181018390527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a15b6000612dbb846111d9565b9050612df26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016873087612818565b612dfc8582613b83565b846001600160a01b0316866001600160a01b03167f6c86f3fd5118b3aa8bb4f389a617046de0a3d3d477de1a1673d227f802f616dc8684604051612941929190918252602082015260400190565b60005b8151811015610f13576000603c6000848481518110612e6e57612e6e6146cb565b6020026020010151604001516001600160a01b03166001600160a01b031681526020019081526020016000209050612ee1838381518110612eb157612eb16146cb565b60200260200101516040015182858581518110612ed057612ed06146cb565b602002602001015160200151613c42565b50828281518110612ef457612ef46146cb565b60209081029190910101515181546fffffffffffffffffffffffffffffffff19166001600160801b039091161781558251839083908110612f3757612f376146cb565b6020026020010151604001516001600160a01b03167f87fa03892a0556cb6b8f97e6d533a150d4d55fcbf275fff5fa003fa636bcc7fa848481518110612f7f57612f7f6146cb565b602090810291909101810151516040516001600160801b0390911681520160405180910390a250600101612e4d565b600043821115612ff75760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa12627a1a5afa72aa6a122a960611b6044820152606401610bf7565b6001600160a01b0383166000908152602085905260408120549081900361302957613021846111be565b9150506111b6565b6001600160a01b0384166000908152602087815260408083208380529091529020546001600160801b03168310156130655760009150506111b6565b6001600160a01b038416600090815260208790526040902061175a908285613cfa565b60006001600160d81b038211156130f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663136206269747360c81b6064820152608401610bf7565b5090565b600061314a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e069092919063ffffffff16565b805190915015610f03578080602001905181019061316891906147fe565b610f035760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bf7565b6000806131d9853086612d2860025490565b6001600160a01b0386166000908152603d60205260408120549192509061320190839061467f565b9050811561173257831561322b576001600160a01b0386166000908152603d602052604090208190555b604080516001600160a01b0388168152602081018490527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a195945050505050565b6001600160a01b0382166132d65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bf7565b6001600160a01b0382166000908152602081905260409020548181101561334a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bf7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60006001600160b81b038211156130f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663834206269747360c81b6064820152608401610bf7565b6001600160a01b0383166134755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bf7565b6001600160a01b0382166134d75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bf7565b6001600160a01b0383166000908152602081905260409020548181101561354f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bf7565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361140e565b826001600160a01b0316846001600160a01b0316031561140e576000806135db83612951565b5090925090506001600160a01b038616156136cc576001600160a01b038616600090815260208290526040812054801561365b576001600160a01b0388166000908152602085905260408120906136336001846145fb565b8152602081019190915260400160002054600160801b90046001600160801b03169150613667565b613664886111be565b91505b61367d84848a856136788b826145fb565b613e15565b6001600160a01b0388167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f6136b288856145fb565b876040516136c1929190614820565b60405180910390a250505b6001600160a01b0385161561150c576001600160a01b0385166000908152602082905260408120548015613746576001600160a01b03871660009081526020859052604081209061371e6001846145fb565b8152602081019190915260400160002054600160801b90046001600160801b03169150613752565b61374f876111be565b91505b613763848489856136788b8261467f565b6001600160a01b0387167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f613798888561467f565b876040516137a7929190614820565b60405180910390a25050505050505050565b60008315806137c6575081155b806137d9575042836001600160801b0316145b8061380d57507f0000000000000000000000000000000000000000000000000000000000000000836001600160801b031610155b156138195750836111b6565b60007f00000000000000000000000000000000000000000000000000000000000000004211613848574261386a565b7f00000000000000000000000000000000000000000000000000000000000000005b905060006138816001600160801b038616836145fb565b905086846138916012600a61491b565b61389b848a614692565b6138a59190614692565b6138af91906146a9565b6138b9919061467f565b979650505050505050565b60006138d26012600a61491b565b6138dc83856145fb565b6138e69086614692565b610f5e91906146a9565b60005b8151811015610f135760006001600160a01b03166045600084848151811061391d5761391d6146cb565b602090810291909101810151518252810191909152604001600020546001600160a01b031614801561397f575060006001600160a01b0316828281518110613967576139676146cb565b6020026020010151602001516001600160a01b031614155b6139cb5760405162461bcd60e51b815260206004820152601b60248201527f41444d494e5f43414e4e4f545f42455f494e495449414c495a454400000000006044820152606401610bf7565b8181815181106139dd576139dd6146cb565b602002602001015160200151604560008484815181106139ff576139ff6146cb565b602002602001015160000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818181518110613a4f57613a4f6146cb565b6020026020010151602001516001600160a01b03167f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf838381518110613a9757613a976146cb565b602002602001015160000151604051613ab291815260200190565b60405180910390a26001016138f3565b6001600160a01b038084166000908152603c602090815260408083209388168352600284019091528120549091908280613afd888588613c42565b9050808314613b77578615613b1a57613b178782856138c4565b91505b6001600160a01b03808a1660008181526002870160205260409081902084905551918a16917fbb123b5c06d5408bbea3c4fef481578175cfb432e3b482c6186f02ed9086585b90613b6e9085815260200190565b60405180910390a35b50979650505050505050565b6001600160a01b038216613bd95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bf7565b8060026000828254613beb919061467f565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001820154825460009190600160801b90046001600160801b031642819003613c6d57509050610f61565b8454600090613c889084906001600160801b031684886137b9565b9050828114613cd757600186018190556040518181526001600160a01b038816907f5777ca300dfe5bead41006fbce4389794dbc0ed8d6cccebfaf94630aa04184bc9060200160405180910390a25b85546001600160801b03428116600160801b029116178655925050509392505050565b60001982016000908152602084905260408120546001600160801b03168210613d4757506000198201600090815260208490526040902054600160801b90046001600160801b0316610f61565b600060001984015b81811115613ddd576002828203048103600081815260208881526040918290208251808401909352546001600160801b03808216808552600160801b9092041691830191909152869003613db557602001516001600160801b03169350610f6192505050565b80516001600160801b0316861115613dcf57819350613dd6565b6001820392505b5050613d4f565b5060009081526020949094525050604090912054600160801b90046001600160801b0316919050565b6060610f5e8484600085613f2c565b6001600160a01b03831660009081526020858152604080832054918890529091204391908115801590613e7757506001600160801b038316816000613e5b6001866145fb565b81526020810191909152604001600020546001600160801b0316145b15613ebb5783816000613e8b6001866145fb565b8152602081019190915260400160002080546001600160801b03928316600160801b029216919091179055613f22565b6040805180820182526001600160801b038086168252868116602080840191825260008781529086905293909320915192518116600160801b029216919091179055613f0882600161467f565b6001600160a01b0387166000908152602089905260409020555b5050505050505050565b606082471015613f8d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bf7565b600080866001600160a01b03168587604051613fa99190614927565b60006040518083038185875af1925050503d8060008114613fe6576040519150601f19603f3d011682016040523d82523d6000602084013e613feb565b606091505b50915091506138b9878383876060831561406657825160000361405f576001600160a01b0385163b61405f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bf7565b50816111b6565b6111b6838381511561407b5781518083602001fd5b8060405162461bcd60e51b8152600401610bf7919061412b565b80356001600160a01b03811681146140ac57600080fd5b919050565b600080604083850312156140c457600080fd5b6140cd83614095565b946020939093013593505050565b60005b838110156140f65781810151838201526020016140de565b50506000910152565b600081518084526141178160208601602086016140db565b601f01601f19169290920160200192915050565b602081526000610f6160208301846140ff565b60006020828403121561415057600080fd5b610f6182614095565b60006020828403121561416b57600080fd5b5035919050565b60008060006060848603121561418757600080fd5b61419084614095565b925061419e60208501614095565b929592945050506040919091013590565b600080604083850312156141c257600080fd5b6141cb83614095565b91506141d960208401614095565b90509250929050565b8035600281106140ac57600080fd5b6000806040838503121561420457600080fd5b61420d83614095565b91506141d9602084016141e2565b6000806000806080858703121561423157600080fd5b61423a85614095565b935061424860208601614095565b93969395505050506040820135916060013590565b600080600080600060a0868803121561427557600080fd5b61427e86614095565b945061428c60208701614095565b935061429a60408701614095565b94979396509394606081013594506080013592915050565b600080604083850312156142c557600080fd5b823591506141d960208401614095565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561430e5761430e6142d5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561433d5761433d6142d5565b604052919050565b60006020828403121561435757600080fd5b813567ffffffffffffffff81111561436e57600080fd5b8201601f8101841361437f57600080fd5b803567ffffffffffffffff811115614399576143996142d5565b6143a860208260051b01614314565b808282526020820191506020606084028501019250868311156143ca57600080fd5b6020840193505b8284101561175a57606084880312156143e957600080fd5b6143f16142eb565b84356001600160801b038116811461440857600080fd5b81526020858101359082015261442060408601614095565b60408201528252606093909301926020909101906143d1565b60008060006060848603121561444e57600080fd5b61445784614095565b92506020840135915061446c604085016141e2565b90509250925092565b803560ff811681146140ac57600080fd5b60008060008060008060c0878903121561449f57600080fd5b6144a887614095565b955060208701359450604087013593506144c460608801614475565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156144f957600080fd5b61450288614095565b965061451060208901614095565b9550604088013594506060880135935061452c60808901614475565b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561455e57600080fd5b61456784614095565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561459757600080fd5b6145a088614095565b9650614510602089016141e2565b60208082526019908201527f43414c4c45525f4e4f545f534c415348494e475f41444d494e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610df357610df36145e5565b600181811c9082168061462257607f821691505b60208210810361464257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43414c4c45525f4e4f545f434c41494d5f48454c504552000000000000000000604082015260600190565b80820180821115610df357610df36145e5565b8082028115828204841417610df357610df36145e5565b6000826146c657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b61190160f01b81526002810192909252602282015260420190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b600060018201614739576147396145e5565b5060010190565b60208082526012908201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b6020808252601390820152721253959053125117d6915493d7d05353d55395606a1b604082015260600190565b6001600160d81b038281168282160390811115610df357610df36145e5565b600281106147ec57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610df382846147ce565b60006020828403121561481057600080fd5b81518015158114610f6157600080fd5b82815260408101610f6160208301846147ce565b6001815b600184111561486f57808504811115614853576148536145e5565b600184161561486157908102905b60019390931c928002614838565b935093915050565b60008261488657506001610df3565b8161489357506000610df3565b81600181146148a957600281146148b3576148cf565b6001915050610df3565b60ff8411156148c4576148c46145e5565b50506001821b610df3565b5060208310610133831016604e8410600b84101617156148f2575081810a610df3565b6148ff6000198484614834565b8060001904821115614913576149136145e5565b029392505050565b6000610f618383614877565b600082516149398184602087016140db565b919091019291505056fea2646970667358221220ccc5a326b943d0272b407367b7016d403a49754d79f129625233f9cf9938ac8064736f6c634300081b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104495760003560e01c80638c9a281d11610241578063b2a5dbfa1161013b578063dc937e1c116100c3578063f036bc6811610087578063f036bc6814610b17578063f11b818814610b2b578063f34d96da14610b8d578063f713d8a814610b95578063fde9eb6914610ba857600080fd5b8063dc937e1c14610ac6578063dd62ed3e14610ad9578063dde43cba14610aec578063e6aa216c14610af3578063eab5231814610b0457600080fd5b8063c3863ada1161010a578063c3863ada14610a5e578063c3cda52014610a71578063cbcbb50714610a84578063d505accf14610aab578063dbc0ed8a14610abe57600080fd5b8063b2a5dbfa14610a05578063b2f4201d14610a18578063b9844d8d14610a2b578063c2ffbb9114610a4b57600080fd5b80639c9b5154116101c9578063aa9fbe021161018d578063aa9fbe02146109a8578063aaf5eb68146109cf578063ab406fe6146109d7578063adc9772e146109ea578063aff05aa9146109fd57600080fd5b80639c9b5154146109545780639e3ffce014610967578063a457c2d71461096f578063a6b63eb814610982578063a9059cbb1461099557600080fd5b8063946776cd11610210578063946776cd146108d857806395d89b41146108ff578063981b24d01461090757806399248ea71461091a5780639a99b4f01461094157600080fd5b80638c9a281d146108875780638dbefee21461088f5780638e9b2ca4146108a2578063919cd40f146108b157600080fd5b806341cbf54a116103525780636f50458d116102da578063781603761161029e578063781603761461080c578063787a08a61461082c5780637b5b1157146108345780637bb73c97146108475780637e90d7ef1461086757600080fd5b80636f50458d146107c057806370a08231146107d3578063727a5d57146107e657806372b49d631461079157806374011f56146107f957600080fd5b806358146d171161032157806358146d17146106f85780635b3cc0cf1461071f5780635c19a95c1461077e578063616e0bf9146107915780636198e1351461079957600080fd5b806341cbf54a1461068257806345755dd6146106a95780634575e69b146106bc5780634cdad506146106e557600080fd5b806323b872dd116103d5578063313ce567116103a4578063313ce567146105ec5780633373ee4c14610601578063359c4a961461063f5780633644e51514610666578063395093511461066f57600080fd5b806323b872dd14610578578063250201db1461058b57806330adf81f1461059e578063312f6b83146105c557600080fd5b8063111fd88b1161041c578063111fd88b1461050a578063112d037c1461053557806318160ddd1461054a5780631e9a69501461055257806320fb80b51461056557600080fd5b806302fb4d851461044e57806306fdde0314610474578063091030c314610489578063095ea7b3146104e7575b600080fd5b61046161045c3660046140b1565b610bbb565b6040519081526020015b60405180910390f35b61047c610df9565b60405161046b919061412b565b6104c261049736600461413e565b603e6020526000908152604090205464ffffffffff811690600160281b90046001600160d81b031682565b6040805164ffffffffff90931683526001600160d81b0390911660208301520161046b565b6104fa6104f53660046140b1565b610e8b565b604051901515815260200161046b565b61051d610518366004614159565b610ea3565b6040516001600160a01b03909116815260200161046b565b610548610543366004614172565b610ebe565b005b600254610461565b6105486105603660046140b1565b610f08565b610461610573366004614172565b610f17565b6104fa610586366004614172565b610f68565b61054861059936600461413e565b610f8c565b6104617f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b60125b60405160ff909116815260200161046b565b61046161060f3660046141af565b6001600160a01b038082166000908152603c60209081526040808320938616835260029093019052205492915050565b6104617f000000000000000000000000000000000000000000000000000000000000000081565b61046160435481565b6104fa61067d3660046140b1565b610fd2565b6104617f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d81565b6105486106b7366004614159565b610ff4565b61051d6106ca366004614159565b6000908152604660205260409020546001600160a01b031690565b6104616106f3366004614159565b611159565b610707670de0b6b3a764000081565b6040516001600160d81b03909116815260200161046b565b61075e61072d3660046140b1565b60066020908152600092835260408084209091529082529020546001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161046b565b61054861078c36600461413e565b611184565b604f54610461565b6104617f000000000000000000000000000000000000000000000000000000000000000081565b61051d6107ce3660046141f1565b61119c565b6104616107e136600461413e565b6111be565b6104616107f4366004614159565b6111d9565b610548610807366004614159565b6111fc565b61047c604051806040016040528060018152602001603160f81b81525081565b61054861123f565b610548610842366004614159565b61124a565b61046161085536600461413e565b60076020526000908152604090205481565b61046161087536600461413e565b603d6020526000908152604090205481565b610461600081565b61046161089d36600461413e565b6112bd565b610461670de0b6b3a764000081565b6104617f000000000000000000000000000000000000000000000000000000000000000081565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b61047c611398565b610461610915366004614159565b6113a7565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b61054861094f3660046140b1565b6113b2565b61054861096236600461421b565b6113bd565b610461600181565b6104fa61097d3660046140b1565b611414565b61054861099036600461425d565b61148f565b6104fa6109a33660046140b1565b611514565b6104617f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e581565b6105ef601281565b6105486109e53660046142b2565b611522565b6105486109f83660046140b1565b6115e5565b6105486115f0565b610548610a13366004614345565b611662565b610461610a263660046141f1565b611713565b610461610a3936600461413e565b60446020526000908152604090205481565b610461610a59366004614439565b61173b565b60085461051d906001600160a01b031681565b610548610a7f366004614486565b611764565b61051d7f000000000000000000000000000000000000000000000000000000000000000081565b610548610ab93660046144de565b611929565b610461600281565b610548610ad43660046141f1565b611af1565b610461610ae73660046141af565b611afc565b6003610461565b6051546001600160d81b0316610707565b610548610b12366004614549565b611b27565b6051546104fa90600160d81b900460ff1681565b610b67610b3936600461413e565b603c60205260009081526040902080546001909101546001600160801b0380831692600160801b9004169083565b604080516001600160801b0394851681529390921660208401529082015260600161046b565b605054610461565b610548610ba336600461457c565b611b3e565b610548610bb6366004614159565b611d12565b6000610bc76000610ea3565b6001600160a01b0316336001600160a01b031614610c005760405162461bcd60e51b8152600401610bf7906145ae565b60405180910390fd5b605154600160d81b900460ff1615610c5a5760405162461bcd60e51b815260206004820152601d60248201527f50524556494f55535f534c415348494e475f4e4f545f534554544c45440000006044820152606401610bf7565b60008211610c985760405162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b6044820152606401610bf7565b6000610ca360025490565b90506000610cb082611159565b90506000610cc960505483611de390919063ffffffff16565b905080851115610cd7578094505b7f0000000000000000000000000000000000000000000000000000000000000000610d0286846145fb565b1015610d475760405162461bcd60e51b815260206004820152601460248201527352454d41494e494e475f4c545f4d494e494d554d60601b6044820152606401610bf7565b6051805460ff60d81b1916600160d81b179055610d75610d70610d6a87856145fb565b85611e6f565b611ead565b610da96001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168787611f50565b856001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd86604051610de491815260200190565b60405180910390a28493505050505b92915050565b606060038054610e089061460e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e349061460e565b8015610e815780601f10610e5657610100808354040283529160200191610e81565b820191906000526020600020905b815481529060010190602001808311610e6457829003601f168201915b5050505050905090565b600033610e99818585611fb3565b5060019392505050565b6000908152604560205260409020546001600160a01b031690565b610ec86002610ea3565b6001600160a01b0316336001600160a01b031614610ef85760405162461bcd60e51b8152600401610bf790614648565b610f038383836120d7565b505050565b610f133383836120d7565b5050565b6000610f236002610ea3565b6001600160a01b0316336001600160a01b031614610f535760405162461bcd60e51b8152600401610bf790614648565b610f5e848484612458565b90505b9392505050565b600033610f76858285612590565b610f81858585612604565b506001949350505050565b610f966002610ea3565b6001600160a01b0316336001600160a01b031614610fc65760405162461bcd60e51b8152600401610bf790614648565b610fcf81612735565b50565b600033610e99818585610fe58383611afc565b610fef919061467f565b611fb3565b7f00000000000000000000000000000000000000000000000000000000000000008110156110585760405162461bcd60e51b8152602060048201526011602482015270414d4f554e545f4c545f4d494e494d554d60781b6044820152606401610bf7565b600061106360025490565b90507f00000000000000000000000000000000000000000000000000000000000000008110156110c95760405162461bcd60e51b81526020600482015260116024820152705348415245535f4c545f4d494e494d554d60781b6044820152606401610bf7565b60006110d482611159565b90506110ec610d706110e6858461467f565b84611e6f565b6111216001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612818565b6040518381527f278e51d3323fbf18b9fb8df3f8b97e31b145bc1146c52e764cf4aa1bfc4ba17d9060200160405180910390a1505050565b6051546000906001600160d81b031661117a83670de0b6b3a7640000614692565b610df391906146a9565b61119033826000612850565b610fcf33826001612850565b6000806111a883612951565b925050506111b68482612990565b949350505050565b6001600160a01b031660009081526020819052604090205490565b605154600090670de0b6b3a76400009061117a906001600160d81b031684614692565b6112066000610ea3565b6001600160a01b0316336001600160a01b0316146112365760405162461bcd60e51b8152600401610bf7906145ae565b610fcf816129bb565b61124833612735565b565b6112546001610ea3565b6001600160a01b0316336001600160a01b0316146112b45760405162461bcd60e51b815260206004820152601960248201527f43414c4c45525f4e4f545f434f4f4c444f574e5f41444d494e000000000000006044820152606401610bf7565b610fcf81612a41565b604080516001808252818301909252600091829190816020015b611304604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816112d75790505090506040518060600160405280306001600160a01b0316815260200161133c856111be565b815260200161134a60025490565b81525081600081518110611360576113606146cb565b60200260200101819052506113758382612a76565b6001600160a01b0384166000908152603d6020526040902054610f61919061467f565b606060048054610e089061460e565b6000610df360025490565b610f03338383612458565b6113c76002610ea3565b6001600160a01b0316336001600160a01b0316146113f75760405162461bcd60e51b8152600401610bf790614648565b611402848484612458565b5061140e8484836120d7565b50505050565b600033816114228286611afc565b9050838110156114825760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bf7565b610f818286868403611fb3565b60095460039081116114fa5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610bf7565b600981905561150c8686868686612b79565b505050505050565b600033610e99818585612604565b60008281526045602052604090205482906001600160a01b031633146115825760405162461bcd60e51b815260206004820152601560248201527421a0a62622a92fa727aa2fa927a622afa0a226a4a760591b6044820152606401610bf7565b60008381526046602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915591518581527fc3d1bf52795a20771ee6de3e59948fd83e10db956122d4709a3b86c512963855910160405180910390a2505050565b610f13338383612c9d565b6115fa6000610ea3565b6001600160a01b0316336001600160a01b03161461162a5760405162461bcd60e51b8152600401610bf7906145ae565b6051805460ff60d81b191690556040517fcdee157e87ba915be681d4fa3f3d511afe7348eca06448a3accd6ac227fa40af90600090a1565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d25760405162461bcd60e51b815260206004820152601560248201527427a7262cafa2a6a4a9a9a4a7a72fa6a0a720a3a2a960591b6044820152606401610bf7565b60005b8151811015611709576002548282815181106116f3576116f36146cb565b60209081029190910181015101526001016116d5565b50610fcf81612e4a565b600080600061172184612951565b509150915061173282828743612fae565b95945050505050565b600080600061174984612951565b509150915061175a82828888612fae565b9695505050505050565b604080517f9a9a49b990ba9bb39f8048c490a40ab25c18f55d208d5fbcf958261a9b48716d60208201526001600160a01b03881691810191909152606081018690526080810185905260009060a0016040516020818303038152906040528051906020012090506000604354826040516020016117e29291906146e1565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561184d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118805760405162461bcd60e51b8152600401610bf7906146fc565b6001600160a01b03811660009081526044602052604081208054916118a483614727565b9190505588146118e65760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610bf7565b864211156119065760405162461bcd60e51b8152600401610bf790614740565b611912818a6000612850565b61191e818a6001612850565b505050505050505050565b6001600160a01b03871661196f5760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b6044820152606401610bf7565b8342111561198f5760405162461bcd60e51b8152600401610bf790614740565b6001600160a01b0387811660008181526044602090815260408083205460435482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e086019092528151919092012090939192611a26929190610100016146e1565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611a8e573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611ac85760405162461bcd60e51b8152600401610bf7906146fc565b6001600160a01b038916600090815260446020526040902060018301905561191e898989611fb3565b610f13338383612850565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611b32338484612458565b50610f033384836120d7565b60007f10d8d059343739efce7dad10d09f0806da52b252b3e6a7951920d2d6ec4102e588886001811115611b7457611b7461476c565b6040805160208101949094526001600160a01b039092169183019190915260608201526080810187905260a0810186905260c001604051602081830303815290604052805190602001209050600060435482604051602001611bd79291906146e1565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611c42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611c755760405162461bcd60e51b8152600401610bf7906146fc565b6001600160a01b0381166000908152604460205260408120805491611c9983614727565b919050558814611cdb5760405162461bcd60e51b815260206004820152600d60248201526c494e56414c49445f4e4f4e434560981b6044820152606401610bf7565b86421115611cfb5760405162461bcd60e51b8152600401610bf790614740565b611d06818b8b612850565b50505050505050505050565b60008181526046602052604090205481906001600160a01b03163314611d7a5760405162461bcd60e51b815260206004820152601d60248201527f43414c4c45525f4e4f545f50454e44494e475f524f4c455f41444d494e0000006044820152606401610bf7565b60008281526045602090815260408083208054336001600160a01b0319918216811790925560468452938290208054909416909355518481527f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf91015b60405180910390a25050565b6000821580611df0575081155b15611dfd57506000610df3565b611e09826000196146a9565b831115611e585760405162461bcd60e51b815260206004820152601c60248201527f4d4154485f4d554c5449504c49434154494f4e5f4f564552464c4f57000000006044820152606401610bf7565b612710611e658385614692565b610f6191906146a9565b6000610f6183600181611e8a670de0b6b3a764000087614692565b611e94919061467f565b611e9e91906145fb565b611ea891906146a9565b613088565b806001600160d81b0316600003611efb5760405162461bcd60e51b81526020600482015260126024820152715a45524f5f45584348414e47455f5241544560701b6044820152606401610bf7565b605180546001600160d81b0319166001600160d81b0383169081179091556040519081527fa9c433f9734baa3cf48b209454bb0ace054e191f677ba50e74b696c0d35ef262906020015b60405180910390a150565b6040516001600160a01b038316602482015260448101829052610f0390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526130f5565b6001600160a01b0383166120155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bf7565b6001600160a01b0382166120765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bf7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036120f75760405162461bcd60e51b8152600401610bf790614782565b6001600160a01b0383166000908152603e602090815260409182902082518084019093525464ffffffffff81168352600160281b90046001600160d81b031690820152605154600160d81b900460ff1661223757604f548151612161919064ffffffffff1661467f565b4210156121a85760405162461bcd60e51b815260206004820152601560248201527424a729aaa32324a1a4a2a72a2fa1a7a7a62227aba760591b6044820152606401610bf7565b604f5481517f0000000000000000000000000000000000000000000000000000000000000000916121df9164ffffffffff1661467f565b6121e990426145fb565b11156122375760405162461bcd60e51b815260206004820152601760248201527f554e5354414b455f57494e444f575f46494e49534845440000000000000000006044820152606401610bf7565b6000612242856111be565b605154909150600090600160d81b900460ff1661226c5782602001516001600160d81b031661226e565b815b9050806000036122c05760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f5a45524f5f4d41585f52454445454d41424c4500000000006044820152606401610bf7565b60008185116122cf57846122d1565b815b90506122df878460016131c7565b5060006122eb82611159565b90506122f78883613276565b845164ffffffffff16156123c4578185602001516001600160d81b031661231e91906145fb565b600003612343576001600160a01b0388166000908152603e60205260408120556123c4565b61234c826133a8565b6001600160a01b0389166000908152603e6020526040902054612388916001600160b81b031690600160281b90046001600160d81b03166147af565b6001600160a01b0389166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b6123f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168883611f50565b866001600160a01b0316886001600160a01b03167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc8385604051612446929190918252602082015260400190565b60405180910390a35050505050505050565b60008160000361247a5760405162461bcd60e51b8152600401610bf790614782565b600061249085612489876111be565b60006131c7565b905060008184116124a157836124a3565b815b9050806000036124c55760405162461bcd60e51b8152600401610bf790614782565b6124cf81836145fb565b6001600160a01b038088166000908152603d602052604090209190915561253a907f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008784612818565b846001600160a01b0316866001600160a01b03167f9310ccfcb8de723f578a9e4282ea9f521f05ae40dc08f3068dfad528a65ee3c78360405161257f91815260200190565b60405180910390a395945050505050565b600061259c8484611afc565b9050600019811461140e57818110156125f75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bf7565b61140e8484848403611fb3565b600061260f846111be565b905061261d848260016131c7565b50826001600160a01b0316846001600160a01b03161461272a576000612642846111be565b9050612650848260016131c7565b506001600160a01b0385166000908152603e602090815260409182902082518084019093525464ffffffffff8116808452600160281b9091046001600160d81b03169183019190915215612727578383036126c3576001600160a01b0386166000908152603e6020526040812055612727565b60208101516001600160d81b03166126db85856145fb565b1015612727576126eb84846145fb565b6001600160a01b0387166000908152603e6020526040902080546001600160d81b0392909216600160281b0264ffffffffff9092169190911790555b50505b61140e848484613411565b6000612740826111be565b9050806000036127925760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f42414c414e43455f4f4e5f434f4f4c444f574e00000000006044820152606401610bf7565b60408051808201825264ffffffffff42811682526001600160d81b0380851660208085019182526001600160a01b0388166000818152603e9092529086902094519151909216600160281b0292169190911790915590517f8a05f911d8ab7fc50fec37ef4ba7f9bfcb1a3c191c81dcd824ad0946c4e20d6590611dd79084815260200190565b6040516001600160a01b038085166024830152831660448201526064810182905261140e9085906323b872dd60e01b90608401611f7c565b6001600160a01b03821661289a5760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f44454c45474154454560781b6044820152606401610bf7565b60006128a582612951565b9250505060006128b4856111be565b905060006128c28684612990565b6001600160a01b03878116600090815260208690526040902080546001600160a01b03191691881691909117905590506128fe818684876135b5565b846001600160a01b0316866001600160a01b03167fe8d51c8e11bd570db1734c8ec775785330e77007feed45c43b608ef33ff914bd8660405161294191906147f0565b60405180910390a3505050505050565b60008080808460018111156129685761296861476c565b0361297d57506006915060079050603f612989565b50604091506041905060425b9193909250565b6001600160a01b0380831660009081526020839052604081205490911680610f615783915050610df3565b6127108110612a0c5760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f534c415348494e475f50455243454e5441474500000000006044820152606401610bf7565b60508190556040518181527fb79c2d6c7f5c95eec9dc05affc0ed002620a4ec6d72b7b0744cc8638168c600a90602001611f45565b604f8190556040518181527fbbf67247b5c97564e30ffc0a355e71c006836de7b9149e09e3d5d6054cb0335590602001611f45565b600080805b8351811015612b71576000603c6000868481518110612a9c57612a9c6146cb565b602090810291909101810151516001600160a01b031682528101919091526040016000908120600181015481548851929450612b0a926001600160801b0380831692600160801b900416908a9088908110612af957612af96146cb565b6020026020010151604001516137b9565b9050612b5b868481518110612b2157612b216146cb565b602002602001015160200151828460020160008b6001600160a01b03166001600160a01b03168152602001908152602001600020546138c4565b612b65908561467f565b93505050600101612a7b565b509392505050565b60408051600380825260808201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612b91579050509050604051806040016040528060008152602001876001600160a01b031681525081600081518110612bec57612bec6146cb565b6020026020010181905250604051806040016040528060018152602001866001600160a01b031681525081600181518110612c2957612c296146cb565b6020026020010181905250604051806040016040528060028152602001856001600160a01b031681525081600281518110612c6657612c666146cb565b6020026020010181905250612c7a816138f0565b612c83836129bb565b612c8c82612a41565b61150c670de0b6b3a7640000611ead565b605154600160d81b900460ff1615612cea5760405162461bcd60e51b815260206004820152601060248201526f534c415348494e475f4f4e474f494e4760801b6044820152606401610bf7565b80600003612d0a5760405162461bcd60e51b8152600401610bf790614782565b6000612d15836111be565b90506000612d2d843084612d2860025490565b613ac2565b90508015612db0576001600160a01b0384166000908152603d6020526040902054612d5990829061467f565b6001600160a01b0385166000818152603d60209081526040918290209390935580519182529181018390527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a15b6000612dbb846111d9565b9050612df26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016873087612818565b612dfc8582613b83565b846001600160a01b0316866001600160a01b03167f6c86f3fd5118b3aa8bb4f389a617046de0a3d3d477de1a1673d227f802f616dc8684604051612941929190918252602082015260400190565b60005b8151811015610f13576000603c6000848481518110612e6e57612e6e6146cb565b6020026020010151604001516001600160a01b03166001600160a01b031681526020019081526020016000209050612ee1838381518110612eb157612eb16146cb565b60200260200101516040015182858581518110612ed057612ed06146cb565b602002602001015160200151613c42565b50828281518110612ef457612ef46146cb565b60209081029190910101515181546fffffffffffffffffffffffffffffffff19166001600160801b039091161781558251839083908110612f3757612f376146cb565b6020026020010151604001516001600160a01b03167f87fa03892a0556cb6b8f97e6d533a150d4d55fcbf275fff5fa003fa636bcc7fa848481518110612f7f57612f7f6146cb565b602090810291909101810151516040516001600160801b0390911681520160405180910390a250600101612e4d565b600043821115612ff75760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa12627a1a5afa72aa6a122a960611b6044820152606401610bf7565b6001600160a01b0383166000908152602085905260408120549081900361302957613021846111be565b9150506111b6565b6001600160a01b0384166000908152602087815260408083208380529091529020546001600160801b03168310156130655760009150506111b6565b6001600160a01b038416600090815260208790526040902061175a908285613cfa565b60006001600160d81b038211156130f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663136206269747360c81b6064820152608401610bf7565b5090565b600061314a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e069092919063ffffffff16565b805190915015610f03578080602001905181019061316891906147fe565b610f035760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bf7565b6000806131d9853086612d2860025490565b6001600160a01b0386166000908152603d60205260408120549192509061320190839061467f565b9050811561173257831561322b576001600160a01b0386166000908152603d602052604090208190555b604080516001600160a01b0388168152602081018490527f2468f9268c60ad90e2d49edb0032c8a001e733ae888b3ab8e982edf535be1a76910160405180910390a195945050505050565b6001600160a01b0382166132d65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bf7565b6001600160a01b0382166000908152602081905260409020548181101561334a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bf7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60006001600160b81b038211156130f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663834206269747360c81b6064820152608401610bf7565b6001600160a01b0383166134755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bf7565b6001600160a01b0382166134d75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bf7565b6001600160a01b0383166000908152602081905260409020548181101561354f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bf7565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361140e565b826001600160a01b0316846001600160a01b0316031561140e576000806135db83612951565b5090925090506001600160a01b038616156136cc576001600160a01b038616600090815260208290526040812054801561365b576001600160a01b0388166000908152602085905260408120906136336001846145fb565b8152602081019190915260400160002054600160801b90046001600160801b03169150613667565b613664886111be565b91505b61367d84848a856136788b826145fb565b613e15565b6001600160a01b0388167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f6136b288856145fb565b876040516136c1929190614820565b60405180910390a250505b6001600160a01b0385161561150c576001600160a01b0385166000908152602082905260408120548015613746576001600160a01b03871660009081526020859052604081209061371e6001846145fb565b8152602081019190915260400160002054600160801b90046001600160801b03169150613752565b61374f876111be565b91505b613763848489856136788b8261467f565b6001600160a01b0387167fa0a19463ee116110c9b282012d9b65cc5522dc38a9520340cbaf3142e550127f613798888561467f565b876040516137a7929190614820565b60405180910390a25050505050505050565b60008315806137c6575081155b806137d9575042836001600160801b0316145b8061380d57507f0000000000000000000000000000000000000000000000000000000000000000836001600160801b031610155b156138195750836111b6565b60007f00000000000000000000000000000000000000000000000000000000000000004211613848574261386a565b7f00000000000000000000000000000000000000000000000000000000000000005b905060006138816001600160801b038616836145fb565b905086846138916012600a61491b565b61389b848a614692565b6138a59190614692565b6138af91906146a9565b6138b9919061467f565b979650505050505050565b60006138d26012600a61491b565b6138dc83856145fb565b6138e69086614692565b610f5e91906146a9565b60005b8151811015610f135760006001600160a01b03166045600084848151811061391d5761391d6146cb565b602090810291909101810151518252810191909152604001600020546001600160a01b031614801561397f575060006001600160a01b0316828281518110613967576139676146cb565b6020026020010151602001516001600160a01b031614155b6139cb5760405162461bcd60e51b815260206004820152601b60248201527f41444d494e5f43414e4e4f545f42455f494e495449414c495a454400000000006044820152606401610bf7565b8181815181106139dd576139dd6146cb565b602002602001015160200151604560008484815181106139ff576139ff6146cb565b602002602001015160000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818181518110613a4f57613a4f6146cb565b6020026020010151602001516001600160a01b03167f83a9ddad961dcb7c6894c9585a16ff7792c2ec8281256a3cc7303ae830152dcf838381518110613a9757613a976146cb565b602002602001015160000151604051613ab291815260200190565b60405180910390a26001016138f3565b6001600160a01b038084166000908152603c602090815260408083209388168352600284019091528120549091908280613afd888588613c42565b9050808314613b77578615613b1a57613b178782856138c4565b91505b6001600160a01b03808a1660008181526002870160205260409081902084905551918a16917fbb123b5c06d5408bbea3c4fef481578175cfb432e3b482c6186f02ed9086585b90613b6e9085815260200190565b60405180910390a35b50979650505050505050565b6001600160a01b038216613bd95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bf7565b8060026000828254613beb919061467f565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001820154825460009190600160801b90046001600160801b031642819003613c6d57509050610f61565b8454600090613c889084906001600160801b031684886137b9565b9050828114613cd757600186018190556040518181526001600160a01b038816907f5777ca300dfe5bead41006fbce4389794dbc0ed8d6cccebfaf94630aa04184bc9060200160405180910390a25b85546001600160801b03428116600160801b029116178655925050509392505050565b60001982016000908152602084905260408120546001600160801b03168210613d4757506000198201600090815260208490526040902054600160801b90046001600160801b0316610f61565b600060001984015b81811115613ddd576002828203048103600081815260208881526040918290208251808401909352546001600160801b03808216808552600160801b9092041691830191909152869003613db557602001516001600160801b03169350610f6192505050565b80516001600160801b0316861115613dcf57819350613dd6565b6001820392505b5050613d4f565b5060009081526020949094525050604090912054600160801b90046001600160801b0316919050565b6060610f5e8484600085613f2c565b6001600160a01b03831660009081526020858152604080832054918890529091204391908115801590613e7757506001600160801b038316816000613e5b6001866145fb565b81526020810191909152604001600020546001600160801b0316145b15613ebb5783816000613e8b6001866145fb565b8152602081019190915260400160002080546001600160801b03928316600160801b029216919091179055613f22565b6040805180820182526001600160801b038086168252868116602080840191825260008781529086905293909320915192518116600160801b029216919091179055613f0882600161467f565b6001600160a01b0387166000908152602089905260409020555b5050505050505050565b606082471015613f8d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bf7565b600080866001600160a01b03168587604051613fa99190614927565b60006040518083038185875af1925050503d8060008114613fe6576040519150601f19603f3d011682016040523d82523d6000602084013e613feb565b606091505b50915091506138b9878383876060831561406657825160000361405f576001600160a01b0385163b61405f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bf7565b50816111b6565b6111b6838381511561407b5781518083602001fd5b8060405162461bcd60e51b8152600401610bf7919061412b565b80356001600160a01b03811681146140ac57600080fd5b919050565b600080604083850312156140c457600080fd5b6140cd83614095565b946020939093013593505050565b60005b838110156140f65781810151838201526020016140de565b50506000910152565b600081518084526141178160208601602086016140db565b601f01601f19169290920160200192915050565b602081526000610f6160208301846140ff565b60006020828403121561415057600080fd5b610f6182614095565b60006020828403121561416b57600080fd5b5035919050565b60008060006060848603121561418757600080fd5b61419084614095565b925061419e60208501614095565b929592945050506040919091013590565b600080604083850312156141c257600080fd5b6141cb83614095565b91506141d960208401614095565b90509250929050565b8035600281106140ac57600080fd5b6000806040838503121561420457600080fd5b61420d83614095565b91506141d9602084016141e2565b6000806000806080858703121561423157600080fd5b61423a85614095565b935061424860208601614095565b93969395505050506040820135916060013590565b600080600080600060a0868803121561427557600080fd5b61427e86614095565b945061428c60208701614095565b935061429a60408701614095565b94979396509394606081013594506080013592915050565b600080604083850312156142c557600080fd5b823591506141d960208401614095565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561430e5761430e6142d5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561433d5761433d6142d5565b604052919050565b60006020828403121561435757600080fd5b813567ffffffffffffffff81111561436e57600080fd5b8201601f8101841361437f57600080fd5b803567ffffffffffffffff811115614399576143996142d5565b6143a860208260051b01614314565b808282526020820191506020606084028501019250868311156143ca57600080fd5b6020840193505b8284101561175a57606084880312156143e957600080fd5b6143f16142eb565b84356001600160801b038116811461440857600080fd5b81526020858101359082015261442060408601614095565b60408201528252606093909301926020909101906143d1565b60008060006060848603121561444e57600080fd5b61445784614095565b92506020840135915061446c604085016141e2565b90509250925092565b803560ff811681146140ac57600080fd5b60008060008060008060c0878903121561449f57600080fd5b6144a887614095565b955060208701359450604087013593506144c460608801614475565b9598949750929560808101359460a0909101359350915050565b600080600080600080600060e0888a0312156144f957600080fd5b61450288614095565b965061451060208901614095565b9550604088013594506060880135935061452c60808901614475565b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561455e57600080fd5b61456784614095565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561459757600080fd5b6145a088614095565b9650614510602089016141e2565b60208082526019908201527f43414c4c45525f4e4f545f534c415348494e475f41444d494e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610df357610df36145e5565b600181811c9082168061462257607f821691505b60208210810361464257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43414c4c45525f4e4f545f434c41494d5f48454c504552000000000000000000604082015260600190565b80820180821115610df357610df36145e5565b8082028115828204841417610df357610df36145e5565b6000826146c657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b61190160f01b81526002810192909252602282015260420190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b600060018201614739576147396145e5565b5060010190565b60208082526012908201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b6020808252601390820152721253959053125117d6915493d7d05353d55395606a1b604082015260600190565b6001600160d81b038281168282160390811115610df357610df36145e5565b600281106147ec57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610df382846147ce565b60006020828403121561481057600080fd5b81518015158114610f6157600080fd5b82815260408101610f6160208301846147ce565b6001815b600184111561486f57808504811115614853576148536145e5565b600184161561486157908102905b60019390931c928002614838565b935093915050565b60008261488657506001610df3565b8161489357506000610df3565b81600181146148a957600281146148b3576148cf565b6001915050610df3565b60ff8411156148c4576148c46145e5565b50506001821b610df3565b5060208310610133831016604e8410600b84101617156148f2575081810a610df3565b6148ff6000198484614834565b8060001904821115614913576149136145e5565b029392505050565b6000610f618383614877565b600082516149398184602087016140db565b919091019291505056fea2646970667358221220ccc5a326b943d0272b407367b7016d403a49754d79f129625233f9cf9938ac8064736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
