Overview ERC1155
Total Supply:
0 mantle animemoon

Holders:
161
Profile Summary
Blockchain:
Mantle (5000)

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

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 300 runs

Created At:
Tue, 25 Jul 2023 10:46:01 GMT
BasicERC1155.sol
BasicERC1155.sol
BasicERC1155.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "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": false,
        "internalType": "address",
        "name": "newRoyaltyRecipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newRoyaltyBps",
        "type": "uint256"
      }
    ],
    "name": "DefaultRoyalty",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "prevOwner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnerUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "royaltyRecipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "royaltyBps",
        "type": "uint256"
      }
    ],
    "name": "RoyaltyForToken",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "mintedTo",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenIdMinted",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "uri",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "quantityMinted",
        "type": "uint256"
      }
    ],
    "name": "TokensMinted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "TransferBatch",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "TransferSingle",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "value",
        "type": "string"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "URI",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      }
    ],
    "name": "balanceOfBatch",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "burnBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "currency",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "collectMistakeCurrency",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractType",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractVersion",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getDefaultRoyaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getInfo",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getRoleMember",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleMemberCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "getRoyaltyInfoForToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "initialDate",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_defaultAdmin",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_symbol",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_contractURI",
        "type": "string"
      },
      {
        "internalType": "address[]",
        "name": "_trustedForwarders",
        "type": "address[]"
      },
      {
        "internalType": "address",
        "name": "_royaltyRecipient",
        "type": "address"
      },
      {
        "internalType": "uint128",
        "name": "_royaltyBps",
        "type": "uint128"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "forwarder",
        "type": "address"
      }
    ],
    "name": "isTrustedForwarder",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_uri",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "mintTo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "data",
        "type": "bytes[]"
      }
    ],
    "name": "multicall",
    "outputs": [
      {
        "internalType": "bytes[]",
        "name": "results",
        "type": "bytes[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nextTokenIdToMint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "salePrice",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "royaltyAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeBatchTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "saleRecipientForToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "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": "_uri",
        "type": "string"
      }
    ],
    "name": "setContractURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_royaltyRecipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_royaltyBps",
        "type": "uint256"
      }
    ],
    "name": "setDefaultRoyaltyInfo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_newOwner",
        "type": "address"
      }
    ],
    "name": "setOwner",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_bps",
        "type": "uint256"
      }
    ],
    "name": "setRoyaltyInfoForToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_uri",
        "type": "string"
      }
    ],
    "name": "setUri",
    "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": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "uri",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000c4576000805461ffff19166101011790555b8015620000d7576000805461ff00191690555b506200010b565b6000620000f630620000fc60201b6200154e1760201c565b15905090565b6001600160a01b03163b151590565b613ee1806200011b6000396000f3fe608060405234801561001057600080fd5b506004361061027d5760003560e01c806391d1485411610156578063b07f569a116100d3578063d547741f11610097578063ea500d6911610071578063ea500d6914610635578063f242432a1461065f578063f5298aca1461067257600080fd5b8063d547741f146105dd578063e8a3d485146105f0578063e985e9c5146105f857600080fd5b8063b07f569a1461055f578063b24f2d3914610572578063bd85b03914610594578063ca15c873146105b5578063cb2ef6f7146105c857600080fd5b8063a0a8e4601161011a578063a0a8e46014610502578063a217fddf14610511578063a22cb46514610519578063ac9650d81461052c578063b03f45281461054c57600080fd5b806391d14854146104b7578063938e3d7b146104ca578063945ade92146104dd57806395d89b41146104e75780639bcf7a15146104ef57600080fd5b80633b1475a7116101ff578063600dd5ea116101c357806389b578351161019d57806389b57835146104715780638da5cb5b146104845780639010d07c146104a457600080fd5b8063600dd5ea146104385780636b20c4541461044b578063782f08ae1461045e57600080fd5b80633b1475a7146103965780634cc157df146103a05780634e1273f4146103d5578063572b6c05146103f55780635a9b0b891461042157600080fd5b8063248a9ca311610246578063248a9ca3146103085780632a55205a1461032b5780632eb2c2d61461035d5780632f2ff15d1461037057806336568abe1461038357600080fd5b8062fdd58e1461028257806301ffc9a7146102a857806306fdde03146102cb5780630e89341c146102e057806313af4035146102f3575b600080fd5b610295610290366004612e75565b610685565b6040519081526020015b60405180910390f35b6102bb6102b6366004612eb5565b610722565b604051901515815260200161029f565b6102d3610768565b60405161029f9190612f2a565b6102d36102ee366004612f3d565b6107f7565b610306610301366004612f56565b61089a565b005b610295610316366004612f3d565b600090815260fb602052604090206001015490565b61033e610339366004612f71565b610968565b604080516001600160a01b03909316835260208301919091520161029f565b61030661036b3660046130df565b6109a5565b61030661037e366004613189565b610a4e565b610306610391366004613189565b610a7b565b6102956101945481565b6103b36103ae366004612f3d565b610b09565b604080516001600160a01b03909316835261ffff90911660208301520161029f565b6103e86103e3366004613222565b610b79565b60405161029f91906132c1565b6102bb610403366004612f56565b6001600160a01b031660009081526065602052604090205460ff1690565b610429610ca3565b60405161029f939291906132d4565b610306610446366004612e75565b610d6c565b61030661045936600461330a565b610e3b565b61030661046c36600461337e565b610e90565b61030661047f3660046133bb565b610ec4565b61048c610ede565b6040516001600160a01b03909116815260200161029f565b61048c6104b2366004612f71565b610f16565b6102bb6104c5366004613189565b610f36565b6103066104d8366004613440565b610f61565b61029561019d5481565b6102d3610f7c565b6103066104fd366004613482565b610f8a565b6040516001815260200161029f565b610295600081565b6103066105273660046134b5565b611069565b61053f61053a3660046134ec565b61107b565b60405161029f9190613561565b61030661055a3660046135c3565b611170565b61030661056d36600461363c565b611222565b61019554610196546001600160a01b03909116906001600160801b03166103b3565b6102956105a2366004612f3d565b61019a6020526000908152604090205481565b6102956105c3366004612f3d565b611412565b6b42617369634552433131353560a01b610295565b6103066105eb366004613189565b61142a565b6102d3611452565b6102bb61060636600461371b565b6001600160a01b0391821660009081526101606020908152604080832093909416825291909152205460ff1690565b61048c610643366004612f3d565b61019b602052600090815260409020546001600160a01b031681565b61030661066d366004613745565b611460565b6103066106803660046137aa565b6114f9565b60006001600160a01b0383166106f65760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b50600081815261015f602090815260408083206001600160a01b03861684529091529020545b92915050565b600061072d8261155d565b8061074857506001600160e01b03198216636cdb3d1360e11b145b8061071c57506001600160e01b0319821663152a902d60e11b1492915050565b6101918054610776906137dd565b80601f01602080910402602001604051908101604052809291908181526020018280546107a2906137dd565b80156107ef5780601f106107c4576101008083540402835291602001916107ef565b820191906000526020600020905b8154815290600101906020018083116107d257829003601f168201915b505050505081565b600081815261019960205260409020805460609190610815906137dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610841906137dd565b801561088e5780601f106108635761010080835404028352916020019161088e565b820191906000526020600020905b81548152906001019060200180831161087157829003601f168201915b50505050509050919050565b60006108ad816108a861159d565b6115a7565b6108b8600083610f36565b6109045760405162461bcd60e51b815260206004820152601b60248201527f6e6577206f776e6572206e6f74206d6f64756c652061646d696e2e000000000060448201526064016106ed565b61019380546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7691015b60405180910390a1505050565b60008060008061097786610b09565b90945084925061ffff169050612710610990828761382e565b61099a919061384d565b925050509250929050565b6109ad61159d565b6001600160a01b0316856001600160a01b031614806109d357506109d38561060661159d565b610a3a5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016106ed565b610a47858585858561160b565b5050505050565b600082815260fb6020526040902060010154610a6c816108a861159d565b610a7683836117c5565b505050565b610a8361159d565b6001600160a01b0316816001600160a01b031614610afb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106ed565b610b0582826117e8565b5050565b600081815261019c60209081526040808320815180830190925280546001600160a01b031680835260019091015492820192909252829115610b515780516020820151610b6f565b61019554610196546001600160a01b03909116906001600160801b03165b9250925050915091565b60608151835114610bde5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016106ed565b6000835167ffffffffffffffff811115610bfa57610bfa612f93565b604051908082528060200260200182016040528015610c23578160200160208202803683370190505b50905060005b8451811015610c9b57610c6e858281518110610c4757610c4761386f565b6020026020010151858381518110610c6157610c6161386f565b6020026020010151610685565b828281518110610c8057610c8061386f565b6020908102919091010152610c9481613885565b9050610c29565b509392505050565b606080600061019161019d54818054610cbb906137dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce7906137dd565b8015610d345780601f10610d0957610100808354040283529160200191610d34565b820191906000526020600020905b815481529060010190602001808311610d1757829003601f168201915b505050505091506040518060400160405280600c81526020016b42617369634552433131353560a01b81525090925092509250909192565b6000610d7a816108a861159d565b612710821115610dc15760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b60448201526064016106ed565b61019580546001600160a01b0319166001600160a01b03851690811790915561019680546fffffffffffffffffffffffffffffffff19166001600160801b03851617905560408051918252602082018490527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb910161095b565b610e4361159d565b6001600160a01b0316836001600160a01b03161480610e695750610e698361060661159d565b610e855760405162461bcd60e51b81526004016106ed906138a0565b610a7683838361180b565b6000610e9e816108a861159d565b6000838152610199602090815260409091208351610ebe92850190612d4c565b50505050565b6000610ed2816108a861159d565b610ebe843085856119a5565b61019354600090610ef99082906001600160a01b0316610f36565b610f035750600090565b610193546001600160a01b03165b905090565b600082815261012d60205260408120610f2f90836119ef565b9392505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610f6f816108a861159d565b610ebe6101978484612dd0565b6101928054610776906137dd565b6000610f98816108a861159d565b612710821115610fdf5760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b60448201526064016106ed565b6040805180820182526001600160a01b03858116808352602080840187815260008a815261019c8352869020945185546001600160a01b031916941693909317845591516001909301929092558251918252810184905285917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a250505050565b610b0561107461159d565b83836119fb565b60608167ffffffffffffffff81111561109657611096612f93565b6040519080825280602002602001820160405280156110c957816020015b60608152602001906001900390816110b45790505b50905060005b8281101561116957611139308585848181106110ed576110ed61386f565b90506020028101906110ff91906138ea565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611add92505050565b82828151811061114b5761114b61386f565b6020026020010181905250808061116190613885565b9150506110cf565b5092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661119d816108a861159d565b60006000198614156111ca575061019480549060019060006111bf8385613931565b9091555061120c9050565b6101945486106112095760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b60448201526064016106ed565b50845b6112198786868487611bd1565b50505050505050565b600054610100900460ff1661123d5760005460ff1615611241565b303b155b6112a45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ed565b600054610100900460ff161580156112c6576000805461ffff19166101011790555b6112ce611cc2565b6112d784611cf3565b6112ef60405180602001604052806000815250611d2e565b8651611303906101919060208a0190612d4c565b50855161131890610192906020890190612d4c565b5061019580546001600160a01b0319166001600160a01b03851617905561019680546fffffffffffffffffffffffffffffffff19166001600160801b038416179055845161136e90610197906020880190612d4c565b504261019d5561019380546001600160a01b0319166001600160a01b038a1617905561139b600089611d5e565b6113c57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a689611d5e565b6113dd600080516020613e6583398151915289611d5e565b6113f6600080516020613e658339815191526000611d5e565b8015611408576000805461ff00191690555b5050505050505050565b600081815261012d6020526040812061071c90611d68565b600082815260fb6020526040902060010154611448816108a861159d565b610a7683836117e8565b6101978054610776906137dd565b61146861159d565b6001600160a01b0316856001600160a01b0316148061148e575061148e8561060661159d565b6114ec5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016106ed565b610a478585858585611d72565b61150161159d565b6001600160a01b0316836001600160a01b0316148061152757506115278361060661159d565b6115435760405162461bcd60e51b81526004016106ed906138a0565b610a76838383611ea6565b6001600160a01b03163b151590565b60006001600160e01b03198216636cdb3d1360e11b148061158e57506001600160e01b031982166303a24d0760e21b145b8061071c575061071c82611fb8565b6000610f11611fdd565b6115b18282610f36565b610b05576115c9816001600160a01b0316601461200a565b6115d483602061200a565b6040516020016115e5929190613949565b60408051601f198184030181529082905262461bcd60e51b82526106ed91600401612f2a565b815183511461162c5760405162461bcd60e51b81526004016106ed906139be565b6001600160a01b0384166116525760405162461bcd60e51b81526004016106ed90613a06565b600061165c61159d565b905061166c8187878787876121a6565b60005b845181101561175757600085828151811061168c5761168c61386f565b6020026020010151905060008583815181106116aa576116aa61386f565b602090810291909101810151600084815261015f835260408082206001600160a01b038e1683529093529190912054909150818110156116fc5760405162461bcd60e51b81526004016106ed90613a4b565b600083815261015f602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061173c908490613931565b925050819055505050508061175090613885565b905061166f565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516117a7929190613a95565b60405180910390a46117bd818787878787612389565b505050505050565b6117cf82826124ee565b600082815261012d60205260409020610a769082612575565b6117f2828261258a565b600082815261012d60205260409020610a76908261260f565b6001600160a01b0383166118315760405162461bcd60e51b81526004016106ed90613aba565b80518251146118525760405162461bcd60e51b81526004016106ed906139be565b600061185c61159d565b905061187c818560008686604051806020016040528060008152506121a6565b60005b835181101561194657600084828151811061189c5761189c61386f565b6020026020010151905060008483815181106118ba576118ba61386f565b602090810291909101810151600084815261015f835260408082206001600160a01b038c16835290935291909120549091508181101561190c5760405162461bcd60e51b81526004016106ed90613afd565b600092835261015f602090815260408085206001600160a01b038b168652909152909220910390558061193e81613885565b91505061187f565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611997929190613a95565b60405180910390a450505050565b806119af57610ebe565b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119e3576119de8282612624565b610ebe565b610ebe848484846126c7565b6000610f2f838361283a565b816001600160a01b0316836001600160a01b03161415611a6f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016106ed565b6001600160a01b0383811660008181526101606020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606001600160a01b0383163b611b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106ed565b600080846001600160a01b031684604051611b609190613b41565b600060405180830381855af49150503d8060008114611b9b576040519150601f19603f3d011682016040523d82523d6000602084013e611ba0565b606091505b5091509150611bc88282604051806060016040528060278152602001613e8560279139612864565b95945050505050565b6000828152610199602052604090208054611beb906137dd565b15159050611c495782611c2d5760405162461bcd60e51b815260206004820152600a60248201526932b6b83a3c903ab9349760b11b60448201526064016106ed565b600082815261019960205260409020611c47908585612dd0565b505b611c648583836040518060200160405280600081525061289d565b81856001600160a01b03167f04133ee4cb027e1c5fce5e3481289278a93bd16a65a3b65b428a6d239e706bfb610199600086815260200190815260200160002084604051611cb3929190613b5d565b60405180910390a35050505050565b600054610100900460ff16611ce95760405162461bcd60e51b81526004016106ed90613c0d565b611cf16129ac565b565b600054610100900460ff16611d1a5760405162461bcd60e51b81526004016106ed90613c0d565b611d226129d9565b611d2b81612a00565b50565b600054610100900460ff16611d555760405162461bcd60e51b81526004016106ed90613c0d565b611d2b81612a8f565b610b0582826117c5565b600061071c825490565b6001600160a01b038416611d985760405162461bcd60e51b81526004016106ed90613a06565b6000611da261159d565b9050611dc2818787611db388612abf565b611dbc88612abf565b876121a6565b600084815261015f602090815260408083206001600160a01b038a16845290915290205483811015611e065760405162461bcd60e51b81526004016106ed90613a4b565b600085815261015f602090815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290611e46908490613931565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611219828888888888612b0a565b6001600160a01b038316611ecc5760405162461bcd60e51b81526004016106ed90613aba565b6000611ed661159d565b9050611f0681856000611ee887612abf565b611ef187612abf565b604051806020016040528060008152506121a6565b600083815261015f602090815260408083206001600160a01b038816845290915290205482811015611f4a5760405162461bcd60e51b81526004016106ed90613afd565b600084815261015f602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b60006001600160e01b03198216635a05180f60e01b148061071c575061071c82612bc5565b3360009081526065602052604081205460ff1615612002575060131936013560601c90565b503390565b90565b6060600061201983600261382e565b612024906002613931565b67ffffffffffffffff81111561203c5761203c612f93565b6040519080825280601f01601f191660200182016040528015612066576020820181803683370190505b509050600360fc1b816000815181106120815761208161386f565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120b0576120b061386f565b60200101906001600160f81b031916908160001a90535060006120d484600261382e565b6120df906001613931565b90505b6001811115612157576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106121135761211361386f565b1a60f81b8282815181106121295761212961386f565b60200101906001600160f81b031916908160001a90535060049490941c9361215081613c58565b90506120e2565b508315610f2f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106ed565b6121bf600080516020613e658339815191526000610f36565b1580156121d457506001600160a01b03851615155b80156121e857506001600160a01b03841615155b1561227b57612205600080516020613e6583398151915286610f36565b806122235750612223600080516020613e6583398151915285610f36565b61227b5760405162461bcd60e51b8152602060048201526024808201527f7265737472696374656420746f205452414e534645525f524f4c4520686f6c6460448201526332b9399760e11b60648201526084016106ed565b6001600160a01b0385166123035760005b8351811015612301578281815181106122a7576122a761386f565b602002602001015161019a60008684815181106122c6576122c661386f565b6020026020010151815260200190815260200160002060008282546122eb9190613931565b909155506122fa905081613885565b905061228c565b505b6001600160a01b0384166117bd5760005b83518110156112195782818151811061232f5761232f61386f565b602002602001015161019a600086848151811061234e5761234e61386f565b6020026020010151815260200190815260200160002060008282546123739190613c6f565b90915550612382905081613885565b9050612314565b6001600160a01b0384163b156117bd5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906123cd9089908990889088908890600401613c86565b6020604051808303816000875af1925050508015612408575060408051601f3d908101601f1916820190925261240591810190613ce4565b60015b6124be57612414613d01565b806308c379a0141561244e5750612429613d1c565b806124345750612450565b8060405162461bcd60e51b81526004016106ed9190612f2a565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016106ed565b6001600160e01b0319811663bc197c8160e01b146112195760405162461bcd60e51b81526004016106ed90613da6565b6124f88282610f36565b610b0557600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561253161159d565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610f2f836001600160a01b038416612bfa565b6125948282610f36565b15610b0557600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191690556125cb61159d565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610f2f836001600160a01b038416612c49565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612671576040519150601f19603f3d011682016040523d82523d6000602084013e612676565b606091505b5050905080610a765760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c65640000000060448201526064016106ed565b816001600160a01b0316836001600160a01b031614156126e657610ebe565b60006001600160a01b0384163014612778576040516323b872dd60e01b81526001600160a01b0385811660048301528481166024830152604482018490528616906323b872dd906064016020604051808303816000875af115801561274f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127739190613dee565b6127eb565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905286169063a9059cbb906044016020604051808303816000875af11580156127c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127eb9190613dee565b905080610a475760405162461bcd60e51b815260206004820152601960248201527f63757272656e6379207472616e73666572206661696c65642e0000000000000060448201526064016106ed565b60008260000182815481106128515761285161386f565b9060005260206000200154905092915050565b60608315612873575081610f2f565b8251156128835782518084602001fd5b8160405162461bcd60e51b81526004016106ed9190612f2a565b6001600160a01b0384166128fd5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106ed565b600061290761159d565b905061291981600087611db388612abf565b600084815261015f602090815260408083206001600160a01b03891684529091528120805485929061294c908490613931565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a4781600087878787612b0a565b600054610100900460ff166129d35760405162461bcd60e51b81526004016106ed90613c0d565b60018055565b600054610100900460ff16611cf15760405162461bcd60e51b81526004016106ed90613c0d565b600054610100900460ff16612a275760405162461bcd60e51b81526004016106ed90613c0d565b60005b8151811015610b0557600160656000848481518110612a4b57612a4b61386f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580612a8781613885565b915050612a2a565b600054610100900460ff16612ab65760405162461bcd60e51b81526004016106ed90613c0d565b611d2b81612d3c565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612af957612af961386f565b602090810291909101015292915050565b6001600160a01b0384163b156117bd5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612b4e9089908990889088908890600401613e0b565b6020604051808303816000875af1925050508015612b89575060408051601f3d908101601f19168201909252612b8691810190613ce4565b60015b612b9557612414613d01565b6001600160e01b0319811663f23a6e6160e01b146112195760405162461bcd60e51b81526004016106ed90613da6565b60006001600160e01b03198216637965db0b60e01b148061071c57506301ffc9a760e01b6001600160e01b031983161461071c565b6000818152600183016020526040812054612c415750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561071c565b50600061071c565b60008181526001830160205260408120548015612d32576000612c6d600183613c6f565b8554909150600090612c8190600190613c6f565b9050818114612ce6576000866000018281548110612ca157612ca161386f565b9060005260206000200154905080876000018481548110612cc457612cc461386f565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612cf757612cf7613e4e565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061071c565b600091505061071c565b8051610b05906101619060208401905b828054612d58906137dd565b90600052602060002090601f016020900481019282612d7a5760008555612dc0565b82601f10612d9357805160ff1916838001178555612dc0565b82800160010185558215612dc0579182015b82811115612dc0578251825591602001919060010190612da5565b50612dcc929150612e44565b5090565b828054612ddc906137dd565b90600052602060002090601f016020900481019282612dfe5760008555612dc0565b82601f10612e175782800160ff19823516178555612dc0565b82800160010185558215612dc0579182015b82811115612dc0578235825591602001919060010190612e29565b5b80821115612dcc5760008155600101612e45565b80356001600160a01b0381168114612e7057600080fd5b919050565b60008060408385031215612e8857600080fd5b612e9183612e59565b946020939093013593505050565b6001600160e01b031981168114611d2b57600080fd5b600060208284031215612ec757600080fd5b8135610f2f81612e9f565b60005b83811015612eed578181015183820152602001612ed5565b83811115610ebe5750506000910152565b60008151808452612f16816020860160208601612ed2565b601f01601f19169290920160200192915050565b602081526000610f2f6020830184612efe565b600060208284031215612f4f57600080fd5b5035919050565b600060208284031215612f6857600080fd5b610f2f82612e59565b60008060408385031215612f8457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715612fcf57612fcf612f93565b6040525050565b600067ffffffffffffffff821115612ff057612ff0612f93565b5060051b60200190565b600082601f83011261300b57600080fd5b8135602061301882612fd6565b6040516130258282612fa9565b83815260059390931b850182019282810191508684111561304557600080fd5b8286015b848110156130605780358352918301918301613049565b509695505050505050565b600082601f83011261307c57600080fd5b813567ffffffffffffffff81111561309657613096612f93565b6040516130ad601f8301601f191660200182612fa9565b8181528460208386010111156130c257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156130f757600080fd5b61310086612e59565b945061310e60208701612e59565b9350604086013567ffffffffffffffff8082111561312b57600080fd5b61313789838a01612ffa565b9450606088013591508082111561314d57600080fd5b61315989838a01612ffa565b9350608088013591508082111561316f57600080fd5b5061317c8882890161306b565b9150509295509295909350565b6000806040838503121561319c57600080fd5b823591506131ac60208401612e59565b90509250929050565b600082601f8301126131c657600080fd5b813560206131d382612fd6565b6040516131e08282612fa9565b83815260059390931b850182019282810191508684111561320057600080fd5b8286015b848110156130605761321581612e59565b8352918301918301613204565b6000806040838503121561323557600080fd5b823567ffffffffffffffff8082111561324d57600080fd5b613259868387016131b5565b9350602085013591508082111561326f57600080fd5b5061327c85828601612ffa565b9150509250929050565b600081518084526020808501945080840160005b838110156132b65781518752958201959082019060010161329a565b509495945050505050565b602081526000610f2f6020830184613286565b6060815260006132e76060830186612efe565b82810360208401526132f98186612efe565b915050826040830152949350505050565b60008060006060848603121561331f57600080fd5b61332884612e59565b9250602084013567ffffffffffffffff8082111561334557600080fd5b61335187838801612ffa565b9350604086013591508082111561336757600080fd5b5061337486828701612ffa565b9150509250925092565b6000806040838503121561339157600080fd5b82359150602083013567ffffffffffffffff8111156133af57600080fd5b61327c8582860161306b565b6000806000606084860312156133d057600080fd5b6133d984612e59565b92506133e760208501612e59565b9150604084013590509250925092565b60008083601f84011261340957600080fd5b50813567ffffffffffffffff81111561342157600080fd5b60208301915083602082850101111561343957600080fd5b9250929050565b6000806020838503121561345357600080fd5b823567ffffffffffffffff81111561346a57600080fd5b613476858286016133f7565b90969095509350505050565b60008060006060848603121561349757600080fd5b833592506133e760208501612e59565b8015158114611d2b57600080fd5b600080604083850312156134c857600080fd5b6134d183612e59565b915060208301356134e1816134a7565b809150509250929050565b600080602083850312156134ff57600080fd5b823567ffffffffffffffff8082111561351757600080fd5b818501915085601f83011261352b57600080fd5b81358181111561353a57600080fd5b8660208260051b850101111561354f57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156135b657603f198886030184526135a4858351612efe565b94509285019290850190600101613588565b5092979650505050505050565b6000806000806000608086880312156135db57600080fd5b6135e486612e59565b945060208601359350604086013567ffffffffffffffff81111561360757600080fd5b613613888289016133f7565b96999598509660600135949350505050565b80356001600160801b0381168114612e7057600080fd5b600080600080600080600060e0888a03121561365757600080fd5b61366088612e59565b9650602088013567ffffffffffffffff8082111561367d57600080fd5b6136898b838c0161306b565b975060408a013591508082111561369f57600080fd5b6136ab8b838c0161306b565b965060608a01359150808211156136c157600080fd5b6136cd8b838c0161306b565b955060808a01359150808211156136e357600080fd5b506136f08a828b016131b5565b9350506136ff60a08901612e59565b915061370d60c08901613625565b905092959891949750929550565b6000806040838503121561372e57600080fd5b61373783612e59565b91506131ac60208401612e59565b600080600080600060a0868803121561375d57600080fd5b61376686612e59565b945061377460208701612e59565b93506040860135925060608601359150608086013567ffffffffffffffff81111561379e57600080fd5b61317c8882890161306b565b6000806000606084860312156137bf57600080fd5b6137c884612e59565b95602085013595506040909401359392505050565b600181811c908216806137f157607f821691505b6020821081141561381257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561384857613848613818565b500290565b60008261386a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141561389957613899613818565b5060010190565b6020808252602a908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f726040820152691030b8383937bb32b21760b11b606082015260800190565b6000808335601e1984360301811261390157600080fd5b83018035915067ffffffffffffffff82111561391c57600080fd5b60200191503681900382131561343957600080fd5b6000821982111561394457613944613818565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613981816017850160208801612ed2565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516139b2816028840160208801612ed2565b01602801949350505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000613aa86040830185613286565b8281036020840152611bc88185613286565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b60008251613b53818460208701612ed2565b9190910192915050565b60408152600080845481600182811c915080831680613b7d57607f831692505b6020808410821415613b9d57634e487b7160e01b86526022600452602486fd5b6040880184905260608801828015613bbc5760018114613bcd57613bf8565b60ff19871682528282019750613bf8565b60008c81526020902060005b87811015613bf257815484820152908601908401613bd9565b83019850505b50509690960196909652509095945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600081613c6757613c67613818565b506000190190565b600082821015613c8157613c81613818565b500390565b60006001600160a01b03808816835280871660208401525060a06040830152613cb260a0830186613286565b8281036060840152613cc48186613286565b90508281036080840152613cd88185612efe565b98975050505050505050565b600060208284031215613cf657600080fd5b8151610f2f81612e9f565b600060033d11156120075760046000803e5060005160e01c90565b600060443d1015613d2a5790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715613d5a57505050505090565b8285019150815181811115613d725750505050505090565b843d8701016020828501011115613d8c5750505050505090565b613d9b60208286010187612fa9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b600060208284031215613e0057600080fd5b8151610f2f816134a7565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152613e4360a0830184612efe565b979650505050505050565b634e487b7160e01b600052603160045260246000fdfe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122028659dccd3bab47b7b908257f1d0e0e22b732c063e39b6793e373dedc72ac4c164736f6c634300080b0033