Overview ERC721
Total Supply:
390 XTB

Holders:
170
Profile Summary
Blockchain:
XANA-CHAIN (8888)

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

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No

Created At:
Wed, 13 Nov 2024 12:48:17 GMT
CollectionProxy.sol
CollectionProxy.sol
CollectionProxy.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "implementation",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "ApprovalCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ApprovalQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ApprovalToCurrentOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ApproveToCaller",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BalanceQueryForZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidQueryRange",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OwnerQueryForNonexistentToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferCallerNotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferFromIncorrectOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToNonERC721ReceiverImplementer",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToZeroAddress",
    "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": false,
        "internalType": "string",
        "name": "message",
        "type": "string"
      }
    ],
    "name": "CommitMessage",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes4",
        "name": "functionId",
        "type": "bytes4"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldDelegate",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newDelegate",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "functionSignature",
        "type": "string"
      }
    ],
    "name": "FunctionUpdate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "collection",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "tokenURI",
        "type": "string"
      }
    ],
    "name": "MintWithTokenURI",
    "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": "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"
  },
  {
    "stateMutability": "payable",
    "type": "fallback"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "bytes4",
        "name": "",
        "type": "bytes4"
      }
    ],
    "name": "delegates",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "explicitOwnershipOf",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "addr",
            "type": "address"
          },
          {
            "internalType": "uint64",
            "name": "startTimestamp",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "burned",
            "type": "bool"
          }
        ],
        "internalType": "struct ERC721A.TokenOwnership",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "tokenIds",
        "type": "uint256[]"
      }
    ],
    "name": "explicitOwnershipsOf",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "addr",
            "type": "address"
          },
          {
            "internalType": "uint64",
            "name": "startTimestamp",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "burned",
            "type": "bool"
          }
        ],
        "internalType": "struct ERC721A.TokenOwnership[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "funcSignatures",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "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": [],
    "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": "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": "nonpayable",
    "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": "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": "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": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "tokensOfOwner",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "start",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "stop",
        "type": "uint256"
      }
    ],
    "name": "tokensOfOwnerIn",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "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": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_delegate",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "_functionSignatures",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_commitMessage",
        "type": "string"
      }
    ],
    "name": "updateContract",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b50604051620056e9380380620056e9833981810160405281019062000037919062000946565b818181600690816200004a919062000c2b565b5080600790816200005c919062000c2b565b506200006d620004ee60201b60201c565b60048190555050506200009562000089620004f760201b60201c565b620004ff60201b60201c565b30600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060600160405280603e81526020016200563a603e9139600d908162000158919062000c2b565b506127106012819055506000604051806060016040528060258152602001620056c4602591399050620001b481600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620005c560201b60201c565b60006040518060400160405280601281526020017f7365744261736555524928737472696e672900000000000000000000000000008152509050620002008186620005c560201b60201c565b6040518060400160405280601681526020017f636c61696d5265776172642875696e743235365b5d290000000000000000000081525090506200024a8186620005c560201b60201c565b6040518060600160405280602581526020016200569f602591399050620002788186620005c560201b60201c565b6040518060400160405280601281526020017f736574417574686f7228616464726573732900000000000000000000000000008152509050620002c28186620005c560201b60201c565b6040518060400160405280601681526020017f7365744d696e476173436f73742875696e74323536290000000000000000000081525090506200030c8186620005c560201b60201c565b6040518060400160405280601581526020017f6d696e7428616464726573732c75696e743235362900000000000000000000008152509050620003568186620005c560201b60201c565b6040518060400160405280601881526020017f616464416c6c6f774164647265737328616464726573732900000000000000008152509050620003a08186620005c560201b60201c565b6040518060400160405280601a81526020017f7365744d696e476173436f7374586574612875696e74323536290000000000008152509050620003ea8186620005c560201b60201c565b60405180606001604052806027815260200162005678602791399050620004188186620005c560201b60201c565b6040518060400160405280601a81526020017f636c61696d526577617264586574612875696e743235365b5d290000000000008152509050620004628186620005c560201b60201c565b6040518060400160405280601f81526020017f636c61696d52657761726458656e79546f6b656e2875696e743235365b5d29008152509050620004ac8186620005c560201b60201c565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de604051620004db9062000d99565b60405180910390a1505050505062000fd2565b60006001905090565b600033905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008280519060200120905081600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018390806001815401808255809150506001900390600052602060002001600090919091909150908162000696919062000e2b565b50600180549050600284604051620006af919062000f54565b9081526020016040518091039020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538660405162000741919062000fae565b60405180910390a4505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200078f8262000762565b9050919050565b620007a18162000782565b8114620007ad57600080fd5b50565b600081519050620007c18162000796565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200081c82620007d1565b810181811067ffffffffffffffff821117156200083e576200083d620007e2565b5b80604052505050565b6000620008536200074e565b905062000861828262000811565b919050565b600067ffffffffffffffff821115620008845762000883620007e2565b5b6200088f82620007d1565b9050602081019050919050565b60005b83811015620008bc5780820151818401526020810190506200089f565b60008484015250505050565b6000620008df620008d98462000866565b62000847565b905082815260208101848484011115620008fe57620008fd620007cc565b5b6200090b8482856200089c565b509392505050565b600082601f8301126200092b576200092a620007c7565b5b81516200093d848260208601620008c8565b91505092915050565b60008060006060848603121562000962576200096162000758565b5b60006200097286828701620007b0565b935050602084015167ffffffffffffffff8111156200099657620009956200075d565b5b620009a48682870162000913565b925050604084015167ffffffffffffffff811115620009c857620009c76200075d565b5b620009d68682870162000913565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a3357607f821691505b60208210810362000a495762000a48620009eb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ab37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a74565b62000abf868362000a74565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b0c62000b0662000b008462000ad7565b62000ae1565b62000ad7565b9050919050565b6000819050919050565b62000b288362000aeb565b62000b4062000b378262000b13565b84845462000a81565b825550505050565b600090565b62000b5762000b48565b62000b6481848462000b1d565b505050565b5b8181101562000b8c5762000b8060008262000b4d565b60018101905062000b6a565b5050565b601f82111562000bdb5762000ba58162000a4f565b62000bb08462000a64565b8101602085101562000bc0578190505b62000bd862000bcf8562000a64565b83018262000b69565b50505b505050565b600082821c905092915050565b600062000c006000198460080262000be0565b1980831691505092915050565b600062000c1b838362000bed565b9150826002028217905092915050565b62000c3682620009e0565b67ffffffffffffffff81111562000c525762000c51620007e2565b5b62000c5e825462000a1a565b62000c6b82828562000b90565b600060209050601f83116001811462000ca3576000841562000c8e578287015190505b62000c9a858262000c0d565b86555062000d0a565b601f19841662000cb38662000a4f565b60005b8281101562000cdd5784890151825560018201915060208501945060208101905062000cb6565b8683101562000cfd578489015162000cf9601f89168262000bed565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4164646564204552433135333820757064617465436f6e74726163742066756e60008201527f6374696f6e20617420636f6e7472616374206372656174696f6e000000000000602082015250565b600062000d81603a8362000d12565b915062000d8e8262000d23565b604082019050919050565b6000602082019050818103600083015262000db48162000d72565b9050919050565b600081519050919050565b60008190508160005260206000209050919050565b601f82111562000e265762000df08162000dc6565b62000dfb8462000a64565b8101602085101562000e0b578190505b62000e2362000e1a8562000a64565b83018262000b69565b50505b505050565b62000e368262000dbb565b67ffffffffffffffff81111562000e525762000e51620007e2565b5b62000e5e825462000a1a565b62000e6b82828562000ddb565b600060209050601f83116001811462000ea3576000841562000e8e578287015190505b62000e9a858262000c0d565b86555062000f0a565b601f19841662000eb38662000dc6565b60005b8281101562000edd5784890151825560018201915060208501945060208101905062000eb6565b8683101562000efd578489015162000ef9601f89168262000bed565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b600062000f2a8262000dbb565b62000f36818562000f12565b935062000f488185602086016200089c565b80840191505092915050565b600062000f62828462000f1d565b915081905092915050565b600062000f7a82620009e0565b62000f86818562000d12565b935062000f988185602086016200089c565b62000fa381620007d1565b840191505092915050565b6000602082019050818103600083015262000fca818462000f6d565b905092915050565b6146588062000fe26000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d1578063a0a2daf01161008a578063c23dc68f11610064578063c23dc68f1461071e578063c87b56dd1461075b578063e985e9c514610798578063f2fde38b146107d55761016b565b8063a0a2daf01461068f578063a22cb465146106cc578063b88d4fde146106f55761016b565b806370a082311461056b578063715018a6146105a85780638462151c146105bf5780638da5cb5b146105fc57806395d89b411461062757806399a2557a146106525761016b565b806326a6860a1161012357806326a6860a1461043757806342842e0e146104745780635bbb21771461049d57806361455567146104da5780636352211e146105035780636c0360eb146105405761016b565b806301ffc9a71461031557806306fdde0314610352578063081812fc1461037d578063095ea7b3146103ba57806318160ddd146103e357806323b872dd1461040e5761016b565b5b600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480156101e1575060003414155b61031357600080600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39061305b565b60405180910390fd5b60405136600082376000803683855af43d806000843e816000811461030f578184f35b8184fd5b005b34801561032157600080fd5b5061033c600480360381019061033791906130e7565b6107fe565b604051610349919061312f565b60405180910390f35b34801561035e57600080fd5b506103676108e0565b60405161037491906131c9565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190613221565b610972565b6040516103b1919061328f565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc91906132d6565b6109ee565b005b3480156103ef57600080fd5b506103f8610af8565b6040516104059190613325565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190613340565b610b0f565b005b34801561044357600080fd5b5061045e60048036038101906104599190613221565b610b1f565b60405161046b91906133e8565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190613340565b610bcb565b005b3480156104a957600080fd5b506104c460048036038101906104bf9190613552565b610beb565b6040516104d191906136cd565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc919061374a565b610cac565b005b34801561050f57600080fd5b5061052a60048036038101906105259190613221565b61158f565b604051610537919061328f565b60405180910390f35b34801561054c57600080fd5b506105556115a5565b60405161056291906131c9565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d91906137df565b611633565b60405161059f9190613325565b60405180910390f35b3480156105b457600080fd5b506105bd611702565b005b3480156105cb57600080fd5b506105e660048036038101906105e191906137df565b61178a565b6040516105f391906138ca565b60405180910390f35b34801561060857600080fd5b50610611611985565b60405161061e919061328f565b60405180910390f35b34801561063357600080fd5b5061063c6119af565b60405161064991906131c9565b60405180910390f35b34801561065e57600080fd5b50610679600480360381019061067491906138ec565b611a41565b60405161068691906138ca565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b191906130e7565b611d04565b6040516106c3919061328f565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee919061396b565b611d37565b005b34801561070157600080fd5b5061071c60048036038101906107179190613a60565b611eae565b005b34801561072a57600080fd5b5061074560048036038101906107409190613221565b611f2a565b6040516107529190613b25565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190613221565b612047565b60405161078f91906131c9565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613b40565b6120ee565b6040516107cc919061312f565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906137df565b612182565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108d957506108d882612279565b5b9050919050565b6060600680546108ef90613baf565b80601f016020809104026020016040519081016040528092919081815260200182805461091b90613baf565b80156109685780601f1061093d57610100808354040283529160200191610968565b820191906000526020600020905b81548152906001019060200180831161094b57829003601f168201915b5050505050905090565b600061097d826122e3565b6109b3576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109f98261158f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a60576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a7f612331565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ab15750610aaf81610aaa612331565b6120ee565b155b15610ae8576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610af3838383612339565b505050565b6000610b026123eb565b6005546004540303905090565b610b1a8383836123f4565b505050565b60018181548110610b2f57600080fd5b906000526020600020016000915090508054610b4a90613baf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7690613baf565b8015610bc35780601f10610b9857610100808354040283529160200191610bc3565b820191906000526020600020905b815481529060010190602001808311610ba657829003601f168201915b505050505081565b610be683838360405180602001604052806000815250611eae565b505050565b606060008251905060008167ffffffffffffffff811115610c0f57610c0e61340f565b5b604051908082528060200260200182016040528015610c4857816020015b610c35612f5e565b815260200190600190039081610c2d5790505b50905060005b828114610ca157610c78858281518110610c6b57610c6a613be0565b5b6020026020010151611f2a565b828281518110610c8b57610c8a613be0565b5b6020026020010181905250806001019050610c4e565b508092505050919050565b610cb4612331565b73ffffffffffffffffffffffffffffffffffffffff16610cd2611985565b73ffffffffffffffffffffffffffffffffffffffff1614610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613c5b565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610da557853b905060008111610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90613ced565b60405180910390fd5b5b600085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000806020830193508390508251840191506000806000806000805b878a101561154557895160001a925060298303611532578980610e2c90613d3c565b9a5050868a610e3b9190613d84565b935089965083895288805190602001209550600080877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450600073ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff160361116657600289604051610f049190613df4565b908152602001604051809103902054915060008203610f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4f9061305b565b60405180910390fd5b8180610f6390613e0b565b92505060018080549050610f779190613d84565b90508082146110165760018181548110610f9457610f93613be0565b5b9060005260206000200160018381548110610fb257610fb1613be0565b5b906000526020600020019081610fc8919061400b565b50600182610fd691906140f3565b600260018381548110610fec57610feb613be0565b5b9060005260206000200160405161100391906141aa565b9081526020016040518091039020819055505b6001805480611028576110276141c1565b5b6001900381819060005260206000200160006110449190612fa1565b90556002896040516110569190613df4565b908152602001604051809103902060009055600080877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c60405161115991906131c9565b60405180910390a461152c565b600060028a6040516111789190613df4565b9081526020016040518091039020540361137257600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f29061423c565b60405180910390fd5b8e600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001899080600181540180825580915050600190039060005260206000200160009091909190915090816112be919061425c565b5060018054905060028a6040516112d59190613df4565b9081526020016040518091039020819055508e73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c60405161136591906131c9565b60405180910390a461152b565b8e73ffffffffffffffffffffffffffffffffffffffff16600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152a578e600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c60405161152191906131c9565b60405180910390a45b5b5b83890198505b898061153d90613d3c565b9a5050610e0a565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c60405161157692919061435b565b60405180910390a1505050505050505050505050505050565b600061159a826128a8565b600001519050919050565b600d80546115b290613baf565b80601f01602080910402602001604051908101604052809291908181526020018280546115de90613baf565b801561162b5780601f106116005761010080835404028352916020019161162b565b820191906000526020600020905b81548152906001019060200180831161160e57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169a576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b61170a612331565b73ffffffffffffffffffffffffffffffffffffffff16611728611985565b73ffffffffffffffffffffffffffffffffffffffff161461177e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177590613c5b565b60405180910390fd5b6117886000612b37565b565b6060600080600061179a85611633565b905060008167ffffffffffffffff8111156117b8576117b761340f565b5b6040519080825280602002602001820160405280156117e65781602001602082028036833780820191505090505b5090506117f1612f5e565b60006117fb6123eb565b90505b83861161197757600860008281526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509150816040015161196c57600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161461191157816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361196b578083878060010198508151811061195e5761195d613be0565b5b6020026020010181815250505b5b8060010190506117fe565b508195505050505050919050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546119be90613baf565b80601f01602080910402602001604051908101604052809291908181526020018280546119ea90613baf565b8015611a375780601f10611a0c57610100808354040283529160200191611a37565b820191906000526020600020905b815481529060010190602001808311611a1a57829003601f168201915b5050505050905090565b606081831115611a7d576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806001600454019050611a906123eb565b851015611aa257611a9f6123eb565b94505b80841115611aae578093505b6000611ab987611633565b905084861015611adc576000868603905081811015611ad6578091505b50611ae1565b600090505b60008167ffffffffffffffff811115611afd57611afc61340f565b5b604051908082528060200260200182016040528015611b2b5781602001602082028036833780820191505090505b50905060008203611b425780945050505050611cfd565b6000611b4d88611f2a565b905060008160400151611b6257816000015190505b60008990505b888114158015611b785750848714155b15611cef57600860008281526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505092508260400151611ce457600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614611c8957826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ce35780848880600101995081518110611cd657611cd5613be0565b5b6020026020010181815250505b5b806001019050611b68565b508583528296505050505050505b9392505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d3f612331565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611da3576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b6000611db0612331565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e5d612331565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ea2919061312f565b60405180910390a35050565b611eb98484846123f4565b611ed88373ffffffffffffffffffffffffffffffffffffffff16612bfd565b8015611eed5750611eeb84848484612c10565b155b15611f24576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611f32612f5e565b611f3a612f5e565b611f426123eb565b831080611f5157506004548310155b15611f5f5780915050612042565b600860008481526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151156120355780915050612042565b61203e836128a8565b9150505b919050565b6060612052826122e3565b612091576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612088906143f1565b60405180910390fd5b600061209b612d60565b905060008151116120bb57604051806020016040528060008152506120e6565b806120c584612df2565b6040516020016120d692919061444d565b6040516020818303038152906040525b915050919050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61218a612331565b73ffffffffffffffffffffffffffffffffffffffff166121a8611985565b73ffffffffffffffffffffffffffffffffffffffff16146121fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f590613c5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612264906144e3565b60405180910390fd5b61227681612b37565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000816122ee6123eb565b111580156122fd575060045482105b801561232a575060086000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b82600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b60006123ff826128a8565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461246a576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661248b612331565b73ffffffffffffffffffffffffffffffffffffffff1614806124ba57506124b9856124b4612331565b6120ee565b5b806124ff57506124c8612331565b73ffffffffffffffffffffffffffffffffffffffff166124e784610972565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612538576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361259e576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125ab8585856001612f52565b6125b760008487612339565b6001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600860008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600860008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361283657600454821461283557878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128a18585856001612f58565b5050505050565b6128b0612f5e565b6000829050806128be6123eb565b111580156128cd575060045481105b15612b00576000600860008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151612afe57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146129e2578092505050612b32565b5b600115612afd57818060019003925050600860008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612af8578092505050612b32565b6129e3565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080823b905060008111915050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612c36612331565b8786866040518563ffffffff1660e01b8152600401612c589493929190614503565b6020604051808303816000875af1925050508015612c9457506040513d601f19601f82011682018060405250810190612c919190614564565b60015b612d0d573d8060008114612cc4576040519150601f19603f3d011682016040523d82523d6000602084013e612cc9565b606091505b506000815103612d05576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600d8054612d6f90613baf565b80601f0160208091040260200160405190810160405280929190818152602001828054612d9b90613baf565b8015612de85780601f10612dbd57610100808354040283529160200191612de8565b820191906000526020600020905b815481529060010190602001808311612dcb57829003601f168201915b5050505050905090565b606060008203612e39576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f4d565b600082905060005b60008214612e6b578080612e5490613d3c565b915050600a82612e6491906145c0565b9150612e41565b60008167ffffffffffffffff811115612e8757612e8661340f565b5b6040519080825280601f01601f191660200182016040528015612eb95781602001600182028036833780820191505090505b5090505b60008514612f4657600182612ed29190613d84565b9150600a85612ee191906145f1565b6030612eed91906140f3565b60f81b818381518110612f0357612f02613be0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612f3f91906145c0565b9450612ebd565b8093505050505b919050565b50505050565b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b508054612fad90613baf565b6000825580601f10612fbf5750612fde565b601f016020900490600052602060002090810190612fdd9190612fe1565b5b50565b5b80821115612ffa576000816000905550600101612fe2565b5090565b600082825260208201905092915050565b7f46756e6374696f6e20646f6573206e6f742065786973742e0000000000000000600082015250565b6000613045601883612ffe565b91506130508261300f565b602082019050919050565b6000602082019050818103600083015261307481613038565b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130c48161308f565b81146130cf57600080fd5b50565b6000813590506130e1816130bb565b92915050565b6000602082840312156130fd576130fc613085565b5b600061310b848285016130d2565b91505092915050565b60008115159050919050565b61312981613114565b82525050565b60006020820190506131446000830184613120565b92915050565b600081519050919050565b60005b83811015613173578082015181840152602081019050613158565b60008484015250505050565b6000601f19601f8301169050919050565b600061319b8261314a565b6131a58185612ffe565b93506131b5818560208601613155565b6131be8161317f565b840191505092915050565b600060208201905081810360008301526131e38184613190565b905092915050565b6000819050919050565b6131fe816131eb565b811461320957600080fd5b50565b60008135905061321b816131f5565b92915050565b60006020828403121561323757613236613085565b5b60006132458482850161320c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132798261324e565b9050919050565b6132898161326e565b82525050565b60006020820190506132a46000830184613280565b92915050565b6132b38161326e565b81146132be57600080fd5b50565b6000813590506132d0816132aa565b92915050565b600080604083850312156132ed576132ec613085565b5b60006132fb858286016132c1565b925050602061330c8582860161320c565b9150509250929050565b61331f816131eb565b82525050565b600060208201905061333a6000830184613316565b92915050565b60008060006060848603121561335957613358613085565b5b6000613367868287016132c1565b9350506020613378868287016132c1565b92505060406133898682870161320c565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60006133ba82613393565b6133c4818561339e565b93506133d4818560208601613155565b6133dd8161317f565b840191505092915050565b6000602082019050818103600083015261340281846133af565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6134478261317f565b810181811067ffffffffffffffff821117156134665761346561340f565b5b80604052505050565b600061347961307b565b9050613485828261343e565b919050565b600067ffffffffffffffff8211156134a5576134a461340f565b5b602082029050602081019050919050565b600080fd5b60006134ce6134c98461348a565b61346f565b905080838252602082019050602084028301858111156134f1576134f06134b6565b5b835b8181101561351a5780613506888261320c565b8452602084019350506020810190506134f3565b5050509392505050565b600082601f8301126135395761353861340a565b5b81356135498482602086016134bb565b91505092915050565b60006020828403121561356857613567613085565b5b600082013567ffffffffffffffff8111156135865761358561308a565b5b61359284828501613524565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135d08161326e565b82525050565b600067ffffffffffffffff82169050919050565b6135f3816135d6565b82525050565b61360281613114565b82525050565b60608201600082015161361e60008501826135c7565b50602082015161363160208501826135ea565b50604082015161364460408501826135f9565b50505050565b60006136568383613608565b60608301905092915050565b6000602082019050919050565b600061367a8261359b565b61368481856135a6565b935061368f836135b7565b8060005b838110156136c05781516136a7888261364a565b97506136b283613662565b925050600181019050613693565b5085935050505092915050565b600060208201905081810360008301526136e7818461366f565b905092915050565b600080fd5b60008083601f84011261370a5761370961340a565b5b8235905067ffffffffffffffff811115613727576137266136ef565b5b602083019150836001820283011115613743576137426134b6565b5b9250929050565b60008060008060006060868803121561376657613765613085565b5b6000613774888289016132c1565b955050602086013567ffffffffffffffff8111156137955761379461308a565b5b6137a1888289016136f4565b9450945050604086013567ffffffffffffffff8111156137c4576137c361308a565b5b6137d0888289016136f4565b92509250509295509295909350565b6000602082840312156137f5576137f4613085565b5b6000613803848285016132c1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613841816131eb565b82525050565b60006138538383613838565b60208301905092915050565b6000602082019050919050565b60006138778261380c565b6138818185613817565b935061388c83613828565b8060005b838110156138bd5781516138a48882613847565b97506138af8361385f565b925050600181019050613890565b5085935050505092915050565b600060208201905081810360008301526138e4818461386c565b905092915050565b60008060006060848603121561390557613904613085565b5b6000613913868287016132c1565b93505060206139248682870161320c565b92505060406139358682870161320c565b9150509250925092565b61394881613114565b811461395357600080fd5b50565b6000813590506139658161393f565b92915050565b6000806040838503121561398257613981613085565b5b6000613990858286016132c1565b92505060206139a185828601613956565b9150509250929050565b600080fd5b600067ffffffffffffffff8211156139cb576139ca61340f565b5b6139d48261317f565b9050602081019050919050565b82818337600083830152505050565b6000613a036139fe846139b0565b61346f565b905082815260208101848484011115613a1f57613a1e6139ab565b5b613a2a8482856139e1565b509392505050565b600082601f830112613a4757613a4661340a565b5b8135613a578482602086016139f0565b91505092915050565b60008060008060808587031215613a7a57613a79613085565b5b6000613a88878288016132c1565b9450506020613a99878288016132c1565b9350506040613aaa8782880161320c565b925050606085013567ffffffffffffffff811115613acb57613aca61308a565b5b613ad787828801613a32565b91505092959194509250565b606082016000820151613af960008501826135c7565b506020820151613b0c60208501826135ea565b506040820151613b1f60408501826135f9565b50505050565b6000606082019050613b3a6000830184613ae3565b92915050565b60008060408385031215613b5757613b56613085565b5b6000613b65858286016132c1565b9250506020613b76858286016132c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613bc757607f821691505b602082108103613bda57613bd9613b80565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c45602083612ffe565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260008201527f61637420616e64206973206e6f74206164647265737328302900000000000000602082015250565b6000613cd7603983612ffe565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d47826131eb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d7957613d78613d0d565b5b600182019050919050565b6000613d8f826131eb565b9150613d9a836131eb565b9250828203905081811115613db257613db1613d0d565b5b92915050565b600081905092915050565b6000613dce82613393565b613dd88185613db8565b9350613de8818560208601613155565b80840191505092915050565b6000613e008284613dc3565b915081905092915050565b6000613e16826131eb565b915060008203613e2957613e28613d0d565b5b600182039050919050565b600081549050613e4381613baf565b9050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ec17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613e84565b613ecb8683613e84565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f08613f03613efe846131eb565b613ee3565b6131eb565b9050919050565b6000819050919050565b613f2283613eed565b613f36613f2e82613f0f565b848454613e91565b825550505050565b600090565b613f4b613f3e565b613f56818484613f19565b505050565b5b81811015613f7a57613f6f600082613f43565b600181019050613f5c565b5050565b601f821115613fbf57613f9081613e4a565b613f9984613e74565b81016020851015613fa8578190505b613fbc613fb485613e74565b830182613f5b565b50505b505050565b600082821c905092915050565b6000613fe260001984600802613fc4565b1980831691505092915050565b6000613ffb8383613fd1565b9150826002028217905092915050565b8181036140195750506140f1565b61402282613e34565b67ffffffffffffffff81111561403b5761403a61340f565b5b6140458254613baf565b614050828285613f7e565b6000601f83116001811461407f576000841561406d578287015490505b6140778582613fef565b8655506140ea565b601f19841661408d87613e5f565b965061409886613e4a565b60005b828110156140c05784890154825560018201915060018501945060208101905061409b565b868310156140dd57848901546140d9601f891682613fd1565b8355505b6001600288020188555050505b5050505050505b565b60006140fe826131eb565b9150614109836131eb565b925082820190508082111561412157614120613d0d565b5b92915050565b6000815461413481613baf565b61413e8186613db8565b94506001821660008114614159576001811461416e576141a1565b60ff19831686528115158202860193506141a1565b61417785613e4a565b60005b838110156141995781548189015260018201915060208101905061417a565b838801955050505b50505092915050565b60006141b68284614127565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f46756e63496420636c6173682e00000000000000000000000000000000000000600082015250565b6000614226600d83612ffe565b9150614231826141f0565b602082019050919050565b6000602082019050818103600083015261425581614219565b9050919050565b61426582613393565b67ffffffffffffffff81111561427e5761427d61340f565b5b6142888254613baf565b614293828285613f7e565b600060209050601f8311600181146142c657600084156142b4578287015190505b6142be8582613fef565b865550614326565b601f1984166142d486613e4a565b60005b828110156142fc578489015182556001820191506020850194506020810190506142d7565b868310156143195784890151614315601f891682613fd1565b8355505b6001600288020188555050505b505050505050565b600061433a8385612ffe565b93506143478385846139e1565b6143508361317f565b840190509392505050565b6000602082019050818103600083015261437681848661432e565b90509392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006143db602f83612ffe565b91506143e68261437f565b604082019050919050565b6000602082019050818103600083015261440a816143ce565b9050919050565b600081905092915050565b60006144278261314a565b6144318185614411565b9350614441818560208601613155565b80840191505092915050565b6000614459828561441c565b9150614465828461441c565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144cd602683612ffe565b91506144d882614471565b604082019050919050565b600060208201905081810360008301526144fc816144c0565b9050919050565b60006080820190506145186000830187613280565b6145256020830186613280565b6145326040830185613316565b818103606083015261454481846133af565b905095945050505050565b60008151905061455e816130bb565b92915050565b60006020828403121561457a57614579613085565b5b60006145888482850161454f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145cb826131eb565b91506145d6836131eb565b9250826145e6576145e5614591565b5b828204905092915050565b60006145fc826131eb565b9150614607836131eb565b92508261461757614616614591565b5b82820690509291505056fea264697066735822122055062014d2e74b8c98295ccefc60e1ded6286abaeb4b258e260ec02fc3dd79ec64736f6c6343000812003368747470733a2f2f6170692e78616e616c69612e636f6d2f7374616b696e672f6765742d74726561737572652d626f782d6d6574613f746f6b656e49643d636c61696d526577617264566f696365506c7567696e2875696e743235362c75696e7432353629636c61696d526577617264416e696d6174696f6e2875696e743235362c75696e7432353629757064617465436f6e747261637428616464726573732c737472696e672c737472696e6729000000000000000000000000b5f8c8e277adfeb59b9532ac9aea66eeefdbe678000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002f58414e4120547265617375726520426f78204c616e64204379636c65203530203a204e6f76656d6265722032303234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035854420000000000000000000000000000000000000000000000000000000000