Overview ERC721
Total Supply:
58 BB

Holders:
48
Profile Summary
Blockchain:
Ethereum (1)

Contract Source Code Verified (Partial Match)
Contract Name:
Bulgy_Bears

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No

Created At:
Thu, 25 Apr 2024 01:45:47 GMT
Bulgy_Bears.sol
Bulgy_Bears.sol
Bulgy_Bears.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "_ownerPayoutAddress",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "_initialBaseURI",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "_maxSupply",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_threeDollarsEth",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "_maxMintPerWallet",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "_maxSupplyPerMintGroup",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "_mintPrice",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "ApprovalCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ApprovalQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ArrayLengthMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BalanceQueryForZeroAddress",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "requested",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "available",
        "type": "uint256"
      }
    ],
    "name": "ExceedsMaxMintGroupSupply",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "requested",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "allowed",
        "type": "uint256"
      }
    ],
    "name": "ExceedsMaxPerWallet",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "requested",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "available",
        "type": "uint256"
      }
    ],
    "name": "ExceedsMaxSupply",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "required",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "provided",
        "type": "uint256"
      }
    ],
    "name": "InsufficientEther",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "reason",
        "type": "string"
      }
    ],
    "name": "InvalidOperation",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintERC2309QuantityExceedsLimit",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      }
    ],
    "name": "MintGroupDoesNotExist",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintInactive",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintZeroQuantity",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      }
    ],
    "name": "NotInPresale",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnableInvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "OwnableUnauthorizedAccount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OwnerQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OwnershipNotInitializedForExtraData",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      }
    ],
    "name": "PresaleInactive",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferFromIncorrectOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToNonERC721ReceiverImplementer",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "URIQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      }
    ],
    "name": "Unauthorized",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "fromTokenId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "toTokenId",
        "type": "uint256"
      }
    ],
    "name": "BatchMetadataUpdate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "fromTokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "toTokenId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "ConsecutiveTransfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newPrice",
        "type": "uint256"
      }
    ],
    "name": "SalePriceChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "affiliate",
        "type": "address"
      }
    ],
    "name": "TokensMinted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "activeMintGroups",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "newPresale",
        "type": "address[]"
      },
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      }
    ],
    "name": "addTopresale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "affiliatePercentage",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "affiliate",
        "type": "address"
      }
    ],
    "name": "batchMint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "changeMintStatus",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newMintPrice",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      }
    ],
    "name": "changeSalePrice",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "checkPendingBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "feeAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "maxMintPerWallet",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "maxSupplyPerMintGroup",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "mintGroupMints",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintLive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "mintPrice",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "ownerPayoutAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "presale",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "presaleActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "presaleCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "removePresale",
        "type": "address[]"
      },
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      }
    ],
    "name": "removeFrompresale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_percentageOfMint",
        "type": "uint256"
      }
    ],
    "name": "setAffiliatePercentage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "newBaseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newMaxMintPerWallet",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "mintGroupId",
        "type": "uint256"
      }
    ],
    "name": "setMaxMintPerWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "newMax",
        "type": "uint256"
      }
    ],
    "name": "setNewMaxPerMintGroup",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "presaleStatus",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "mintId",
        "type": "uint256"
      }
    ],
    "name": "stopOrStartpresaleMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "threeDollarsEth",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "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": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawAffiliateMintFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawFeeFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawMintFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040525f600c5f6101000a81548160ff0219169083151502179055505f6017553480156200002d575f80fd5b50604051620051f9380380620051f9833981810160405281019062000053919062000752565b338989816002908162000067919062000b13565b50806003908162000079919062000b13565b506200008a6200039260201b60201c565b5f8190555050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000104575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000fb919062000c08565b60405180910390fd5b62000115816200039a60201b60201c565b5081518351141580156200012b57508051835114155b1562000163576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b8351811015620002805783818151811062000186576200018562000c23565b5b6020026020010151826200019b919062000c7d565b9150838181518110620001b357620001b262000c23565b5b602002602001015160135f8381526020019081526020015f2081905550848181518110620001e657620001e562000c23565b5b602002602001015160115f8381526020019081526020015f208190555082818151811062000219576200021862000c23565b5b602002602001015160125f8381526020019081526020015f20819055505f60145f8381526020019081526020015f2081905550601881908060018154018082558091505060019003905f5260205f20015f9091909190915055808060010191505062000166565b5085811115620002c7576040517fe066a8d7000000000000000000000000000000000000000000000000000000008152600401620002be9062000d3b565b60405180910390fd5b85600a8190555084600b8190555086600d9081620002e6919062000b13565b5087600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073428deb81a93bed820068724eb1fcc7503d71e417600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6010819055505050505050505050505062000d5b565b5f6001905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620004be8262000476565b810181811067ffffffffffffffff82111715620004e057620004df62000486565b5b80604052505050565b5f620004f46200045d565b9050620005028282620004b3565b919050565b5f67ffffffffffffffff82111562000524576200052362000486565b5b6200052f8262000476565b9050602081019050919050565b5f5b838110156200055b5780820151818401526020810190506200053e565b5f8484015250505050565b5f6200057c620005768462000507565b620004e9565b9050828152602081018484840111156200059b576200059a62000472565b5b620005a88482856200053c565b509392505050565b5f82601f830112620005c757620005c66200046e565b5b8151620005d984826020860162000566565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200060d82620005e2565b9050919050565b6200061f8162000601565b81146200062a575f80fd5b50565b5f815190506200063d8162000614565b92915050565b5f819050919050565b620006578162000643565b811462000662575f80fd5b50565b5f8151905062000675816200064c565b92915050565b5f67ffffffffffffffff82111562000698576200069762000486565b5b602082029050602081019050919050565b5f80fd5b5f620006c3620006bd846200067b565b620004e9565b90508083825260208201905060208402830185811115620006e957620006e8620006a9565b5b835b8181101562000716578062000701888262000665565b845260208401935050602081019050620006eb565b5050509392505050565b5f82601f8301126200073757620007366200046e565b5b815162000749848260208601620006ad565b91505092915050565b5f805f805f805f805f6101208a8c03121562000773576200077262000466565b5b5f8a015167ffffffffffffffff8111156200079357620007926200046a565b5b620007a18c828d01620005b0565b99505060208a015167ffffffffffffffff811115620007c557620007c46200046a565b5b620007d38c828d01620005b0565b9850506040620007e68c828d016200062d565b97505060608a015167ffffffffffffffff8111156200080a57620008096200046a565b5b620008188c828d01620005b0565b96505060806200082b8c828d0162000665565b95505060a06200083e8c828d0162000665565b94505060c08a015167ffffffffffffffff8111156200086257620008616200046a565b5b620008708c828d0162000720565b93505060e08a015167ffffffffffffffff8111156200089457620008936200046a565b5b620008a28c828d0162000720565b9250506101008a015167ffffffffffffffff811115620008c757620008c66200046a565b5b620008d58c828d0162000720565b9150509295985092959850929598565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200093457607f821691505b6020821081036200094a5762000949620008ef565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000971565b620009ba868362000971565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620009fb620009f5620009ef8462000643565b620009d2565b62000643565b9050919050565b5f819050919050565b62000a1683620009db565b62000a2e62000a258262000a02565b8484546200097d565b825550505050565b5f90565b62000a4462000a36565b62000a5181848462000a0b565b505050565b5b8181101562000a785762000a6c5f8262000a3a565b60018101905062000a57565b5050565b601f82111562000ac75762000a918162000950565b62000a9c8462000962565b8101602085101562000aac578190505b62000ac462000abb8562000962565b83018262000a56565b50505b505050565b5f82821c905092915050565b5f62000ae95f198460080262000acc565b1980831691505092915050565b5f62000b03838362000ad8565b9150826002028217905092915050565b62000b1e82620008e5565b67ffffffffffffffff81111562000b3a5762000b3962000486565b5b62000b4682546200091c565b62000b5382828562000a7c565b5f60209050601f83116001811462000b89575f841562000b74578287015190505b62000b80858262000af6565b86555062000bef565b601f19841662000b998662000950565b5f5b8281101562000bc25784890151825560018201915060208501945060208101905062000b9b565b8683101562000be2578489015162000bde601f89168262000ad8565b8355505b6001600288020188555050505b505050505050565b62000c028162000601565b82525050565b5f60208201905062000c1d5f83018462000bf7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000c898262000643565b915062000c968362000643565b925082820190508082111562000cb15762000cb062000c50565b5b92915050565b5f82825260208201905092915050565b7f4d617820737570706c7920706572206d696e742067726f7570206578636565645f8201527f7320746f74616c206d617820737570706c790000000000000000000000000000602082015250565b5f62000d2360328362000cb7565b915062000d308262000cc7565b604082019050919050565b5f6020820190508181035f83015262000d548162000d15565b9050919050565b6144908062000d695f395ff3fe60806040526004361061027c575f3560e01c80638da5cb5b1161014e578063c82e474b116100c0578063e6a72acf11610079578063e6a72acf1461092e578063e8656fcc1461096a578063e985e9c514610994578063f2fde38b146109d0578063fac5dbc6146109f8578063fea414b614610a205761027c565b8063c82e474b14610810578063c87b56dd14610838578063cde27a3514610874578063ce55c66a1461089e578063d5abeb01146108c8578063e5fd1145146108f25761027c565b8063a75c3ad911610112578063a75c3ad91461074e578063a8ddf8f614610764578063ae4e49421461078c578063b3978a86146107b6578063b88d4fde146107de578063c20f388f146107fa5761027c565b80638da5cb5b14610692578063905d7b33146106bc57806391a57544146106d257806395d89b41146106fc578063a22cb465146107265761027c565b80633ef009ef116101f25780636352211e116101ab5780636352211e146105765780636c0360eb146105b257806370a08231146105dc578063715018a6146106185780637bd4f0711461062e5780637c2003e3146106565761027c565b80633ef009ef14610474578063412753581461049057806342842e0e146104ba578063483f0a82146104d65780634a5bd2fd1461051257806355f804b31461054e5761027c565b806316da3bc61161024457806316da3bc61461036657806318160ddd146103a257806320704c5a146103cc57806321af27f6146103f457806323b872dd1461041c57806324a663c3146104385761027c565b806301ffc9a71461028057806306fdde03146102bc578063081812fc146102e6578063095ea7b31461032257806311f7acb91461033e575b5f80fd5b34801561028b575f80fd5b506102a660048036038101906102a19190613390565b610a4a565b6040516102b391906133d5565b60405180910390f35b3480156102c7575f80fd5b506102d0610a5b565b6040516102dd9190613478565b60405180910390f35b3480156102f1575f80fd5b5061030c600480360381019061030791906134cb565b610aeb565b6040516103199190613535565b60405180910390f35b61033c60048036038101906103379190613578565b610b65565b005b348015610349575f80fd5b50610364600480360381019061035f91906135b6565b610ca4565b005b348015610371575f80fd5b5061038c600480360381019061038791906134cb565b610db3565b6040516103999190613603565b60405180910390f35b3480156103ad575f80fd5b506103b6610dc8565b6040516103c39190613603565b60405180910390f35b3480156103d7575f80fd5b506103f260048036038101906103ed919061375c565b610ddd565b005b3480156103ff575f80fd5b5061041a6004803603810190610415919061375c565b610eac565b005b610436600480360381019061043191906137b6565b610f85565b005b348015610443575f80fd5b5061045e600480360381019061045991906134cb565b611293565b60405161046b9190613603565b60405180910390f35b61048e60048036038101906104899190613806565b6112a8565b005b34801561049b575f80fd5b506104a4611915565b6040516104b19190613535565b60405180910390f35b6104d460048036038101906104cf91906137b6565b61193a565b005b3480156104e1575f80fd5b506104fc60048036038101906104f791906134cb565b611959565b6040516105099190613603565b60405180910390f35b34801561051d575f80fd5b50610538600480360381019061053391906134cb565b611979565b60405161054591906133d5565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190613906565b611996565b005b348015610581575f80fd5b5061059c600480360381019061059791906134cb565b611a00565b6040516105a99190613535565b60405180910390f35b3480156105bd575f80fd5b506105c6611a11565b6040516105d39190613478565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd919061394d565b611a9d565b60405161060f9190613603565b60405180910390f35b348015610623575f80fd5b5061062c611b52565b005b348015610639575f80fd5b50610654600480360381019061064f91906135b6565b611b65565b005b348015610661575f80fd5b5061067c60048036038101906106779190613978565b611b87565b60405161068991906133d5565b60405180910390f35b34801561069d575f80fd5b506106a6611bb1565b6040516106b39190613535565b60405180910390f35b3480156106c7575f80fd5b506106d0611bd9565b005b3480156106dd575f80fd5b506106e6611f6f565b6040516106f39190613603565b60405180910390f35b348015610707575f80fd5b50610710611f75565b60405161071d9190613478565b60405180910390f35b348015610731575f80fd5b5061074c600480360381019061074791906139e0565b612005565b005b348015610759575f80fd5b5061076261210b565b005b34801561076f575f80fd5b5061078a60048036038101906107859190613a1e565b6123ce565b005b348015610797575f80fd5b506107a0612446565b6040516107ad9190613535565b60405180910390f35b3480156107c1575f80fd5b506107dc60048036038101906107d79190613a49565b61246b565b005b6107f860048036038101906107f39190613b25565b6124e9565b005b348015610805575f80fd5b5061080e61255b565b005b34801561081b575f80fd5b50610836600480360381019061083191906135b6565b6126cd565b005b348015610843575f80fd5b5061085e600480360381019061085991906134cb565b61273e565b60405161086b9190613478565b60405180910390f35b34801561087f575f80fd5b506108886127d9565b6040516108959190613603565b60405180910390f35b3480156108a9575f80fd5b506108b26127df565b6040516108bf9190613603565b60405180910390f35b3480156108d3575f80fd5b506108dc6127e5565b6040516108e99190613603565b60405180910390f35b3480156108fd575f80fd5b50610918600480360381019061091391906134cb565b6127eb565b6040516109259190613603565b60405180910390f35b348015610939575f80fd5b50610954600480360381019061094f91906134cb565b612800565b6040516109619190613603565b60405180910390f35b348015610975575f80fd5b5061097e612815565b60405161098b91906133d5565b60405180910390f35b34801561099f575f80fd5b506109ba60048036038101906109b59190613ba5565b612827565b6040516109c791906133d5565b60405180910390f35b3480156109db575f80fd5b506109f660048036038101906109f1919061394d565b6128b5565b005b348015610a03575f80fd5b50610a1e6004803603810190610a1991906134cb565b612939565b005b348015610a2b575f80fd5b50610a3461294b565b604051610a419190613603565b60405180910390f35b5f610a548261298f565b9050919050565b606060028054610a6a90613c10565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9690613c10565b8015610ae15780601f10610ab857610100808354040283529160200191610ae1565b820191905f5260205f20905b815481529060010190602001808311610ac457829003601f168201915b5050505050905090565b5f610af582612a20565b610b2b576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610b6f82611a00565b90508073ffffffffffffffffffffffffffffffffffffffff16610b90612a7a565b73ffffffffffffffffffffffffffffffffffffffff1614610bf357610bbc81610bb7612a7a565b612827565b610bf2576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8260065f8481526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610cac612a81565b610cb582612b08565b610cc357610cc282612b5f565b5b5f805b601880549050811015610d52578360188281548110610ce857610ce7613c40565b5b905f5260205f20015403610d09578282610d029190613c9a565b9150610d45565b60135f60188381548110610d2057610d1f613c40565b5b905f5260205f20015481526020019081526020015f205482610d429190613c9a565b91505b8080600101915050610cc6565b50600a54811115610d98576040517fe066a8d7000000000000000000000000000000000000000000000000000000008152600401610d8f90613d3d565b60405180910390fd5b8160135f8581526020019081526020015f2081905550505050565b6011602052805f5260405f205f915090505481565b5f610dd1612be0565b6001545f540303905090565b610de5612a81565b610dee81612b08565b610dfc57610dfb81612b5f565b5b5f5b8251811015610ea757600160155f8481526020019081526020015f205f858481518110610e2e57610e2d613c40565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601754610e949190613c9a565b6017819055508080600101915050610dfe565b505050565b610eb4612a81565b610ebd81612b08565b610ecb57610eca81612b5f565b5b5f5b8251811015610f80575f60155f8481526020019081526020015f205f858481518110610efc57610efb613c40565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6017541115610f73576001601754610f6c9190613d5b565b6017819055505b8080600101915050610ecd565b505050565b5f610f8f82612be8565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061100184612cab565b915091506110178187611012612a7a565b612cce565b6110635761102c86611027612a7a565b612827565b611062576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110c8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d58686866001612d11565b80156110df575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055506111a785611183888887612d17565b7c020000000000000000000000000000000000000000000000000000000017612d3e565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603611223575f6001850190505f60045f8381526020019081526020015f205403611221575f548114611220578360045f8381526020019081526020015f20819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461128b8686866001612d68565b505050505050565b6013602052805f5260405f205f915090505481565b600c5f9054906101000a900460ff166112ed576040517f343295c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5f9054906101000a900460ff168015611323575060165f8381526020019081526020015f205f9054906101000a900460ff16155b1561136557816040517f1435260a00000000000000000000000000000000000000000000000000000000815260040161135c9190613603565b60405180910390fd5b5f82146114b0575f151560155f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361140e5733826040517f10cdd37c000000000000000000000000000000000000000000000000000000008152600401611405929190613d8e565b60405180910390fd5b60135f8381526020019081526020015f20548360145f8581526020019081526020015f205461143d9190613c9a565b11156114af578260145f8481526020019081526020015f205460135f8581526020019081526020015f20546114729190613d5b565b6040517fcc3f2f1b0000000000000000000000000000000000000000000000000000000081526004016114a6929190613db5565b60405180910390fd5b5b60115f8381526020019081526020015f20546114cb33612d6e565b846114d69190613c9a565b111561153f57826114e633612d6e565b60115f8581526020019081526020015f20546115029190613d5b565b6040517f07cc6bf6000000000000000000000000000000000000000000000000000000008152600401611536929190613db5565b60405180910390fd5b600a548361154b610dc8565b6115559190613c9a565b11156115ae5782611564610dc8565b600a546115719190613d5b565b6040517fadc3cee50000000000000000000000000000000000000000000000000000000081526004016115a5929190613db5565b60405180910390fd5b5f8360125f8581526020019081526020015f20546115cc9190613ddc565b90505f84600b546115dd9190613ddc565b60646003846115ec9190613ddc565b6115f69190613e4a565b6116009190613c9a565b90505f818361160f9190613c9a565b9050803410156116585780346040517fc108422300000000000000000000000000000000000000000000000000000000815260040161164f929190613db5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116c057503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611745575f6064601054856116d69190613ddc565b6116e09190613e4a565b90508060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461172e9190613c9a565b9250508190555080846117419190613d5b565b9350505b8260095f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117b29190613c9a565b925050819055508160095f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118269190613c9a565b925050819055508560145f8781526020019081526020015f205f82825461184d9190613c9a565b9250508190555061185e3387612dc2565b3373ffffffffffffffffffffffffffffffffffffffff167f264808566929c0a2c98376a25f69f0faa85b1ce885be5fc7eee7cd639f9c0c268787876040516118a893929190613e7a565b60405180910390a25f81346118bd9190613d5b565b90505f81111561190c573373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561190a573d5f803e3d5ffd5b505b50505050505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61195483838360405180602001604052805f8152506124e9565b505050565b60188181548110611968575f80fd5b905f5260205f20015f915090505481565b6016602052805f5260405f205f915054906101000a900460ff1681565b61199e612a81565b80600d90816119ad919061404c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60017f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c60405160405180910390a350565b5f611a0a82612be8565b9050919050565b600d8054611a1e90613c10565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4a90613c10565b8015611a955780601f10611a6c57610100808354040283529160200191611a95565b820191905f5260205f20905b815481529060010190602001808311611a7857829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b03576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b611b5a612a81565b611b635f612ddf565b565b611b6d612a81565b8160115f8381526020019081526020015f20819055505050565b6015602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611be1612a81565b5f60095f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611c81576040517fe066a8d7000000000000000000000000000000000000000000000000000000008152600401611c7890614165565b60405180910390fd5b5f60095f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60095f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60095f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611e51906141b0565b5f6040518083038185875af1925050503d805f8114611e8b576040519150601f19603f3d011682016040523d82523d5f602084013e611e90565b606091505b505090505f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611eda906141b0565b5f6040518083038185875af1925050503d805f8114611f14576040519150601f19603f3d011682016040523d82523d5f602084013e611f19565b606091505b5050905081158015611f29575080155b15611f69576040517fe066a8d7000000000000000000000000000000000000000000000000000000008152600401611f609061420e565b60405180910390fd5b50505050565b60105481565b606060038054611f8490613c10565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb090613c10565b8015611ffb5780601f10611fd257610100808354040283529160200191611ffb565b820191905f5260205f20905b815481529060010190602001808311611fde57829003601f168201915b5050505050905090565b8060075f612011612a7a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120ba612a7a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120ff91906133d5565b60405180910390a35050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461219c57336040517f8e4a23d60000000000000000000000000000000000000000000000000000000081526004016121939190613535565b60405180910390fd5b5f60095f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541161223c576040517fe066a8d700000000000000000000000000000000000000000000000000000000815260040161223390614165565b60405180910390fd5b5f60095f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60095f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612347906141b0565b5f6040518083038185875af1925050503d805f8114612381576040519150601f19603f3d011682016040523d82523d5f602084013e612386565b606091505b50509050806123ca576040517fe066a8d70000000000000000000000000000000000000000000000000000000081526004016123c19061420e565b60405180910390fd5b5050565b6123d6612a81565b801515600c5f9054906101000a900460ff1615150361242a576040517fe066a8d70000000000000000000000000000000000000000000000000000000081526004016124219061429c565b60405180910390fd5b80600c5f6101000a81548160ff02191690831515021790555050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612473612a81565b61247c81612b08565b6124bd57806040517f5831017d0000000000000000000000000000000000000000000000000000000081526004016124b49190613603565b60405180910390fd5b8160165f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6124f4848484610f85565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146125555761251e84848484612ea2565b612554576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b5f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8110156125df576040517fe066a8d70000000000000000000000000000000000000000000000000000000081526004016125d690614304565b60405180910390fd5b5f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f3373ffffffffffffffffffffffffffffffffffffffff1682604051612646906141b0565b5f6040518083038185875af1925050503d805f8114612680576040519150601f19603f3d011682016040523d82523d5f602084013e612685565b606091505b50509050806126c9576040517fe066a8d70000000000000000000000000000000000000000000000000000000081526004016126c09061420e565b60405180910390fd5b5050565b6126d5612a81565b6126de81612b08565b6126ec576126eb81612b5f565b5b8160125f8381526020019081526020015f2081905550807fa7e52343431f792020e7cb8411a08014688ca11782fd5709fa2531b3d74ba457836040516127329190613603565b60405180910390a25050565b606061274982612a20565b61277f576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612788612fed565b90505f8151036127a65760405180602001604052805f8152506127d1565b806127b08461307d565b6040516020016127c192919061435c565b6040516020818303038152906040525b915050919050565b60175481565b600b5481565b600a5481565b6014602052805f5260405f205f915090505481565b6012602052805f5260405f205f915090505481565b600c5f9054906101000a900460ff1681565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6128bd612a81565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361292d575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016129249190613535565b60405180910390fd5b61293681612ddf565b50565b612941612a81565b8060108190555050565b5f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905090565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806129e957506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612a195750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f81612a2a612be0565b11158015612a3857505f5482105b8015612a7357505f7c010000000000000000000000000000000000000000000000000000000060045f8581526020019081526020015f205416145b9050919050565b5f33905090565b612a896130cc565b73ffffffffffffffffffffffffffffffffffffffff16612aa7611bb1565b73ffffffffffffffffffffffffffffffffffffffff1614612b0657612aca6130cc565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612afd9190613535565b60405180910390fd5b565b5f805f90505b601880549050811015612b55578260188281548110612b3057612b2f613c40565b5b905f5260205f20015403612b48576001915050612b5a565b8080600101915050612b0e565b505f90505b919050565b5f60125f8381526020019081526020015f20819055505f60115f8381526020019081526020015f20819055505f60135f8381526020019081526020015f20819055505f60145f8381526020019081526020015f2081905550601881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f6001905090565b5f8082905080612bf6612be0565b11612c74575f54811015612c73575f60045f8381526020019081526020015f205490505f7c0100000000000000000000000000000000000000000000000000000000821603612c71575b5f8103612c675760045f836001900393508381526020019081526020015f20549050612c40565b8092505050612ca6565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b5f8060e883901c905060e8612d2d8686846130d3565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f67ffffffffffffffff604060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c169050919050565b612ddb828260405180602001604052805f8152506130db565b5050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ec7612a7a565b8786866040518563ffffffff1660e01b8152600401612ee994939291906143d1565b6020604051808303815f875af1925050508015612f2457506040513d601f19601f82011682018060405250810190612f21919061442f565b60015b612f9a573d805f8114612f52576040519150601f19603f3d011682016040523d82523d5f602084013e612f57565b606091505b505f815103612f92576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600d8054612ffc90613c10565b80601f016020809104026020016040519081016040528092919081815260200182805461302890613c10565b80156130735780601f1061304a57610100808354040283529160200191613073565b820191905f5260205f20905b81548152906001019060200180831161305657829003601f168201915b5050505050905090565b606060a060405101806040526020810391505f825281835b6001156130b757600184039350600a81066030018453600a8104905080613095575b50828103602084039350808452505050919050565b5f33905090565b5f9392505050565b6130e58383613172565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1461316d575f805490505f83820390505b6131215f868380600101945086612ea2565b613157576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061310f57815f541461316a575f80fd5b50505b505050565b5f805490505f82036131b0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131bc5f848385612d11565b600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555061322e8361321f5f865f612d17565b6132288561331b565b17612d3e565b60045f8381526020019081526020015f20819055505f80838301905073ffffffffffffffffffffffffffffffffffffffff8516915082825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600183015b8181146132c85780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a460018101905061328f565b505f8203613302576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f8190555050506133165f848385612d68565b505050565b5f6001821460e11b9050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61336f8161333b565b8114613379575f80fd5b50565b5f8135905061338a81613366565b92915050565b5f602082840312156133a5576133a4613333565b5b5f6133b28482850161337c565b91505092915050565b5f8115159050919050565b6133cf816133bb565b82525050565b5f6020820190506133e85f8301846133c6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561342557808201518184015260208101905061340a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61344a826133ee565b61345481856133f8565b9350613464818560208601613408565b61346d81613430565b840191505092915050565b5f6020820190508181035f8301526134908184613440565b905092915050565b5f819050919050565b6134aa81613498565b81146134b4575f80fd5b50565b5f813590506134c5816134a1565b92915050565b5f602082840312156134e0576134df613333565b5b5f6134ed848285016134b7565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61351f826134f6565b9050919050565b61352f81613515565b82525050565b5f6020820190506135485f830184613526565b92915050565b61355781613515565b8114613561575f80fd5b50565b5f813590506135728161354e565b92915050565b5f806040838503121561358e5761358d613333565b5b5f61359b85828601613564565b92505060206135ac858286016134b7565b9150509250929050565b5f80604083850312156135cc576135cb613333565b5b5f6135d9858286016134b7565b92505060206135ea858286016134b7565b9150509250929050565b6135fd81613498565b82525050565b5f6020820190506136165f8301846135f4565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61365682613430565b810181811067ffffffffffffffff8211171561367557613674613620565b5b80604052505050565b5f61368761332a565b9050613693828261364d565b919050565b5f67ffffffffffffffff8211156136b2576136b1613620565b5b602082029050602081019050919050565b5f80fd5b5f6136d96136d484613698565b61367e565b905080838252602082019050602084028301858111156136fc576136fb6136c3565b5b835b8181101561372557806137118882613564565b8452602084019350506020810190506136fe565b5050509392505050565b5f82601f8301126137435761374261361c565b5b81356137538482602086016136c7565b91505092915050565b5f806040838503121561377257613771613333565b5b5f83013567ffffffffffffffff81111561378f5761378e613337565b5b61379b8582860161372f565b92505060206137ac858286016134b7565b9150509250929050565b5f805f606084860312156137cd576137cc613333565b5b5f6137da86828701613564565b93505060206137eb86828701613564565b92505060406137fc868287016134b7565b9150509250925092565b5f805f6060848603121561381d5761381c613333565b5b5f61382a868287016134b7565b935050602061383b868287016134b7565b925050604061384c86828701613564565b9150509250925092565b5f80fd5b5f67ffffffffffffffff82111561387457613873613620565b5b61387d82613430565b9050602081019050919050565b828183375f83830152505050565b5f6138aa6138a58461385a565b61367e565b9050828152602081018484840111156138c6576138c5613856565b5b6138d184828561388a565b509392505050565b5f82601f8301126138ed576138ec61361c565b5b81356138fd848260208601613898565b91505092915050565b5f6020828403121561391b5761391a613333565b5b5f82013567ffffffffffffffff81111561393857613937613337565b5b613944848285016138d9565b91505092915050565b5f6020828403121561396257613961613333565b5b5f61396f84828501613564565b91505092915050565b5f806040838503121561398e5761398d613333565b5b5f61399b858286016134b7565b92505060206139ac85828601613564565b9150509250929050565b6139bf816133bb565b81146139c9575f80fd5b50565b5f813590506139da816139b6565b92915050565b5f80604083850312156139f6576139f5613333565b5b5f613a0385828601613564565b9250506020613a14858286016139cc565b9150509250929050565b5f60208284031215613a3357613a32613333565b5b5f613a40848285016139cc565b91505092915050565b5f8060408385031215613a5f57613a5e613333565b5b5f613a6c858286016139cc565b9250506020613a7d858286016134b7565b9150509250929050565b5f67ffffffffffffffff821115613aa157613aa0613620565b5b613aaa82613430565b9050602081019050919050565b5f613ac9613ac484613a87565b61367e565b905082815260208101848484011115613ae557613ae4613856565b5b613af084828561388a565b509392505050565b5f82601f830112613b0c57613b0b61361c565b5b8135613b1c848260208601613ab7565b91505092915050565b5f805f8060808587031215613b3d57613b3c613333565b5b5f613b4a87828801613564565b9450506020613b5b87828801613564565b9350506040613b6c878288016134b7565b925050606085013567ffffffffffffffff811115613b8d57613b8c613337565b5b613b9987828801613af8565b91505092959194509250565b5f8060408385031215613bbb57613bba613333565b5b5f613bc885828601613564565b9250506020613bd985828601613564565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613c2757607f821691505b602082108103613c3a57613c39613be3565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ca482613498565b9150613caf83613498565b9250828201905080821115613cc757613cc6613c6d565b5b92915050565b7f4e657720737570706c7920706572206d696e742067726f7570206578636565645f8201527f7320746f74616c20737570706c792e0000000000000000000000000000000000602082015250565b5f613d27602f836133f8565b9150613d3282613ccd565b604082019050919050565b5f6020820190508181035f830152613d5481613d1b565b9050919050565b5f613d6582613498565b9150613d7083613498565b9250828203905081811115613d8857613d87613c6d565b5b92915050565b5f604082019050613da15f830185613526565b613dae60208301846135f4565b9392505050565b5f604082019050613dc85f8301856135f4565b613dd560208301846135f4565b9392505050565b5f613de682613498565b9150613df183613498565b9250828202613dff81613498565b91508282048414831517613e1657613e15613c6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e5482613498565b9150613e5f83613498565b925082613e6f57613e6e613e1d565b5b828204905092915050565b5f606082019050613e8d5f8301866135f4565b613e9a60208301856135f4565b613ea76040830184613526565b949350505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613ed0565b613f158683613ed0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613f50613f4b613f4684613498565b613f2d565b613498565b9050919050565b5f819050919050565b613f6983613f36565b613f7d613f7582613f57565b848454613edc565b825550505050565b5f90565b613f91613f85565b613f9c818484613f60565b505050565b5b81811015613fbf57613fb45f82613f89565b600181019050613fa2565b5050565b601f82111561400457613fd581613eaf565b613fde84613ec1565b81016020851015613fed578190505b614001613ff985613ec1565b830182613fa1565b50505b505050565b5f82821c905092915050565b5f6140245f1984600802614009565b1980831691505092915050565b5f61403c8383614015565b9150826002028217905092915050565b614055826133ee565b67ffffffffffffffff81111561406e5761406d613620565b5b6140788254613c10565b614083828285613fc3565b5f60209050601f8311600181146140b4575f84156140a2578287015190505b6140ac8582614031565b865550614113565b601f1984166140c286613eaf565b5f5b828110156140e9578489015182556001820191506020850194506020810190506140c4565b868310156141065784890151614102601f891682614015565b8355505b6001600288020188555050505b505050505050565b7f5468657265206973206e6f7468696e6720746f207769746864726177000000005f82015250565b5f61414f601c836133f8565b915061415a8261411b565b602082019050919050565b5f6020820190508181035f83015261417c81614143565b9050919050565b5f81905092915050565b50565b5f61419b5f83614183565b91506141a68261418d565b5f82019050919050565b5f6141ba82614190565b9150819050919050565b7f5769746864726177205472616e73666572204661696c656400000000000000005f82015250565b5f6141f86018836133f8565b9150614203826141c4565b602082019050919050565b5f6020820190508181035f830152614225816141ec565b9050919050565b7f4d696e742073746174757320697320616c726561647920746865206f6e6520795f8201527f6f7520656e746572656400000000000000000000000000000000000000000000602082015250565b5f614286602a836133f8565b91506142918261422c565b604082019050919050565b5f6020820190508181035f8301526142b38161427a565b9050919050565b7f4e6f2066756e647320746f2077697468647261770000000000000000000000005f82015250565b5f6142ee6014836133f8565b91506142f9826142ba565b602082019050919050565b5f6020820190508181035f83015261431b816142e2565b9050919050565b5f81905092915050565b5f614336826133ee565b6143408185614322565b9350614350818560208601613408565b80840191505092915050565b5f614367828561432c565b9150614373828461432c565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6143a38261437f565b6143ad8185614389565b93506143bd818560208601613408565b6143c681613430565b840191505092915050565b5f6080820190506143e45f830187613526565b6143f16020830186613526565b6143fe60408301856135f4565b81810360608301526144108184614399565b905095945050505050565b5f8151905061442981613366565b92915050565b5f6020828403121561444457614443613333565b5b5f6144518482850161441b565b9150509291505056fea2646970667358221220661649f1e1a912b12f1b38dd5a0ee7ddd941161e6562ae9db317885d4d2a082d64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000008485d76443abed8475e9b689405efaeba79d4d5b00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000003328b944c40000000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000000b42756c6779204265617273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000242420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f62616679626569636f6363796d637a757133696e763776366e67347335696b74756d796b6e6e6a657134346b72776f7570756970696768346274792f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000011c37937e08000