From 476a64d09fbba648910883d27a52cb760830b246 Mon Sep 17 00:00:00 2001 From: avcdsld Date: Sun, 2 Jun 2024 23:29:03 +0900 Subject: [PATCH] filecoin --- .vscode/settings.json | 2 +- packages/contracts/evm-compatible/README.txt | 4 + .../evm-compatible/contracts/SakutaroPoem.sol | 4 +- .../evm-compatible/deploy/00_SakutaroPoem.ts | 7 + .../deployments/filecoin/.chainId | 1 + .../deployments/filecoin/SakutaroPoem.json | 649 ++++++++++++++++++ .../deployments/filecoin/TokenURI.json | 127 ++++ .../9d362a9261eac5217bad10d772735e46.json | 47 ++ .../deployments/filecointestnet/.chainId | 1 + .../filecointestnet/SakutaroPoem.json | 649 ++++++++++++++++++ .../deployments/filecointestnet/TokenURI.json | 127 ++++ .../9d362a9261eac5217bad10d772735e46.json | 47 ++ .../evm-compatible/hardhat.config.ts | 12 + .../contracts/evm-compatible/package.json | 6 +- .../evm-compatible/typechain/Erc721.d.ts | 42 +- .../evm-compatible/typechain/Erc721Factory.ts | 8 +- .../typechain/Erc721TokenReceiver.d.ts | 80 +-- .../typechain/Erc721TokenReceiverFactory.ts | 8 +- .../typechain/SakutaroPoem.d.ts | 42 +- .../typechain/SakutaroPoemFactory.ts | 8 +- .../src/components/templates/HomeTemplate.tsx | 39 ++ .../src/contracts/external_contracts.ts | 10 + yarn.lock | 264 ++++++- 23 files changed, 2080 insertions(+), 104 deletions(-) create mode 100644 packages/contracts/evm-compatible/README.txt create mode 100644 packages/contracts/evm-compatible/deployments/filecoin/.chainId create mode 100644 packages/contracts/evm-compatible/deployments/filecoin/SakutaroPoem.json create mode 100644 packages/contracts/evm-compatible/deployments/filecoin/TokenURI.json create mode 100644 packages/contracts/evm-compatible/deployments/filecoin/solcInputs/9d362a9261eac5217bad10d772735e46.json create mode 100644 packages/contracts/evm-compatible/deployments/filecointestnet/.chainId create mode 100644 packages/contracts/evm-compatible/deployments/filecointestnet/SakutaroPoem.json create mode 100644 packages/contracts/evm-compatible/deployments/filecointestnet/TokenURI.json create mode 100644 packages/contracts/evm-compatible/deployments/filecointestnet/solcInputs/9d362a9261eac5217bad10d772735e46.json diff --git a/.vscode/settings.json b/.vscode/settings.json index ab386fd..b45886b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,7 @@ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "solidity.packageDefaultDependenciesContractsDirectory": "", "solidity.packageDefaultDependenciesDirectory": "node_modules" diff --git a/packages/contracts/evm-compatible/README.txt b/packages/contracts/evm-compatible/README.txt new file mode 100644 index 0000000..7fc6e40 --- /dev/null +++ b/packages/contracts/evm-compatible/README.txt @@ -0,0 +1,4 @@ +```sh +direnv allow +npx hardhat deploy --network [network] +``` diff --git a/packages/contracts/evm-compatible/contracts/SakutaroPoem.sol b/packages/contracts/evm-compatible/contracts/SakutaroPoem.sol index 9a68468..c18a511 100644 --- a/packages/contracts/evm-compatible/contracts/SakutaroPoem.sol +++ b/packages/contracts/evm-compatible/contracts/SakutaroPoem.sol @@ -54,7 +54,7 @@ contract SakutaroPoem is ERC721 { } function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) { - uint256 id = (uint160(ownerOf[tokenId]) + seed) % uint256(39); + uint256 id = (uint160(ownerOf(tokenId)) + seed) % uint256(39); return ITokenURI(tokenURIContractAddress).tokenURI(id); } @@ -68,7 +68,7 @@ contract SakutaroPoem is ERC721 { // ERC-2981 function royaltyInfo( - uint256, /* _tokenId */ + uint256 /* _tokenId */, uint256 _value ) external view returns (address _receiver, uint256 _royaltyAmount) { _receiver = royaltyReceiver; diff --git a/packages/contracts/evm-compatible/deploy/00_SakutaroPoem.ts b/packages/contracts/evm-compatible/deploy/00_SakutaroPoem.ts index 60f2be3..8bfb2e5 100644 --- a/packages/contracts/evm-compatible/deploy/00_SakutaroPoem.ts +++ b/packages/contracts/evm-compatible/deploy/00_SakutaroPoem.ts @@ -2,14 +2,21 @@ const func = async (hre: any) => { const { deployments, getNamedAccounts } = hre; const { deploy } = deployments; const { deployer } = await getNamedAccounts(); + const feeData = await hre.ethers.provider.getFeeData(); const tokenURIContract = await deploy("TokenURI", { from: deployer, log: true, + maxPriorityFeePerGas: feeData.maxPriorityFeePerGas, + maxFeePerGas: feeData.maxFeePerGas, + type: "0x2", }); await deploy("SakutaroPoem", { from: deployer, args: [tokenURIContract.address], log: true, + maxPriorityFeePerGas: feeData.maxPriorityFeePerGas, + maxFeePerGas: feeData.maxFeePerGas, + type: "0x2", }); }; diff --git a/packages/contracts/evm-compatible/deployments/filecoin/.chainId b/packages/contracts/evm-compatible/deployments/filecoin/.chainId new file mode 100644 index 0000000..c0d6976 --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecoin/.chainId @@ -0,0 +1 @@ +314 \ No newline at end of file diff --git a/packages/contracts/evm-compatible/deployments/filecoin/SakutaroPoem.json b/packages/contracts/evm-compatible/deployments/filecoin/SakutaroPoem.json new file mode 100644 index 0000000..927828d --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecoin/SakutaroPoem.json @@ -0,0 +1,649 @@ +{ + "address": "0xA87AbF6854207075e65D16cF86a8ece1216eA973", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenURIContractAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "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": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxElements", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "modulo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "royaltyInfo", + "outputs": [ + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_royaltyAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "royaltyReceiver", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "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": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "secondarySaleRoyalty", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "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": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "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": [], + "name": "tokenURIContractAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "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": "id", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x133faf6001b42cdf00277a15f8d16938cd140b71bc72579800810d604d8f94c6", + "receipt": { + "to": null, + "from": "0x1Ab4264485188933DB0D9BCb34fAce34d54459bE", + "contractAddress": "0xA87AbF6854207075e65D16cF86a8ece1216eA973", + "transactionIndex": 91, + "gasUsed": "103978361", + "logsBloom": "0xb8f320811715d45d03cb385aa4d630a2378cb176b7e1c10a05926142c8317b59c3f6fe49c084672b88740e8b243a893f3d454c342ecbfb443b9284402cf48a918b0f14020109331f705afa3e819478289269a9b98ae412858d6734df89317932784416e5fb15db4a89e808ef5921cd7f6527a402148c05c115f16fb8e238c6cb57b1a3bd95790b422b2c24960e83128b93d94bc338c3e0bf5d4cd5f141f25bbfc2460ce52e2c0cac92da235901476c835a28c49a412e9e34eb3e29f1064eec5061488c42547c8ea1b6ac2063c7b6644a3240129aaf19421f952b1622c971a8c4a2795f19dca828c9079c80b0e27740b8a077d04147b82256ca461e3cbf21e0c2", + "blockHash": "0xd913b41bc6bd736693089bf90c4e833cbd96f0109fd094669245a67fee87b309", + "transactionHash": "0x133faf6001b42cdf00277a15f8d16938cd140b71bc72579800810d604d8f94c6", + "logs": [], + "blockNumber": 3967515, + "cumulativeGasUsed": "0", + "status": 1, + "byzantium": true + }, + "args": [ + "0x22C42c406046446EAd59388877Aa710b87962974" + ], + "numDeployments": 1, + "solcInputHash": "9d362a9261eac5217bad10d772735e46", + "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenURIContractAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxElements\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"modulo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"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\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"secondarySaleRoyalty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"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\":[],\"name\":\"tokenURIContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SakutaroPoem.sol\":\"SakutaroPoem\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@rari-capital/solmate/src/tokens/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity >=0.8.0;\\n\\n/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.\\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\\nabstract contract ERC721 {\\n /*//////////////////////////////////////////////////////////////\\n EVENTS\\n //////////////////////////////////////////////////////////////*/\\n\\n event Transfer(address indexed from, address indexed to, uint256 indexed id);\\n\\n event Approval(address indexed owner, address indexed spender, uint256 indexed id);\\n\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /*//////////////////////////////////////////////////////////////\\n METADATA STORAGE/LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n string public name;\\n\\n string public symbol;\\n\\n function tokenURI(uint256 id) public view virtual returns (string memory);\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC721 BALANCE/OWNER STORAGE\\n //////////////////////////////////////////////////////////////*/\\n\\n mapping(uint256 => address) internal _ownerOf;\\n\\n mapping(address => uint256) internal _balanceOf;\\n\\n function ownerOf(uint256 id) public view virtual returns (address owner) {\\n require((owner = _ownerOf[id]) != address(0), \\\"NOT_MINTED\\\");\\n }\\n\\n function balanceOf(address owner) public view virtual returns (uint256) {\\n require(owner != address(0), \\\"ZERO_ADDRESS\\\");\\n\\n return _balanceOf[owner];\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC721 APPROVAL STORAGE\\n //////////////////////////////////////////////////////////////*/\\n\\n mapping(uint256 => address) public getApproved;\\n\\n mapping(address => mapping(address => bool)) public isApprovedForAll;\\n\\n /*//////////////////////////////////////////////////////////////\\n CONSTRUCTOR\\n //////////////////////////////////////////////////////////////*/\\n\\n constructor(string memory _name, string memory _symbol) {\\n name = _name;\\n symbol = _symbol;\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC721 LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function approve(address spender, uint256 id) public virtual {\\n address owner = _ownerOf[id];\\n\\n require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \\\"NOT_AUTHORIZED\\\");\\n\\n getApproved[id] = spender;\\n\\n emit Approval(owner, spender, id);\\n }\\n\\n function setApprovalForAll(address operator, bool approved) public virtual {\\n isApprovedForAll[msg.sender][operator] = approved;\\n\\n emit ApprovalForAll(msg.sender, operator, approved);\\n }\\n\\n function transferFrom(\\n address from,\\n address to,\\n uint256 id\\n ) public virtual {\\n require(from == _ownerOf[id], \\\"WRONG_FROM\\\");\\n\\n require(to != address(0), \\\"INVALID_RECIPIENT\\\");\\n\\n require(\\n msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],\\n \\\"NOT_AUTHORIZED\\\"\\n );\\n\\n // Underflow of the sender's balance is impossible because we check for\\n // ownership above and the recipient's balance can't realistically overflow.\\n unchecked {\\n _balanceOf[from]--;\\n\\n _balanceOf[to]++;\\n }\\n\\n _ownerOf[id] = to;\\n\\n delete getApproved[id];\\n\\n emit Transfer(from, to, id);\\n }\\n\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id\\n ) public virtual {\\n transferFrom(from, to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, \\\"\\\") ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n bytes calldata data\\n ) public virtual {\\n transferFrom(from, to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC165 LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\\n return\\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\\n interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n INTERNAL MINT/BURN LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function _mint(address to, uint256 id) internal virtual {\\n require(to != address(0), \\\"INVALID_RECIPIENT\\\");\\n\\n require(_ownerOf[id] == address(0), \\\"ALREADY_MINTED\\\");\\n\\n // Counter overflow is incredibly unrealistic.\\n unchecked {\\n _balanceOf[to]++;\\n }\\n\\n _ownerOf[id] = to;\\n\\n emit Transfer(address(0), to, id);\\n }\\n\\n function _burn(uint256 id) internal virtual {\\n address owner = _ownerOf[id];\\n\\n require(owner != address(0), \\\"NOT_MINTED\\\");\\n\\n // Ownership check above ensures no underflow.\\n unchecked {\\n _balanceOf[owner]--;\\n }\\n\\n delete _ownerOf[id];\\n\\n delete getApproved[id];\\n\\n emit Transfer(owner, address(0), id);\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n INTERNAL SAFE MINT LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function _safeMint(address to, uint256 id) internal virtual {\\n _mint(to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, \\\"\\\") ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n\\n function _safeMint(\\n address to,\\n uint256 id,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n}\\n\\n/// @notice A generic interface for a contract which properly accepts ERC721 tokens.\\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\\nabstract contract ERC721TokenReceiver {\\n function onERC721Received(\\n address,\\n address,\\n uint256,\\n bytes calldata\\n ) external virtual returns (bytes4) {\\n return ERC721TokenReceiver.onERC721Received.selector;\\n }\\n}\\n\",\"keccak256\":\"0xb59c7c25eca386f39da4819a9f70f89b73b7583d5f5127a83ffe5339800b1183\",\"license\":\"AGPL-3.0-only\"},\"contracts/SakutaroPoem.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n//\\n// _____ _ _\\n// / ___| | | | |\\n// \\\\ `--. __ _ | | __ _ _ | |_ __ _ _ __ ___\\n// `--. \\\\ / _` || |/ /| | | || __| / _` || '__| / _ \\\\\\n// /\\\\__/ /| (_| || < | |_| || |_ | (_| || | | (_) |\\n// \\\\____/ \\\\__,_||_|\\\\_\\\\ \\\\__,_| \\\\__| \\\\__,_||_| \\\\___/\\n//\\npragma solidity ^0.8.2;\\n\\nimport {ERC721} from \\\"@rari-capital/solmate/src/tokens/ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\n\\ninterface ITokenURI {\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\\ncontract SakutaroPoem is ERC721 {\\n using Counters for Counters.Counter;\\n Counters.Counter private _tokenIdCounter;\\n\\n uint256 public constant maxElements = 39;\\n uint256 public constant secondarySaleRoyalty = 10_00000; // 10.0%\\n uint256 public constant modulo = 100_00000; // precision 100.00000%\\n\\n address public tokenURIContractAddress;\\n address public royaltyReceiver;\\n uint256 private seed;\\n\\n constructor(address _tokenURIContractAddress) ERC721(\\\"Sakutaro Poem\\\", \\\"SAKU\\\") {\\n tokenURIContractAddress = _tokenURIContractAddress;\\n royaltyReceiver = msg.sender;\\n seed = block.timestamp;\\n }\\n\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n function totalSupply() public view returns (uint256) {\\n return _tokenIdCounter.current();\\n }\\n\\n function mint(address to) public {\\n require(_tokenIdCounter.current() < maxElements, \\\"Mint would exceed max supply of NFTs\\\");\\n _tokenIdCounter.increment();\\n uint256 tokenId = _tokenIdCounter.current();\\n _safeMint(to, tokenId);\\n }\\n\\n function _burn(uint256 tokenId) internal override(ERC721) {\\n super._burn(tokenId);\\n }\\n\\n function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) {\\n uint256 id = (uint160(ownerOf(tokenId)) + seed) % uint256(39);\\n return ITokenURI(tokenURIContractAddress).tokenURI(id);\\n }\\n\\n function supportsInterface(bytes4 interfaceId) public pure virtual override(ERC721) returns (bool) {\\n return\\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\\n interfaceId == 0x5b5e139f || // ERC165 Interface ID for ERC721Metadata\\n interfaceId == 0x2a55205a; // ERC165 Interface ID for ERC2981\\n }\\n\\n // ERC-2981\\n function royaltyInfo(\\n uint256 /* _tokenId */,\\n uint256 _value\\n ) external view returns (address _receiver, uint256 _royaltyAmount) {\\n _receiver = royaltyReceiver;\\n _royaltyAmount = (_value / modulo) * secondarySaleRoyalty;\\n }\\n}\\n\",\"keccak256\":\"0x27a5e247e6135f53435146691e89b3aeaefb6aa2029e1c67d7ae2fb7839d93d9\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620027423803806200274283398181016040528101906200003791906200022e565b6040518060400160405280600d81526020017f53616b757461726f20506f656d000000000000000000000000000000000000008152506040518060400160405280600481526020017f53414b55000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000bb92919062000167565b508060019080519060200190620000d492919062000167565b50505080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600981905550506200030d565b82805462000175906200028e565b90600052602060002090601f016020900481019282620001995760008555620001e5565b82601f10620001b457805160ff1916838001178555620001e5565b82800160010185558215620001e5579182015b82811115620001e4578251825591602001919060010190620001c7565b5b509050620001f49190620001f8565b5090565b5b8082111562000213576000816000905550600101620001f9565b5090565b6000815190506200022881620002f3565b92915050565b6000602082840312156200024157600080fd5b6000620002518482850162000217565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006002820490506001821680620002a757607f821691505b60208210811415620002be57620002bd620002c4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620002fe816200025a565b81146200030a57600080fd5b50565b612425806200031d6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b85780639fbc87131161007c5780639fbc871314610351578063a22cb4651461036f578063b88d4fde1461038b578063c87b56dd146103a7578063d9cc1886146103d7578063e985e9c5146103f557610137565b80636352211e1461029957806363f204d0146102c95780636a627842146102e757806370a082311461030357806395d89b411461033357610137565b806323b872dd116100ff57806323b872dd146101f457806329745262146102105780632a55205a1461022e57806342842e0e1461025f578063558fa0f51461027b57610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b610156600480360381019061015191906119ad565b610425565b6040516101639190611d4f565b60405180910390f35b6101746104e7565b6040516101819190611d6a565b60405180910390f35b6101a4600480360381019061019f9190611a40565b610575565b6040516101b19190611c73565b60405180910390f35b6101d460048036038101906101cf9190611971565b6105a8565b005b6101de610791565b6040516101eb9190611e8c565b60405180910390f35b61020e60048036038101906102099190611866565b6107a2565b005b610218610ba2565b6040516102259190611e8c565b60405180910390f35b61024860048036038101906102439190611a69565b610ba9565b604051610256929190611d26565b60405180910390f35b61027960048036038101906102749190611866565b610bf7565b005b610283610d3e565b6040516102909190611e8c565b60405180910390f35b6102b360048036038101906102ae9190611a40565b610d43565b6040516102c09190611c73565b60405180910390f35b6102d1610def565b6040516102de9190611e8c565b60405180910390f35b61030160048036038101906102fc9190611801565b610df6565b005b61031d60048036038101906103189190611801565b610e68565b60405161032a9190611e8c565b60405180910390f35b61033b610f20565b6040516103489190611d6a565b60405180910390f35b610359610fae565b6040516103669190611c73565b60405180910390f35b61038960048036038101906103849190611935565b610fd4565b005b6103a560048036038101906103a091906118b5565b6110d1565b005b6103c160048036038101906103bc9190611a40565b61121e565b6040516103ce9190611d6a565b60405180910390f35b6103df611314565b6040516103ec9190611c73565b60405180910390f35b61040f600480360381019061040a919061182a565b61133a565b60405161041c9190611d4f565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104b05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e05750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546104f4906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610520906120c1565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106a05750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611e2c565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061079d6006611369565b905090565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611e6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90611d8c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109735750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806109dc57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290611e2c565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6298968081565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150620f42406298968084610be49190611f80565b610bee9190611fb1565b90509250929050565b610c028383836107a2565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610cfa575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610c8793929190611cdc565b602060405180830381600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090611dec565b60405180910390fd5b505050565b602781565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff161415610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190611e4c565b60405180910390fd5b919050565b620f424081565b6027610e026006611369565b10610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611dac565b60405180910390fd5b610e4c6006611377565b6000610e586006611369565b9050610e64828261138d565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090611dcc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610f2d906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f59906120c1565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b505050505081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110c59190611d4f565b60405180910390a35050565b6110dc8585856107a2565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806111d8575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611165959493929190611c8e565b602060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b791906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90611dec565b60405180910390fd5b5050505050565b60606000602760095461123085610d43565b73ffffffffffffffffffffffffffffffffffffffff166112509190611f2a565b61125a9190612124565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016112b79190611e8c565b60006040518083038186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130c91906119ff565b915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600081600001549050919050565b6001816000016000828254019250508190555050565b61139782826114d3565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611490575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b815260040161141d93929190611cdc565b602060405180830381600087803b15801561143757600080fd5b505af115801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690611dec565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90611d8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90611e0c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006116f96116f484611ecc565b611ea7565b90508281526020810184848401111561171157600080fd5b61171c84828561208e565b509392505050565b60008135905061173381612393565b92915050565b600081359050611748816123aa565b92915050565b60008135905061175d816123c1565b92915050565b600081519050611772816123c1565b92915050565b60008083601f84011261178a57600080fd5b8235905067ffffffffffffffff8111156117a357600080fd5b6020830191508360018202830111156117bb57600080fd5b9250929050565b600082601f8301126117d357600080fd5b81516117e38482602086016116e6565b91505092915050565b6000813590506117fb816123d8565b92915050565b60006020828403121561181357600080fd5b600061182184828501611724565b91505092915050565b6000806040838503121561183d57600080fd5b600061184b85828601611724565b925050602061185c85828601611724565b9150509250929050565b60008060006060848603121561187b57600080fd5b600061188986828701611724565b935050602061189a86828701611724565b92505060406118ab868287016117ec565b9150509250925092565b6000806000806000608086880312156118cd57600080fd5b60006118db88828901611724565b95505060206118ec88828901611724565b94505060406118fd888289016117ec565b935050606086013567ffffffffffffffff81111561191a57600080fd5b61192688828901611778565b92509250509295509295909350565b6000806040838503121561194857600080fd5b600061195685828601611724565b925050602061196785828601611739565b9150509250929050565b6000806040838503121561198457600080fd5b600061199285828601611724565b92505060206119a3858286016117ec565b9150509250929050565b6000602082840312156119bf57600080fd5b60006119cd8482850161174e565b91505092915050565b6000602082840312156119e857600080fd5b60006119f684828501611763565b91505092915050565b600060208284031215611a1157600080fd5b600082015167ffffffffffffffff811115611a2b57600080fd5b611a37848285016117c2565b91505092915050565b600060208284031215611a5257600080fd5b6000611a60848285016117ec565b91505092915050565b60008060408385031215611a7c57600080fd5b6000611a8a858286016117ec565b9250506020611a9b858286016117ec565b9150509250929050565b611aae8161200b565b82525050565b611abd8161201d565b82525050565b6000611acf8385611f08565b9350611adc83858461207f565b611ae583612211565b840190509392505050565b6000611afb82611efd565b611b058185611f19565b9350611b1581856020860161208e565b611b1e81612211565b840191505092915050565b6000611b36601183611f19565b9150611b4182612222565b602082019050919050565b6000611b59602483611f19565b9150611b648261224b565b604082019050919050565b6000611b7c600c83611f19565b9150611b878261229a565b602082019050919050565b6000611b9f601083611f19565b9150611baa826122c3565b602082019050919050565b6000611bc2600083611f08565b9150611bcd826122ec565b600082019050919050565b6000611be5600e83611f19565b9150611bf0826122ef565b602082019050919050565b6000611c08600e83611f19565b9150611c1382612318565b602082019050919050565b6000611c2b600a83611f19565b9150611c3682612341565b602082019050919050565b6000611c4e600a83611f19565b9150611c598261236a565b602082019050919050565b611c6d81612075565b82525050565b6000602082019050611c886000830184611aa5565b92915050565b6000608082019050611ca36000830188611aa5565b611cb06020830187611aa5565b611cbd6040830186611c64565b8181036060830152611cd0818486611ac3565b90509695505050505050565b6000608082019050611cf16000830186611aa5565b611cfe6020830185611aa5565b611d0b6040830184611c64565b8181036060830152611d1c81611bb5565b9050949350505050565b6000604082019050611d3b6000830185611aa5565b611d486020830184611c64565b9392505050565b6000602082019050611d646000830184611ab4565b92915050565b60006020820190508181036000830152611d848184611af0565b905092915050565b60006020820190508181036000830152611da581611b29565b9050919050565b60006020820190508181036000830152611dc581611b4c565b9050919050565b60006020820190508181036000830152611de581611b6f565b9050919050565b60006020820190508181036000830152611e0581611b92565b9050919050565b60006020820190508181036000830152611e2581611bd8565b9050919050565b60006020820190508181036000830152611e4581611bfb565b9050919050565b60006020820190508181036000830152611e6581611c1e565b9050919050565b60006020820190508181036000830152611e8581611c41565b9050919050565b6000602082019050611ea16000830184611c64565b92915050565b6000611eb1611ec2565b9050611ebd82826120f3565b919050565b6000604051905090565b600067ffffffffffffffff821115611ee757611ee66121e2565b5b611ef082612211565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f3582612075565b9150611f4083612075565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f7557611f74612155565b5b828201905092915050565b6000611f8b82612075565b9150611f9683612075565b925082611fa657611fa5612184565b5b828204905092915050565b6000611fbc82612075565b9150611fc783612075565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200057611fff612155565b5b828202905092915050565b600061201682612055565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156120ac578082015181840152602081019050612091565b838111156120bb576000848401525b50505050565b600060028204905060018216806120d957607f821691505b602082108114156120ed576120ec6121b3565b5b50919050565b6120fc82612211565b810181811067ffffffffffffffff8211171561211b5761211a6121e2565b5b80604052505050565b600061212f82612075565b915061213a83612075565b92508261214a57612149612184565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b7f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060008201527f4e46547300000000000000000000000000000000000000000000000000000000602082015250565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b50565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b61239c8161200b565b81146123a757600080fd5b50565b6123b38161201d565b81146123be57600080fd5b50565b6123ca81612029565b81146123d557600080fd5b50565b6123e181612075565b81146123ec57600080fd5b5056fea2646970667358221220c0a55333192370778c2c0e5ad175b095a2229989edeaa2cd1474aa8ea526793a64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b85780639fbc87131161007c5780639fbc871314610351578063a22cb4651461036f578063b88d4fde1461038b578063c87b56dd146103a7578063d9cc1886146103d7578063e985e9c5146103f557610137565b80636352211e1461029957806363f204d0146102c95780636a627842146102e757806370a082311461030357806395d89b411461033357610137565b806323b872dd116100ff57806323b872dd146101f457806329745262146102105780632a55205a1461022e57806342842e0e1461025f578063558fa0f51461027b57610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b610156600480360381019061015191906119ad565b610425565b6040516101639190611d4f565b60405180910390f35b6101746104e7565b6040516101819190611d6a565b60405180910390f35b6101a4600480360381019061019f9190611a40565b610575565b6040516101b19190611c73565b60405180910390f35b6101d460048036038101906101cf9190611971565b6105a8565b005b6101de610791565b6040516101eb9190611e8c565b60405180910390f35b61020e60048036038101906102099190611866565b6107a2565b005b610218610ba2565b6040516102259190611e8c565b60405180910390f35b61024860048036038101906102439190611a69565b610ba9565b604051610256929190611d26565b60405180910390f35b61027960048036038101906102749190611866565b610bf7565b005b610283610d3e565b6040516102909190611e8c565b60405180910390f35b6102b360048036038101906102ae9190611a40565b610d43565b6040516102c09190611c73565b60405180910390f35b6102d1610def565b6040516102de9190611e8c565b60405180910390f35b61030160048036038101906102fc9190611801565b610df6565b005b61031d60048036038101906103189190611801565b610e68565b60405161032a9190611e8c565b60405180910390f35b61033b610f20565b6040516103489190611d6a565b60405180910390f35b610359610fae565b6040516103669190611c73565b60405180910390f35b61038960048036038101906103849190611935565b610fd4565b005b6103a560048036038101906103a091906118b5565b6110d1565b005b6103c160048036038101906103bc9190611a40565b61121e565b6040516103ce9190611d6a565b60405180910390f35b6103df611314565b6040516103ec9190611c73565b60405180910390f35b61040f600480360381019061040a919061182a565b61133a565b60405161041c9190611d4f565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104b05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e05750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546104f4906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610520906120c1565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106a05750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611e2c565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061079d6006611369565b905090565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611e6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90611d8c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109735750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806109dc57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290611e2c565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6298968081565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150620f42406298968084610be49190611f80565b610bee9190611fb1565b90509250929050565b610c028383836107a2565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610cfa575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610c8793929190611cdc565b602060405180830381600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090611dec565b60405180910390fd5b505050565b602781565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff161415610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190611e4c565b60405180910390fd5b919050565b620f424081565b6027610e026006611369565b10610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611dac565b60405180910390fd5b610e4c6006611377565b6000610e586006611369565b9050610e64828261138d565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090611dcc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610f2d906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f59906120c1565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b505050505081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110c59190611d4f565b60405180910390a35050565b6110dc8585856107a2565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806111d8575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611165959493929190611c8e565b602060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b791906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90611dec565b60405180910390fd5b5050505050565b60606000602760095461123085610d43565b73ffffffffffffffffffffffffffffffffffffffff166112509190611f2a565b61125a9190612124565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016112b79190611e8c565b60006040518083038186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130c91906119ff565b915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600081600001549050919050565b6001816000016000828254019250508190555050565b61139782826114d3565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611490575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b815260040161141d93929190611cdc565b602060405180830381600087803b15801561143757600080fd5b505af115801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690611dec565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90611d8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90611e0c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006116f96116f484611ecc565b611ea7565b90508281526020810184848401111561171157600080fd5b61171c84828561208e565b509392505050565b60008135905061173381612393565b92915050565b600081359050611748816123aa565b92915050565b60008135905061175d816123c1565b92915050565b600081519050611772816123c1565b92915050565b60008083601f84011261178a57600080fd5b8235905067ffffffffffffffff8111156117a357600080fd5b6020830191508360018202830111156117bb57600080fd5b9250929050565b600082601f8301126117d357600080fd5b81516117e38482602086016116e6565b91505092915050565b6000813590506117fb816123d8565b92915050565b60006020828403121561181357600080fd5b600061182184828501611724565b91505092915050565b6000806040838503121561183d57600080fd5b600061184b85828601611724565b925050602061185c85828601611724565b9150509250929050565b60008060006060848603121561187b57600080fd5b600061188986828701611724565b935050602061189a86828701611724565b92505060406118ab868287016117ec565b9150509250925092565b6000806000806000608086880312156118cd57600080fd5b60006118db88828901611724565b95505060206118ec88828901611724565b94505060406118fd888289016117ec565b935050606086013567ffffffffffffffff81111561191a57600080fd5b61192688828901611778565b92509250509295509295909350565b6000806040838503121561194857600080fd5b600061195685828601611724565b925050602061196785828601611739565b9150509250929050565b6000806040838503121561198457600080fd5b600061199285828601611724565b92505060206119a3858286016117ec565b9150509250929050565b6000602082840312156119bf57600080fd5b60006119cd8482850161174e565b91505092915050565b6000602082840312156119e857600080fd5b60006119f684828501611763565b91505092915050565b600060208284031215611a1157600080fd5b600082015167ffffffffffffffff811115611a2b57600080fd5b611a37848285016117c2565b91505092915050565b600060208284031215611a5257600080fd5b6000611a60848285016117ec565b91505092915050565b60008060408385031215611a7c57600080fd5b6000611a8a858286016117ec565b9250506020611a9b858286016117ec565b9150509250929050565b611aae8161200b565b82525050565b611abd8161201d565b82525050565b6000611acf8385611f08565b9350611adc83858461207f565b611ae583612211565b840190509392505050565b6000611afb82611efd565b611b058185611f19565b9350611b1581856020860161208e565b611b1e81612211565b840191505092915050565b6000611b36601183611f19565b9150611b4182612222565b602082019050919050565b6000611b59602483611f19565b9150611b648261224b565b604082019050919050565b6000611b7c600c83611f19565b9150611b878261229a565b602082019050919050565b6000611b9f601083611f19565b9150611baa826122c3565b602082019050919050565b6000611bc2600083611f08565b9150611bcd826122ec565b600082019050919050565b6000611be5600e83611f19565b9150611bf0826122ef565b602082019050919050565b6000611c08600e83611f19565b9150611c1382612318565b602082019050919050565b6000611c2b600a83611f19565b9150611c3682612341565b602082019050919050565b6000611c4e600a83611f19565b9150611c598261236a565b602082019050919050565b611c6d81612075565b82525050565b6000602082019050611c886000830184611aa5565b92915050565b6000608082019050611ca36000830188611aa5565b611cb06020830187611aa5565b611cbd6040830186611c64565b8181036060830152611cd0818486611ac3565b90509695505050505050565b6000608082019050611cf16000830186611aa5565b611cfe6020830185611aa5565b611d0b6040830184611c64565b8181036060830152611d1c81611bb5565b9050949350505050565b6000604082019050611d3b6000830185611aa5565b611d486020830184611c64565b9392505050565b6000602082019050611d646000830184611ab4565b92915050565b60006020820190508181036000830152611d848184611af0565b905092915050565b60006020820190508181036000830152611da581611b29565b9050919050565b60006020820190508181036000830152611dc581611b4c565b9050919050565b60006020820190508181036000830152611de581611b6f565b9050919050565b60006020820190508181036000830152611e0581611b92565b9050919050565b60006020820190508181036000830152611e2581611bd8565b9050919050565b60006020820190508181036000830152611e4581611bfb565b9050919050565b60006020820190508181036000830152611e6581611c1e565b9050919050565b60006020820190508181036000830152611e8581611c41565b9050919050565b6000602082019050611ea16000830184611c64565b92915050565b6000611eb1611ec2565b9050611ebd82826120f3565b919050565b6000604051905090565b600067ffffffffffffffff821115611ee757611ee66121e2565b5b611ef082612211565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f3582612075565b9150611f4083612075565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f7557611f74612155565b5b828201905092915050565b6000611f8b82612075565b9150611f9683612075565b925082611fa657611fa5612184565b5b828204905092915050565b6000611fbc82612075565b9150611fc783612075565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200057611fff612155565b5b828202905092915050565b600061201682612055565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156120ac578082015181840152602081019050612091565b838111156120bb576000848401525b50505050565b600060028204905060018216806120d957607f821691505b602082108114156120ed576120ec6121b3565b5b50919050565b6120fc82612211565b810181811067ffffffffffffffff8211171561211b5761211a6121e2565b5b80604052505050565b600061212f82612075565b915061213a83612075565b92508261214a57612149612184565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b7f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060008201527f4e46547300000000000000000000000000000000000000000000000000000000602082015250565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b50565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b61239c8161200b565b81146123a757600080fd5b50565b6123b38161201d565b81146123be57600080fd5b50565b6123ca81612029565b81146123d557600080fd5b50565b6123e181612075565b81146123ec57600080fd5b5056fea2646970667358221220c0a55333192370778c2c0e5ad175b095a2229989edeaa2cd1474aa8ea526793a64736f6c63430008040033", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 102, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "name", + "offset": 0, + "slot": "0", + "type": "t_string_storage" + }, + { + "astId": 104, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "symbol", + "offset": 0, + "slot": "1", + "type": "t_string_storage" + }, + { + "astId": 115, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_ownerOf", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)" + }, + { + "astId": 119, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_balanceOf", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 168, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "getApproved", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_uint256,t_address)" + }, + { + "astId": 174, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "isApprovedForAll", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))" + }, + { + "astId": 717, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_tokenIdCounter", + "offset": 0, + "slot": "6", + "type": "t_struct(Counter)5_storage" + }, + { + "astId": 728, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "tokenURIContractAddress", + "offset": 0, + "slot": "7", + "type": "t_address" + }, + { + "astId": 730, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "royaltyReceiver", + "offset": 0, + "slot": "8", + "type": "t_address" + }, + { + "astId": 732, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "seed", + "offset": 0, + "slot": "9", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_bool)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_uint256,t_address)": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => address)", + "numberOfBytes": "32", + "value": "t_address" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Counter)5_storage": { + "encoding": "inplace", + "label": "struct Counters.Counter", + "members": [ + { + "astId": 4, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_value", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/evm-compatible/deployments/filecoin/TokenURI.json b/packages/contracts/evm-compatible/deployments/filecoin/TokenURI.json new file mode 100644 index 0000000..6fa314a --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecoin/TokenURI.json @@ -0,0 +1,127 @@ +{ + "address": "0x22C42c406046446EAd59388877Aa710b87962974", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poemBodies", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poemTitles", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x3fcd160234b765934dc29487a6e5e734580b291e00b1861c960c4ed2829f7e2c", + "receipt": { + "to": null, + "from": "0x1Ab4264485188933DB0D9BCb34fAce34d54459bE", + "contractAddress": "0x22C42c406046446EAd59388877Aa710b87962974", + "transactionIndex": 6, + "gasUsed": "511647100", + "logsBloom": "0xb8f320811715d45d03cb385aa4d630a2378cb176b7e1c10a05926142c8317b59c3f6fe49c084672b88740e8b243a893f3d454c342ecbfb443b9284402cf48a918b0f14020109331f705afa3e819478289269a9b98ae412858d6734df89317932784416e5fb15db4a89e808ef5921cd7f6527a402148c05c115f16fb8e238c6cb57b1a3bd95790b422b2c24960e83128b93d94bc338c3e0bf5d4cd5f141f25bbfc2460ce52e2c0cac92da235901476c835a28c49a412e9e34eb3e29f1064eec5061488c42547c8ea1b6ac2063c7b6644a3240129aaf19421f952b1622c971a8c4a2795f19dca828c9079c80b0e27740b8a077d04147b82256ca461e3cbf21e0c2", + "blockHash": "0x29532b62198aaa9af96724293e983fafb9e61c7a309d65fb4ad1c77b827136e3", + "transactionHash": "0x3fcd160234b765934dc29487a6e5e734580b291e00b1861c960c4ed2829f7e2c", + "logs": [], + "blockNumber": 3967513, + "cumulativeGasUsed": "0", + "status": 1, + "byzantium": true + }, + "args": [], + "numDeployments": 1, + "solcInputHash": "9d362a9261eac5217bad10d772735e46", + "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poemBodies\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poemTitles\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TokenURI.sol\":\"TokenURI\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Base64.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.2;\\n\\n/// @title Base64\\n/// @notice Provides a function for encoding some bytes in base64\\n/// @author Brecht Devos \\nlibrary Base64 {\\n bytes internal constant TABLE = \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\";\\n\\n /// @notice Encodes some bytes to the base64 representation\\n function encode(bytes memory data) internal pure returns (string memory) {\\n uint256 len = data.length;\\n if (len == 0) return \\\"\\\";\\n\\n // multiply by 4/3 rounded up\\n uint256 encodedLen = 4 * ((len + 2) / 3);\\n\\n // Add some extra buffer at the end\\n bytes memory result = new bytes(encodedLen + 32);\\n\\n bytes memory table = TABLE;\\n\\n assembly {\\n let tablePtr := add(table, 1)\\n let resultPtr := add(result, 32)\\n\\n for {\\n let i := 0\\n } lt(i, len) {\\n\\n } {\\n i := add(i, 3)\\n let input := and(mload(add(data, i)), 0xffffff)\\n\\n let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))\\n out := shl(8, out)\\n out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))\\n out := shl(8, out)\\n out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))\\n out := shl(8, out)\\n out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))\\n out := shl(224, out)\\n\\n mstore(resultPtr, out)\\n\\n resultPtr := add(resultPtr, 4)\\n }\\n\\n switch mod(len, 3)\\n case 1 {\\n mstore(sub(resultPtr, 2), shl(240, 0x3d3d))\\n }\\n case 2 {\\n mstore(sub(resultPtr, 1), shl(248, 0x3d))\\n }\\n\\n mstore(result, encodedLen)\\n }\\n\\n return string(result);\\n }\\n}\\n\",\"keccak256\":\"0x08da307723981c0508838c97599ed6f002acae4dd43f9fab03121309afcd6ab3\",\"license\":\"MIT\"},\"contracts/TokenURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.2;\\n\\nimport {Base64} from \\\"./Base64.sol\\\";\\n\\ncontract TokenURI {\\n string[] public poemTitles = [\\n unicode\\\"\\u3042\\u3042\\u56fa\\u3044\\u6c37\\u3092\\u7834\\u3064\\u3066\\\",\\n unicode\\\"\\u829d\\u751f\\u306e\\u4e0a\\u3067\\\",\\n unicode\\\"\\u820c\\u306e\\u306a\\u3044\\u771e\\u7406\\\",\\n unicode\\\"\\u6148\\u60b2\\\",\\n unicode\\\"\\u79cb\\u6674\\\",\\n unicode\\\"\\u9678\\u6a4b\\u3092\\u6e21\\u308b\\\",\\n unicode\\\"\\u6d99\\u3050\\u307e\\u3057\\u3044\\u5915\\u66ae\\\",\\n unicode\\\"\\u5730\\u7403\\u3092\\u8df3\\u8e8d\\u3057\\u3066\\\",\\n unicode\\\"\\u591c\\u6c7d\\u8eca\\u306e\\u7a93\\u3067\\\",\\n unicode\\\"\\u6625\\u306e\\u304f\\u308b\\u6642\\\",\\n unicode\\\"\\u6975\\u5149\\u5730\\u65b9\\u304b\\u3089\\\",\\n unicode\\\"\\u65b7\\u6a4b\\\",\\n unicode\\\"\\u904b\\u547d\\u3078\\u306e\\u5fcd\\u8fb1\\\",\\n unicode\\\"\\u5bc2\\u5be5\\u306e\\u5ddd\\u908a\\\",\\n unicode\\\"\\u8239\\u5ba4\\u304b\\u3089\\\",\\n unicode\\\"\\u8a18\\u61b6\\u3092\\u6368\\u3066\\u308b\\\",\\n unicode\\\"\\u60c5\\u7dd2\\u3088\\uff01\\u3000\\u541b\\u306f\\u6b78\\u3089\\u3056\\u308b\\u304b\\\",\\n unicode\\\"\\u6e2f\\u306e\\u96dc\\u8ca8\\u5e97\\u3067\\\",\\n unicode\\\"\\u93e1\\\",\\n unicode\\\"\\u72d0\\\",\\n unicode\\\"\\u5439\\u96ea\\u306e\\u4e2d\\u3067\\\",\\n unicode\\\"\\u9283\\u5668\\u5e97\\u306e\\u524d\\u3067\\\",\\n unicode\\\"\\u865a\\u6578\\u306e\\u864e\\\",\\n unicode\\\"\\u81ea\\u7136\\u306e\\u4e2d\\u3067\\\",\\n unicode\\\"\\u89f8\\u624b\\u3042\\u308b\\u7a7a\\u9593\\\",\\n unicode\\\"\\u5927\\u4f5b\\\",\\n unicode\\\"\\u5bb6\\\",\\n unicode\\\"\\u9ed2\\u3044\\u6d0b\\u5098\\\",\\n unicode\\\"\\u6050\\u308d\\u3057\\u304d\\u4eba\\u5f62\\u829d\\u5c45\\\",\\n unicode\\\"\\u9f52\\u3092\\u3082\\u3066\\u308b\\u610f\\u5fd7\\\",\\n unicode\\\"\\u5efa\\u7bc9\\u306e Nostalgia\\\",\\n unicode\\\"\\u7236\\\",\\n unicode\\\"\\u6575\\\",\\n unicode\\\"\\u7269\\u8cea\\u306e\\u611f\\u60c5\\\",\\n unicode\\\"\\u7269\\u9ad4\\\",\\n unicode\\\"\\u9f8d\\\",\\n unicode\\\"\\u6a4b\\\",\\n unicode\\\"\\u5c71\\u4e0a\\u306e\\u7948\\\",\\n unicode\\\"\\u6230\\u5834\\u3067\\u306e\\u5e7b\\u60f3\\\"\\n ];\\n\\n string[] public poemBodies = [\\n unicode\\\"\\u3042\\u3042\\u56fa\\u3044\\u6c37\\u3092\\u7834\\u3064\\u3066\\u7a81\\u9032\\u3059\\u308b\\u3001\\u4e00\\u3064\\u306e\\u5bc2\\u3057\\u3044\\u5e06\\u8239\\u3088\\u3002\\u3042\\u306e\\u9ad8\\u3044\\u7a7a\\u306b\\u3072\\u308b\\u304c\\u3078\\u308b\\u3001\\u6d6a\\u6d6a\\u306e\\u56fa\\u9ad4\\u3057\\u305f\\u5370\\u8c61\\u304b\\u3089\\u3001\\u305d\\u306e\\u9694\\u96e2\\u3057\\u305f\\u5730\\u65b9\\u306e\\u7269\\u4f98\\u3057\\u3044\\u51ac\\u306e\\u5149\\u7dda\\u304b\\u3089\\u3001\\u3042\\u306f\\u308c\\u306b\\u7164\\u307c\\u3051\\u3066\\u898b\\u3048\\u308b\\u5c0f\\u3055\\u306a\\u9ed2\\u3044\\u7375\\u9be8\\u8239\\u3088\\u3002\\u5b64\\u7368\\u306a\\u74b0\\u5883\\u306e\\u6d77\\u306b\\u6f02\\u6cca\\u3059\\u308b\\u8239\\u306e\\u7f85\\u91dd\\u304c\\u3001\\u4e00\\u3064\\u306e\\u92ed\\u3069\\u3044\\u610f\\u5fd7\\u306e\\u5c16\\u89d2\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u304c\\u3001\\u3042\\u3042\\u5982\\u4f55\\u306b\\u56fa\\u3044\\u51ac\\u306e\\u6c37\\u3092\\u7a81\\u304d\\u7834\\u3064\\u3066\\u9a40\\u9032\\u3059\\u308b\\u3053\\u3068\\u3088\\u3002\\\",\\n unicode\\\"\\u82e5\\u8349\\u306e\\u82bd\\u304c\\u840c\\u3048\\u308b\\u3084\\u3046\\u306b\\u3001\\u3053\\u306e\\u65e5\\u7576\\u308a\\u306e\\u3088\\u3044\\u829d\\u751f\\u306e\\u4e0a\\u3067\\u306f\\u3001\\u601d\\u60f3\\u304c\\u5f8c\\u304b\\u3089\\u5f8c\\u304b\\u3089\\u3068\\u6210\\u9577\\u3057\\u3066\\u304f\\u308b\\u3002\\u3051\\u308c\\u3069\\u3082\\u305d\\u308c\\u3089\\u306e\\u601d\\u60f3\\u306f\\u3001\\u79c1\\u306b\\u307e\\u3067\\u4f55\\u306e\\u4ea4\\u6e09\\u304c\\u3042\\u3089\\u3046\\u305e\\u3002\\u79c1\\u306f\\u305f\\u3060\\u9752\\u7a7a\\u3092\\u773a\\u3081\\u3066\\u5c45\\u305f\\u3044\\u3002\\u3042\\u306e\\u84bc\\u5929\\u306e\\u5922\\u306e\\u4e2d\\u306b\\u6eb6\\u3051\\u3066\\u3057\\u307e\\u3075\\u3084\\u3046\\u306a\\u3001\\u3055\\u3046\\u3044\\u3075\\u601d\\u60f3\\u306e\\u5e7b\\u60f3\\u3060\\u3051\\u3092\\u80b2\\u304f\\u307f\\u305f\\u3044\\u306e\\u3060\\u3002\\u79c1\\u81ea\\u8eab\\u306e\\u60c5\\u7dd2\\u306e\\u5f71\\u3067\\u3001\\u306a\\u3064\\u304b\\u3057\\u3044\\u7dd1\\u9670\\u306e\\u5922\\u3092\\u3064\\u304f\\u308b\\u3084\\u3046\\u306a\\u3001\\u305d\\u308c\\u3089\\u306e\\u300c\\u60c5\\u8abf\\u3042\\u308b\\u601d\\u60f3\\u300d\\u3060\\u3051\\u3092\\u8a9e\\u308a\\u305f\\u3044\\u306e\\u3060\\u3002\\u7a7a\\u98db\\u3076\\u5c0f\\u9ce5\\u3088\\u3002\\\",\\n unicode\\\"\\u3068\\u3042\\u308b\\u5e7b\\u71c8\\u306e\\u4e2d\\u3067\\u3001\\u9752\\u767d\\u3044\\u96ea\\u306e\\u964d\\u308a\\u3064\\u3082\\u3064\\u3066\\u3090\\u308b\\u3001\\u3057\\u3065\\u304b\\u306a\\u3057\\u3065\\u304b\\u306a\\u666f\\u8272\\u306e\\u4e2d\\u3067\\u3001\\u79c1\\u306f\\u4e00\\u3064\\u306e\\u771e\\u7406\\u3092\\u3064\\u304b\\u3093\\u3060\\u3002\\u7269\\u8a00\\u3075\\u3053\\u3068\\u306e\\u3067\\u304d\\u306a\\u3044\\u3001\\u6c38\\u9060\\u306b\\u6c38\\u9060\\u306b\\u3046\\u3089\\u60b2\\u3057\\u3052\\u306a\\u3001\\u79c1\\u306f\\u300c\\u820c\\u306e\\u306a\\u3044\\u771e\\u7406\\u300d\\u3092\\u611f\\u3058\\u305f\\u3002\\u666f\\u8272\\u306e\\u3001\\u5e7b\\u71c8\\u306e\\u3001\\u96ea\\u306e\\u3064\\u3082\\u308b\\u5f71\\u3092\\u904e\\u304e\\u53bb\\u3064\\u3066\\u884c\\u304f\\u3001\\u3055\\u3073\\u3057\\u3044\\u9752\\u732b\\u306e\\u50cf\\uff08\\u304b\\u305f\\u3061\\uff09\\u3092\\u304b\\u3093\\u3058\\u305f\\u3002\\\",\\n unicode\\\"\\u98a8\\u7434\\u306e\\u93ad\\u9b42\\u6a02\\uff08\\u308c\\u304f\\u308c\\u3048\\u3080\\uff09\\u3092\\u304d\\u304f\\u3084\\u3046\\u306b\\u3001\\u51a5\\u60f3\\u306e\\u539a\\u3044\\u58c1\\u306e\\u5f71\\u3067\\u3001\\u975c\\u304b\\u306b\\u6e67\\u304d\\u3042\\u304c\\u3064\\u3066\\u304f\\u308b\\u9ed2\\u3044\\u611f\\u60c5\\u3002\\u60c5\\u617e\\u306e\\u5f37\\u3044\\u60f1\\u307f\\u3092\\u6291\\u3078\\u3001\\u679c\\u6562\\u306a\\u3044\\u904b\\u547d\\u3078\\u306e\\u53db\\u9006\\u3084\\u3001\\u4f55\\u3068\\u3044\\u3075\\u3053\\u3068\\u3082\\u306a\\u3044\\u751f\\u6d3b\\u306e\\u6697\\u6101\\u3084\\u3001\\u3044\\u3089\\u3044\\u3089\\u3057\\u305f\\u5fc3\\u306e\\u7126\\u71e5\\u3084\\u3092\\u5fd8\\u308c\\u3055\\u305b\\u3001\\u5b89\\u3089\\u304b\\u306a\\u5b89\\u3089\\u304b\\u306a\\u5be2\\u81fa\\u306e\\u4e0a\\u3067\\u3001\\u9748\\u9b42\\u306e\\u6df1\\u307f\\u3042\\u308b\\u7720\\u308a\\u3092\\u3055\\u305d\\u3075\\u3084\\u3046\\u306a\\u3001\\u4e00\\u3064\\u306e\\u529b\\u3042\\u308b\\u975c\\u304b\\u306a\\u611f\\u60c5\\u3002\\u305d\\u308c\\u306f\\u751f\\u6d3b\\u306e\\u75b2\\u308c\\u305f\\u8584\\u66ae\\u306b\\u3001\\u97ff\\u677f\\u306e\\u920d\\u3044\\u3046\\u306a\\u308a\\u3092\\u305f\\u3066\\u308b\\u3001\\u5927\\u304d\\u306a\\u5e45\\u306e\\u3042\\u308b\\u975c\\u304b\\u306a\\u611f\\u60c5\\u3002\\u2015\\u2015\\u4f5b\\u9640\\u306e\\u6559\\u3078\\u305f\\u6148\\u60b2\\u306e\\u54f2\\u5b78\\uff01\\\",\\n unicode\\\"\\u7267\\u5834\\u306e\\u725b\\u304c\\u8349\\u3092\\u98df\\u3064\\u3066\\u3090\\u308b\\u306e\\u3092\\u307f\\u3066\\u3001\\u9591\\u6563\\u3084\\u6020\\u60f0\\u306e\\u8da3\\u5473\\u3092\\u89e3\\u3057\\u306a\\u3044\\u307b\\u3069\\u3001\\u305d\\u308c\\u307b\\u3069\\u8fd1\\u4ee3\\u7684\\u306b\\u306a\\u3064\\u3066\\u3057\\u307e\\u3064\\u305f\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u4eba\\u4eba\\u306b\\u307e\\u3067\\u3001\\u79c1\\u306f\\u3044\\u304b\\u306a\\u308b\\u6703\\u8a71\\u3092\\u3082\\u3055\\u3051\\u308b\\u3067\\u3042\\u3089\\u3046\\u3002\\u79c1\\u306e\\u808c\\u306b\\u3057\\u307f\\u8fbc\\u3093\\u3067\\u304f\\u308b\\u3001\\u3053\\u306e\\u79cb\\u65e5\\u548c\\u306e\\u7269\\u5026\\u3044\\u7720\\u305f\\u3055\\u306b\\u5c31\\u3044\\u3066\\u3001\\u3053\\u306e\\u53e4\\u98a8\\u306a\\u308b\\u79c1\\u306e\\u601d\\u60f3\\u306e\\u60c5\\u8abf\\u306b\\u5c31\\u3044\\u3066\\u3001\\u3053\\u306e\\u4e0a\\u3082\\u306f\\u3084\\u8a9e\\u3089\\u306a\\u3044\\u3067\\u3042\\u3089\\u3046\\u3002\\\",\\n unicode\\\"\\u6182\\u9b31\\u306b\\u6c88\\u307f\\u306a\\u304c\\u3089\\u3001\\u3072\\u3068\\u308a\\u5bc2\\u3057\\u304f\\u9678\\u6a4b\\u3092\\u6e21\\u3064\\u3066\\u884c\\u304f\\u3002\\u304b\\u3064\\u3066\\u4f55\\u7269\\u306b\\u3055\\u3078\\u59a5\\u5354\\u305b\\u3056\\u308b\\u3001\\u4f55\\u7269\\u306b\\u3055\\u3078\\u5b89\\u6613\\u305b\\u3056\\u308b\\u3001\\u3053\\u306e\\u4e00\\u3064\\u306e\\u611f\\u60c5\\u3092\\u3069\\u3053\\u3078\\u884c\\u304b\\u3046\\u304b\\u3002\\u843d\\u65e5\\u306f\\u5730\\u5e73\\u306b\\u4f4e\\u304f\\u3001\\u74b0\\u5883\\u306f\\u6012\\u308a\\u306b\\u71c3\\u3048\\u3066\\u308b\\u3002\\u4e00\\u5207\\u3092\\u618e\\u60e1\\u3057\\u3001\\u7c89\\u788e\\u3057\\u3001\\u53db\\u9006\\u3057\\u3001\\u5632\\u7b11\\u3057\\u3001\\u65ac\\u5978\\u3057\\u3001\\u6575\\u613e\\u3059\\u308b\\u3001\\u3053\\u306e\\u4e00\\u500b\\u306e\\u9ed2\\u3044\\u5f71\\u3092\\u30de\\u30f3\\u30c8\\u306b\\u3064\\u3064\\u3093\\u3067\\u3001\\u3072\\u3068\\u308a\\u5bc2\\u3057\\u304f\\u9678\\u6a4b\\u3092\\u6e21\\u3064\\u3066\\u884c\\u304f\\u3002\\u304b\\u306e\\u9ad8\\u3044\\u67b6\\u7a7a\\u306e\\u6a4b\\u3092\\u8d8a\\u3048\\u3066\\u3001\\u306f\\u308b\\u304b\\u306e\\u5e7b\\u71c8\\u306e\\u5e02\\u8857\\u306b\\u307e\\u3067\\u3002\\\",\\n unicode\\\"\\u3053\\u308c\\u3089\\u306e\\u5915\\u66ae\\u306f\\u6d99\\u3050\\u307e\\u3057\\u304f\\u3001\\u79c1\\u306e\\u66f8\\u9f4b\\u306b\\u8a2a\\u308c\\u3066\\u304f\\u308b\\u3002\\u601d\\u60f3\\u306f\\u60c5\\u8abf\\u306e\\u5f71\\u306b\\u306c\\u308c\\u3066\\u3001\\u611f\\u3058\\u306e\\u3088\\u3044\\u6e29\\u96c5\\u306e\\u8272\\u5408\\u3092\\u5e36\\u3073\\u3066\\u898b\\u3048\\u308b\\u3002\\u3042\\u3042\\u3044\\u304b\\u306b\\u4eca\\u306e\\u79c1\\u306b\\u307e\\u3067\\u3001\\u4e00\\u3064\\u306e\\u60e0\\u307e\\u308c\\u305f\\u5fb3\\u306f\\u306a\\u3044\\u304b\\u3002\\u4f55\\u7269\\u306e\\u5351\\u52a3\\u306b\\u3059\\u3089\\u3001\\u4f55\\u7269\\u306e\\u865a\\u50de\\u306b\\u3059\\u3089\\u3001\\u3042\\u3078\\u3066\\u9ad8\\u8cb4\\u306e\\u5bdb\\u5bb9\\u3092\\u793a\\u3057\\u5f97\\u308b\\u3084\\u3046\\u306a\\u3001\\u4e00\\u3064\\u306e\\u7a69\\u3084\\u304b\\u306b\\u3057\\u3066\\u9591\\u96c5\\u306a\\u308b\\u5fb3\\u306f\\u306a\\u3044\\u304b\\u3002\\u2015\\u2015\\u79c1\\u3092\\u3057\\u3066\\u7368\\u308a\\u5bc2\\u3057\\u304f\\u3001\\u4eca\\u65e5\\u306e\\u5915\\u66ae\\u306e\\u7a7a\\u306b\\u9ed8\\u601d\\u305b\\u3057\\u3081\\u3088\\u3002\\\",\\n unicode\\\"\\u305f\\u3057\\u304b\\u306b\\u79c1\\u306f\\u3001\\u3042\\u308b\\u4e00\\u3064\\u306e\\u7279\\u7570\\u306a\\u624d\\u80fd\\u3092\\u6301\\u3064\\u3066\\u3090\\u308b\\u3002\\u3051\\u308c\\u3069\\u3082\\u305d\\u308c\\u304c\\u4e01\\u5ea6\\u3042\\u3066\\u306f\\u307e\\u308b\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u3084\\u3046\\u306a\\u3001\\u3069\\u3093\\u306a\\u7279\\u5225\\u306a\\u300c\\u4ed5\\u4e8b\\u300d\\u3082\\u4eca\\u65e5\\u306e\\u5730\\u7403\\u306e\\u4e0a\\u306b\\u6709\\u308a\\u306f\\u3057\\u306a\\u3044\\u3002\\u3080\\u3057\\u308d\\u79c1\\u3092\\u3057\\u3066\\u3001\\u5730\\u7403\\u3092\\u9060\\u304f\\u5708\\u5916\\u306b\\u8df3\\u8e8d\\u305b\\u3057\\u3081\\u3088\\u3002\\\",\\n unicode\\\"\\u591c\\u6c7d\\u8eca\\u306e\\u4e2d\\u3067\\u3001\\u96fb\\u71c8\\u306f\\u6697\\u304f\\u3001\\u6c88\\u9b31\\u3057\\u305f\\u7a7a\\u6c23\\u306e\\u4e2d\\u3067\\u3001\\u4eba\\u4eba\\u306f\\u6df1\\u3044\\u7720\\u308a\\u306b\\u843d\\u3061\\u3066\\u3090\\u308b\\u3002\\u4e00\\u4eba\\u8d77\\u304d\\u3066\\u7a93\\u3092\\u3072\\u3089\\u3051\\u3070\\u3001\\u591c\\u98a8\\u306f\\u3064\\u3081\\u305f\\u304f\\u808c\\u306b\\u3075\\u308c\\u3001\\u95c7\\u591c\\u306e\\u6697\\u9ed2\\u306a\\u91ce\\u539f\\u3092\\u98db\\u3076\\u3001\\u3057\\u304d\\u308a\\u306b\\u98db\\u3076\\u706b\\u87f2\\u3092\\u307f\\u308b\\u3002\\u3042\\u3042\\u3053\\u306e\\u771e\\u3064\\u6697\\u306a\\u6050\\u308d\\u3057\\u3044\\u666f\\u8272\\u3092\\u8cab\\u901a\\u3059\\u308b\\uff01\\u3000\\u6df1\\u591c\\u306e\\u8f5f\\u8f5f\\u3068\\u3044\\u3075\\u97ff\\u306e\\u4e2d\\u3067\\u3001\\u3044\\u3065\\u3053\\u3078\\u3001\\u3044\\u3065\\u3053\\u3078\\u3001\\u79c1\\u306e\\u591c\\u6c7d\\u8eca\\u306f\\u884c\\u304b\\u3046\\u3068\\u3059\\u308b\\u306e\\u304b\\u3002\\\",\\n unicode\\\"\\u6247\\u3082\\u3064\\u82e5\\u3044\\u5a18\\u3089\\u3001\\u6625\\u306e\\u5c4f\\u98a8\\u306e\\u524d\\u306b\\u5c45\\u3066\\u3001\\u541b\\u306e\\u3057\\u306a\\u3084\\u304b\\u306a\\u80a9\\u3092\\u3059\\u3079\\u3089\\u305b\\u3001\\u8276\\u3081\\u304b\\u3057\\u3044\\u66f2\\u7dda\\u306f\\u8db3\\u306b\\u304b\\u3089\\u3080\\u3002\\u6247\\u3082\\u3064\\u82e5\\u3044\\u5a18\\u3089\\u3001\\u541b\\u306e\\u7b11\\u984f\\u306b\\u60c5\\u3092\\u3075\\u304f\\u3081\\u3088\\u3001\\u6625\\u306f\\u4f86\\u3089\\u3093\\u3068\\u3059\\u3002\\\",\\n unicode\\\"\\u6d77\\u8c79\\uff08\\u3042\\u3056\\u3089\\u3057\\uff09\\u306e\\u3084\\u3046\\u306b\\u3001\\u6975\\u5149\\u306e\\u898b\\u3048\\u308b\\u6c37\\u306e\\u4e0a\\u3067\\u3001\\u307c\\u3093\\u3084\\u308a\\u3068\\u300c\\u81ea\\u5206\\u3092\\u5fd8\\u308c\\u3066\\u300d\\u5750\\u3064\\u3066\\u3090\\u305f\\u3044\\u3002\\u305d\\u3053\\u306b\\u6642\\u52ab\\u304c\\u3059\\u304e\\u53bb\\u3064\\u3066\\u884c\\u304f\\u3002\\u665d\\u591c\\u306e\\u306a\\u3044\\u6975\\u5149\\u5730\\u65b9\\u306e\\u3001\\u3044\\u3064\\u3082\\u66ae\\u308c\\u65b9\\u306e\\u3084\\u3046\\u306a\\u5149\\u7dda\\u304c\\u3001\\u920d\\u304f\\u60b2\\u3057\\u3052\\u306b\\u5e7d\\u6ec5\\u3059\\u308b\\u3068\\u3053\\u308d\\u3002\\u3042\\u3042\\u305d\\u306e\\u9060\\u3044\\u5317\\u6975\\u5708\\u306e\\u6c37\\u306e\\u4e0a\\u3067\\u3001\\u307c\\u3093\\u3084\\u308a\\u3068\\u6d77\\u8c79\\u306e\\u3084\\u3046\\u306b\\u5750\\u3064\\u3066\\u5c45\\u305f\\u3044\\u3002\\u6c38\\u9060\\u306b\\u3001\\u6c38\\u9060\\u306b\\u3001\\u81ea\\u5206\\u3092\\u5fd8\\u308c\\u3066\\u3001\\u601d\\u60df\\u306e\\u307b\\u306e\\u6697\\u3044\\u6d77\\u306b\\u6d6e\\u3076\\u3001\\u4e00\\u3064\\u306e\\u4f98\\u3057\\u3044\\u5e7b\\u8c61\\u3092\\u773a\\u3081\\u3066\\u5c45\\u305f\\u3044\\u306e\\u3067\\u3059\\u3002\\\",\\n unicode\\\"\\u591c\\u9053\\u3092\\u8d70\\u308b\\u6c7d\\u8eca\\u307e\\u3067\\u3001\\u4e00\\u3064\\u306e\\u8d64\\u3044\\u71c8\\u706b\\u3092\\u793a\\u305b\\u3088\\u3002\\u4eca\\u305d\\u3053\\u306b\\u5371\\u96aa\\u304c\\u3042\\u308b\\u3002\\u65b7\\u6a4b\\uff01\\u3000\\u65b7\\u6a4b\\uff01\\u3000\\u3042\\u3042\\u60b2\\u9cf4\\u306f\\u98a8\\u3092\\u3064\\u3093\\u3056\\u304f\\u3002\\u3060\\u308c\\u304c\\u305d\\u308c\\u3092\\u77e5\\u308b\\u304b\\u3002\\u7cbe\\u795e\\u306f\\u95c7\\u306e\\u66e0\\u91ce\\u3092\\u3072\\u305f\\u8d70\\u308b\\u3002\\u6025\\u884c\\u3057\\u3001\\u6025\\u884c\\u3057\\u3001\\u6025\\u884c\\u3057\\u3001\\u5f7c\\u306e\\u60b2\\u5287\\u306e\\u7d42\\u9a5b\\u3078\\u3068\\u3002\\\",\\n unicode\\\"\\u3068\\u306f\\u3044\\u3078\\u74b0\\u5883\\u306e\\u95c7\\u3092\\u7a81\\u7834\\u3059\\u3079\\u304d\\u3001\\u3069\\u3093\\u306a\\u529b\\u304c\\u305d\\u3053\\u306b\\u3042\\u308b\\u304b\\u3002\\u9f52\\u304c\\u307f\\u3066\\u3053\\u3089\\u3078\\u3088\\u3002\\u3053\\u3089\\u3078\\u3088\\u3002\\u3053\\u3089\\u3078\\u3088\\u3002\\\",\\n unicode\\\"\\u53e4\\u9a5b\\u306e\\u3001\\u67f3\\u306e\\u3042\\u308b\\u5ddd\\u306e\\u5cb8\\u3067\\u3001\\u304b\\u308c\\u306f\\u4f55\\u3092\\u91e3\\u3089\\u3046\\u3068\\u3059\\u308b\\u306e\\u304b\\u3002\\u3084\\u304c\\u3066\\u751f\\u6d3b\\u306e\\u8584\\u66ae\\u304c\\u304f\\u308b\\u307e\\u3067\\u3001\\u305d\\u3093\\u306a\\u306b\\u3082\\u9577\\u3044\\u9593\\u3001\\u91dd\\u306e\\u306a\\u3044\\u91e3\\u7aff\\u3067\\u2026\\u2026\\u3002\\u300c\\u5426\\u300d\\u3068\\u305d\\u306e\\u652f\\u90a3\\u4eba\\u304c\\u7b54\\u3078\\u305f\\u3002\\u300c\\u9b5a\\u306e\\u7f8e\\u3057\\u304f\\u8d70\\u308b\\u3092\\u773a\\u3081\\u3088\\u3001\\u6c34\\u306e\\u975c\\u304b\\u306b\\u884c\\u304f\\u3092\\u773a\\u3081\\u3088\\u3002\\u3044\\u304b\\u306b\\u541b\\u306f\\u3053\\u306e\\u975c\\u8b10\\u3092\\u597d\\u307e\\u306a\\u3044\\u304b\\u3002\\u3053\\u306e\\u98a8\\u666f\\u306e\\u8070\\u660e\\u306a\\u60c5\\u8da3\\u3092\\u3002\\u3080\\u3057\\u308d\\u79c1\\u306f\\u3001\\u7d42\\u65e5\\u91e3\\u308a\\u5f97\\u306a\\u3044\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u3053\\u3068\\u3092\\u5e0c\\u671b\\u3057\\u3066\\u3090\\u308b\\u3002\\u3055\\u308c\\u3070\\u65e5\\u7576\\u308a\\u597d\\u3044\\u5bc2\\u5be5\\u306e\\u5cb8\\u908a\\u306b\\u5750\\u3057\\u3066\\u3001\\u79c1\\u306e\\u3069\\u3093\\u306a\\u74b0\\u5883\\u3092\\u3082\\u4e82\\u3059\\u306a\\u304b\\u308c\\u3002\\u300d\\\",\\n unicode\\\"\\u5d50\\u3001\\u5d50\\u3001\\u6d6a\\u3001\\u6d6a\\u3001\\u5927\\u6d6a\\u3001\\u5927\\u6d6a\\u3001\\u5927\\u6d6a\\u3002\\u50be\\u3080\\u304f\\u5730\\u5e73\\u7dda\\u3001\\u4e0a\\u6607\\u3059\\u308b\\u5730\\u5e73\\u7dda\\u3001\\u843d\\u3061\\u304f\\u308b\\u5730\\u5e73\\u7dda\\u3002\\u304c\\u3061\\u3084\\u304c\\u3061\\u3084\\u3001\\u304c\\u3061\\u3084\\u304c\\u3061\\u3084\\u3002\\u4e0a\\u7532\\u677f\\u3078\\u3001\\u4e0a\\u7532\\u677f\\u3078\\u3002\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3092\\u5377\\u3051\\u3001\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3092\\u5377\\u3051\\u3002\\u7a81\\u9032\\u3059\\u308b\\u3001\\u7a81\\u9032\\u3059\\u308b\\u6c34\\u592b\\u3089\\u3002\\u8239\\u5ba4\\u306e\\u7a93\\u3001\\u7a93\\u3001\\u7a93\\u3001\\u7a93\\u3002\\u50be\\u3080\\u304f\\u5730\\u5e73\\u7dda\\u3001\\u4e0a\\u6607\\u3059\\u308b\\u5730\\u5e73\\u7dda\\u3002\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3001\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3001\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3002\\u98a8\\u3001\\u98a8\\u3001\\u98a8\\u3002\\u6c34\\u3001\\u6c34\\u3001\\u6c34\\u3002\\u8239\\u7a93\\uff08\\u30cf\\u30c4\\u30c1\\uff09\\u3092\\u9589\\u3081\\u308d\\u3002\\u8239\\u7a93\\uff08\\u30cf\\u30c4\\u30c1\\uff09\\u3092\\u9589\\u3081\\u308d\\u3002\\u53f3\\u8237\\u3078\\u3001\\u5de6\\u8237\\u3078\\u3002\\u6d6a\\u3001\\u6d6a\\u3001\\u6d6a\\u3002\\u307b\\u3072\\u3086\\u30fc\\u308b\\u3002\\u307b\\u3072\\u3086\\u30fc\\u308b\\u3002\\u307b\\u3072\\u3086\\u30fc\\u308b\\u3002\\\",\\n unicode\\\"\\u68ee\\u304b\\u3089\\u304b\\u3078\\u308b\\u3068\\u304d\\u3001\\u79c1\\u306f\\u5e3d\\u5b50\\u3092\\u306c\\u304e\\u3059\\u3066\\u305f\\u3002\\u3042\\u3042\\u3001\\u8a18\\u61b6\\u3002\\u6050\\u308d\\u3057\\u304f\\u7834\\u308c\\u3061\\u304e\\u3064\\u305f\\u8a18\\u61b6\\u3002\\u307f\\u3058\\u3081\\u306a\\u3001\\u6ce5\\u6c34\\u306e\\u4e2d\\u306b\\u8150\\u3064\\u305f\\u8a18\\u61b6\\u3002\\u3055\\u3073\\u3057\\u3044\\u96e8\\u666f\\u306e\\u9053\\u306b\\u3075\\u308b\\u3078\\u308b\\u79c1\\u306e\\u5e3d\\u5b50\\u3002\\u80cc\\u5f8c\\u306b\\u6368\\u3066\\u3066\\u884c\\u304f\\u3002\\\",\\n unicode\\\"\\u66f8\\u751f\\u306f\\u753a\\u306b\\u884c\\u304d\\u3001\\u5de5\\u5834\\u306e\\u4e0b\\u3092\\u901a\\u308a\\u3001\\u6a5f\\u95dc\\u8eca\\u306e\\u9cf4\\u308b\\u97ff\\u3092\\u807d\\u3044\\u305f\\u3002\\u706b\\u592b\\u306e\\u8d70\\u308a\\u3001\\u8eca\\u8f2a\\u306e\\u5efb\\u308a\\u3001\\u7fa4\\u9d09\\u306e\\u55a7\\u865f\\u3059\\u308b\\u5df7\\u306e\\u4e2d\\u3067\\u3001\\u306f\\u3084\\u4e00\\u3064\\u306e\\u80e1\\u5f13\\u306f\\u8377\\u9020\\u3055\\u308c\\u3001\\u8ca8\\u8eca\\u306b\\u7a4d\\u307e\\u308c\\u3001\\u3055\\u3046\\u3057\\u3066\\u6e2f\\u306e\\u5009\\u5eab\\u306e\\u65b9\\u3078\\u3001\\u7a0e\\u95dc\\u306e\\u9580\\u3092\\u304f\\u3050\\u3064\\u3066\\u884c\\u3064\\u305f\\u3002
\\u5341\\u6708\\u4e0b\\u65ec\\u3002\\u66f8\\u751f\\u306f\\u98ef\\u3092\\u98df\\u306f\\u3046\\u3068\\u3057\\u3066\\u3001\\u67af\\u308c\\u305f\\u829d\\u8349\\u306e\\u5009\\u5eab\\u306e\\u5f71\\u306b\\u3001\\u97f3\\u6a02\\u306e\\u5fcd\\u3073\\u5c45\\u308a\\u3001\\u87cb\\u87c0\\u306e\\u3084\\u3046\\u306b\\u9cf4\\u304f\\u306e\\u3092\\u807d\\u3044\\u305f\\u3002
\\u2015\\u2015\\u60c5\\u7dd2\\u3088\\u3001\\u541b\\u306f\\u6b78\\u3089\\u3056\\u308b\\u304b\\u3002\\\",\\n unicode\\\"\\u3053\\u306e\\u92cf\\u306e\\u69d3\\u529b\\u3067\\u3082\\u3001\\u5973\\u306e\\u9306\\u3073\\u3064\\u3044\\u305f\\u9285\\u724c\\uff08\\u30e1\\u30c0\\u30eb\\uff09\\u304c\\u5207\\u308c\\u306a\\u3044\\u306e\\u304b\\u3002\\u6c34\\u592b\\u3088\\uff01\\u3000\\u6c5d\\u306e\\u96b1\\u8863\\uff08\\u304b\\u304f\\u3057\\uff09\\u306e\\u9322\\u3092\\u304b\\u305e\\u3078\\u3066\\u3001\\u7121\\u7528\\u306e\\u60c5\\u71b1\\u3092\\u6368\\u3066\\u3066\\u3057\\u307e\\u3078\\uff01\\\",\\n unicode\\\"\\u93e1\\u306e\\u3046\\u3057\\u308d\\u3078\\u5efb\\u3064\\u3066\\u307f\\u3066\\u3082\\u3001\\u300c\\u79c1\\u300d\\u306f\\u305d\\u3053\\u306b\\u5c45\\u306a\\u3044\\u306e\\u3067\\u3059\\u3088\\u3002\\u304a\\u5b43\\u3055\\u3093\\uff01\\\",\\n unicode\\\"\\u898b\\u3088\\uff01\\u3000\\u5f7c\\u306f\\u98a8\\u306e\\u3084\\u3046\\u306b\\u4f86\\u308b\\u3002\\u305d\\u306e\\u984d\\u306f\\u6182\\u9b31\\u306b\\u9752\\u3056\\u3081\\u3066\\u3090\\u308b\\u3002\\u8033\\u306f\\u3059\\u308b\\u3069\\u304f\\u5207\\u3064\\u7acb\\u3061\\u3001\\u307e\\u306a\\u3058\\u308a\\u306f\\u6012\\u306b\\u88c2\\u3051\\u3066\\u3090\\u308b\\u3002
\\u541b\\u3088\\uff01\\u3000\\u72e1\\u667a\\uff08\\u30fb\\u30fb\\uff09\\u306e\\u304b\\u304f\\u306e\\u5982\\u304d\\u7f8e\\u3057\\u304d\\u8868\\u60c5\\u3092\\u3069\\u3053\\u306b\\u898b\\u305f\\u304b\\u3002\\\",\\n unicode\\\"\\u55ae\\u306b\\u5b64\\u7368\\u3067\\u3042\\u308b\\u3070\\u304b\\u308a\\u3067\\u306a\\u3044\\u3002\\u6575\\u3092\\u4ee5\\u3066\\u5145\\u305f\\u3055\\u308c\\u3066\\u3090\\u308b\\uff01\\\",\\n unicode\\\"\\u660e\\u308b\\u3044\\u785d\\u5b50\\u6238\\u306e\\u5e97\\u306e\\u4e2d\\u3067\\u3001\\u4e00\\u3064\\u306e\\u78e8\\u304b\\u308c\\u305f\\u9283\\u5668\\u3055\\u3078\\u3082\\u3001\\u706b\\u85e5\\u3092\\u88dd\\u586b\\u3057\\u3066\\u306a\\u3044\\u306e\\u3067\\u3042\\u308b\\u3002\\u2015\\u2015\\u4f55\\u305f\\u308b\\u865a\\u5984\\u305e\\u3002\\u61f6\\u723e\\uff08\\u3089\\u3093\\u3058\\uff09\\u3068\\u3057\\u3066\\u7b11\\u3078\\uff01\\\",\\n unicode\\\"\\u535a\\u5f92\\u7b49\\u96c6\\u307e\\u308a\\u3001\\u6295\\u3052\\u3064\\u3051\\u3089\\u308c\\u305f\\u308b\\u751f\\u6daf\\u306e\\u6a5f\\u56e0\\uff08\\u30c1\\u30e4\\u30f3\\u30b9\\uff09\\u306e\\u4e0a\\u3067\\u3001\\u865a\\u6578\\u306e\\u60c5\\u71b1\\u3092\\u8ced\\u3051\\u5408\\u3064\\u3066\\u3090\\u308b\\u3002\\u307f\\u306a\\u5147\\u66b4\\u306e\\u3064\\u3089\\u9b42\\uff08\\u3060\\u307e\\u3057\\u3072\\uff09\\u3002\\u4ec1\\u7fa9\\uff08\\u3058\\u3093\\u304e\\uff09\\u3092\\u69cb\\u3078\\u3001\\u864e\\u306e\\u3084\\u3046\\u306a\\u7a7a\\u6d1e\\u306b\\u5c45\\u308b\\u3002\\\",\\n unicode\\\"\\u8352\\u5be5\\u3068\\u3057\\u305f\\u5c71\\u306e\\u4e2d\\u8179\\u3067\\u3001\\u58c1\\u306e\\u3084\\u3046\\u306b\\u6c88\\u9ed8\\u3057\\u3066\\u3090\\u308b\\u3001\\u4e00\\u306e\\u5de8\\u5927\\u306a\\u308b\\u8033\\u3092\\u898b\\u305f\\u3002\\\",\\n unicode\\\"\\u5bbf\\u547d\\u7684\\u306a\\u308b\\u6771\\u6d0b\\u306e\\u5efa\\u7bc9\\u306f\\u3001\\u305d\\u306e\\u5c4b\\u6839\\u306e\\u4e0b\\u3067\\u5fcd\\u5f9e\\u3057\\u306a\\u304c\\u3089\\u3001\\u750d\\uff08\\u3044\\u3089\\u304b\\uff09\\u306b\\u65bc\\u3066\\u6012\\u308a\\u7acb\\u3064\\u3066\\u3090\\u308b\\u3002\\\",\\n unicode\\\"\\u305d\\u306e\\u5185\\u90e8\\u306b\\u69cb\\u9020\\u306e\\u652f\\u67f1\\u3092\\u6301\\u3061\\u3001\\u6697\\u3044\\u68af\\u5b50\\u3068\\u7d93\\u6587\\u3092\\u85cf\\u3059\\u308b\\u4f5b\\u9640\\u3088\\uff01\\u3000\\u6d77\\u3088\\u308a\\u3082\\u9060\\u304f\\u3001\\u4eba\\u755c\\u306e\\u4f4f\\u3080\\u4e16\\u754c\\u3092\\u8d8a\\u3048\\u3066\\u3001\\u6307\\u306e\\u3084\\u3046\\u306b\\u5c28\\u5927\\u306a\\u308c\\uff01\\\",\\n unicode\\\"\\u4eba\\u304c\\u5bb6\\u306e\\u4e2d\\u306b\\u4f4f\\u3093\\u3067\\u308b\\u306e\\u306f\\u3001\\u5730\\u4e0a\\u306e\\u60b2\\u3057\\u3044\\u98a8\\u666f\\u3067\\u3042\\u308b\\u3002\\\",\\n unicode\\\"\\u6182\\u9b31\\u306e\\u9577\\u3044\\u67c4\\u304b\\u3089\\u3001\\u96e8\\u304c\\u3057\\u3068\\u3057\\u3068\\u3068\\u6ef4\\uff08\\u3057\\u3065\\u304f\\uff09\\u3092\\u3057\\u3066\\u3090\\u308b\\u3002\\u771e\\u9ed2\\u306e\\u5927\\u304d\\u306a\\u6d0b\\u5098\\uff01\\\",\\n unicode\\\"\\u7406\\u9aee\\u5e97\\u306e\\u9752\\u3044\\u7a93\\u304b\\u3089\\u3001\\u8471\\u306e\\u3084\\u3046\\u306b\\u7a81\\u304d\\u51fa\\u3059\\u68cd\\u68d2\\u3002\\u305d\\u3044\\u3064\\u306e\\u99ac\\u9e7f\\u3089\\u3057\\u3044\\u6a5f\\u68b0\\u4ed5\\u639b\\u3067\\u3001\\u5922\\u4e2d\\u306b\\u306a\\u3050\\u3089\\u308c\\u3001\\u306a\\u3050\\u3089\\u308c\\u3066\\u5c45\\u308b\\u3002\\\",\\n unicode\\\"\\u610f\\u5fd7\\uff01\\u3000\\u305d\\u306f\\u5915\\u66ae\\u306e\\u6d77\\u3088\\u308a\\u3057\\u3066\\u3001\\u9c76\\u306e\\u5982\\u304f\\u306b\\u6cf3\\u304e\\u4f86\\u308a\\u3001\\u9f52\\u3092\\u4ee5\\u3066\\u8089\\u306b\\u565b\\u307f\\u3064\\u3051\\u308a\\u3002\\\",\\n unicode\\\"\\u5efa\\u7bc9\\u2015\\u2015\\u7279\\u306b\\u7fa4\\u5718\\u3057\\u305f\\u5efa\\u7bc9\\u2015\\u2015\\u306e\\u6a23\\u5f0f\\u306f\\u3001\\u7a7a\\u306e\\u7a79\\u7abf\\u306b\\u5c0d\\u3057\\u3066\\u69cb\\u60f3\\u3055\\u308c\\u306d\\u3070\\u306a\\u3089\\u306c\\u3002\\u5373\\u3061\\u5207\\u65b7\\u3055\\u308c\\u305f\\u308b\\u7403\\u306e\\u5f27\\u5f62\\u306b\\u5c0d\\u3057\\u3066\\u3001\\u69cd\\u72b6\\u306e\\u5782\\u76f4\\u7dda\\u3084\\u3001\\u5713\\u9310\\u5f62\\u3084\\u306e\\u4ea4\\u932f\\u305b\\u308b\\u69cb\\u60f3\\u3092\\u7528\\u610f\\u3059\\u3079\\u304d\\u3067\\u3042\\u308b\\u3002
\\u3053\\u306e\\u84bc\\u7a7a\\u306e\\u4e0b\\u306b\\u65bc\\u3051\\u308b\\u3001\\u9060\\u65b9\\u306e\\u90fd\\u6703\\u306e\\u5370\\u8c61\\u3068\\u3057\\u3066\\u3001\\u304a\\u307b\\u3080\\u306d\\u306e\\u5efa\\u7bc9\\u306f\\u4e00\\u3064\\u306e\\u91cd\\u8981\\u306a\\u610f\\u5320\\u3092\\u5fd8\\u308c\\u3066\\u3090\\u308b\\u3002\\\",\\n unicode\\\"\\u7236\\u306f\\u6c38\\u9060\\u306b\\u60b2\\u58ef\\u3067\\u3042\\u308b\\u3002\\\",\\n unicode\\\"\\u6575\\u306f\\u5e38\\u306b\\u54c4\\u7b11\\u3057\\u3066\\u3090\\u308b\\u3002\\u3055\\u3046\\u3067\\u3082\\u306a\\u3051\\u308c\\u3070\\u3001\\u4f55\\u8005\\u306e\\u8868\\u8c61\\u304c\\u6012\\u3089\\u305b\\u308b\\u306e\\u304b\\uff1f\\\",\\n unicode\\\"\\u6a5f\\u68b0\\u4eba\\u9593\\u306b\\u3082\\u3057\\u611f\\u60c5\\u304c\\u3042\\u308b\\u3068\\u3059\\u308c\\u3070\\uff1f\\u3000\\u7121\\u9650\\u306e\\u54c0\\u50b7\\u306e\\u307b\\u304b\\u306e\\u4f55\\u8005\\u3067\\u3082\\u306a\\u3044\\u3002\\\",\\n unicode\\\"\\u79c1\\u304c\\u3082\\u3057\\u7269\\u9ad4\\u3067\\u3042\\u3089\\u3046\\u3068\\u3082\\u3001\\u795e\\u306f\\u518d\\u5ea6\\u6717\\u3089\\u304b\\u306b\\u7b11\\u3072\\u306f\\u3057\\u306a\\u3044\\u3002\\u3042\\u3042\\u3001\\u7434\\u306e\\u97f3\\u304c\\u807d\\u3048\\u3066\\u4f86\\u308b\\u3002\\u2015\\u2015\\u5c0f\\u3055\\u306a\\u4e00\\u3064\\u306e\\u502b\\u7406\\uff08\\u30e2\\u30e9\\u30eb\\uff09\\u304c\\u3001\\u55aa\\u5931\\u3057\\u3066\\u3057\\u307e\\u3064\\u305f\\u306e\\u3060\\u3002\\\",\\n unicode\\\"\\u9f8d\\u306f\\u5e1d\\u738b\\u306e\\u6b32\\u671b\\u3092\\u8c61\\u5fb4\\u3057\\u3066\\u3090\\u308b\\u3002\\u6b0a\\u529b\\u306e\\u7965\\u96f2\\u306b\\u4e58\\u3064\\u3066\\u5c45\\u306a\\u304c\\u3089\\u3001\\u5e38\\u306b\\u61a4\\u307b\\u308d\\u3057\\u3044\\u605a\\u6012\\u306b\\u71c3\\u3048\\u3001\\u4e0d\\u65b7\\u306e\\u722d\\u9b2a\\u306e\\u305f\\u3081\\u306b\\u7259\\u3092\\u3080\\u3044\\u3066\\u308b\\u3002\\\",\\n unicode\\\"\\u3059\\u3079\\u3066\\u306e\\u6a4b\\u306f\\u3001\\u4e00\\u3064\\u306e\\u5efa\\u7bc9\\u610f\\u5320\\u3057\\u304b\\u6301\\u3064\\u3066\\u3090\\u306a\\u3044\\u3002\\u6642\\u9593\\u3092\\u7a7a\\u9593\\u306e\\u4e0a\\u306b\\u67b6\\u3051\\u3001\\u6216\\u308b\\u5922\\u5e7b\\u7684\\u306a\\u4e00\\u3064\\u306e\\u89c0\\u5ff5\\uff08\\u30a4\\u30c7\\u30a2\\uff09\\u3092\\u3001\\u73fe\\u5be6\\u7684\\u306b\\u8fa8\\u8b49\\u3059\\u308b\\u3053\\u3068\\u306e\\u71b1\\u610f\\u3067\\u3042\\u308b\\u3002
\\u6a4b\\u3068\\u306f\\u2015\\u2015\\u5922\\u3092\\u67b6\\u7a7a\\u3057\\u305f\\u6578\\u5b78\\u3067\\u3042\\u308b\\u3002\\\",\\n unicode\\\"\\u591a\\u304f\\u306e\\u5148\\u5929\\u7684\\u306e\\u8a69\\u4eba\\u3084\\u85dd\\u8853\\u5bb6\\u7b49\\u306f\\u3001\\u5f7c\\u7b49\\u306e\\u5bbf\\u547d\\u3065\\u3051\\u3089\\u308c\\u305f\\u4ed5\\u4e8b\\u306b\\u5c0d\\u3057\\u3066\\u3001\\u3042\\u306e\\u60b2\\u75db\\u306a\\u8036\\u8607\\u306e\\u7948\\u3092\\u3088\\u304f\\u77e5\\u3064\\u3066\\u308b\\u3002\\u300c\\u795e\\u3088\\uff01\\u3000\\u3082\\u3057\\u5fa1\\u5fc3\\u306b\\u9069\\u3075\\u306a\\u3089\\u3070\\u3001\\u3053\\u306e\\u82e6\\u304d\\u9152\\u76c3\\u3092\\u96e2\\u3057\\u7d66\\u3078\\u3002\\u3055\\u308c\\u3069\\u723e\\u306b\\u3057\\u3066\\u6b32\\u3059\\u308b\\u306a\\u3089\\u3070\\u3001\\u5fa1\\u5fc3\\u306e\\u307e\\u307e\\u306b\\u7232\\u3057\\u7d66\\u3078\\u3002\\u300d\\\",\\n unicode\\\"\\u6a5f\\u95dc\\u9283\\u3088\\u308a\\u3082\\u60b2\\u3057\\u3052\\u306b\\u3001\\u7e4b\\u7559\\u6c23\\u7403\\u3088\\u308a\\u3082\\u6182\\u9b31\\u306b\\u3001\\u70b8\\u88c2\\u5f48\\u3088\\u308a\\u3082\\u6b98\\u5fcd\\u306b\\u3001\\u6bd2\\u74e6\\u65af\\u3088\\u308a\\u3082\\u6c88\\u75db\\u306b\\u3001\\u66f3\\u706b\\u5f48\\u3088\\u308a\\u3082\\u84bc\\u767d\\u304f\\u3001\\u5927\\u7832\\u3088\\u308a\\u3082\\u30ed\\u30de\\u30f3\\u30c1\\u30c4\\u30af\\u306b\\u3001\\u7159\\u5e55\\u3088\\u308a\\u3082\\u5bc2\\u3057\\u3052\\u306b\\u3001\\u9283\\u706b\\u306e\\u767d\\u304f\\u9583\\u3081\\u304f\\u3084\\u3046\\u306a\\u8a69\\u304c\\u66f8\\u304d\\u305f\\u3044\\uff01\\\"\\n ];\\n\\n function tokenURI(uint256 id) public view returns (string memory) {\\n string[11] memory parts;\\n parts[0] = '';\\n parts[1] = '';\\n parts[2] = '';\\n parts[3] = '';\\n parts[4] = '

';\\n parts[5] = poemTitles[id];\\n parts[6] = '

';\\n parts[7] = poemBodies[id];\\n parts[8] = '

';\\n parts[9] = unicode\\\"\\u2015 \\u8429\\u539f \\u6714\\u592a\\u90ce\\\";\\n parts[10] = \\\"

\\\";\\n\\n string memory output = string(abi.encodePacked(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7], parts[8], parts[9], parts[10]));\\n string memory json = Base64.encode(bytes(string(abi.encodePacked(\\n \\\"{\\\",\\n '\\\"name\\\": \\\"', poemTitles[id], '\\\",',\\n '\\\"description\\\": \\\"Thirty-nine poems from Sakutaro Hagiwara\\\\'s late self-selected collection \\\\\\\\\\\"Shukumei\\\\\\\\\\\" have been inscribed on Blockchain as full-onchain NFTs. The content of this NFT changes depending on the owner.\\\",',\\n '\\\"image\\\": \\\"data:image/svg+xml;base64,', Base64.encode(bytes(output)), '\\\",',\\n '\\\"license\\\": \\\"CC-BY 4.0\\\",',\\n '\\\"creator\\\": \\\"Ara\\\"',\\n \\\"}\\\"\\n ))));\\n output = string(abi.encodePacked(\\\"data:application/json;base64,\\\", json));\\n\\n return output;\\n }\\n}\\n\",\"keccak256\":\"0x061ab101d0481ac8ecb99280118752a7b8616395bc39772eed6445ef075549dc\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x6080604052604051806104e001604052806040518060400160405280601b81526020017fe38182e38182e59bbae38184e6b0b7e38292e7a0b4e381a4e381a6000000000081525081526020016040518060400160405280600f81526020017fe88a9de7949fe381aee4b88ae381a7000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe8888ce381aee381aae38184e79c9ee79086000000000000000000000000000081525081526020016040518060400160405280600681526020017fe68588e682b2000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017fe7a78be699b4000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe999b8e6a98be38292e6b8a1e3828b000000000000000000000000000000000081525081526020016040518060400160405280601581526020017fe6b699e38190e381bee38197e38184e5a495e69aae000000000000000000000081525081526020016040518060400160405280601581526020017fe59cb0e79083e38292e8b7b3e8ba8de38197e381a6000000000000000000000081525081526020016040518060400160405280601281526020017fe5a49ce6b1bde8bb8ae381aee7aa93e381a7000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe698a5e381aee3818fe3828be69982000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe6a5b5e58589e59cb0e696b9e3818be38289000000000000000000000000000081525081526020016040518060400160405280600681526020017fe696b7e6a98b000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe9818be591bde381b8e381aee5bf8de8beb1000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe5af82e5afa5e381aee5b79de9828a000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe888b9e5aea4e3818be38289000000000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe8a898e686b6e38292e68da8e381a6e3828b0000000000000000000000000000815250815260200160405180606001604052806024815260200162003aeb6024913981526020016040518060400160405280601281526020017fe6b8afe381aee99b9ce8b2a8e5ba97e381a7000000000000000000000000000081525081526020016040518060400160405280600381526020017fe98fa1000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe78b90000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe590b9e99baae381aee4b8ade381a7000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe98a83e599a8e5ba97e381aee5898de381a7000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe8999ae695b8e381aee8998e000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe887aae784b6e381aee4b8ade381a7000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe8a7b8e6898be38182e3828be7a9bae99693000000000000000000000000000081525081526020016040518060400160405280600681526020017fe5a4a7e4bd9b000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe5aeb6000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe9bb92e38184e6b48be58298000000000000000000000000000000000000000081525081526020016040518060400160405280601881526020017fe68190e3828de38197e3818de4babae5bda2e88a9de5b185000000000000000081525081526020016040518060400160405280601581526020017fe9bd92e38292e38282e381a6e3828be6848fe5bf97000000000000000000000081525081526020016040518060400160405280601381526020017fe5bbbae7af89e381ae204e6f7374616c6769610000000000000000000000000081525081526020016040518060400160405280600381526020017fe788b6000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe695b5000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe789a9e8b3aae381aee6849fe68385000000000000000000000000000000000081525081526020016040518060400160405280600681526020017fe789a9e9ab94000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe9be8d000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe6a98b000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe5b1b1e4b88ae381aee7a588000000000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe688b0e5a0b4e381a7e381aee5b9bbe683b3000000000000000000000000000081525081525060009060276200090192919062000e31565b50604051806104e001604052806040518061022001604052806101f6815260200162002fba6101f69139815260200160405180610240016040528061021981526020016200474b61021991398152602001604051806101e001604052806101ba81526020016200440b6101ba91398152602001604051806102c00160405280610283815260200162002c59610283913981526020016040518061022001604052806101ea815260200162003fa36101ea91398152602001604051806102400160405280610204815260200162004b26610204913981526020016040518061020001604052806101e0815260200162004f3d6101e0913981526020016040518061018001604052806101578152602001620031b061015791398152602001604051806101e001604052806101b0815260200162004d2a6101b09139815260200160405180610100016040528060de815260200162002edc60de913981526020016040518061028001604052806102418152602001620054cf6102419139815260200160405180610160016040528061012381526020016200530d610123913981526020016040518060c00160405280608a815260200162004964608a91398152602001604051806102a0016040528061026e81526020016200363061026e913981526020016040518061040001604052806103d3815260200162003b0f6103d39139815260200160405180610120016040528060f681526020016200431560f6913981526020016040518061022001604052806101f081526020016200511d6101f091398152602001604051806101600160405280610128815260200162003307610128913981526020016040518060a001604052806063815260200162004eda606391398152602001604051806101600160405280610129815260200162005710610129913981526020016040518060800160405280604e815260200162003a9d604e9139815260200160405180610120016040528060e881526020016200394f60e891398152602001604051806101c001604052806101868152602001620045c5610186913981526020016040518060a0016040528060668152602001620035ca6066913981526020016040518060e0016040528060b2815260200162002b3860b2913981526020016040518060e0016040528060b181526020016200389e60b1913981526020016040518060800160405280604b815260200162005950604b913981526020016040518060c0016040528060a0815260200162003ee260a0913981526020016040518060c00160405280609f815260200162005430609f913981526020016040518060a00160405280606f815260200162002bea606f91398152602001604051806101c0016040528061018881526020016200418d6101889139815260200160405180606001604052806021815260200162003f826021913981526020016040518060a00160405280606381526020016200342f6063913981526020016040518060a001604052806066815260200162003a37606691398152602001604051806101200160405280610100815260200162002a38610100913981526020016040518060e0016040528060ae81526020016200599b60ae913981526020016040518061016001604052806101388152602001620049ee61013891398152602001604051806101600160405280610138815260200162003492610138913981526020016040518061014001604052806101178152602001620058396101179139815250600190602762000e1c92919062000e31565b5034801562000e2a57600080fd5b506200101b565b82805482825590600052602060002090810192821562000e85579160200282015b8281111562000e8457825182908051906020019062000e7392919062000e98565b509160200191906001019062000e52565b5b50905062000e94919062000f29565b5090565b82805462000ea69062000fb6565b90600052602060002090601f01602090048101928262000eca576000855562000f16565b82601f1062000ee557805160ff191683800117855562000f16565b8280016001018555821562000f16579182015b8281111562000f1557825182559160200191906001019062000ef8565b5b50905062000f25919062000f51565b5090565b5b8082111562000f4d576000818162000f43919062000f70565b5060010162000f2a565b5090565b5b8082111562000f6c57600081600090555060010162000f52565b5090565b50805462000f7e9062000fb6565b6000825580601f1062000f92575062000fb3565b601f01602090049060005260206000209081019062000fb2919062000f51565b5b50565b6000600282049050600182168062000fcf57607f821691505b6020821081141562000fe65762000fe562000fec565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611a0d806200102b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063a86faa8c14610046578063c87b56dd14610076578063e227fddb146100a6575b600080fd5b610060600480360381019061005b9190610d49565b6100d6565b60405161006d91906110d8565b60405180910390f35b610090600480360381019061008b9190610d49565b610182565b60405161009d91906110d8565b60405180910390f35b6100c060048036038101906100bb9190610d49565b610aa2565b6040516100cd91906110d8565b60405180910390f35b600081815481106100e657600080fd5b90600052602060002001600091509050805461010190611254565b80601f016020809104026020016040519081016040528092919081815260200182805461012d90611254565b801561017a5780601f1061014f5761010080835404028352916020019161017a565b820191906000526020600020905b81548152906001019060200180831161015d57829003601f168201915b505050505081565b606061018c610d0c565b6040518060800160405280605a81526020016118f5605a9139816000600b81106101df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180610260016040528061023181526020016116846102319139816001600b811061023d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806044815260200161199460449139816002600b8110610298577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180606001604052806034815260200161162460349139816003600b81106102f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060a00160405280606d81526020016115b7606d9139816004600b811061034e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060008381548110610390577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180546103a590611254565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611254565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050816005600b811061045d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060600160405280602c8152602001611658602c9139816006600b81106104b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250600183815481106104fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001805461050f90611254565b80601f016020809104026020016040519081016040528092919081815260200182805461053b90611254565b80156105885780601f1061055d57610100808354040283529160200191610588565b820191906000526020600020905b81548152906001019060200180831161056b57829003601f168201915b5050505050816007600b81106105c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806045815260200161194f60459139816008600b8110610622577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601481526020017fe2809520e890a9e58e9f20e69c94e5a4aae9838e000000000000000000000000815250816009600b811061069a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601a81526020017f3c2f703e3c2f666f726569676e4f626a6563743e3c2f7376673e00000000000081525081600a600b8110610712577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506000816000600b8110610756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151826001600b8110610795577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836002600b81106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846003600b8110610813577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856004600b8110610852577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866005600b8110610891577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151876006600b81106108d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151886007600b811061090f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151896008600b811061094e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518a6009600b811061098d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518b600a600b81106109cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040516020016109eb9b9a99989796959493929190610f96565b60405160208183030381529060405290506000610a7360008681548110610a3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001610a4e84610b4e565b604051602001610a5f92919061102f565b604051602081830303815290604052610b4e565b905080604051602001610a8691906110b6565b6040516020818303038152906040529150819350505050919050565b60018181548110610ab257600080fd5b906000526020600020016000915090508054610acd90611254565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990611254565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b505050505081565b60606000825190506000811415610b775760405180602001604052806000815250915050610d07565b60006003600283610b889190611136565b610b92919061118c565b6004610b9e91906111bd565b90506000602082610baf9190611136565b67ffffffffffffffff811115610bee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610c205781602001600182028036833780820191505090505b50905060006040518060600160405280604081526020016118b5604091399050600181016020830160005b86811015610cc45760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050610c4b565b506003860660018114610cde5760028114610cee57610cf9565b613d3d60f01b6002830352610cf9565b603d60f81b60018303525b508484525050819450505050505b919050565b604051806101600160405280600b905b6060815260200190600190039081610d1c5790505090565b600081359050610d438161159f565b92915050565b600060208284031215610d5b57600080fd5b6000610d6984828501610d34565b91505092915050565b6000610d7d8261110f565b610d87818561111a565b9350610d97818560208601611221565b610da081611313565b840191505092915050565b6000610db68261110f565b610dc0818561112b565b9350610dd0818560208601611221565b80840191505092915050565b60008154610de981611254565b610df3818661112b565b94506001821660008114610e0e5760018114610e1f57610e52565b60ff19831686528186019350610e52565b610e28856110fa565b60005b83811015610e4a57815481890152600182019150602081019050610e2b565b838801955050505b50505092915050565b6000610e6860028361112b565b9150610e7382611324565b600282019050919050565b6000610e8b60108361112b565b9150610e968261134d565b601082019050919050565b6000610eae60d78361112b565b9150610eb982611376565b60d782019050919050565b6000610ed160248361112b565b9150610edc82611483565b602482019050919050565b6000610ef460018361112b565b9150610eff826114d2565b600182019050919050565b6000610f1760098361112b565b9150610f22826114fb565b600982019050919050565b6000610f3a60018361112b565b9150610f4582611524565b600182019050919050565b6000610f5d601d8361112b565b9150610f688261154d565b601d82019050919050565b6000610f8060178361112b565b9150610f8b82611576565b601782019050919050565b6000610fa2828e610dab565b9150610fae828d610dab565b9150610fba828c610dab565b9150610fc6828b610dab565b9150610fd2828a610dab565b9150610fde8289610dab565b9150610fea8288610dab565b9150610ff68287610dab565b91506110028286610dab565b915061100e8285610dab565b915061101a8284610dab565b91508190509c9b505050505050505050505050565b600061103a82610f2d565b915061104582610f0a565b91506110518285610ddc565b915061105c82610e5b565b915061106782610ea1565b915061107282610ec4565b915061107e8284610dab565b915061108982610e5b565b915061109482610f73565b915061109f82610e7e565b91506110aa82610ee7565b91508190509392505050565b60006110c182610f50565b91506110cd8284610dab565b915081905092915050565b600060208201905081810360008301526110f28184610d72565b905092915050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061114182611217565b915061114c83611217565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561118157611180611286565b5b828201905092915050565b600061119782611217565b91506111a283611217565b9250826111b2576111b16112b5565b5b828204905092915050565b60006111c882611217565b91506111d383611217565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120c5761120b611286565b5b828202905092915050565b6000819050919050565b60005b8381101561123f578082015181840152602081019050611224565b8381111561124e576000848401525b50505050565b6000600282049050600182168061126c57607f821691505b602082108114156112805761127f6112e4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b7f2263726561746f72223a20224172612200000000000000000000000000000000600082015250565b7f226465736372697074696f6e223a20225468697274792d6e696e6520706f656d60008201527f732066726f6d2053616b757461726f2048616769776172612773206c6174652060208201527f73656c662d73656c656374656420636f6c6c656374696f6e205c225368756b7560408201527f6d65695c222068617665206265656e20696e73637269626564206f6e20426c6f60608201527f636b636861696e2061732066756c6c2d6f6e636861696e204e4654732e20546860808201527f6520636f6e74656e74206f662074686973204e4654206368616e67657320646560a08201527f70656e64696e67206f6e20746865206f776e65722e222c00000000000000000060c082015250565b7f22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62617360008201527f6536342c00000000000000000000000000000000000000000000000000000000602082015250565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b7f226e616d65223a20220000000000000000000000000000000000000000000000600082015250565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f226c6963656e7365223a202243432d425920342e30222c000000000000000000600082015250565b6115a881611217565b81146115b357600080fd5b5056fe3c666f726569676e4f626a65637420783d2232352220793d223135222077696474683d2233353022206865696768743d22333730223e3c7020636c6173733d22736861646f772220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c726563742077696474683d2234303022206865696768743d22343030222066696c6c3d2275726c282367726164312922202f3e3c2f703e3c7020786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c646566733e3c6c696e6561724772616469656e742069643d226772616431222078313d223025222079313d2235302522203e3c73746f70206f66667365743d223025222073746f702d636f6c6f723d222330663233353022203e3c616e696d6174652069643d22613122206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d22303b2061322e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613222206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d2261312e656e6422206475723d22337322202f3e3c2f73746f703e3c73746f70206f66667365743d2231303025222073746f702d636f6c6f723d222336613561636422203e3c616e696d6174652069643d22613322206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d22303b2061342e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613422206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d2261332e656e6422206475723d22337322202f3e3c2f73746f703e3c2f6c696e6561724772616469656e743e3c2f646566733e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c7376672077696474683d2234303022206865696768743d22343030222076696577426f783d22302c20302c203430302c203430302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c2f703e3c70207374796c653d2270616464696e672d746f703a2031656d2220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c7374796c6520747970653d22746578742f637373223e70207b666f6e742d66616d696c793a2073657269663b20636f6c6f723a2077686974653b7d3c2f7374796c653ea2646970667358221220233987581f65706ff65e695e8b02c51260b52c7fa27ed4cd035262c4f2e57af564736f6c63430008040033e7a781e3818ce38282e38197e789a9e9ab94e381a7e38182e38289e38186e381a8e38282e38081e7a59ee381afe5868de5baa6e69c97e38289e3818be381abe7ac91e381b2e381afe38197e381aae38184e38082e38182e38182e38081e790b4e381aee99fb3e3818ce881bde38188e381a6e4be86e3828be38082e28095e28095e5b08fe38195e381aae4b880e381a4e381ae3c727562793e3c72623ee580abe790863c2f72623e3c72703eefbc883c2f72703e3c72743ee383a2e383a9e383ab3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee3818ce38081e596aae5a4b1e38197e381a6e38197e381bee381a4e3819fe381aee381a0e38082e5aebfe591bde79a84e381aae3828be69db1e6b48be381aee5bbbae7af89e381afe38081e3819de381aee5b18be6a0b9e381aee4b88be381a7e5bf8de5be9ee38197e381aae3818ce38289e380813c727562793e3c72623ee7948d3c2f72623e3c72703eefbc883c2f72703e3c72743ee38184e38289e3818b3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381abe696bce381a6e68092e3828ae7ab8be381a4e381a6e38290e3828be38082e6848fe5bf97efbc81e38080e3819de381afe5a495e69aaee381aee6b5b7e38288e3828ae38197e381a6e38081e9b1b6e381aee5a682e3818fe381abe6b3b3e3818ee4be86e3828ae38081e9bd92e38292e4bba5e381a6e88289e381abe5999be381bfe381a4e38191e3828ae38082e9a2a8e790b4e381ae3c727562793e3c72623ee98eade9ad82e6a8823c2f72623e3c72703eefbc883c2f72703e3c72743ee3828ce3818fe3828ce38188e382803c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e3818de3818fe38284e38186e381abe38081e586a5e683b3e381aee58e9ae38184e5a381e381aee5bdb1e381a7e38081e99d9ce3818be381abe6b9a7e3818de38182e3818ce381a4e381a6e3818fe3828be9bb92e38184e6849fe68385e38082e68385e685bee381aee5bcb7e38184e683b1e381bfe38292e68a91e381b8e38081e69e9ce695a2e381aae38184e9818be591bde381b8e381aee58f9be98086e38284e38081e4bd95e381a8e38184e381b5e38193e381a8e38282e381aae38184e7949fe6b4bbe381aee69a97e68481e38284e38081e38184e38289e38184e38289e38197e3819fe5bf83e381aee784a6e787a5e38284e38292e5bf98e3828ce38195e3819be38081e5ae89e38289e3818be381aae5ae89e38289e3818be381aae5afa2e887bae381aee4b88ae381a7e38081e99d88e9ad82e381aee6b7b1e381bfe38182e3828be79ca0e3828ae38292e38195e3819de381b5e38284e38186e381aae38081e4b880e381a4e381aee58a9be38182e3828be99d9ce3818be381aae6849fe68385e38082e3819de3828ce381afe7949fe6b4bbe381aee796b2e3828ce3819fe89684e69aaee381abe38081e99fbfe69dbfe381aee9888de38184e38186e381aae3828ae38292e3819fe381a6e3828be38081e5a4a7e3818de381aae5b985e381aee38182e3828be99d9ce3818be381aae6849fe68385e38082e28095e28095e4bd9be99980e381aee69599e381b8e3819fe68588e682b2e381aee593b2e5adb8efbc81e68987e38282e381a4e88ba5e38184e5a898e38289e38081e698a5e381aee5b18fe9a2a8e381aee5898de381abe5b185e381a6e38081e5909be381aee38197e381aae38284e3818be381aae882a9e38292e38199e381b9e38289e3819be38081e889b6e38281e3818be38197e38184e69bb2e7b79ae381afe8b6b3e381abe3818be38289e38280e38082e68987e38282e381a4e88ba5e38184e5a898e38289e38081e5909be381aee7ac91e9a18fe381abe68385e38292e381b5e3818fe38281e38288e38081e698a5e381afe4be86e38289e38293e381a8e38199e38082e38182e38182e59bbae38184e6b0b7e38292e7a0b4e381a4e381a6e7aa81e980b2e38199e3828be38081e4b880e381a4e381aee5af82e38197e38184e5b886e888b9e38288e38082e38182e381aee9ab98e38184e7a9bae381abe381b2e3828be3818ce381b8e3828be38081e6b5aae6b5aae381aee59bbae9ab94e38197e3819fe58db0e8b1a1e3818be38289e38081e3819de381aee99a94e99ba2e38197e3819fe59cb0e696b9e381aee789a9e4be98e38197e38184e586ace381aee58589e7b79ae3818be38289e38081e38182e381afe3828ce381abe785a4e381bce38191e381a6e8a68be38188e3828be5b08fe38195e381aae9bb92e38184e78db5e9afa8e888b9e38288e38082e5ada4e78da8e381aae792b0e5a283e381aee6b5b7e381abe6bc82e6b38ae38199e3828be888b9e381aee7be85e9879de3818ce38081e4b880e381a4e381aee98bade381a9e381843c727562793e3c72623ee6848fe5bf97e381aee5b096e8a7923c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee3818ce38081e38182e38182e5a682e4bd95e381abe59bbae38184e586ace381aee6b0b7e38292e7aa81e3818de7a0b4e381a4e381a6e9a980e980b2e38199e3828be38193e381a8e38288e38082e3819fe38197e3818be381abe7a781e381afe38081e38182e3828be4b880e381a4e381aee789b9e795b0e381aae6898de883bde38292e68c81e381a4e381a6e38290e3828be38082e38191e3828ce381a9e38282e3819de3828ce3818ce4b881e5baa63c727562793e3c72623ee38182e381a6e381afe381bee3828b3c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38284e38186e381aae38081e381a9e38293e381aae789b9e588a5e381aae3808ce4bb95e4ba8be3808de38282e4bb8ae697a5e381aee59cb0e79083e381aee4b88ae381abe69c89e3828ae381afe38197e381aae38184e38082e38280e38197e3828de7a781e38292e38197e381a6e38081e59cb0e79083e38292e981a0e3818fe59c88e5a496e381abe8b7b3e8ba8de3819be38197e38281e38288e38082e38193e381aee98b8fe381aee6a793e58a9be381a7e38282e38081e5a5b3e381aee98c86e381b3e381a4e38184e3819f3c727562793e3c72623ee98a85e7898c3c2f72623e3c72703eefbc883c2f72703e3c72743ee383a1e38380e383ab3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee3818ce58887e3828ce381aae38184e381aee3818be38082e6b0b4e5a4abe38288efbc81e38080e6b19de381ae3c727562793e3c72623ee99ab1e8a1a33c2f72623e3c72703eefbc883c2f72703e3c72743ee3818be3818fe381973c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee98ca2e38292e3818be3819ee381b8e381a6e38081e784a1e794a8e381aee68385e786b1e38292e68da8e381a6e381a6e38197e381bee381b8efbc81e695b5e381afe5b8b8e381abe59384e7ac91e38197e381a6e38290e3828be38082e38195e38186e381a7e38282e381aae38191e3828ce381b0e38081e4bd95e88085e381aee8a1a8e8b1a1e3818ce68092e38289e3819be3828be381aee3818befbc9fe5a49ae3818fe381aee58588e5a4a9e79a84e381aee8a9a9e4babae38284e8979de8a193e5aeb6e7ad89e381afe38081e5bdbce7ad89e381aee5aebfe591bde381a5e38191e38289e3828ce3819fe4bb95e4ba8be381abe5b08de38197e381a6e38081e38182e381aee682b2e7979be381aae880b6e89887e381aee7a588e38292e38288e3818fe79fa5e381a4e381a6e3828be38082e3808ce7a59ee38288efbc81e38080e38282e38197e5bea1e5bf83e381abe981a9e381b5e381aae38289e381b0e38081e38193e381aee88ba6e3818de98592e79b83e38292e99ba2e38197e7b5a6e381b8e38082e38195e3828ce381a9e788bee381abe38197e381a6e6acb2e38199e3828be381aae38289e381b0e38081e5bea1e5bf83e381aee381bee381bee381abe788b2e38197e7b5a6e381b8e38082e3808de88d92e5afa5e381a8e38197e3819fe5b1b1e381aee4b8ade885b9e381a7e38081e5a381e381aee38284e38186e381abe6b288e9bb98e38197e381a6e38290e3828be38081e4b880e381aee5b7a8e5a4a7e381aae3828be880b3e38292e8a68be3819fe38082e58fa4e9a99be381aee38081e69fb3e381aee38182e3828be5b79de381aee5b2b8e381a7e38081e3818be3828ce381afe4bd95e38292e987a3e38289e38186e381a8e38199e3828be381aee3818be38082e38284e3818ce381a6e7949fe6b4bbe381aee89684e69aaee3818ce3818fe3828be381bee381a7e38081e3819de38293e381aae381abe38282e995b7e38184e99693e38081e9879de381aee381aae38184e987a3e7abbfe381a7e280a6e280a6e38082e3808ce590a6e3808de381a8e3819de381aee694afe982a3e4babae3818ce7ad94e381b8e3819fe38082e3808ce9ad9ae381aee7be8ee38197e3818fe8b5b0e3828be38292e79cbae38281e38288e38081e6b0b4e381aee99d9ce3818be381abe8a18ce3818fe38292e79cbae38281e38288e38082e38184e3818be381abe5909be381afe38193e381aee99d9ce8ac90e38292e5a5bde381bee381aae38184e3818be38082e38193e381aee9a2a8e699afe381aee881b0e6988ee381aae68385e8b6a3e38292e38082e38280e38197e3828de7a781e381afe38081e7b582e697a53c727562793e3c72623ee987a3e3828ae5be97e381aae381843c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38193e381a8e38292e5b88ce69c9be38197e381a6e38290e3828be38082e38195e3828ce381b0e697a5e795b6e3828ae5a5bde38184e5af82e5afa5e381aee5b2b8e9828ae381abe59d90e38197e381a6e38081e7a781e381aee381a9e38293e381aae792b0e5a283e38292e38282e4ba82e38199e381aae3818be3828ce38082e3808de3819de381aee58685e983a8e381abe6a78be980a0e381aee694afe69fb1e38292e68c81e381a1e38081e69a97e38184e6a2afe5ad90e381a8e7b693e69687e38292e8978fe38199e3828be4bd9be99980e38288efbc81e38080e6b5b7e38288e3828ae38282e981a0e3818fe38081e4babae7959ce381aee4bd8fe38280e4b896e7958ce38292e8b68ae38188e381a6e38081e68c87e381aee38284e38186e381abe5b0a8e5a4a7e381aae3828cefbc81e6988ee3828be38184e7a19de5ad90e688b8e381aee5ba97e381aee4b8ade381a7e38081e4b880e381a4e381aee7a3a8e3818be3828ce3819fe98a83e599a8e38195e381b8e38282e38081e781abe897a5e38292e8a39de5a1abe38197e381a6e381aae38184e381aee381a7e38182e3828be38082e28095e28095e4bd95e3819fe3828be8999ae5a684e3819ee380823c727562793e3c72623ee687b6e788be3c2f72623e3c72703eefbc883c2f72703e3c72743ee38289e38293e381983c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381a8e38197e381a6e7ac91e381b8efbc81e6a99fe6a2b0e4babae99693e381abe38282e38197e6849fe68385e3818ce38182e3828be381a8e38199e3828ce381b0efbc9fe38080e784a1e99990e381aee59380e582b7e381aee381bbe3818be381aee4bd95e88085e381a7e38282e381aae38184e38082e596aee381abe5ada4e78da8e381a7e38182e3828be381b0e3818be3828ae381a7e381aae38184e38082e695b5e38292e4bba5e381a6e58585e3819fe38195e3828ce381a6e38290e3828befbc81e68385e7b792e38288efbc81e38080e5909be381afe6adb8e38289e38196e3828be3818be5b590e38081e5b590e38081e6b5aae38081e6b5aae38081e5a4a7e6b5aae38081e5a4a7e6b5aae38081e5a4a7e6b5aae38082e582bee38280e3818fe59cb0e5b9b3e7b79ae38081e4b88ae69887e38199e3828be59cb0e5b9b3e7b79ae38081e890bde381a1e3818fe3828be59cb0e5b9b3e7b79ae38082e3818ce381a1e38284e3818ce381a1e38284e38081e3818ce381a1e38284e3818ce381a1e38284e38082e4b88ae794b2e69dbfe381b8e38081e4b88ae794b2e69dbfe381b8e380823c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e58db7e38191e380813c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e58db7e38191e38082e7aa81e980b2e38199e3828be38081e7aa81e980b2e38199e3828be6b0b4e5a4abe38289e38082e888b9e5aea4e381aee7aa93e38081e7aa93e38081e7aa93e38081e7aa93e38082e582bee38280e3818fe59cb0e5b9b3e7b79ae38081e4b88ae69887e38199e3828be59cb0e5b9b3e7b79ae380823c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee380813c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee380813c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38082e9a2a8e38081e9a2a8e38081e9a2a8e38082e6b0b4e38081e6b0b4e38081e6b0b4e380823c727562793e3c72623ee888b9e7aa933c2f72623e3c72703eefbc883c2f72703e3c72743ee3838fe38384e383813c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e99689e38281e3828de380823c727562793e3c72623ee888b9e7aa933c2f72623e3c72703eefbc883c2f72703e3c72743ee3838fe38384e383813c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e99689e38281e3828de38082e58fb3e888b7e381b8e38081e5b7a6e888b7e381b8e38082e6b5aae38081e6b5aae38081e6b5aae38082e381bbe381b2e38286e383bce3828be38082e381bbe381b2e38286e383bce3828be38082e381bbe381b2e38286e383bce3828be38082e68682e9acb1e381aee995b7e38184e69f84e3818be38289e38081e99ba8e3818ce38197e381a8e38197e381a8e381a83c727562793e3c72623ee6bbb43c2f72623e3c72703eefbc883c2f72703e3c72743ee38197e381a5e3818f3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e38197e381a6e38290e3828be38082e79c9ee9bb92e381aee5a4a7e3818de381aae6b48be58298efbc81e788b6e381afe6b0b8e981a0e381abe682b2e5a3afe381a7e38182e3828be38082e789a7e5a0b4e381aee7899be3818ce88d89e38292e9a39fe381a4e381a6e38290e3828be381aee38292e381bfe381a6e38081e99691e695a3e38284e680a0e683b0e381aee8b6a3e591b3e38292e8a7a3e38197e381aae38184e381bbe381a9e38081e3819de3828ce381bbe381a93c727562793e3c72623ee8bf91e4bba3e79a84e381abe381aae381a4e381a6e38197e381bee381a4e3819f3c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee4babae4babae381abe381bee381a7e38081e7a781e381afe38184e3818be381aae3828be69c83e8a9b1e38292e38282e38195e38191e3828be381a7e38182e38289e38186e38082e7a781e381aee8828ce381abe38197e381bfe8bebce38293e381a7e3818fe3828be38081e38193e381aee7a78be697a5e5928ce381aee789a9e580a6e38184e79ca0e3819fe38195e381abe5b0b1e38184e381a6e38081e38193e381aee58fa4e9a2a8e381aae3828be7a781e381aee6809de683b3e381aee68385e8aabfe381abe5b0b1e38184e381a6e38081e38193e381aee4b88ae38282e381afe38284e8aa9ee38289e381aae38184e381a7e38182e38289e38186e38082e5bbbae7af89e28095e28095e789b9e381abe7bea4e59c98e38197e3819fe5bbbae7af89e28095e28095e381aee6a8a3e5bc8fe381afe38081e7a9bae381aee7a9b9e7aabfe381abe5b08de38197e381a6e6a78be683b3e38195e3828ce381ade381b0e381aae38289e381ace38082e58db3e381a1e58887e696b7e38195e3828ce3819fe3828be79083e381aee5bca7e5bda2e381abe5b08de38197e381a6e38081e6a78de78ab6e381aee59e82e79bb4e7b79ae38284e38081e59c93e98c90e5bda2e38284e381aee4baa4e98cafe3819be3828be6a78be683b3e38292e794a8e6848fe38199e381b9e3818de381a7e38182e3828be380823c62722f3ee38193e381aee892bce7a9bae381aee4b88be381abe696bce38191e3828be38081e981a0e696b9e381aee983bde69c83e381aee58db0e8b1a1e381a8e38197e381a6e38081e3818ae381bbe38280e381ade381aee5bbbae7af89e381afe4b880e381a4e381aee9878de8a681e381aae6848fe58ca0e38292e5bf98e3828ce381a6e38290e3828be38082e6a3aee3818be38289e3818be381b8e3828be381a8e3818de38081e7a781e381afe5b8bde5ad90e38292e381ace3818ee38199e381a6e3819fe38082e38182e38182e38081e8a898e686b6e38082e68190e3828de38197e3818fe7a0b4e3828ce381a1e3818ee381a4e3819fe8a898e686b6e38082e381bfe38198e38281e381aae38081e6b3a5e6b0b4e381aee4b8ade381abe88590e381a4e3819fe8a898e686b6e38082e38195e381b3e38197e38184e99ba8e699afe381aee98193e381abe381b5e3828be381b8e3828be7a781e381aee5b8bde5ad90e38082e8838ce5be8ce381abe68da8e381a6e381a6e8a18ce3818fe38082e381a8e38182e3828be5b9bbe78788e381aee4b8ade381a7e38081e99d92e799bde38184e99baae381aee9998de3828ae381a4e38282e381a4e381a6e38290e3828be38081e38197e381a5e3818be381aae38197e381a5e3818be381aae699afe889b2e381aee4b8ade381a7e38081e7a781e381afe4b880e381a4e381aee79c9ee79086e38292e381a4e3818be38293e381a0e38082e789a9e8a880e381b5e38193e381a8e381aee381a7e3818de381aae38184e38081e6b0b8e981a0e381abe6b0b8e981a0e381abe38186e38289e682b2e38197e38192e381aae38081e7a781e381afe3808ce8888ce381aee381aae38184e79c9ee79086e3808de38292e6849fe38198e3819fe38082e699afe889b2e381aee38081e5b9bbe78788e381aee38081e99baae381aee381a4e38282e3828be5bdb1e38292e9818ee3818ee58ebbe381a4e381a6e8a18ce3818fe38081e38195e381b3e38197e38184e99d92e78cabe381ae3c727562793e3c72623ee5838f3c2f72623e3c72703eefbc883c2f72703e3c72743ee3818be3819fe381a13c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e3818be38293e38198e3819fe38082e58d9ae5be92e7ad89e99b86e381bee3828ae38081e68a95e38192e381a4e38191e38289e3828ce3819fe3828be7949fe6b6afe381ae3c727562793e3c72623ee6a99fe59ba03c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e383a4e383b3e382b93c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee4b88ae381a7e38081e8999ae695b8e381aee68385e786b1e38292e8b3ade38191e59088e381a4e381a6e38290e3828be38082e381bfe381aae58587e69ab4e381aee381a4e382893c727562793e3c72623ee9ad823c2f72623e3c72703eefbc883c2f72703e3c72743ee381a0e381bee38197e381b23c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee380823c727562793e3c72623ee4bb81e7bea93c2f72623e3c72703eefbc883c2f72703e3c72743ee38198e38293e3818e3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e6a78be381b8e38081e8998ee381aee38284e38186e381aae7a9bae6b49ee381abe5b185e3828be38082e88ba5e88d89e381aee88abde3818ce8908ce38188e3828be38284e38186e381abe38081e38193e381aee697a5e795b6e3828ae381aee38288e38184e88a9de7949fe381aee4b88ae381a7e381afe38081e6809de683b3e3818ce5be8ce3818be38289e5be8ce3818be38289e381a8e68890e995b7e38197e381a6e3818fe3828be38082e38191e3828ce381a9e38282e3819de3828ce38289e381aee6809de683b3e381afe38081e7a781e381abe381bee381a7e4bd95e381aee4baa4e6b889e3818ce38182e38289e38186e3819ee38082e7a781e381afe3819fe381a0e99d92e7a9bae38292e79cbae38281e381a6e5b185e3819fe38184e38082e38182e381aee892bce5a4a9e381aee5a4a2e381aee4b8ade381abe6bab6e38191e381a6e38197e381bee381b5e38284e38186e381aae38081e38195e38186e38184e381b5e6809de683b3e381aee5b9bbe683b3e381a0e38191e38292e882b2e3818fe381bfe3819fe38184e381aee381a0e38082e7a781e887aae8baabe381aee68385e7b792e381aee5bdb1e381a7e38081e381aae381a4e3818be38197e38184e7b791e999b0e381aee5a4a2e38292e381a4e3818fe3828be38284e38186e381aae38081e3819de3828ce38289e381aee3808ce68385e8aabfe38182e3828be6809de683b3e3808de381a0e38191e38292e8aa9ee3828ae3819fe38184e381aee381a0e38082e7a9bae9a39be381b6e5b08fe9b3a5e38288e38082e381a8e381afe38184e381b8e792b0e5a283e381aee99787e38292e7aa81e7a0b4e38199e381b9e3818de38081e381a9e38293e381aae58a9be3818ce3819de38193e381abe38182e3828be3818be38082e9bd92e3818ce381bfe381a6e38193e38289e381b8e38288e38082e38193e38289e381b8e38288e38082e38193e38289e381b8e38288e38082e38199e381b9e381a6e381aee6a98be381afe38081e4b880e381a4e381aee5bbbae7af89e6848fe58ca0e38197e3818be68c81e381a4e381a6e38290e381aae38184e38082e69982e99693e38292e7a9bae99693e381aee4b88ae381abe69eb6e38191e38081e68896e3828be5a4a2e5b9bbe79a84e381aae4b880e381a4e381ae3c727562793e3c72623ee8a780e5bfb53c2f72623e3c72703eefbc883c2f72703e3c72743ee382a4e38387e382a23c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e38081e78fbee5afa6e79a84e381abe8bea8e8ad89e38199e3828be38193e381a8e381aee786b1e6848fe381a7e38182e3828be380823c62722f3ee6a98be381a8e381afe28095e28095e5a4a2e38292e69eb6e7a9bae38197e3819fe695b8e5adb8e381a7e38182e3828be38082e68682e9acb1e381abe6b288e381bfe381aae3818ce38289e38081e381b2e381a8e3828ae5af82e38197e3818fe999b8e6a98be38292e6b8a1e381a4e381a6e8a18ce3818fe38082e3818be381a4e381a6e4bd95e789a9e381abe38195e381b8e5a6a5e58d94e3819be38196e3828be38081e4bd95e789a9e381abe38195e381b8e5ae89e69893e3819be38196e3828be38081e38193e381aee4b880e381a4e381aee6849fe68385e38292e381a9e38193e381b8e8a18ce3818be38186e3818be38082e890bde697a5e381afe59cb0e5b9b3e381abe4bd8ee3818fe38081e792b0e5a283e381afe68092e3828ae381abe78783e38188e381a6e3828be38082e4b880e58887e38292e6868ee683a1e38197e38081e7b289e7a28ee38197e38081e58f9be98086e38197e38081e598b2e7ac91e38197e38081e696ace5a5b8e38197e38081e695b5e684bee38199e3828be38081e38193e381aee4b880e5808be381aee9bb92e38184e5bdb1e38292e3839ee383b3e38388e381abe381a4e381a4e38293e381a7e38081e381b2e381a8e3828ae5af82e38197e3818fe999b8e6a98be38292e6b8a1e381a4e381a6e8a18ce3818fe38082e3818be381aee9ab98e38184e69eb6e7a9bae381aee6a98be38292e8b68ae38188e381a6e38081e381afe3828be3818be381aee5b9bbe78788e381aee5b882e8a197e381abe381bee381a7e38082e5a49ce6b1bde8bb8ae381aee4b8ade381a7e38081e99bbbe78788e381afe69a97e3818fe38081e6b288e9acb1e38197e3819fe7a9bae6b0a3e381aee4b8ade381a7e38081e4babae4babae381afe6b7b1e38184e79ca0e3828ae381abe890bde381a1e381a6e38290e3828be38082e4b880e4babae8b5b7e3818de381a6e7aa93e38292e381b2e38289e38191e381b0e38081e5a49ce9a2a8e381afe381a4e38281e3819fe3818fe8828ce381abe381b5e3828ce38081e99787e5a49ce381aee69a97e9bb92e381aae9878ee58e9fe38292e9a39be381b6e38081e38197e3818de3828ae381abe9a39be381b6e781abe89fb2e38292e381bfe3828be38082e38182e38182e38193e381aee79c9ee381a4e69a97e381aae68190e3828de38197e38184e699afe889b2e38292e8b2abe9809ae38199e3828befbc81e38080e6b7b1e5a49ce381aee8bd9fe8bd9fe381a8e38184e381b5e99fbfe381aee4b8ade381a7e38081e38184e381a5e38193e381b8e38081e38184e381a5e38193e381b8e38081e7a781e381aee5a49ce6b1bde8bb8ae381afe8a18ce3818be38186e381a8e38199e3828be381aee3818be38082e98fa1e381aee38186e38197e3828de381b8e5bbbbe381a4e381a6e381bfe381a6e38282e38081e3808ce7a781e3808de381afe3819de38193e381abe5b185e381aae38184e381aee381a7e38199e38288e38082e3818ae5ad83e38195e38293efbc81e38193e3828ce38289e381aee5a495e69aaee381afe6b699e38190e381bee38197e3818fe38081e7a781e381aee69bb8e9bd8be381abe8a8aae3828ce381a6e3818fe3828be38082e6809de683b3e381afe68385e8aabfe381aee5bdb1e381abe381ace3828ce381a6e38081e6849fe38198e381aee38288e38184e6b8a9e99b85e381aee889b2e59088e38292e5b8b6e381b3e381a6e8a68be38188e3828be38082e38182e38182e38184e3818be381abe4bb8ae381aee7a781e381abe381bee381a7e38081e4b880e381a4e381aee683a0e381bee3828ce3819fe5beb3e381afe381aae38184e3818be38082e4bd95e789a9e381aee58d91e58aa3e381abe38199e38289e38081e4bd95e789a9e381aee8999ae5839ee381abe38199e38289e38081e38182e381b8e381a6e9ab98e8b2b4e381aee5af9be5aeb9e38292e7a4bae38197e5be97e3828be38284e38186e381aae38081e4b880e381a4e381aee7a9a9e38284e3818be381abe38197e381a6e99691e99b85e381aae3828be5beb3e381afe381aae38184e3818be38082e28095e28095e7a781e38292e38197e381a6e78da8e3828ae5af82e38197e3818fe38081e4bb8ae697a5e381aee5a495e69aaee381aee7a9bae381abe9bb98e6809de3819be38197e38281e38288e38082e69bb8e7949fe381afe794bae381abe8a18ce3818de38081e5b7a5e5a0b4e381aee4b88be38292e9809ae3828ae38081e6a99fe9979ce8bb8ae381aee9b3b4e3828be99fbfe38292e881bde38184e3819fe38082e781abe5a4abe381aee8b5b0e3828ae38081e8bb8ae8bcaae381aee5bbbbe3828ae38081e7bea4e9b489e381aee596a7e8999fe38199e3828be5b7b7e381aee4b8ade381a7e38081e381afe38284e4b880e381a4e381aee883a1e5bc93e381afe88db7e980a0e38195e3828ce38081e8b2a8e8bb8ae381abe7a98de381bee3828ce38081e38195e38186e38197e381a6e6b8afe381aee58089e5baabe381aee696b9e381b8e38081e7a88ee9979ce381aee99680e38292e3818fe38190e381a4e381a6e8a18ce381a4e3819fe380823c62722f3ee58d81e69c88e4b88be697ace38082e69bb8e7949fe381afe9a3afe38292e9a39fe381afe38186e381a8e38197e381a6e38081e69eafe3828ce3819fe88a9de88d89e381aee58089e5baabe381aee5bdb1e381abe38081e99fb3e6a882e381aee5bf8de381b3e5b185e3828ae38081e89f8be89f80e381aee38284e38186e381abe9b3b4e3818fe381aee38292e881bde38184e3819fe380823c62722f3ee28095e28095e68385e7b792e38288e38081e5909be381afe6adb8e38289e38196e3828be3818be38082e5a49ce98193e38292e8b5b0e3828be6b1bde8bb8ae381bee381a7e38081e4b880e381a4e381aee8b5a4e38184e78788e781abe38292e7a4bae3819be38288e38082e4bb8ae3819de38193e381abe58db1e99aaae3818ce38182e3828be38082e696b7e6a98befbc81e38080e696b7e6a98befbc81e38080e38182e38182e682b2e9b3b4e381afe9a2a8e38292e381a4e38293e38196e3818fe38082e381a0e3828ce3818ce3819de3828ce38292e79fa5e3828be3818be38082e7b2bee7a59ee381afe99787e381aee69ba0e9878ee38292e381b2e3819fe8b5b0e3828be38082e680a5e8a18ce38197e38081e680a5e8a18ce38197e38081e680a5e8a18ce38197e38081e5bdbce381aee682b2e58a87e381aee7b582e9a99be381b8e381a8e38082e79086e9abaee5ba97e381aee99d92e38184e7aa93e3818be38289e38081e891b1e381aee38284e38186e381abe7aa81e3818de587bae38199e6a38de6a392e38082e3819de38184e381a4e381aee9a6ace9b9bfe38289e38197e38184e6a99fe6a2b0e4bb95e68e9be381a7e38081e5a4a2e4b8ade381abe381aae38190e38289e3828ce38081e381aae38190e38289e3828ce381a6e5b185e3828be380823c727562793e3c72623ee6b5b7e8b1b93c2f72623e3c72703eefbc883c2f72703e3c72743ee38182e38196e38289e381973c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee38284e38186e381abe38081e6a5b5e58589e381aee8a68be38188e3828be6b0b7e381aee4b88ae381a7e38081e381bce38293e38284e3828ae381a8e3808ce887aae58886e38292e5bf98e3828ce381a6e3808de59d90e381a4e381a6e38290e3819fe38184e38082e3819de38193e381abe69982e58aabe3818ce38199e3818ee58ebbe381a4e381a6e8a18ce3818fe38082e6999de5a49ce381aee381aae38184e6a5b5e58589e59cb0e696b9e381aee38081e38184e381a4e38282e69aaee3828ce696b9e381aee38284e38186e381aae58589e7b79ae3818ce38081e9888de3818fe682b2e38197e38192e381abe5b9bde6bb85e38199e3828be381a8e38193e3828de38082e38182e38182e3819de381aee981a0e38184e58c97e6a5b5e59c88e381aee6b0b7e381aee4b88ae381a7e38081e381bce38293e38284e3828ae381a8e6b5b7e8b1b9e381aee38284e38186e381abe59d90e381a4e381a6e5b185e3819fe38184e38082e6b0b8e981a0e381abe38081e6b0b8e981a0e381abe38081e887aae58886e38292e5bf98e3828ce381a6e38081e6809de6839fe381aee381bbe381aee69a97e38184e6b5b7e381abe6b5aee381b6e38081e4b880e381a4e381aee4be98e38197e38184e5b9bbe8b1a1e38292e79cbae38281e381a6e5b185e3819fe38184e381aee381a7e38199e38082e8a68be38288efbc81e38080e5bdbce381afe9a2a8e381aee38284e38186e381abe4be86e3828be38082e3819de381aee9a18de381afe68682e9acb1e381abe99d92e38196e38281e381a6e38290e3828be38082e880b3e381afe38199e3828be381a9e3818fe58887e381a4e7ab8be381a1e38081e381bee381aae38198e3828ae381afe68092e381abe8a382e38191e381a6e38290e3828be380823c62722f3ee5909be38288efbc81e380803c727562793e3c72623ee78ba1e699ba3c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee3818be3818fe381aee5a682e3818de7be8ee38197e3818de8a1a8e68385e38292e381a9e38193e381abe8a68be3819fe3818be38082e6a99fe9979ce98a83e38288e3828ae38282e682b2e38197e38192e381abe38081e7b98be79599e6b0a3e79083e38288e3828ae38282e68682e9acb1e381abe38081e782b8e8a382e5bd88e38288e3828ae38282e6ae98e5bf8de381abe38081e6af92e793a6e696afe38288e3828ae38282e6b288e7979be381abe38081e69bb3e781abe5bd88e38288e3828ae38282e892bce799bde3818fe38081e5a4a7e7a0b2e38288e3828ae38282e383ade3839ee383b3e38381e38384e382afe381abe38081e78599e5b995e38288e3828ae38282e5af82e38197e38192e381abe38081e98a83e781abe381aee799bde3818fe99683e38281e3818fe38284e38186e381aae8a9a9e3818ce69bb8e3818de3819fe38184efbc81e4babae3818ce5aeb6e381aee4b8ade381abe4bd8fe38293e381a7e3828be381aee381afe38081e59cb0e4b88ae381aee682b2e38197e38184e9a2a8e699afe381a7e38182e3828be38082e9be8de381afe5b89de78e8be381aee6acb2e69c9be38292e8b1a1e5beb4e38197e381a6e38290e3828be38082e6ac8ae58a9be381aee7a5a5e99bb2e381abe4b998e381a4e381a6e5b185e381aae3818ce38289e38081e5b8b8e381abe686a4e381bbe3828de38197e38184e6819ae68092e381abe78783e38188e38081e4b88de696b7e381aee788ade9acaae381aee3819fe38281e381abe78999e38292e38280e38184e381a6e3828be38082", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063a86faa8c14610046578063c87b56dd14610076578063e227fddb146100a6575b600080fd5b610060600480360381019061005b9190610d49565b6100d6565b60405161006d91906110d8565b60405180910390f35b610090600480360381019061008b9190610d49565b610182565b60405161009d91906110d8565b60405180910390f35b6100c060048036038101906100bb9190610d49565b610aa2565b6040516100cd91906110d8565b60405180910390f35b600081815481106100e657600080fd5b90600052602060002001600091509050805461010190611254565b80601f016020809104026020016040519081016040528092919081815260200182805461012d90611254565b801561017a5780601f1061014f5761010080835404028352916020019161017a565b820191906000526020600020905b81548152906001019060200180831161015d57829003601f168201915b505050505081565b606061018c610d0c565b6040518060800160405280605a81526020016118f5605a9139816000600b81106101df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180610260016040528061023181526020016116846102319139816001600b811061023d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806044815260200161199460449139816002600b8110610298577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180606001604052806034815260200161162460349139816003600b81106102f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060a00160405280606d81526020016115b7606d9139816004600b811061034e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060008381548110610390577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180546103a590611254565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611254565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050816005600b811061045d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060600160405280602c8152602001611658602c9139816006600b81106104b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250600183815481106104fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001805461050f90611254565b80601f016020809104026020016040519081016040528092919081815260200182805461053b90611254565b80156105885780601f1061055d57610100808354040283529160200191610588565b820191906000526020600020905b81548152906001019060200180831161056b57829003601f168201915b5050505050816007600b81106105c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806045815260200161194f60459139816008600b8110610622577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601481526020017fe2809520e890a9e58e9f20e69c94e5a4aae9838e000000000000000000000000815250816009600b811061069a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601a81526020017f3c2f703e3c2f666f726569676e4f626a6563743e3c2f7376673e00000000000081525081600a600b8110610712577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506000816000600b8110610756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151826001600b8110610795577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836002600b81106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846003600b8110610813577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856004600b8110610852577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866005600b8110610891577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151876006600b81106108d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151886007600b811061090f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151896008600b811061094e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518a6009600b811061098d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518b600a600b81106109cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040516020016109eb9b9a99989796959493929190610f96565b60405160208183030381529060405290506000610a7360008681548110610a3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001610a4e84610b4e565b604051602001610a5f92919061102f565b604051602081830303815290604052610b4e565b905080604051602001610a8691906110b6565b6040516020818303038152906040529150819350505050919050565b60018181548110610ab257600080fd5b906000526020600020016000915090508054610acd90611254565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990611254565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b505050505081565b60606000825190506000811415610b775760405180602001604052806000815250915050610d07565b60006003600283610b889190611136565b610b92919061118c565b6004610b9e91906111bd565b90506000602082610baf9190611136565b67ffffffffffffffff811115610bee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610c205781602001600182028036833780820191505090505b50905060006040518060600160405280604081526020016118b5604091399050600181016020830160005b86811015610cc45760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050610c4b565b506003860660018114610cde5760028114610cee57610cf9565b613d3d60f01b6002830352610cf9565b603d60f81b60018303525b508484525050819450505050505b919050565b604051806101600160405280600b905b6060815260200190600190039081610d1c5790505090565b600081359050610d438161159f565b92915050565b600060208284031215610d5b57600080fd5b6000610d6984828501610d34565b91505092915050565b6000610d7d8261110f565b610d87818561111a565b9350610d97818560208601611221565b610da081611313565b840191505092915050565b6000610db68261110f565b610dc0818561112b565b9350610dd0818560208601611221565b80840191505092915050565b60008154610de981611254565b610df3818661112b565b94506001821660008114610e0e5760018114610e1f57610e52565b60ff19831686528186019350610e52565b610e28856110fa565b60005b83811015610e4a57815481890152600182019150602081019050610e2b565b838801955050505b50505092915050565b6000610e6860028361112b565b9150610e7382611324565b600282019050919050565b6000610e8b60108361112b565b9150610e968261134d565b601082019050919050565b6000610eae60d78361112b565b9150610eb982611376565b60d782019050919050565b6000610ed160248361112b565b9150610edc82611483565b602482019050919050565b6000610ef460018361112b565b9150610eff826114d2565b600182019050919050565b6000610f1760098361112b565b9150610f22826114fb565b600982019050919050565b6000610f3a60018361112b565b9150610f4582611524565b600182019050919050565b6000610f5d601d8361112b565b9150610f688261154d565b601d82019050919050565b6000610f8060178361112b565b9150610f8b82611576565b601782019050919050565b6000610fa2828e610dab565b9150610fae828d610dab565b9150610fba828c610dab565b9150610fc6828b610dab565b9150610fd2828a610dab565b9150610fde8289610dab565b9150610fea8288610dab565b9150610ff68287610dab565b91506110028286610dab565b915061100e8285610dab565b915061101a8284610dab565b91508190509c9b505050505050505050505050565b600061103a82610f2d565b915061104582610f0a565b91506110518285610ddc565b915061105c82610e5b565b915061106782610ea1565b915061107282610ec4565b915061107e8284610dab565b915061108982610e5b565b915061109482610f73565b915061109f82610e7e565b91506110aa82610ee7565b91508190509392505050565b60006110c182610f50565b91506110cd8284610dab565b915081905092915050565b600060208201905081810360008301526110f28184610d72565b905092915050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061114182611217565b915061114c83611217565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561118157611180611286565b5b828201905092915050565b600061119782611217565b91506111a283611217565b9250826111b2576111b16112b5565b5b828204905092915050565b60006111c882611217565b91506111d383611217565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120c5761120b611286565b5b828202905092915050565b6000819050919050565b60005b8381101561123f578082015181840152602081019050611224565b8381111561124e576000848401525b50505050565b6000600282049050600182168061126c57607f821691505b602082108114156112805761127f6112e4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b7f2263726561746f72223a20224172612200000000000000000000000000000000600082015250565b7f226465736372697074696f6e223a20225468697274792d6e696e6520706f656d60008201527f732066726f6d2053616b757461726f2048616769776172612773206c6174652060208201527f73656c662d73656c656374656420636f6c6c656374696f6e205c225368756b7560408201527f6d65695c222068617665206265656e20696e73637269626564206f6e20426c6f60608201527f636b636861696e2061732066756c6c2d6f6e636861696e204e4654732e20546860808201527f6520636f6e74656e74206f662074686973204e4654206368616e67657320646560a08201527f70656e64696e67206f6e20746865206f776e65722e222c00000000000000000060c082015250565b7f22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62617360008201527f6536342c00000000000000000000000000000000000000000000000000000000602082015250565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b7f226e616d65223a20220000000000000000000000000000000000000000000000600082015250565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f226c6963656e7365223a202243432d425920342e30222c000000000000000000600082015250565b6115a881611217565b81146115b357600080fd5b5056fe3c666f726569676e4f626a65637420783d2232352220793d223135222077696474683d2233353022206865696768743d22333730223e3c7020636c6173733d22736861646f772220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c726563742077696474683d2234303022206865696768743d22343030222066696c6c3d2275726c282367726164312922202f3e3c2f703e3c7020786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c646566733e3c6c696e6561724772616469656e742069643d226772616431222078313d223025222079313d2235302522203e3c73746f70206f66667365743d223025222073746f702d636f6c6f723d222330663233353022203e3c616e696d6174652069643d22613122206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d22303b2061322e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613222206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d2261312e656e6422206475723d22337322202f3e3c2f73746f703e3c73746f70206f66667365743d2231303025222073746f702d636f6c6f723d222336613561636422203e3c616e696d6174652069643d22613322206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d22303b2061342e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613422206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d2261332e656e6422206475723d22337322202f3e3c2f73746f703e3c2f6c696e6561724772616469656e743e3c2f646566733e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c7376672077696474683d2234303022206865696768743d22343030222076696577426f783d22302c20302c203430302c203430302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c2f703e3c70207374796c653d2270616464696e672d746f703a2031656d2220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c7374796c6520747970653d22746578742f637373223e70207b666f6e742d66616d696c793a2073657269663b20636f6c6f723a2077686974653b7d3c2f7374796c653ea2646970667358221220233987581f65706ff65e695e8b02c51260b52c7fa27ed4cd035262c4f2e57af564736f6c63430008040033", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 952, + "contract": "contracts/TokenURI.sol:TokenURI", + "label": "poemTitles", + "offset": 0, + "slot": "0", + "type": "t_array(t_string_storage)dyn_storage" + }, + { + "astId": 995, + "contract": "contracts/TokenURI.sol:TokenURI", + "label": "poemBodies", + "offset": 0, + "slot": "1", + "type": "t_array(t_string_storage)dyn_storage" + } + ], + "types": { + "t_array(t_string_storage)dyn_storage": { + "base": "t_string_storage", + "encoding": "dynamic_array", + "label": "string[]", + "numberOfBytes": "32" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/evm-compatible/deployments/filecoin/solcInputs/9d362a9261eac5217bad10d772735e46.json b/packages/contracts/evm-compatible/deployments/filecoin/solcInputs/9d362a9261eac5217bad10d772735e46.json new file mode 100644 index 0000000..aab1427 --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecoin/solcInputs/9d362a9261eac5217bad10d772735e46.json @@ -0,0 +1,47 @@ +{ + "language": "Solidity", + "sources": { + "@openzeppelin/contracts/utils/Counters.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n" + }, + "@rari-capital/solmate/src/tokens/ERC721.sol": { + "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity >=0.8.0;\n\n/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\nabstract contract ERC721 {\n /*//////////////////////////////////////////////////////////////\n EVENTS\n //////////////////////////////////////////////////////////////*/\n\n event Transfer(address indexed from, address indexed to, uint256 indexed id);\n\n event Approval(address indexed owner, address indexed spender, uint256 indexed id);\n\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /*//////////////////////////////////////////////////////////////\n METADATA STORAGE/LOGIC\n //////////////////////////////////////////////////////////////*/\n\n string public name;\n\n string public symbol;\n\n function tokenURI(uint256 id) public view virtual returns (string memory);\n\n /*//////////////////////////////////////////////////////////////\n ERC721 BALANCE/OWNER STORAGE\n //////////////////////////////////////////////////////////////*/\n\n mapping(uint256 => address) internal _ownerOf;\n\n mapping(address => uint256) internal _balanceOf;\n\n function ownerOf(uint256 id) public view virtual returns (address owner) {\n require((owner = _ownerOf[id]) != address(0), \"NOT_MINTED\");\n }\n\n function balanceOf(address owner) public view virtual returns (uint256) {\n require(owner != address(0), \"ZERO_ADDRESS\");\n\n return _balanceOf[owner];\n }\n\n /*//////////////////////////////////////////////////////////////\n ERC721 APPROVAL STORAGE\n //////////////////////////////////////////////////////////////*/\n\n mapping(uint256 => address) public getApproved;\n\n mapping(address => mapping(address => bool)) public isApprovedForAll;\n\n /*//////////////////////////////////////////////////////////////\n CONSTRUCTOR\n //////////////////////////////////////////////////////////////*/\n\n constructor(string memory _name, string memory _symbol) {\n name = _name;\n symbol = _symbol;\n }\n\n /*//////////////////////////////////////////////////////////////\n ERC721 LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function approve(address spender, uint256 id) public virtual {\n address owner = _ownerOf[id];\n\n require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \"NOT_AUTHORIZED\");\n\n getApproved[id] = spender;\n\n emit Approval(owner, spender, id);\n }\n\n function setApprovalForAll(address operator, bool approved) public virtual {\n isApprovedForAll[msg.sender][operator] = approved;\n\n emit ApprovalForAll(msg.sender, operator, approved);\n }\n\n function transferFrom(\n address from,\n address to,\n uint256 id\n ) public virtual {\n require(from == _ownerOf[id], \"WRONG_FROM\");\n\n require(to != address(0), \"INVALID_RECIPIENT\");\n\n require(\n msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],\n \"NOT_AUTHORIZED\"\n );\n\n // Underflow of the sender's balance is impossible because we check for\n // ownership above and the recipient's balance can't realistically overflow.\n unchecked {\n _balanceOf[from]--;\n\n _balanceOf[to]++;\n }\n\n _ownerOf[id] = to;\n\n delete getApproved[id];\n\n emit Transfer(from, to, id);\n }\n\n function safeTransferFrom(\n address from,\n address to,\n uint256 id\n ) public virtual {\n transferFrom(from, to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, \"\") ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n bytes calldata data\n ) public virtual {\n transferFrom(from, to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n\n /*//////////////////////////////////////////////////////////////\n ERC165 LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\n interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata\n }\n\n /*//////////////////////////////////////////////////////////////\n INTERNAL MINT/BURN LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function _mint(address to, uint256 id) internal virtual {\n require(to != address(0), \"INVALID_RECIPIENT\");\n\n require(_ownerOf[id] == address(0), \"ALREADY_MINTED\");\n\n // Counter overflow is incredibly unrealistic.\n unchecked {\n _balanceOf[to]++;\n }\n\n _ownerOf[id] = to;\n\n emit Transfer(address(0), to, id);\n }\n\n function _burn(uint256 id) internal virtual {\n address owner = _ownerOf[id];\n\n require(owner != address(0), \"NOT_MINTED\");\n\n // Ownership check above ensures no underflow.\n unchecked {\n _balanceOf[owner]--;\n }\n\n delete _ownerOf[id];\n\n delete getApproved[id];\n\n emit Transfer(owner, address(0), id);\n }\n\n /*//////////////////////////////////////////////////////////////\n INTERNAL SAFE MINT LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function _safeMint(address to, uint256 id) internal virtual {\n _mint(to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, \"\") ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n\n function _safeMint(\n address to,\n uint256 id,\n bytes memory data\n ) internal virtual {\n _mint(to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n}\n\n/// @notice A generic interface for a contract which properly accepts ERC721 tokens.\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\nabstract contract ERC721TokenReceiver {\n function onERC721Received(\n address,\n address,\n uint256,\n bytes calldata\n ) external virtual returns (bytes4) {\n return ERC721TokenReceiver.onERC721Received.selector;\n }\n}\n" + }, + "contracts/Base64.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.2;\n\n/// @title Base64\n/// @notice Provides a function for encoding some bytes in base64\n/// @author Brecht Devos \nlibrary Base64 {\n bytes internal constant TABLE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n /// @notice Encodes some bytes to the base64 representation\n function encode(bytes memory data) internal pure returns (string memory) {\n uint256 len = data.length;\n if (len == 0) return \"\";\n\n // multiply by 4/3 rounded up\n uint256 encodedLen = 4 * ((len + 2) / 3);\n\n // Add some extra buffer at the end\n bytes memory result = new bytes(encodedLen + 32);\n\n bytes memory table = TABLE;\n\n assembly {\n let tablePtr := add(table, 1)\n let resultPtr := add(result, 32)\n\n for {\n let i := 0\n } lt(i, len) {\n\n } {\n i := add(i, 3)\n let input := and(mload(add(data, i)), 0xffffff)\n\n let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))\n out := shl(8, out)\n out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))\n out := shl(8, out)\n out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))\n out := shl(8, out)\n out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))\n out := shl(224, out)\n\n mstore(resultPtr, out)\n\n resultPtr := add(resultPtr, 4)\n }\n\n switch mod(len, 3)\n case 1 {\n mstore(sub(resultPtr, 2), shl(240, 0x3d3d))\n }\n case 2 {\n mstore(sub(resultPtr, 1), shl(248, 0x3d))\n }\n\n mstore(result, encodedLen)\n }\n\n return string(result);\n }\n}\n" + }, + "contracts/SakutaroPoem.sol": { + "content": "// SPDX-License-Identifier: MIT\n//\n// _____ _ _\n// / ___| | | | |\n// \\ `--. __ _ | | __ _ _ | |_ __ _ _ __ ___\n// `--. \\ / _` || |/ /| | | || __| / _` || '__| / _ \\\n// /\\__/ /| (_| || < | |_| || |_ | (_| || | | (_) |\n// \\____/ \\__,_||_|\\_\\ \\__,_| \\__| \\__,_||_| \\___/\n//\npragma solidity ^0.8.2;\n\nimport {ERC721} from \"@rari-capital/solmate/src/tokens/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\n\ninterface ITokenURI {\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n\ncontract SakutaroPoem is ERC721 {\n using Counters for Counters.Counter;\n Counters.Counter private _tokenIdCounter;\n\n uint256 public constant maxElements = 39;\n uint256 public constant secondarySaleRoyalty = 10_00000; // 10.0%\n uint256 public constant modulo = 100_00000; // precision 100.00000%\n\n address public tokenURIContractAddress;\n address public royaltyReceiver;\n uint256 private seed;\n\n constructor(address _tokenURIContractAddress) ERC721(\"Sakutaro Poem\", \"SAKU\") {\n tokenURIContractAddress = _tokenURIContractAddress;\n royaltyReceiver = msg.sender;\n seed = block.timestamp;\n }\n\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n function totalSupply() public view returns (uint256) {\n return _tokenIdCounter.current();\n }\n\n function mint(address to) public {\n require(_tokenIdCounter.current() < maxElements, \"Mint would exceed max supply of NFTs\");\n _tokenIdCounter.increment();\n uint256 tokenId = _tokenIdCounter.current();\n _safeMint(to, tokenId);\n }\n\n function _burn(uint256 tokenId) internal override(ERC721) {\n super._burn(tokenId);\n }\n\n function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) {\n uint256 id = (uint160(ownerOf(tokenId)) + seed) % uint256(39);\n return ITokenURI(tokenURIContractAddress).tokenURI(id);\n }\n\n function supportsInterface(bytes4 interfaceId) public pure virtual override(ERC721) returns (bool) {\n return\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\n interfaceId == 0x5b5e139f || // ERC165 Interface ID for ERC721Metadata\n interfaceId == 0x2a55205a; // ERC165 Interface ID for ERC2981\n }\n\n // ERC-2981\n function royaltyInfo(\n uint256 /* _tokenId */,\n uint256 _value\n ) external view returns (address _receiver, uint256 _royaltyAmount) {\n _receiver = royaltyReceiver;\n _royaltyAmount = (_value / modulo) * secondarySaleRoyalty;\n }\n}\n" + }, + "contracts/TokenURI.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.2;\n\nimport {Base64} from \"./Base64.sol\";\n\ncontract TokenURI {\n string[] public poemTitles = [\n unicode\"ああ固い氷を破つて\",\n unicode\"芝生の上で\",\n unicode\"舌のない眞理\",\n unicode\"慈悲\",\n unicode\"秋晴\",\n unicode\"陸橋を渡る\",\n unicode\"涙ぐましい夕暮\",\n unicode\"地球を跳躍して\",\n unicode\"夜汽車の窓で\",\n unicode\"春のくる時\",\n unicode\"極光地方から\",\n unicode\"斷橋\",\n unicode\"運命への忍辱\",\n unicode\"寂寥の川邊\",\n unicode\"船室から\",\n unicode\"記憶を捨てる\",\n unicode\"情緒よ! 君は歸らざるか\",\n unicode\"港の雜貨店で\",\n unicode\"鏡\",\n unicode\"狐\",\n unicode\"吹雪の中で\",\n unicode\"銃器店の前で\",\n unicode\"虚數の虎\",\n unicode\"自然の中で\",\n unicode\"觸手ある空間\",\n unicode\"大佛\",\n unicode\"家\",\n unicode\"黒い洋傘\",\n unicode\"恐ろしき人形芝居\",\n unicode\"齒をもてる意志\",\n unicode\"建築の Nostalgia\",\n unicode\"父\",\n unicode\"敵\",\n unicode\"物質の感情\",\n unicode\"物體\",\n unicode\"龍\",\n unicode\"橋\",\n unicode\"山上の祈\",\n unicode\"戰場での幻想\"\n ];\n\n string[] public poemBodies = [\n unicode\"ああ固い氷を破つて突進する、一つの寂しい帆船よ。あの高い空にひるがへる、浪浪の固體した印象から、その隔離した地方の物侘しい冬の光線から、あはれに煤ぼけて見える小さな黒い獵鯨船よ。孤獨な環境の海に漂泊する船の羅針が、一つの鋭どい意志の尖角・・・・・が、ああ如何に固い冬の氷を突き破つて驀進することよ。\",\n unicode\"若草の芽が萌えるやうに、この日當りのよい芝生の上では、思想が後から後からと成長してくる。けれどもそれらの思想は、私にまで何の交渉があらうぞ。私はただ青空を眺めて居たい。あの蒼天の夢の中に溶けてしまふやうな、さういふ思想の幻想だけを育くみたいのだ。私自身の情緒の影で、なつかしい緑陰の夢をつくるやうな、それらの「情調ある思想」だけを語りたいのだ。空飛ぶ小鳥よ。\",\n unicode\"とある幻燈の中で、青白い雪の降りつもつてゐる、しづかなしづかな景色の中で、私は一つの眞理をつかんだ。物言ふことのできない、永遠に永遠にうら悲しげな、私は「舌のない眞理」を感じた。景色の、幻燈の、雪のつもる影を過ぎ去つて行く、さびしい青猫のかたちをかんじた。\",\n unicode\"風琴の鎭魂樂れくれえむをきくやうに、冥想の厚い壁の影で、靜かに湧きあがつてくる黒い感情。情慾の強い惱みを抑へ、果敢ない運命への叛逆や、何といふこともない生活の暗愁や、いらいらした心の焦燥やを忘れさせ、安らかな安らかな寢臺の上で、靈魂の深みある眠りをさそふやうな、一つの力ある靜かな感情。それは生活の疲れた薄暮に、響板の鈍いうなりをたてる、大きな幅のある靜かな感情。――佛陀の教へた慈悲の哲學!\",\n unicode\"牧場の牛が草を食つてゐるのをみて、閑散や怠惰の趣味を解しないほど、それほど近代的になつてしまつた・・・・・・・・・・・人人にまで、私はいかなる會話をもさけるであらう。私の肌にしみ込んでくる、この秋日和の物倦い眠たさに就いて、この古風なる私の思想の情調に就いて、この上もはや語らないであらう。\",\n unicode\"憂鬱に沈みながら、ひとり寂しく陸橋を渡つて行く。かつて何物にさへ妥協せざる、何物にさへ安易せざる、この一つの感情をどこへ行かうか。落日は地平に低く、環境は怒りに燃えてる。一切を憎惡し、粉碎し、叛逆し、嘲笑し、斬奸し、敵愾する、この一個の黒い影をマントにつつんで、ひとり寂しく陸橋を渡つて行く。かの高い架空の橋を越えて、はるかの幻燈の市街にまで。\",\n unicode\"これらの夕暮は涙ぐましく、私の書齋に訪れてくる。思想は情調の影にぬれて、感じのよい温雅の色合を帶びて見える。ああいかに今の私にまで、一つの惠まれた徳はないか。何物の卑劣にすら、何物の虚僞にすら、あへて高貴の寛容を示し得るやうな、一つの穩やかにして閑雅なる徳はないか。――私をして獨り寂しく、今日の夕暮の空に默思せしめよ。\",\n unicode\"たしかに私は、ある一つの特異な才能を持つてゐる。けれどもそれが丁度あてはまる・・・・・やうな、どんな特別な「仕事」も今日の地球の上に有りはしない。むしろ私をして、地球を遠く圈外に跳躍せしめよ。\",\n unicode\"夜汽車の中で、電燈は暗く、沈鬱した空氣の中で、人人は深い眠りに落ちてゐる。一人起きて窓をひらけば、夜風はつめたく肌にふれ、闇夜の暗黒な野原を飛ぶ、しきりに飛ぶ火蟲をみる。ああこの眞つ暗な恐ろしい景色を貫通する! 深夜の轟轟といふ響の中で、いづこへ、いづこへ、私の夜汽車は行かうとするのか。\",\n unicode\"扇もつ若い娘ら、春の屏風の前に居て、君のしなやかな肩をすべらせ、艶めかしい曲線は足にからむ。扇もつ若い娘ら、君の笑顏に情をふくめよ、春は來らんとす。\",\n unicode\"海豹あざらしのやうに、極光の見える氷の上で、ぼんやりと「自分を忘れて」坐つてゐたい。そこに時劫がすぎ去つて行く。晝夜のない極光地方の、いつも暮れ方のやうな光線が、鈍く悲しげに幽滅するところ。ああその遠い北極圈の氷の上で、ぼんやりと海豹のやうに坐つて居たい。永遠に、永遠に、自分を忘れて、思惟のほの暗い海に浮ぶ、一つの侘しい幻象を眺めて居たいのです。\",\n unicode\"夜道を走る汽車まで、一つの赤い燈火を示せよ。今そこに危險がある。斷橋! 斷橋! ああ悲鳴は風をつんざく。だれがそれを知るか。精神は闇の曠野をひた走る。急行し、急行し、急行し、彼の悲劇の終驛へと。\",\n unicode\"とはいへ環境の闇を突破すべき、どんな力がそこにあるか。齒がみてこらへよ。こらへよ。こらへよ。\",\n unicode\"古驛の、柳のある川の岸で、かれは何を釣らうとするのか。やがて生活の薄暮がくるまで、そんなにも長い間、針のない釣竿で……。「否」とその支那人が答へた。「魚の美しく走るを眺めよ、水の靜かに行くを眺めよ。いかに君はこの靜謐を好まないか。この風景の聰明な情趣を。むしろ私は、終日釣り得ない・・・・・ことを希望してゐる。されば日當り好い寂寥の岸邊に坐して、私のどんな環境をも亂すなかれ。」\",\n unicode\"嵐、嵐、浪、浪、大浪、大浪、大浪。傾むく地平線、上昇する地平線、落ちくる地平線。がちやがちや、がちやがちや。上甲板へ、上甲板へ。チエンを卷け、チエンを卷け。突進する、突進する水夫ら。船室の窓、窓、窓、窓。傾むく地平線、上昇する地平線。チエンチエンチエン。風、風、風。水、水、水。船窓ハツチを閉めろ。船窓ハツチを閉めろ。右舷へ、左舷へ。浪、浪、浪。ほひゆーる。ほひゆーる。ほひゆーる。\",\n unicode\"森からかへるとき、私は帽子をぬぎすてた。ああ、記憶。恐ろしく破れちぎつた記憶。みじめな、泥水の中に腐つた記憶。さびしい雨景の道にふるへる私の帽子。背後に捨てて行く。\",\n unicode\"書生は町に行き、工場の下を通り、機關車の鳴る響を聽いた。火夫の走り、車輪の廻り、群鴉の喧號する巷の中で、はや一つの胡弓は荷造され、貨車に積まれ、さうして港の倉庫の方へ、税關の門をくぐつて行つた。
十月下旬。書生は飯を食はうとして、枯れた芝草の倉庫の影に、音樂の忍び居り、蟋蟀のやうに鳴くのを聽いた。
――情緒よ、君は歸らざるか。\",\n unicode\"この鋏の槓力でも、女の錆びついた銅牌メダルが切れないのか。水夫よ! 汝の隱衣かくしの錢をかぞへて、無用の情熱を捨ててしまへ!\",\n unicode\"鏡のうしろへ廻つてみても、「私」はそこに居ないのですよ。お孃さん!\",\n unicode\"見よ! 彼は風のやうに來る。その額は憂鬱に青ざめてゐる。耳はするどく切つ立ち、まなじりは怒に裂けてゐる。
君よ! 狡智・・のかくの如き美しき表情をどこに見たか。\",\n unicode\"單に孤獨であるばかりでない。敵を以て充たされてゐる!\",\n unicode\"明るい硝子戸の店の中で、一つの磨かれた銃器さへも、火藥を裝填してないのである。――何たる虚妄ぞ。懶爾らんじとして笑へ!\",\n unicode\"博徒等集まり、投げつけられたる生涯の機因チヤンスの上で、虚數の情熱を賭け合つてゐる。みな兇暴のつらだましひ仁義じんぎを構へ、虎のやうな空洞に居る。\",\n unicode\"荒寥とした山の中腹で、壁のやうに沈默してゐる、一の巨大なる耳を見た。\",\n unicode\"宿命的なる東洋の建築は、その屋根の下で忍從しながら、いらかに於て怒り立つてゐる。\",\n unicode\"その内部に構造の支柱を持ち、暗い梯子と經文を藏する佛陀よ! 海よりも遠く、人畜の住む世界を越えて、指のやうに尨大なれ!\",\n unicode\"人が家の中に住んでるのは、地上の悲しい風景である。\",\n unicode\"憂鬱の長い柄から、雨がしとしととしづくをしてゐる。眞黒の大きな洋傘!\",\n unicode\"理髮店の青い窓から、葱のやうに突き出す棍棒。そいつの馬鹿らしい機械仕掛で、夢中になぐられ、なぐられて居る。\",\n unicode\"意志! そは夕暮の海よりして、鱶の如くに泳ぎ來り、齒を以て肉に噛みつけり。\",\n unicode\"建築――特に群團した建築――の樣式は、空の穹窿に對して構想されねばならぬ。即ち切斷されたる球の弧形に對して、槍状の垂直線や、圓錐形やの交錯せる構想を用意すべきである。
この蒼空の下に於ける、遠方の都會の印象として、おほむねの建築は一つの重要な意匠を忘れてゐる。\",\n unicode\"父は永遠に悲壯である。\",\n unicode\"敵は常に哄笑してゐる。さうでもなければ、何者の表象が怒らせるのか?\",\n unicode\"機械人間にもし感情があるとすれば? 無限の哀傷のほかの何者でもない。\",\n unicode\"私がもし物體であらうとも、神は再度朗らかに笑ひはしない。ああ、琴の音が聽えて來る。――小さな一つの倫理モラルが、喪失してしまつたのだ。\",\n unicode\"龍は帝王の欲望を象徴してゐる。權力の祥雲に乘つて居ながら、常に憤ほろしい恚怒に燃え、不斷の爭鬪のために牙をむいてる。\",\n unicode\"すべての橋は、一つの建築意匠しか持つてゐない。時間を空間の上に架け、或る夢幻的な一つの觀念イデアを、現實的に辨證することの熱意である。
橋とは――夢を架空した數學である。\",\n unicode\"多くの先天的の詩人や藝術家等は、彼等の宿命づけられた仕事に對して、あの悲痛な耶蘇の祈をよく知つてる。「神よ! もし御心に適ふならば、この苦き酒盃を離し給へ。されど爾にして欲するならば、御心のままに爲し給へ。」\",\n unicode\"機關銃よりも悲しげに、繋留氣球よりも憂鬱に、炸裂彈よりも殘忍に、毒瓦斯よりも沈痛に、曳火彈よりも蒼白く、大砲よりもロマンチツクに、煙幕よりも寂しげに、銃火の白く閃めくやうな詩が書きたい!\"\n ];\n\n function tokenURI(uint256 id) public view returns (string memory) {\n string[11] memory parts;\n parts[0] = '';\n parts[1] = '';\n parts[2] = '';\n parts[3] = '';\n parts[4] = '

';\n parts[5] = poemTitles[id];\n parts[6] = '

';\n parts[7] = poemBodies[id];\n parts[8] = '

';\n parts[9] = unicode\"― 萩原 朔太郎\";\n parts[10] = \"

\";\n\n string memory output = string(abi.encodePacked(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7], parts[8], parts[9], parts[10]));\n string memory json = Base64.encode(bytes(string(abi.encodePacked(\n \"{\",\n '\"name\": \"', poemTitles[id], '\",',\n '\"description\": \"Thirty-nine poems from Sakutaro Hagiwara\\'s late self-selected collection \\\\\"Shukumei\\\\\" have been inscribed on Blockchain as full-onchain NFTs. The content of this NFT changes depending on the owner.\",',\n '\"image\": \"data:image/svg+xml;base64,', Base64.encode(bytes(output)), '\",',\n '\"license\": \"CC-BY 4.0\",',\n '\"creator\": \"Ara\"',\n \"}\"\n ))));\n output = string(abi.encodePacked(\"data:application/json;base64,\", json));\n\n return output;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} \ No newline at end of file diff --git a/packages/contracts/evm-compatible/deployments/filecointestnet/.chainId b/packages/contracts/evm-compatible/deployments/filecointestnet/.chainId new file mode 100644 index 0000000..ce31e04 --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecointestnet/.chainId @@ -0,0 +1 @@ +314159 \ No newline at end of file diff --git a/packages/contracts/evm-compatible/deployments/filecointestnet/SakutaroPoem.json b/packages/contracts/evm-compatible/deployments/filecointestnet/SakutaroPoem.json new file mode 100644 index 0000000..a255254 --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecointestnet/SakutaroPoem.json @@ -0,0 +1,649 @@ +{ + "address": "0x6750D3Fd143e91083D4ff10Dc659Efc517c3EC85", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenURIContractAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "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": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxElements", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "modulo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "royaltyInfo", + "outputs": [ + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_royaltyAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "royaltyReceiver", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "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": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "secondarySaleRoyalty", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "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": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "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": [], + "name": "tokenURIContractAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "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": "id", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x71e760016621cc631d5183eb62eb050e9ac39b76693fea805b68089c9e64e5fd", + "receipt": { + "to": null, + "from": "0xe0C3136Cf7f7d8cA1a2de8eE5a278261DE1F5CA8", + "contractAddress": "0x6750D3Fd143e91083D4ff10Dc659Efc517c3EC85", + "transactionIndex": 1, + "gasUsed": "93004773", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000400000000000000000000000000008200000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000800000000000000000000000", + "blockHash": "0xefece3f338900c6d00ed5515972b80e6a04a6e0e19a2701cac0e632baea97ba7", + "transactionHash": "0x71e760016621cc631d5183eb62eb050e9ac39b76693fea805b68089c9e64e5fd", + "logs": [], + "blockNumber": 1666609, + "cumulativeGasUsed": "0", + "status": 1, + "byzantium": true + }, + "args": [ + "0x2a12C2Bbc4E936CE8763bcfA096E5e4EbFc2C02D" + ], + "numDeployments": 1, + "solcInputHash": "9d362a9261eac5217bad10d772735e46", + "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenURIContractAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxElements\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"modulo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"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\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"secondarySaleRoyalty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"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\":[],\"name\":\"tokenURIContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SakutaroPoem.sol\":\"SakutaroPoem\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@rari-capital/solmate/src/tokens/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity >=0.8.0;\\n\\n/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.\\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\\nabstract contract ERC721 {\\n /*//////////////////////////////////////////////////////////////\\n EVENTS\\n //////////////////////////////////////////////////////////////*/\\n\\n event Transfer(address indexed from, address indexed to, uint256 indexed id);\\n\\n event Approval(address indexed owner, address indexed spender, uint256 indexed id);\\n\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /*//////////////////////////////////////////////////////////////\\n METADATA STORAGE/LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n string public name;\\n\\n string public symbol;\\n\\n function tokenURI(uint256 id) public view virtual returns (string memory);\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC721 BALANCE/OWNER STORAGE\\n //////////////////////////////////////////////////////////////*/\\n\\n mapping(uint256 => address) internal _ownerOf;\\n\\n mapping(address => uint256) internal _balanceOf;\\n\\n function ownerOf(uint256 id) public view virtual returns (address owner) {\\n require((owner = _ownerOf[id]) != address(0), \\\"NOT_MINTED\\\");\\n }\\n\\n function balanceOf(address owner) public view virtual returns (uint256) {\\n require(owner != address(0), \\\"ZERO_ADDRESS\\\");\\n\\n return _balanceOf[owner];\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC721 APPROVAL STORAGE\\n //////////////////////////////////////////////////////////////*/\\n\\n mapping(uint256 => address) public getApproved;\\n\\n mapping(address => mapping(address => bool)) public isApprovedForAll;\\n\\n /*//////////////////////////////////////////////////////////////\\n CONSTRUCTOR\\n //////////////////////////////////////////////////////////////*/\\n\\n constructor(string memory _name, string memory _symbol) {\\n name = _name;\\n symbol = _symbol;\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC721 LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function approve(address spender, uint256 id) public virtual {\\n address owner = _ownerOf[id];\\n\\n require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \\\"NOT_AUTHORIZED\\\");\\n\\n getApproved[id] = spender;\\n\\n emit Approval(owner, spender, id);\\n }\\n\\n function setApprovalForAll(address operator, bool approved) public virtual {\\n isApprovedForAll[msg.sender][operator] = approved;\\n\\n emit ApprovalForAll(msg.sender, operator, approved);\\n }\\n\\n function transferFrom(\\n address from,\\n address to,\\n uint256 id\\n ) public virtual {\\n require(from == _ownerOf[id], \\\"WRONG_FROM\\\");\\n\\n require(to != address(0), \\\"INVALID_RECIPIENT\\\");\\n\\n require(\\n msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],\\n \\\"NOT_AUTHORIZED\\\"\\n );\\n\\n // Underflow of the sender's balance is impossible because we check for\\n // ownership above and the recipient's balance can't realistically overflow.\\n unchecked {\\n _balanceOf[from]--;\\n\\n _balanceOf[to]++;\\n }\\n\\n _ownerOf[id] = to;\\n\\n delete getApproved[id];\\n\\n emit Transfer(from, to, id);\\n }\\n\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id\\n ) public virtual {\\n transferFrom(from, to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, \\\"\\\") ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n bytes calldata data\\n ) public virtual {\\n transferFrom(from, to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n ERC165 LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\\n return\\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\\n interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n INTERNAL MINT/BURN LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function _mint(address to, uint256 id) internal virtual {\\n require(to != address(0), \\\"INVALID_RECIPIENT\\\");\\n\\n require(_ownerOf[id] == address(0), \\\"ALREADY_MINTED\\\");\\n\\n // Counter overflow is incredibly unrealistic.\\n unchecked {\\n _balanceOf[to]++;\\n }\\n\\n _ownerOf[id] = to;\\n\\n emit Transfer(address(0), to, id);\\n }\\n\\n function _burn(uint256 id) internal virtual {\\n address owner = _ownerOf[id];\\n\\n require(owner != address(0), \\\"NOT_MINTED\\\");\\n\\n // Ownership check above ensures no underflow.\\n unchecked {\\n _balanceOf[owner]--;\\n }\\n\\n delete _ownerOf[id];\\n\\n delete getApproved[id];\\n\\n emit Transfer(owner, address(0), id);\\n }\\n\\n /*//////////////////////////////////////////////////////////////\\n INTERNAL SAFE MINT LOGIC\\n //////////////////////////////////////////////////////////////*/\\n\\n function _safeMint(address to, uint256 id) internal virtual {\\n _mint(to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, \\\"\\\") ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n\\n function _safeMint(\\n address to,\\n uint256 id,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, id);\\n\\n require(\\n to.code.length == 0 ||\\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==\\n ERC721TokenReceiver.onERC721Received.selector,\\n \\\"UNSAFE_RECIPIENT\\\"\\n );\\n }\\n}\\n\\n/// @notice A generic interface for a contract which properly accepts ERC721 tokens.\\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\\nabstract contract ERC721TokenReceiver {\\n function onERC721Received(\\n address,\\n address,\\n uint256,\\n bytes calldata\\n ) external virtual returns (bytes4) {\\n return ERC721TokenReceiver.onERC721Received.selector;\\n }\\n}\\n\",\"keccak256\":\"0xb59c7c25eca386f39da4819a9f70f89b73b7583d5f5127a83ffe5339800b1183\",\"license\":\"AGPL-3.0-only\"},\"contracts/SakutaroPoem.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n//\\n// _____ _ _\\n// / ___| | | | |\\n// \\\\ `--. __ _ | | __ _ _ | |_ __ _ _ __ ___\\n// `--. \\\\ / _` || |/ /| | | || __| / _` || '__| / _ \\\\\\n// /\\\\__/ /| (_| || < | |_| || |_ | (_| || | | (_) |\\n// \\\\____/ \\\\__,_||_|\\\\_\\\\ \\\\__,_| \\\\__| \\\\__,_||_| \\\\___/\\n//\\npragma solidity ^0.8.2;\\n\\nimport {ERC721} from \\\"@rari-capital/solmate/src/tokens/ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\n\\ninterface ITokenURI {\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\\ncontract SakutaroPoem is ERC721 {\\n using Counters for Counters.Counter;\\n Counters.Counter private _tokenIdCounter;\\n\\n uint256 public constant maxElements = 39;\\n uint256 public constant secondarySaleRoyalty = 10_00000; // 10.0%\\n uint256 public constant modulo = 100_00000; // precision 100.00000%\\n\\n address public tokenURIContractAddress;\\n address public royaltyReceiver;\\n uint256 private seed;\\n\\n constructor(address _tokenURIContractAddress) ERC721(\\\"Sakutaro Poem\\\", \\\"SAKU\\\") {\\n tokenURIContractAddress = _tokenURIContractAddress;\\n royaltyReceiver = msg.sender;\\n seed = block.timestamp;\\n }\\n\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n function totalSupply() public view returns (uint256) {\\n return _tokenIdCounter.current();\\n }\\n\\n function mint(address to) public {\\n require(_tokenIdCounter.current() < maxElements, \\\"Mint would exceed max supply of NFTs\\\");\\n _tokenIdCounter.increment();\\n uint256 tokenId = _tokenIdCounter.current();\\n _safeMint(to, tokenId);\\n }\\n\\n function _burn(uint256 tokenId) internal override(ERC721) {\\n super._burn(tokenId);\\n }\\n\\n function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) {\\n uint256 id = (uint160(ownerOf(tokenId)) + seed) % uint256(39);\\n return ITokenURI(tokenURIContractAddress).tokenURI(id);\\n }\\n\\n function supportsInterface(bytes4 interfaceId) public pure virtual override(ERC721) returns (bool) {\\n return\\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\\n interfaceId == 0x5b5e139f || // ERC165 Interface ID for ERC721Metadata\\n interfaceId == 0x2a55205a; // ERC165 Interface ID for ERC2981\\n }\\n\\n // ERC-2981\\n function royaltyInfo(\\n uint256 /* _tokenId */,\\n uint256 _value\\n ) external view returns (address _receiver, uint256 _royaltyAmount) {\\n _receiver = royaltyReceiver;\\n _royaltyAmount = (_value / modulo) * secondarySaleRoyalty;\\n }\\n}\\n\",\"keccak256\":\"0x27a5e247e6135f53435146691e89b3aeaefb6aa2029e1c67d7ae2fb7839d93d9\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620027423803806200274283398181016040528101906200003791906200022e565b6040518060400160405280600d81526020017f53616b757461726f20506f656d000000000000000000000000000000000000008152506040518060400160405280600481526020017f53414b55000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000bb92919062000167565b508060019080519060200190620000d492919062000167565b50505080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600981905550506200030d565b82805462000175906200028e565b90600052602060002090601f016020900481019282620001995760008555620001e5565b82601f10620001b457805160ff1916838001178555620001e5565b82800160010185558215620001e5579182015b82811115620001e4578251825591602001919060010190620001c7565b5b509050620001f49190620001f8565b5090565b5b8082111562000213576000816000905550600101620001f9565b5090565b6000815190506200022881620002f3565b92915050565b6000602082840312156200024157600080fd5b6000620002518482850162000217565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006002820490506001821680620002a757607f821691505b60208210811415620002be57620002bd620002c4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620002fe816200025a565b81146200030a57600080fd5b50565b612425806200031d6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b85780639fbc87131161007c5780639fbc871314610351578063a22cb4651461036f578063b88d4fde1461038b578063c87b56dd146103a7578063d9cc1886146103d7578063e985e9c5146103f557610137565b80636352211e1461029957806363f204d0146102c95780636a627842146102e757806370a082311461030357806395d89b411461033357610137565b806323b872dd116100ff57806323b872dd146101f457806329745262146102105780632a55205a1461022e57806342842e0e1461025f578063558fa0f51461027b57610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b610156600480360381019061015191906119ad565b610425565b6040516101639190611d4f565b60405180910390f35b6101746104e7565b6040516101819190611d6a565b60405180910390f35b6101a4600480360381019061019f9190611a40565b610575565b6040516101b19190611c73565b60405180910390f35b6101d460048036038101906101cf9190611971565b6105a8565b005b6101de610791565b6040516101eb9190611e8c565b60405180910390f35b61020e60048036038101906102099190611866565b6107a2565b005b610218610ba2565b6040516102259190611e8c565b60405180910390f35b61024860048036038101906102439190611a69565b610ba9565b604051610256929190611d26565b60405180910390f35b61027960048036038101906102749190611866565b610bf7565b005b610283610d3e565b6040516102909190611e8c565b60405180910390f35b6102b360048036038101906102ae9190611a40565b610d43565b6040516102c09190611c73565b60405180910390f35b6102d1610def565b6040516102de9190611e8c565b60405180910390f35b61030160048036038101906102fc9190611801565b610df6565b005b61031d60048036038101906103189190611801565b610e68565b60405161032a9190611e8c565b60405180910390f35b61033b610f20565b6040516103489190611d6a565b60405180910390f35b610359610fae565b6040516103669190611c73565b60405180910390f35b61038960048036038101906103849190611935565b610fd4565b005b6103a560048036038101906103a091906118b5565b6110d1565b005b6103c160048036038101906103bc9190611a40565b61121e565b6040516103ce9190611d6a565b60405180910390f35b6103df611314565b6040516103ec9190611c73565b60405180910390f35b61040f600480360381019061040a919061182a565b61133a565b60405161041c9190611d4f565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104b05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e05750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546104f4906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610520906120c1565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106a05750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611e2c565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061079d6006611369565b905090565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611e6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90611d8c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109735750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806109dc57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290611e2c565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6298968081565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150620f42406298968084610be49190611f80565b610bee9190611fb1565b90509250929050565b610c028383836107a2565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610cfa575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610c8793929190611cdc565b602060405180830381600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090611dec565b60405180910390fd5b505050565b602781565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff161415610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190611e4c565b60405180910390fd5b919050565b620f424081565b6027610e026006611369565b10610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611dac565b60405180910390fd5b610e4c6006611377565b6000610e586006611369565b9050610e64828261138d565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090611dcc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610f2d906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f59906120c1565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b505050505081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110c59190611d4f565b60405180910390a35050565b6110dc8585856107a2565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806111d8575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611165959493929190611c8e565b602060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b791906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90611dec565b60405180910390fd5b5050505050565b60606000602760095461123085610d43565b73ffffffffffffffffffffffffffffffffffffffff166112509190611f2a565b61125a9190612124565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016112b79190611e8c565b60006040518083038186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130c91906119ff565b915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600081600001549050919050565b6001816000016000828254019250508190555050565b61139782826114d3565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611490575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b815260040161141d93929190611cdc565b602060405180830381600087803b15801561143757600080fd5b505af115801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690611dec565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90611d8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90611e0c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006116f96116f484611ecc565b611ea7565b90508281526020810184848401111561171157600080fd5b61171c84828561208e565b509392505050565b60008135905061173381612393565b92915050565b600081359050611748816123aa565b92915050565b60008135905061175d816123c1565b92915050565b600081519050611772816123c1565b92915050565b60008083601f84011261178a57600080fd5b8235905067ffffffffffffffff8111156117a357600080fd5b6020830191508360018202830111156117bb57600080fd5b9250929050565b600082601f8301126117d357600080fd5b81516117e38482602086016116e6565b91505092915050565b6000813590506117fb816123d8565b92915050565b60006020828403121561181357600080fd5b600061182184828501611724565b91505092915050565b6000806040838503121561183d57600080fd5b600061184b85828601611724565b925050602061185c85828601611724565b9150509250929050565b60008060006060848603121561187b57600080fd5b600061188986828701611724565b935050602061189a86828701611724565b92505060406118ab868287016117ec565b9150509250925092565b6000806000806000608086880312156118cd57600080fd5b60006118db88828901611724565b95505060206118ec88828901611724565b94505060406118fd888289016117ec565b935050606086013567ffffffffffffffff81111561191a57600080fd5b61192688828901611778565b92509250509295509295909350565b6000806040838503121561194857600080fd5b600061195685828601611724565b925050602061196785828601611739565b9150509250929050565b6000806040838503121561198457600080fd5b600061199285828601611724565b92505060206119a3858286016117ec565b9150509250929050565b6000602082840312156119bf57600080fd5b60006119cd8482850161174e565b91505092915050565b6000602082840312156119e857600080fd5b60006119f684828501611763565b91505092915050565b600060208284031215611a1157600080fd5b600082015167ffffffffffffffff811115611a2b57600080fd5b611a37848285016117c2565b91505092915050565b600060208284031215611a5257600080fd5b6000611a60848285016117ec565b91505092915050565b60008060408385031215611a7c57600080fd5b6000611a8a858286016117ec565b9250506020611a9b858286016117ec565b9150509250929050565b611aae8161200b565b82525050565b611abd8161201d565b82525050565b6000611acf8385611f08565b9350611adc83858461207f565b611ae583612211565b840190509392505050565b6000611afb82611efd565b611b058185611f19565b9350611b1581856020860161208e565b611b1e81612211565b840191505092915050565b6000611b36601183611f19565b9150611b4182612222565b602082019050919050565b6000611b59602483611f19565b9150611b648261224b565b604082019050919050565b6000611b7c600c83611f19565b9150611b878261229a565b602082019050919050565b6000611b9f601083611f19565b9150611baa826122c3565b602082019050919050565b6000611bc2600083611f08565b9150611bcd826122ec565b600082019050919050565b6000611be5600e83611f19565b9150611bf0826122ef565b602082019050919050565b6000611c08600e83611f19565b9150611c1382612318565b602082019050919050565b6000611c2b600a83611f19565b9150611c3682612341565b602082019050919050565b6000611c4e600a83611f19565b9150611c598261236a565b602082019050919050565b611c6d81612075565b82525050565b6000602082019050611c886000830184611aa5565b92915050565b6000608082019050611ca36000830188611aa5565b611cb06020830187611aa5565b611cbd6040830186611c64565b8181036060830152611cd0818486611ac3565b90509695505050505050565b6000608082019050611cf16000830186611aa5565b611cfe6020830185611aa5565b611d0b6040830184611c64565b8181036060830152611d1c81611bb5565b9050949350505050565b6000604082019050611d3b6000830185611aa5565b611d486020830184611c64565b9392505050565b6000602082019050611d646000830184611ab4565b92915050565b60006020820190508181036000830152611d848184611af0565b905092915050565b60006020820190508181036000830152611da581611b29565b9050919050565b60006020820190508181036000830152611dc581611b4c565b9050919050565b60006020820190508181036000830152611de581611b6f565b9050919050565b60006020820190508181036000830152611e0581611b92565b9050919050565b60006020820190508181036000830152611e2581611bd8565b9050919050565b60006020820190508181036000830152611e4581611bfb565b9050919050565b60006020820190508181036000830152611e6581611c1e565b9050919050565b60006020820190508181036000830152611e8581611c41565b9050919050565b6000602082019050611ea16000830184611c64565b92915050565b6000611eb1611ec2565b9050611ebd82826120f3565b919050565b6000604051905090565b600067ffffffffffffffff821115611ee757611ee66121e2565b5b611ef082612211565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f3582612075565b9150611f4083612075565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f7557611f74612155565b5b828201905092915050565b6000611f8b82612075565b9150611f9683612075565b925082611fa657611fa5612184565b5b828204905092915050565b6000611fbc82612075565b9150611fc783612075565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200057611fff612155565b5b828202905092915050565b600061201682612055565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156120ac578082015181840152602081019050612091565b838111156120bb576000848401525b50505050565b600060028204905060018216806120d957607f821691505b602082108114156120ed576120ec6121b3565b5b50919050565b6120fc82612211565b810181811067ffffffffffffffff8211171561211b5761211a6121e2565b5b80604052505050565b600061212f82612075565b915061213a83612075565b92508261214a57612149612184565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b7f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060008201527f4e46547300000000000000000000000000000000000000000000000000000000602082015250565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b50565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b61239c8161200b565b81146123a757600080fd5b50565b6123b38161201d565b81146123be57600080fd5b50565b6123ca81612029565b81146123d557600080fd5b50565b6123e181612075565b81146123ec57600080fd5b5056fea2646970667358221220c0a55333192370778c2c0e5ad175b095a2229989edeaa2cd1474aa8ea526793a64736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b85780639fbc87131161007c5780639fbc871314610351578063a22cb4651461036f578063b88d4fde1461038b578063c87b56dd146103a7578063d9cc1886146103d7578063e985e9c5146103f557610137565b80636352211e1461029957806363f204d0146102c95780636a627842146102e757806370a082311461030357806395d89b411461033357610137565b806323b872dd116100ff57806323b872dd146101f457806329745262146102105780632a55205a1461022e57806342842e0e1461025f578063558fa0f51461027b57610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b610156600480360381019061015191906119ad565b610425565b6040516101639190611d4f565b60405180910390f35b6101746104e7565b6040516101819190611d6a565b60405180910390f35b6101a4600480360381019061019f9190611a40565b610575565b6040516101b19190611c73565b60405180910390f35b6101d460048036038101906101cf9190611971565b6105a8565b005b6101de610791565b6040516101eb9190611e8c565b60405180910390f35b61020e60048036038101906102099190611866565b6107a2565b005b610218610ba2565b6040516102259190611e8c565b60405180910390f35b61024860048036038101906102439190611a69565b610ba9565b604051610256929190611d26565b60405180910390f35b61027960048036038101906102749190611866565b610bf7565b005b610283610d3e565b6040516102909190611e8c565b60405180910390f35b6102b360048036038101906102ae9190611a40565b610d43565b6040516102c09190611c73565b60405180910390f35b6102d1610def565b6040516102de9190611e8c565b60405180910390f35b61030160048036038101906102fc9190611801565b610df6565b005b61031d60048036038101906103189190611801565b610e68565b60405161032a9190611e8c565b60405180910390f35b61033b610f20565b6040516103489190611d6a565b60405180910390f35b610359610fae565b6040516103669190611c73565b60405180910390f35b61038960048036038101906103849190611935565b610fd4565b005b6103a560048036038101906103a091906118b5565b6110d1565b005b6103c160048036038101906103bc9190611a40565b61121e565b6040516103ce9190611d6a565b60405180910390f35b6103df611314565b6040516103ec9190611c73565b60405180910390f35b61040f600480360381019061040a919061182a565b61133a565b60405161041c9190611d4f565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104b05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e05750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546104f4906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610520906120c1565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106a05750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611e2c565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061079d6006611369565b905090565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611e6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90611d8c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109735750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806109dc57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290611e2c565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6298968081565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150620f42406298968084610be49190611f80565b610bee9190611fb1565b90509250929050565b610c028383836107a2565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610cfa575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610c8793929190611cdc565b602060405180830381600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090611dec565b60405180910390fd5b505050565b602781565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff161415610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190611e4c565b60405180910390fd5b919050565b620f424081565b6027610e026006611369565b10610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611dac565b60405180910390fd5b610e4c6006611377565b6000610e586006611369565b9050610e64828261138d565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090611dcc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610f2d906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f59906120c1565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b505050505081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110c59190611d4f565b60405180910390a35050565b6110dc8585856107a2565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806111d8575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611165959493929190611c8e565b602060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b791906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90611dec565b60405180910390fd5b5050505050565b60606000602760095461123085610d43565b73ffffffffffffffffffffffffffffffffffffffff166112509190611f2a565b61125a9190612124565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016112b79190611e8c565b60006040518083038186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130c91906119ff565b915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600081600001549050919050565b6001816000016000828254019250508190555050565b61139782826114d3565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611490575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b815260040161141d93929190611cdc565b602060405180830381600087803b15801561143757600080fd5b505af115801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690611dec565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90611d8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90611e0c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006116f96116f484611ecc565b611ea7565b90508281526020810184848401111561171157600080fd5b61171c84828561208e565b509392505050565b60008135905061173381612393565b92915050565b600081359050611748816123aa565b92915050565b60008135905061175d816123c1565b92915050565b600081519050611772816123c1565b92915050565b60008083601f84011261178a57600080fd5b8235905067ffffffffffffffff8111156117a357600080fd5b6020830191508360018202830111156117bb57600080fd5b9250929050565b600082601f8301126117d357600080fd5b81516117e38482602086016116e6565b91505092915050565b6000813590506117fb816123d8565b92915050565b60006020828403121561181357600080fd5b600061182184828501611724565b91505092915050565b6000806040838503121561183d57600080fd5b600061184b85828601611724565b925050602061185c85828601611724565b9150509250929050565b60008060006060848603121561187b57600080fd5b600061188986828701611724565b935050602061189a86828701611724565b92505060406118ab868287016117ec565b9150509250925092565b6000806000806000608086880312156118cd57600080fd5b60006118db88828901611724565b95505060206118ec88828901611724565b94505060406118fd888289016117ec565b935050606086013567ffffffffffffffff81111561191a57600080fd5b61192688828901611778565b92509250509295509295909350565b6000806040838503121561194857600080fd5b600061195685828601611724565b925050602061196785828601611739565b9150509250929050565b6000806040838503121561198457600080fd5b600061199285828601611724565b92505060206119a3858286016117ec565b9150509250929050565b6000602082840312156119bf57600080fd5b60006119cd8482850161174e565b91505092915050565b6000602082840312156119e857600080fd5b60006119f684828501611763565b91505092915050565b600060208284031215611a1157600080fd5b600082015167ffffffffffffffff811115611a2b57600080fd5b611a37848285016117c2565b91505092915050565b600060208284031215611a5257600080fd5b6000611a60848285016117ec565b91505092915050565b60008060408385031215611a7c57600080fd5b6000611a8a858286016117ec565b9250506020611a9b858286016117ec565b9150509250929050565b611aae8161200b565b82525050565b611abd8161201d565b82525050565b6000611acf8385611f08565b9350611adc83858461207f565b611ae583612211565b840190509392505050565b6000611afb82611efd565b611b058185611f19565b9350611b1581856020860161208e565b611b1e81612211565b840191505092915050565b6000611b36601183611f19565b9150611b4182612222565b602082019050919050565b6000611b59602483611f19565b9150611b648261224b565b604082019050919050565b6000611b7c600c83611f19565b9150611b878261229a565b602082019050919050565b6000611b9f601083611f19565b9150611baa826122c3565b602082019050919050565b6000611bc2600083611f08565b9150611bcd826122ec565b600082019050919050565b6000611be5600e83611f19565b9150611bf0826122ef565b602082019050919050565b6000611c08600e83611f19565b9150611c1382612318565b602082019050919050565b6000611c2b600a83611f19565b9150611c3682612341565b602082019050919050565b6000611c4e600a83611f19565b9150611c598261236a565b602082019050919050565b611c6d81612075565b82525050565b6000602082019050611c886000830184611aa5565b92915050565b6000608082019050611ca36000830188611aa5565b611cb06020830187611aa5565b611cbd6040830186611c64565b8181036060830152611cd0818486611ac3565b90509695505050505050565b6000608082019050611cf16000830186611aa5565b611cfe6020830185611aa5565b611d0b6040830184611c64565b8181036060830152611d1c81611bb5565b9050949350505050565b6000604082019050611d3b6000830185611aa5565b611d486020830184611c64565b9392505050565b6000602082019050611d646000830184611ab4565b92915050565b60006020820190508181036000830152611d848184611af0565b905092915050565b60006020820190508181036000830152611da581611b29565b9050919050565b60006020820190508181036000830152611dc581611b4c565b9050919050565b60006020820190508181036000830152611de581611b6f565b9050919050565b60006020820190508181036000830152611e0581611b92565b9050919050565b60006020820190508181036000830152611e2581611bd8565b9050919050565b60006020820190508181036000830152611e4581611bfb565b9050919050565b60006020820190508181036000830152611e6581611c1e565b9050919050565b60006020820190508181036000830152611e8581611c41565b9050919050565b6000602082019050611ea16000830184611c64565b92915050565b6000611eb1611ec2565b9050611ebd82826120f3565b919050565b6000604051905090565b600067ffffffffffffffff821115611ee757611ee66121e2565b5b611ef082612211565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f3582612075565b9150611f4083612075565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f7557611f74612155565b5b828201905092915050565b6000611f8b82612075565b9150611f9683612075565b925082611fa657611fa5612184565b5b828204905092915050565b6000611fbc82612075565b9150611fc783612075565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200057611fff612155565b5b828202905092915050565b600061201682612055565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156120ac578082015181840152602081019050612091565b838111156120bb576000848401525b50505050565b600060028204905060018216806120d957607f821691505b602082108114156120ed576120ec6121b3565b5b50919050565b6120fc82612211565b810181811067ffffffffffffffff8211171561211b5761211a6121e2565b5b80604052505050565b600061212f82612075565b915061213a83612075565b92508261214a57612149612184565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b7f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060008201527f4e46547300000000000000000000000000000000000000000000000000000000602082015250565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b50565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b61239c8161200b565b81146123a757600080fd5b50565b6123b38161201d565b81146123be57600080fd5b50565b6123ca81612029565b81146123d557600080fd5b50565b6123e181612075565b81146123ec57600080fd5b5056fea2646970667358221220c0a55333192370778c2c0e5ad175b095a2229989edeaa2cd1474aa8ea526793a64736f6c63430008040033", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 102, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "name", + "offset": 0, + "slot": "0", + "type": "t_string_storage" + }, + { + "astId": 104, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "symbol", + "offset": 0, + "slot": "1", + "type": "t_string_storage" + }, + { + "astId": 115, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_ownerOf", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_address)" + }, + { + "astId": 119, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_balanceOf", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 168, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "getApproved", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_uint256,t_address)" + }, + { + "astId": 174, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "isApprovedForAll", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))" + }, + { + "astId": 717, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_tokenIdCounter", + "offset": 0, + "slot": "6", + "type": "t_struct(Counter)5_storage" + }, + { + "astId": 728, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "tokenURIContractAddress", + "offset": 0, + "slot": "7", + "type": "t_address" + }, + { + "astId": 730, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "royaltyReceiver", + "offset": 0, + "slot": "8", + "type": "t_address" + }, + { + "astId": 732, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "seed", + "offset": 0, + "slot": "9", + "type": "t_uint256" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_bool)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_uint256,t_address)": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => address)", + "numberOfBytes": "32", + "value": "t_address" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Counter)5_storage": { + "encoding": "inplace", + "label": "struct Counters.Counter", + "members": [ + { + "astId": 4, + "contract": "contracts/SakutaroPoem.sol:SakutaroPoem", + "label": "_value", + "offset": 0, + "slot": "0", + "type": "t_uint256" + } + ], + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/evm-compatible/deployments/filecointestnet/TokenURI.json b/packages/contracts/evm-compatible/deployments/filecointestnet/TokenURI.json new file mode 100644 index 0000000..f8508b4 --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecointestnet/TokenURI.json @@ -0,0 +1,127 @@ +{ + "address": "0x2a12C2Bbc4E936CE8763bcfA096E5e4EbFc2C02D", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poemBodies", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "poemTitles", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x8dd04c94a818af294ab0f9ca832cdb108ea8619e3d077791b91d9363da91639d", + "receipt": { + "to": null, + "from": "0xe0C3136Cf7f7d8cA1a2de8eE5a278261DE1F5CA8", + "contractAddress": "0x2a12C2Bbc4E936CE8763bcfA096E5e4EbFc2C02D", + "transactionIndex": 1, + "gasUsed": "498636881", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000400000000000000000000000000008200000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000800000000000000000000000", + "blockHash": "0x22d10f42cead26c58946c937e6ff0e807ecbb38bbba29cea95ab1a6046c2d140", + "transactionHash": "0x8dd04c94a818af294ab0f9ca832cdb108ea8619e3d077791b91d9363da91639d", + "logs": [], + "blockNumber": 1666607, + "cumulativeGasUsed": "0", + "status": 1, + "byzantium": true + }, + "args": [], + "numDeployments": 1, + "solcInputHash": "9d362a9261eac5217bad10d772735e46", + "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poemBodies\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poemTitles\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TokenURI.sol\":\"TokenURI\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Base64.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.2;\\n\\n/// @title Base64\\n/// @notice Provides a function for encoding some bytes in base64\\n/// @author Brecht Devos \\nlibrary Base64 {\\n bytes internal constant TABLE = \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\";\\n\\n /// @notice Encodes some bytes to the base64 representation\\n function encode(bytes memory data) internal pure returns (string memory) {\\n uint256 len = data.length;\\n if (len == 0) return \\\"\\\";\\n\\n // multiply by 4/3 rounded up\\n uint256 encodedLen = 4 * ((len + 2) / 3);\\n\\n // Add some extra buffer at the end\\n bytes memory result = new bytes(encodedLen + 32);\\n\\n bytes memory table = TABLE;\\n\\n assembly {\\n let tablePtr := add(table, 1)\\n let resultPtr := add(result, 32)\\n\\n for {\\n let i := 0\\n } lt(i, len) {\\n\\n } {\\n i := add(i, 3)\\n let input := and(mload(add(data, i)), 0xffffff)\\n\\n let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))\\n out := shl(8, out)\\n out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))\\n out := shl(8, out)\\n out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))\\n out := shl(8, out)\\n out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))\\n out := shl(224, out)\\n\\n mstore(resultPtr, out)\\n\\n resultPtr := add(resultPtr, 4)\\n }\\n\\n switch mod(len, 3)\\n case 1 {\\n mstore(sub(resultPtr, 2), shl(240, 0x3d3d))\\n }\\n case 2 {\\n mstore(sub(resultPtr, 1), shl(248, 0x3d))\\n }\\n\\n mstore(result, encodedLen)\\n }\\n\\n return string(result);\\n }\\n}\\n\",\"keccak256\":\"0x08da307723981c0508838c97599ed6f002acae4dd43f9fab03121309afcd6ab3\",\"license\":\"MIT\"},\"contracts/TokenURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.2;\\n\\nimport {Base64} from \\\"./Base64.sol\\\";\\n\\ncontract TokenURI {\\n string[] public poemTitles = [\\n unicode\\\"\\u3042\\u3042\\u56fa\\u3044\\u6c37\\u3092\\u7834\\u3064\\u3066\\\",\\n unicode\\\"\\u829d\\u751f\\u306e\\u4e0a\\u3067\\\",\\n unicode\\\"\\u820c\\u306e\\u306a\\u3044\\u771e\\u7406\\\",\\n unicode\\\"\\u6148\\u60b2\\\",\\n unicode\\\"\\u79cb\\u6674\\\",\\n unicode\\\"\\u9678\\u6a4b\\u3092\\u6e21\\u308b\\\",\\n unicode\\\"\\u6d99\\u3050\\u307e\\u3057\\u3044\\u5915\\u66ae\\\",\\n unicode\\\"\\u5730\\u7403\\u3092\\u8df3\\u8e8d\\u3057\\u3066\\\",\\n unicode\\\"\\u591c\\u6c7d\\u8eca\\u306e\\u7a93\\u3067\\\",\\n unicode\\\"\\u6625\\u306e\\u304f\\u308b\\u6642\\\",\\n unicode\\\"\\u6975\\u5149\\u5730\\u65b9\\u304b\\u3089\\\",\\n unicode\\\"\\u65b7\\u6a4b\\\",\\n unicode\\\"\\u904b\\u547d\\u3078\\u306e\\u5fcd\\u8fb1\\\",\\n unicode\\\"\\u5bc2\\u5be5\\u306e\\u5ddd\\u908a\\\",\\n unicode\\\"\\u8239\\u5ba4\\u304b\\u3089\\\",\\n unicode\\\"\\u8a18\\u61b6\\u3092\\u6368\\u3066\\u308b\\\",\\n unicode\\\"\\u60c5\\u7dd2\\u3088\\uff01\\u3000\\u541b\\u306f\\u6b78\\u3089\\u3056\\u308b\\u304b\\\",\\n unicode\\\"\\u6e2f\\u306e\\u96dc\\u8ca8\\u5e97\\u3067\\\",\\n unicode\\\"\\u93e1\\\",\\n unicode\\\"\\u72d0\\\",\\n unicode\\\"\\u5439\\u96ea\\u306e\\u4e2d\\u3067\\\",\\n unicode\\\"\\u9283\\u5668\\u5e97\\u306e\\u524d\\u3067\\\",\\n unicode\\\"\\u865a\\u6578\\u306e\\u864e\\\",\\n unicode\\\"\\u81ea\\u7136\\u306e\\u4e2d\\u3067\\\",\\n unicode\\\"\\u89f8\\u624b\\u3042\\u308b\\u7a7a\\u9593\\\",\\n unicode\\\"\\u5927\\u4f5b\\\",\\n unicode\\\"\\u5bb6\\\",\\n unicode\\\"\\u9ed2\\u3044\\u6d0b\\u5098\\\",\\n unicode\\\"\\u6050\\u308d\\u3057\\u304d\\u4eba\\u5f62\\u829d\\u5c45\\\",\\n unicode\\\"\\u9f52\\u3092\\u3082\\u3066\\u308b\\u610f\\u5fd7\\\",\\n unicode\\\"\\u5efa\\u7bc9\\u306e Nostalgia\\\",\\n unicode\\\"\\u7236\\\",\\n unicode\\\"\\u6575\\\",\\n unicode\\\"\\u7269\\u8cea\\u306e\\u611f\\u60c5\\\",\\n unicode\\\"\\u7269\\u9ad4\\\",\\n unicode\\\"\\u9f8d\\\",\\n unicode\\\"\\u6a4b\\\",\\n unicode\\\"\\u5c71\\u4e0a\\u306e\\u7948\\\",\\n unicode\\\"\\u6230\\u5834\\u3067\\u306e\\u5e7b\\u60f3\\\"\\n ];\\n\\n string[] public poemBodies = [\\n unicode\\\"\\u3042\\u3042\\u56fa\\u3044\\u6c37\\u3092\\u7834\\u3064\\u3066\\u7a81\\u9032\\u3059\\u308b\\u3001\\u4e00\\u3064\\u306e\\u5bc2\\u3057\\u3044\\u5e06\\u8239\\u3088\\u3002\\u3042\\u306e\\u9ad8\\u3044\\u7a7a\\u306b\\u3072\\u308b\\u304c\\u3078\\u308b\\u3001\\u6d6a\\u6d6a\\u306e\\u56fa\\u9ad4\\u3057\\u305f\\u5370\\u8c61\\u304b\\u3089\\u3001\\u305d\\u306e\\u9694\\u96e2\\u3057\\u305f\\u5730\\u65b9\\u306e\\u7269\\u4f98\\u3057\\u3044\\u51ac\\u306e\\u5149\\u7dda\\u304b\\u3089\\u3001\\u3042\\u306f\\u308c\\u306b\\u7164\\u307c\\u3051\\u3066\\u898b\\u3048\\u308b\\u5c0f\\u3055\\u306a\\u9ed2\\u3044\\u7375\\u9be8\\u8239\\u3088\\u3002\\u5b64\\u7368\\u306a\\u74b0\\u5883\\u306e\\u6d77\\u306b\\u6f02\\u6cca\\u3059\\u308b\\u8239\\u306e\\u7f85\\u91dd\\u304c\\u3001\\u4e00\\u3064\\u306e\\u92ed\\u3069\\u3044\\u610f\\u5fd7\\u306e\\u5c16\\u89d2\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u304c\\u3001\\u3042\\u3042\\u5982\\u4f55\\u306b\\u56fa\\u3044\\u51ac\\u306e\\u6c37\\u3092\\u7a81\\u304d\\u7834\\u3064\\u3066\\u9a40\\u9032\\u3059\\u308b\\u3053\\u3068\\u3088\\u3002\\\",\\n unicode\\\"\\u82e5\\u8349\\u306e\\u82bd\\u304c\\u840c\\u3048\\u308b\\u3084\\u3046\\u306b\\u3001\\u3053\\u306e\\u65e5\\u7576\\u308a\\u306e\\u3088\\u3044\\u829d\\u751f\\u306e\\u4e0a\\u3067\\u306f\\u3001\\u601d\\u60f3\\u304c\\u5f8c\\u304b\\u3089\\u5f8c\\u304b\\u3089\\u3068\\u6210\\u9577\\u3057\\u3066\\u304f\\u308b\\u3002\\u3051\\u308c\\u3069\\u3082\\u305d\\u308c\\u3089\\u306e\\u601d\\u60f3\\u306f\\u3001\\u79c1\\u306b\\u307e\\u3067\\u4f55\\u306e\\u4ea4\\u6e09\\u304c\\u3042\\u3089\\u3046\\u305e\\u3002\\u79c1\\u306f\\u305f\\u3060\\u9752\\u7a7a\\u3092\\u773a\\u3081\\u3066\\u5c45\\u305f\\u3044\\u3002\\u3042\\u306e\\u84bc\\u5929\\u306e\\u5922\\u306e\\u4e2d\\u306b\\u6eb6\\u3051\\u3066\\u3057\\u307e\\u3075\\u3084\\u3046\\u306a\\u3001\\u3055\\u3046\\u3044\\u3075\\u601d\\u60f3\\u306e\\u5e7b\\u60f3\\u3060\\u3051\\u3092\\u80b2\\u304f\\u307f\\u305f\\u3044\\u306e\\u3060\\u3002\\u79c1\\u81ea\\u8eab\\u306e\\u60c5\\u7dd2\\u306e\\u5f71\\u3067\\u3001\\u306a\\u3064\\u304b\\u3057\\u3044\\u7dd1\\u9670\\u306e\\u5922\\u3092\\u3064\\u304f\\u308b\\u3084\\u3046\\u306a\\u3001\\u305d\\u308c\\u3089\\u306e\\u300c\\u60c5\\u8abf\\u3042\\u308b\\u601d\\u60f3\\u300d\\u3060\\u3051\\u3092\\u8a9e\\u308a\\u305f\\u3044\\u306e\\u3060\\u3002\\u7a7a\\u98db\\u3076\\u5c0f\\u9ce5\\u3088\\u3002\\\",\\n unicode\\\"\\u3068\\u3042\\u308b\\u5e7b\\u71c8\\u306e\\u4e2d\\u3067\\u3001\\u9752\\u767d\\u3044\\u96ea\\u306e\\u964d\\u308a\\u3064\\u3082\\u3064\\u3066\\u3090\\u308b\\u3001\\u3057\\u3065\\u304b\\u306a\\u3057\\u3065\\u304b\\u306a\\u666f\\u8272\\u306e\\u4e2d\\u3067\\u3001\\u79c1\\u306f\\u4e00\\u3064\\u306e\\u771e\\u7406\\u3092\\u3064\\u304b\\u3093\\u3060\\u3002\\u7269\\u8a00\\u3075\\u3053\\u3068\\u306e\\u3067\\u304d\\u306a\\u3044\\u3001\\u6c38\\u9060\\u306b\\u6c38\\u9060\\u306b\\u3046\\u3089\\u60b2\\u3057\\u3052\\u306a\\u3001\\u79c1\\u306f\\u300c\\u820c\\u306e\\u306a\\u3044\\u771e\\u7406\\u300d\\u3092\\u611f\\u3058\\u305f\\u3002\\u666f\\u8272\\u306e\\u3001\\u5e7b\\u71c8\\u306e\\u3001\\u96ea\\u306e\\u3064\\u3082\\u308b\\u5f71\\u3092\\u904e\\u304e\\u53bb\\u3064\\u3066\\u884c\\u304f\\u3001\\u3055\\u3073\\u3057\\u3044\\u9752\\u732b\\u306e\\u50cf\\uff08\\u304b\\u305f\\u3061\\uff09\\u3092\\u304b\\u3093\\u3058\\u305f\\u3002\\\",\\n unicode\\\"\\u98a8\\u7434\\u306e\\u93ad\\u9b42\\u6a02\\uff08\\u308c\\u304f\\u308c\\u3048\\u3080\\uff09\\u3092\\u304d\\u304f\\u3084\\u3046\\u306b\\u3001\\u51a5\\u60f3\\u306e\\u539a\\u3044\\u58c1\\u306e\\u5f71\\u3067\\u3001\\u975c\\u304b\\u306b\\u6e67\\u304d\\u3042\\u304c\\u3064\\u3066\\u304f\\u308b\\u9ed2\\u3044\\u611f\\u60c5\\u3002\\u60c5\\u617e\\u306e\\u5f37\\u3044\\u60f1\\u307f\\u3092\\u6291\\u3078\\u3001\\u679c\\u6562\\u306a\\u3044\\u904b\\u547d\\u3078\\u306e\\u53db\\u9006\\u3084\\u3001\\u4f55\\u3068\\u3044\\u3075\\u3053\\u3068\\u3082\\u306a\\u3044\\u751f\\u6d3b\\u306e\\u6697\\u6101\\u3084\\u3001\\u3044\\u3089\\u3044\\u3089\\u3057\\u305f\\u5fc3\\u306e\\u7126\\u71e5\\u3084\\u3092\\u5fd8\\u308c\\u3055\\u305b\\u3001\\u5b89\\u3089\\u304b\\u306a\\u5b89\\u3089\\u304b\\u306a\\u5be2\\u81fa\\u306e\\u4e0a\\u3067\\u3001\\u9748\\u9b42\\u306e\\u6df1\\u307f\\u3042\\u308b\\u7720\\u308a\\u3092\\u3055\\u305d\\u3075\\u3084\\u3046\\u306a\\u3001\\u4e00\\u3064\\u306e\\u529b\\u3042\\u308b\\u975c\\u304b\\u306a\\u611f\\u60c5\\u3002\\u305d\\u308c\\u306f\\u751f\\u6d3b\\u306e\\u75b2\\u308c\\u305f\\u8584\\u66ae\\u306b\\u3001\\u97ff\\u677f\\u306e\\u920d\\u3044\\u3046\\u306a\\u308a\\u3092\\u305f\\u3066\\u308b\\u3001\\u5927\\u304d\\u306a\\u5e45\\u306e\\u3042\\u308b\\u975c\\u304b\\u306a\\u611f\\u60c5\\u3002\\u2015\\u2015\\u4f5b\\u9640\\u306e\\u6559\\u3078\\u305f\\u6148\\u60b2\\u306e\\u54f2\\u5b78\\uff01\\\",\\n unicode\\\"\\u7267\\u5834\\u306e\\u725b\\u304c\\u8349\\u3092\\u98df\\u3064\\u3066\\u3090\\u308b\\u306e\\u3092\\u307f\\u3066\\u3001\\u9591\\u6563\\u3084\\u6020\\u60f0\\u306e\\u8da3\\u5473\\u3092\\u89e3\\u3057\\u306a\\u3044\\u307b\\u3069\\u3001\\u305d\\u308c\\u307b\\u3069\\u8fd1\\u4ee3\\u7684\\u306b\\u306a\\u3064\\u3066\\u3057\\u307e\\u3064\\u305f\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u4eba\\u4eba\\u306b\\u307e\\u3067\\u3001\\u79c1\\u306f\\u3044\\u304b\\u306a\\u308b\\u6703\\u8a71\\u3092\\u3082\\u3055\\u3051\\u308b\\u3067\\u3042\\u3089\\u3046\\u3002\\u79c1\\u306e\\u808c\\u306b\\u3057\\u307f\\u8fbc\\u3093\\u3067\\u304f\\u308b\\u3001\\u3053\\u306e\\u79cb\\u65e5\\u548c\\u306e\\u7269\\u5026\\u3044\\u7720\\u305f\\u3055\\u306b\\u5c31\\u3044\\u3066\\u3001\\u3053\\u306e\\u53e4\\u98a8\\u306a\\u308b\\u79c1\\u306e\\u601d\\u60f3\\u306e\\u60c5\\u8abf\\u306b\\u5c31\\u3044\\u3066\\u3001\\u3053\\u306e\\u4e0a\\u3082\\u306f\\u3084\\u8a9e\\u3089\\u306a\\u3044\\u3067\\u3042\\u3089\\u3046\\u3002\\\",\\n unicode\\\"\\u6182\\u9b31\\u306b\\u6c88\\u307f\\u306a\\u304c\\u3089\\u3001\\u3072\\u3068\\u308a\\u5bc2\\u3057\\u304f\\u9678\\u6a4b\\u3092\\u6e21\\u3064\\u3066\\u884c\\u304f\\u3002\\u304b\\u3064\\u3066\\u4f55\\u7269\\u306b\\u3055\\u3078\\u59a5\\u5354\\u305b\\u3056\\u308b\\u3001\\u4f55\\u7269\\u306b\\u3055\\u3078\\u5b89\\u6613\\u305b\\u3056\\u308b\\u3001\\u3053\\u306e\\u4e00\\u3064\\u306e\\u611f\\u60c5\\u3092\\u3069\\u3053\\u3078\\u884c\\u304b\\u3046\\u304b\\u3002\\u843d\\u65e5\\u306f\\u5730\\u5e73\\u306b\\u4f4e\\u304f\\u3001\\u74b0\\u5883\\u306f\\u6012\\u308a\\u306b\\u71c3\\u3048\\u3066\\u308b\\u3002\\u4e00\\u5207\\u3092\\u618e\\u60e1\\u3057\\u3001\\u7c89\\u788e\\u3057\\u3001\\u53db\\u9006\\u3057\\u3001\\u5632\\u7b11\\u3057\\u3001\\u65ac\\u5978\\u3057\\u3001\\u6575\\u613e\\u3059\\u308b\\u3001\\u3053\\u306e\\u4e00\\u500b\\u306e\\u9ed2\\u3044\\u5f71\\u3092\\u30de\\u30f3\\u30c8\\u306b\\u3064\\u3064\\u3093\\u3067\\u3001\\u3072\\u3068\\u308a\\u5bc2\\u3057\\u304f\\u9678\\u6a4b\\u3092\\u6e21\\u3064\\u3066\\u884c\\u304f\\u3002\\u304b\\u306e\\u9ad8\\u3044\\u67b6\\u7a7a\\u306e\\u6a4b\\u3092\\u8d8a\\u3048\\u3066\\u3001\\u306f\\u308b\\u304b\\u306e\\u5e7b\\u71c8\\u306e\\u5e02\\u8857\\u306b\\u307e\\u3067\\u3002\\\",\\n unicode\\\"\\u3053\\u308c\\u3089\\u306e\\u5915\\u66ae\\u306f\\u6d99\\u3050\\u307e\\u3057\\u304f\\u3001\\u79c1\\u306e\\u66f8\\u9f4b\\u306b\\u8a2a\\u308c\\u3066\\u304f\\u308b\\u3002\\u601d\\u60f3\\u306f\\u60c5\\u8abf\\u306e\\u5f71\\u306b\\u306c\\u308c\\u3066\\u3001\\u611f\\u3058\\u306e\\u3088\\u3044\\u6e29\\u96c5\\u306e\\u8272\\u5408\\u3092\\u5e36\\u3073\\u3066\\u898b\\u3048\\u308b\\u3002\\u3042\\u3042\\u3044\\u304b\\u306b\\u4eca\\u306e\\u79c1\\u306b\\u307e\\u3067\\u3001\\u4e00\\u3064\\u306e\\u60e0\\u307e\\u308c\\u305f\\u5fb3\\u306f\\u306a\\u3044\\u304b\\u3002\\u4f55\\u7269\\u306e\\u5351\\u52a3\\u306b\\u3059\\u3089\\u3001\\u4f55\\u7269\\u306e\\u865a\\u50de\\u306b\\u3059\\u3089\\u3001\\u3042\\u3078\\u3066\\u9ad8\\u8cb4\\u306e\\u5bdb\\u5bb9\\u3092\\u793a\\u3057\\u5f97\\u308b\\u3084\\u3046\\u306a\\u3001\\u4e00\\u3064\\u306e\\u7a69\\u3084\\u304b\\u306b\\u3057\\u3066\\u9591\\u96c5\\u306a\\u308b\\u5fb3\\u306f\\u306a\\u3044\\u304b\\u3002\\u2015\\u2015\\u79c1\\u3092\\u3057\\u3066\\u7368\\u308a\\u5bc2\\u3057\\u304f\\u3001\\u4eca\\u65e5\\u306e\\u5915\\u66ae\\u306e\\u7a7a\\u306b\\u9ed8\\u601d\\u305b\\u3057\\u3081\\u3088\\u3002\\\",\\n unicode\\\"\\u305f\\u3057\\u304b\\u306b\\u79c1\\u306f\\u3001\\u3042\\u308b\\u4e00\\u3064\\u306e\\u7279\\u7570\\u306a\\u624d\\u80fd\\u3092\\u6301\\u3064\\u3066\\u3090\\u308b\\u3002\\u3051\\u308c\\u3069\\u3082\\u305d\\u308c\\u304c\\u4e01\\u5ea6\\u3042\\u3066\\u306f\\u307e\\u308b\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u3084\\u3046\\u306a\\u3001\\u3069\\u3093\\u306a\\u7279\\u5225\\u306a\\u300c\\u4ed5\\u4e8b\\u300d\\u3082\\u4eca\\u65e5\\u306e\\u5730\\u7403\\u306e\\u4e0a\\u306b\\u6709\\u308a\\u306f\\u3057\\u306a\\u3044\\u3002\\u3080\\u3057\\u308d\\u79c1\\u3092\\u3057\\u3066\\u3001\\u5730\\u7403\\u3092\\u9060\\u304f\\u5708\\u5916\\u306b\\u8df3\\u8e8d\\u305b\\u3057\\u3081\\u3088\\u3002\\\",\\n unicode\\\"\\u591c\\u6c7d\\u8eca\\u306e\\u4e2d\\u3067\\u3001\\u96fb\\u71c8\\u306f\\u6697\\u304f\\u3001\\u6c88\\u9b31\\u3057\\u305f\\u7a7a\\u6c23\\u306e\\u4e2d\\u3067\\u3001\\u4eba\\u4eba\\u306f\\u6df1\\u3044\\u7720\\u308a\\u306b\\u843d\\u3061\\u3066\\u3090\\u308b\\u3002\\u4e00\\u4eba\\u8d77\\u304d\\u3066\\u7a93\\u3092\\u3072\\u3089\\u3051\\u3070\\u3001\\u591c\\u98a8\\u306f\\u3064\\u3081\\u305f\\u304f\\u808c\\u306b\\u3075\\u308c\\u3001\\u95c7\\u591c\\u306e\\u6697\\u9ed2\\u306a\\u91ce\\u539f\\u3092\\u98db\\u3076\\u3001\\u3057\\u304d\\u308a\\u306b\\u98db\\u3076\\u706b\\u87f2\\u3092\\u307f\\u308b\\u3002\\u3042\\u3042\\u3053\\u306e\\u771e\\u3064\\u6697\\u306a\\u6050\\u308d\\u3057\\u3044\\u666f\\u8272\\u3092\\u8cab\\u901a\\u3059\\u308b\\uff01\\u3000\\u6df1\\u591c\\u306e\\u8f5f\\u8f5f\\u3068\\u3044\\u3075\\u97ff\\u306e\\u4e2d\\u3067\\u3001\\u3044\\u3065\\u3053\\u3078\\u3001\\u3044\\u3065\\u3053\\u3078\\u3001\\u79c1\\u306e\\u591c\\u6c7d\\u8eca\\u306f\\u884c\\u304b\\u3046\\u3068\\u3059\\u308b\\u306e\\u304b\\u3002\\\",\\n unicode\\\"\\u6247\\u3082\\u3064\\u82e5\\u3044\\u5a18\\u3089\\u3001\\u6625\\u306e\\u5c4f\\u98a8\\u306e\\u524d\\u306b\\u5c45\\u3066\\u3001\\u541b\\u306e\\u3057\\u306a\\u3084\\u304b\\u306a\\u80a9\\u3092\\u3059\\u3079\\u3089\\u305b\\u3001\\u8276\\u3081\\u304b\\u3057\\u3044\\u66f2\\u7dda\\u306f\\u8db3\\u306b\\u304b\\u3089\\u3080\\u3002\\u6247\\u3082\\u3064\\u82e5\\u3044\\u5a18\\u3089\\u3001\\u541b\\u306e\\u7b11\\u984f\\u306b\\u60c5\\u3092\\u3075\\u304f\\u3081\\u3088\\u3001\\u6625\\u306f\\u4f86\\u3089\\u3093\\u3068\\u3059\\u3002\\\",\\n unicode\\\"\\u6d77\\u8c79\\uff08\\u3042\\u3056\\u3089\\u3057\\uff09\\u306e\\u3084\\u3046\\u306b\\u3001\\u6975\\u5149\\u306e\\u898b\\u3048\\u308b\\u6c37\\u306e\\u4e0a\\u3067\\u3001\\u307c\\u3093\\u3084\\u308a\\u3068\\u300c\\u81ea\\u5206\\u3092\\u5fd8\\u308c\\u3066\\u300d\\u5750\\u3064\\u3066\\u3090\\u305f\\u3044\\u3002\\u305d\\u3053\\u306b\\u6642\\u52ab\\u304c\\u3059\\u304e\\u53bb\\u3064\\u3066\\u884c\\u304f\\u3002\\u665d\\u591c\\u306e\\u306a\\u3044\\u6975\\u5149\\u5730\\u65b9\\u306e\\u3001\\u3044\\u3064\\u3082\\u66ae\\u308c\\u65b9\\u306e\\u3084\\u3046\\u306a\\u5149\\u7dda\\u304c\\u3001\\u920d\\u304f\\u60b2\\u3057\\u3052\\u306b\\u5e7d\\u6ec5\\u3059\\u308b\\u3068\\u3053\\u308d\\u3002\\u3042\\u3042\\u305d\\u306e\\u9060\\u3044\\u5317\\u6975\\u5708\\u306e\\u6c37\\u306e\\u4e0a\\u3067\\u3001\\u307c\\u3093\\u3084\\u308a\\u3068\\u6d77\\u8c79\\u306e\\u3084\\u3046\\u306b\\u5750\\u3064\\u3066\\u5c45\\u305f\\u3044\\u3002\\u6c38\\u9060\\u306b\\u3001\\u6c38\\u9060\\u306b\\u3001\\u81ea\\u5206\\u3092\\u5fd8\\u308c\\u3066\\u3001\\u601d\\u60df\\u306e\\u307b\\u306e\\u6697\\u3044\\u6d77\\u306b\\u6d6e\\u3076\\u3001\\u4e00\\u3064\\u306e\\u4f98\\u3057\\u3044\\u5e7b\\u8c61\\u3092\\u773a\\u3081\\u3066\\u5c45\\u305f\\u3044\\u306e\\u3067\\u3059\\u3002\\\",\\n unicode\\\"\\u591c\\u9053\\u3092\\u8d70\\u308b\\u6c7d\\u8eca\\u307e\\u3067\\u3001\\u4e00\\u3064\\u306e\\u8d64\\u3044\\u71c8\\u706b\\u3092\\u793a\\u305b\\u3088\\u3002\\u4eca\\u305d\\u3053\\u306b\\u5371\\u96aa\\u304c\\u3042\\u308b\\u3002\\u65b7\\u6a4b\\uff01\\u3000\\u65b7\\u6a4b\\uff01\\u3000\\u3042\\u3042\\u60b2\\u9cf4\\u306f\\u98a8\\u3092\\u3064\\u3093\\u3056\\u304f\\u3002\\u3060\\u308c\\u304c\\u305d\\u308c\\u3092\\u77e5\\u308b\\u304b\\u3002\\u7cbe\\u795e\\u306f\\u95c7\\u306e\\u66e0\\u91ce\\u3092\\u3072\\u305f\\u8d70\\u308b\\u3002\\u6025\\u884c\\u3057\\u3001\\u6025\\u884c\\u3057\\u3001\\u6025\\u884c\\u3057\\u3001\\u5f7c\\u306e\\u60b2\\u5287\\u306e\\u7d42\\u9a5b\\u3078\\u3068\\u3002\\\",\\n unicode\\\"\\u3068\\u306f\\u3044\\u3078\\u74b0\\u5883\\u306e\\u95c7\\u3092\\u7a81\\u7834\\u3059\\u3079\\u304d\\u3001\\u3069\\u3093\\u306a\\u529b\\u304c\\u305d\\u3053\\u306b\\u3042\\u308b\\u304b\\u3002\\u9f52\\u304c\\u307f\\u3066\\u3053\\u3089\\u3078\\u3088\\u3002\\u3053\\u3089\\u3078\\u3088\\u3002\\u3053\\u3089\\u3078\\u3088\\u3002\\\",\\n unicode\\\"\\u53e4\\u9a5b\\u306e\\u3001\\u67f3\\u306e\\u3042\\u308b\\u5ddd\\u306e\\u5cb8\\u3067\\u3001\\u304b\\u308c\\u306f\\u4f55\\u3092\\u91e3\\u3089\\u3046\\u3068\\u3059\\u308b\\u306e\\u304b\\u3002\\u3084\\u304c\\u3066\\u751f\\u6d3b\\u306e\\u8584\\u66ae\\u304c\\u304f\\u308b\\u307e\\u3067\\u3001\\u305d\\u3093\\u306a\\u306b\\u3082\\u9577\\u3044\\u9593\\u3001\\u91dd\\u306e\\u306a\\u3044\\u91e3\\u7aff\\u3067\\u2026\\u2026\\u3002\\u300c\\u5426\\u300d\\u3068\\u305d\\u306e\\u652f\\u90a3\\u4eba\\u304c\\u7b54\\u3078\\u305f\\u3002\\u300c\\u9b5a\\u306e\\u7f8e\\u3057\\u304f\\u8d70\\u308b\\u3092\\u773a\\u3081\\u3088\\u3001\\u6c34\\u306e\\u975c\\u304b\\u306b\\u884c\\u304f\\u3092\\u773a\\u3081\\u3088\\u3002\\u3044\\u304b\\u306b\\u541b\\u306f\\u3053\\u306e\\u975c\\u8b10\\u3092\\u597d\\u307e\\u306a\\u3044\\u304b\\u3002\\u3053\\u306e\\u98a8\\u666f\\u306e\\u8070\\u660e\\u306a\\u60c5\\u8da3\\u3092\\u3002\\u3080\\u3057\\u308d\\u79c1\\u306f\\u3001\\u7d42\\u65e5\\u91e3\\u308a\\u5f97\\u306a\\u3044\\uff08\\u30fb\\u30fb\\u30fb\\u30fb\\u30fb\\uff09\\u3053\\u3068\\u3092\\u5e0c\\u671b\\u3057\\u3066\\u3090\\u308b\\u3002\\u3055\\u308c\\u3070\\u65e5\\u7576\\u308a\\u597d\\u3044\\u5bc2\\u5be5\\u306e\\u5cb8\\u908a\\u306b\\u5750\\u3057\\u3066\\u3001\\u79c1\\u306e\\u3069\\u3093\\u306a\\u74b0\\u5883\\u3092\\u3082\\u4e82\\u3059\\u306a\\u304b\\u308c\\u3002\\u300d\\\",\\n unicode\\\"\\u5d50\\u3001\\u5d50\\u3001\\u6d6a\\u3001\\u6d6a\\u3001\\u5927\\u6d6a\\u3001\\u5927\\u6d6a\\u3001\\u5927\\u6d6a\\u3002\\u50be\\u3080\\u304f\\u5730\\u5e73\\u7dda\\u3001\\u4e0a\\u6607\\u3059\\u308b\\u5730\\u5e73\\u7dda\\u3001\\u843d\\u3061\\u304f\\u308b\\u5730\\u5e73\\u7dda\\u3002\\u304c\\u3061\\u3084\\u304c\\u3061\\u3084\\u3001\\u304c\\u3061\\u3084\\u304c\\u3061\\u3084\\u3002\\u4e0a\\u7532\\u677f\\u3078\\u3001\\u4e0a\\u7532\\u677f\\u3078\\u3002\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3092\\u5377\\u3051\\u3001\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3092\\u5377\\u3051\\u3002\\u7a81\\u9032\\u3059\\u308b\\u3001\\u7a81\\u9032\\u3059\\u308b\\u6c34\\u592b\\u3089\\u3002\\u8239\\u5ba4\\u306e\\u7a93\\u3001\\u7a93\\u3001\\u7a93\\u3001\\u7a93\\u3002\\u50be\\u3080\\u304f\\u5730\\u5e73\\u7dda\\u3001\\u4e0a\\u6607\\u3059\\u308b\\u5730\\u5e73\\u7dda\\u3002\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3001\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3001\\u9396\\uff08\\u30c1\\u30a8\\u30f3\\uff09\\u3002\\u98a8\\u3001\\u98a8\\u3001\\u98a8\\u3002\\u6c34\\u3001\\u6c34\\u3001\\u6c34\\u3002\\u8239\\u7a93\\uff08\\u30cf\\u30c4\\u30c1\\uff09\\u3092\\u9589\\u3081\\u308d\\u3002\\u8239\\u7a93\\uff08\\u30cf\\u30c4\\u30c1\\uff09\\u3092\\u9589\\u3081\\u308d\\u3002\\u53f3\\u8237\\u3078\\u3001\\u5de6\\u8237\\u3078\\u3002\\u6d6a\\u3001\\u6d6a\\u3001\\u6d6a\\u3002\\u307b\\u3072\\u3086\\u30fc\\u308b\\u3002\\u307b\\u3072\\u3086\\u30fc\\u308b\\u3002\\u307b\\u3072\\u3086\\u30fc\\u308b\\u3002\\\",\\n unicode\\\"\\u68ee\\u304b\\u3089\\u304b\\u3078\\u308b\\u3068\\u304d\\u3001\\u79c1\\u306f\\u5e3d\\u5b50\\u3092\\u306c\\u304e\\u3059\\u3066\\u305f\\u3002\\u3042\\u3042\\u3001\\u8a18\\u61b6\\u3002\\u6050\\u308d\\u3057\\u304f\\u7834\\u308c\\u3061\\u304e\\u3064\\u305f\\u8a18\\u61b6\\u3002\\u307f\\u3058\\u3081\\u306a\\u3001\\u6ce5\\u6c34\\u306e\\u4e2d\\u306b\\u8150\\u3064\\u305f\\u8a18\\u61b6\\u3002\\u3055\\u3073\\u3057\\u3044\\u96e8\\u666f\\u306e\\u9053\\u306b\\u3075\\u308b\\u3078\\u308b\\u79c1\\u306e\\u5e3d\\u5b50\\u3002\\u80cc\\u5f8c\\u306b\\u6368\\u3066\\u3066\\u884c\\u304f\\u3002\\\",\\n unicode\\\"\\u66f8\\u751f\\u306f\\u753a\\u306b\\u884c\\u304d\\u3001\\u5de5\\u5834\\u306e\\u4e0b\\u3092\\u901a\\u308a\\u3001\\u6a5f\\u95dc\\u8eca\\u306e\\u9cf4\\u308b\\u97ff\\u3092\\u807d\\u3044\\u305f\\u3002\\u706b\\u592b\\u306e\\u8d70\\u308a\\u3001\\u8eca\\u8f2a\\u306e\\u5efb\\u308a\\u3001\\u7fa4\\u9d09\\u306e\\u55a7\\u865f\\u3059\\u308b\\u5df7\\u306e\\u4e2d\\u3067\\u3001\\u306f\\u3084\\u4e00\\u3064\\u306e\\u80e1\\u5f13\\u306f\\u8377\\u9020\\u3055\\u308c\\u3001\\u8ca8\\u8eca\\u306b\\u7a4d\\u307e\\u308c\\u3001\\u3055\\u3046\\u3057\\u3066\\u6e2f\\u306e\\u5009\\u5eab\\u306e\\u65b9\\u3078\\u3001\\u7a0e\\u95dc\\u306e\\u9580\\u3092\\u304f\\u3050\\u3064\\u3066\\u884c\\u3064\\u305f\\u3002
\\u5341\\u6708\\u4e0b\\u65ec\\u3002\\u66f8\\u751f\\u306f\\u98ef\\u3092\\u98df\\u306f\\u3046\\u3068\\u3057\\u3066\\u3001\\u67af\\u308c\\u305f\\u829d\\u8349\\u306e\\u5009\\u5eab\\u306e\\u5f71\\u306b\\u3001\\u97f3\\u6a02\\u306e\\u5fcd\\u3073\\u5c45\\u308a\\u3001\\u87cb\\u87c0\\u306e\\u3084\\u3046\\u306b\\u9cf4\\u304f\\u306e\\u3092\\u807d\\u3044\\u305f\\u3002
\\u2015\\u2015\\u60c5\\u7dd2\\u3088\\u3001\\u541b\\u306f\\u6b78\\u3089\\u3056\\u308b\\u304b\\u3002\\\",\\n unicode\\\"\\u3053\\u306e\\u92cf\\u306e\\u69d3\\u529b\\u3067\\u3082\\u3001\\u5973\\u306e\\u9306\\u3073\\u3064\\u3044\\u305f\\u9285\\u724c\\uff08\\u30e1\\u30c0\\u30eb\\uff09\\u304c\\u5207\\u308c\\u306a\\u3044\\u306e\\u304b\\u3002\\u6c34\\u592b\\u3088\\uff01\\u3000\\u6c5d\\u306e\\u96b1\\u8863\\uff08\\u304b\\u304f\\u3057\\uff09\\u306e\\u9322\\u3092\\u304b\\u305e\\u3078\\u3066\\u3001\\u7121\\u7528\\u306e\\u60c5\\u71b1\\u3092\\u6368\\u3066\\u3066\\u3057\\u307e\\u3078\\uff01\\\",\\n unicode\\\"\\u93e1\\u306e\\u3046\\u3057\\u308d\\u3078\\u5efb\\u3064\\u3066\\u307f\\u3066\\u3082\\u3001\\u300c\\u79c1\\u300d\\u306f\\u305d\\u3053\\u306b\\u5c45\\u306a\\u3044\\u306e\\u3067\\u3059\\u3088\\u3002\\u304a\\u5b43\\u3055\\u3093\\uff01\\\",\\n unicode\\\"\\u898b\\u3088\\uff01\\u3000\\u5f7c\\u306f\\u98a8\\u306e\\u3084\\u3046\\u306b\\u4f86\\u308b\\u3002\\u305d\\u306e\\u984d\\u306f\\u6182\\u9b31\\u306b\\u9752\\u3056\\u3081\\u3066\\u3090\\u308b\\u3002\\u8033\\u306f\\u3059\\u308b\\u3069\\u304f\\u5207\\u3064\\u7acb\\u3061\\u3001\\u307e\\u306a\\u3058\\u308a\\u306f\\u6012\\u306b\\u88c2\\u3051\\u3066\\u3090\\u308b\\u3002
\\u541b\\u3088\\uff01\\u3000\\u72e1\\u667a\\uff08\\u30fb\\u30fb\\uff09\\u306e\\u304b\\u304f\\u306e\\u5982\\u304d\\u7f8e\\u3057\\u304d\\u8868\\u60c5\\u3092\\u3069\\u3053\\u306b\\u898b\\u305f\\u304b\\u3002\\\",\\n unicode\\\"\\u55ae\\u306b\\u5b64\\u7368\\u3067\\u3042\\u308b\\u3070\\u304b\\u308a\\u3067\\u306a\\u3044\\u3002\\u6575\\u3092\\u4ee5\\u3066\\u5145\\u305f\\u3055\\u308c\\u3066\\u3090\\u308b\\uff01\\\",\\n unicode\\\"\\u660e\\u308b\\u3044\\u785d\\u5b50\\u6238\\u306e\\u5e97\\u306e\\u4e2d\\u3067\\u3001\\u4e00\\u3064\\u306e\\u78e8\\u304b\\u308c\\u305f\\u9283\\u5668\\u3055\\u3078\\u3082\\u3001\\u706b\\u85e5\\u3092\\u88dd\\u586b\\u3057\\u3066\\u306a\\u3044\\u306e\\u3067\\u3042\\u308b\\u3002\\u2015\\u2015\\u4f55\\u305f\\u308b\\u865a\\u5984\\u305e\\u3002\\u61f6\\u723e\\uff08\\u3089\\u3093\\u3058\\uff09\\u3068\\u3057\\u3066\\u7b11\\u3078\\uff01\\\",\\n unicode\\\"\\u535a\\u5f92\\u7b49\\u96c6\\u307e\\u308a\\u3001\\u6295\\u3052\\u3064\\u3051\\u3089\\u308c\\u305f\\u308b\\u751f\\u6daf\\u306e\\u6a5f\\u56e0\\uff08\\u30c1\\u30e4\\u30f3\\u30b9\\uff09\\u306e\\u4e0a\\u3067\\u3001\\u865a\\u6578\\u306e\\u60c5\\u71b1\\u3092\\u8ced\\u3051\\u5408\\u3064\\u3066\\u3090\\u308b\\u3002\\u307f\\u306a\\u5147\\u66b4\\u306e\\u3064\\u3089\\u9b42\\uff08\\u3060\\u307e\\u3057\\u3072\\uff09\\u3002\\u4ec1\\u7fa9\\uff08\\u3058\\u3093\\u304e\\uff09\\u3092\\u69cb\\u3078\\u3001\\u864e\\u306e\\u3084\\u3046\\u306a\\u7a7a\\u6d1e\\u306b\\u5c45\\u308b\\u3002\\\",\\n unicode\\\"\\u8352\\u5be5\\u3068\\u3057\\u305f\\u5c71\\u306e\\u4e2d\\u8179\\u3067\\u3001\\u58c1\\u306e\\u3084\\u3046\\u306b\\u6c88\\u9ed8\\u3057\\u3066\\u3090\\u308b\\u3001\\u4e00\\u306e\\u5de8\\u5927\\u306a\\u308b\\u8033\\u3092\\u898b\\u305f\\u3002\\\",\\n unicode\\\"\\u5bbf\\u547d\\u7684\\u306a\\u308b\\u6771\\u6d0b\\u306e\\u5efa\\u7bc9\\u306f\\u3001\\u305d\\u306e\\u5c4b\\u6839\\u306e\\u4e0b\\u3067\\u5fcd\\u5f9e\\u3057\\u306a\\u304c\\u3089\\u3001\\u750d\\uff08\\u3044\\u3089\\u304b\\uff09\\u306b\\u65bc\\u3066\\u6012\\u308a\\u7acb\\u3064\\u3066\\u3090\\u308b\\u3002\\\",\\n unicode\\\"\\u305d\\u306e\\u5185\\u90e8\\u306b\\u69cb\\u9020\\u306e\\u652f\\u67f1\\u3092\\u6301\\u3061\\u3001\\u6697\\u3044\\u68af\\u5b50\\u3068\\u7d93\\u6587\\u3092\\u85cf\\u3059\\u308b\\u4f5b\\u9640\\u3088\\uff01\\u3000\\u6d77\\u3088\\u308a\\u3082\\u9060\\u304f\\u3001\\u4eba\\u755c\\u306e\\u4f4f\\u3080\\u4e16\\u754c\\u3092\\u8d8a\\u3048\\u3066\\u3001\\u6307\\u306e\\u3084\\u3046\\u306b\\u5c28\\u5927\\u306a\\u308c\\uff01\\\",\\n unicode\\\"\\u4eba\\u304c\\u5bb6\\u306e\\u4e2d\\u306b\\u4f4f\\u3093\\u3067\\u308b\\u306e\\u306f\\u3001\\u5730\\u4e0a\\u306e\\u60b2\\u3057\\u3044\\u98a8\\u666f\\u3067\\u3042\\u308b\\u3002\\\",\\n unicode\\\"\\u6182\\u9b31\\u306e\\u9577\\u3044\\u67c4\\u304b\\u3089\\u3001\\u96e8\\u304c\\u3057\\u3068\\u3057\\u3068\\u3068\\u6ef4\\uff08\\u3057\\u3065\\u304f\\uff09\\u3092\\u3057\\u3066\\u3090\\u308b\\u3002\\u771e\\u9ed2\\u306e\\u5927\\u304d\\u306a\\u6d0b\\u5098\\uff01\\\",\\n unicode\\\"\\u7406\\u9aee\\u5e97\\u306e\\u9752\\u3044\\u7a93\\u304b\\u3089\\u3001\\u8471\\u306e\\u3084\\u3046\\u306b\\u7a81\\u304d\\u51fa\\u3059\\u68cd\\u68d2\\u3002\\u305d\\u3044\\u3064\\u306e\\u99ac\\u9e7f\\u3089\\u3057\\u3044\\u6a5f\\u68b0\\u4ed5\\u639b\\u3067\\u3001\\u5922\\u4e2d\\u306b\\u306a\\u3050\\u3089\\u308c\\u3001\\u306a\\u3050\\u3089\\u308c\\u3066\\u5c45\\u308b\\u3002\\\",\\n unicode\\\"\\u610f\\u5fd7\\uff01\\u3000\\u305d\\u306f\\u5915\\u66ae\\u306e\\u6d77\\u3088\\u308a\\u3057\\u3066\\u3001\\u9c76\\u306e\\u5982\\u304f\\u306b\\u6cf3\\u304e\\u4f86\\u308a\\u3001\\u9f52\\u3092\\u4ee5\\u3066\\u8089\\u306b\\u565b\\u307f\\u3064\\u3051\\u308a\\u3002\\\",\\n unicode\\\"\\u5efa\\u7bc9\\u2015\\u2015\\u7279\\u306b\\u7fa4\\u5718\\u3057\\u305f\\u5efa\\u7bc9\\u2015\\u2015\\u306e\\u6a23\\u5f0f\\u306f\\u3001\\u7a7a\\u306e\\u7a79\\u7abf\\u306b\\u5c0d\\u3057\\u3066\\u69cb\\u60f3\\u3055\\u308c\\u306d\\u3070\\u306a\\u3089\\u306c\\u3002\\u5373\\u3061\\u5207\\u65b7\\u3055\\u308c\\u305f\\u308b\\u7403\\u306e\\u5f27\\u5f62\\u306b\\u5c0d\\u3057\\u3066\\u3001\\u69cd\\u72b6\\u306e\\u5782\\u76f4\\u7dda\\u3084\\u3001\\u5713\\u9310\\u5f62\\u3084\\u306e\\u4ea4\\u932f\\u305b\\u308b\\u69cb\\u60f3\\u3092\\u7528\\u610f\\u3059\\u3079\\u304d\\u3067\\u3042\\u308b\\u3002
\\u3053\\u306e\\u84bc\\u7a7a\\u306e\\u4e0b\\u306b\\u65bc\\u3051\\u308b\\u3001\\u9060\\u65b9\\u306e\\u90fd\\u6703\\u306e\\u5370\\u8c61\\u3068\\u3057\\u3066\\u3001\\u304a\\u307b\\u3080\\u306d\\u306e\\u5efa\\u7bc9\\u306f\\u4e00\\u3064\\u306e\\u91cd\\u8981\\u306a\\u610f\\u5320\\u3092\\u5fd8\\u308c\\u3066\\u3090\\u308b\\u3002\\\",\\n unicode\\\"\\u7236\\u306f\\u6c38\\u9060\\u306b\\u60b2\\u58ef\\u3067\\u3042\\u308b\\u3002\\\",\\n unicode\\\"\\u6575\\u306f\\u5e38\\u306b\\u54c4\\u7b11\\u3057\\u3066\\u3090\\u308b\\u3002\\u3055\\u3046\\u3067\\u3082\\u306a\\u3051\\u308c\\u3070\\u3001\\u4f55\\u8005\\u306e\\u8868\\u8c61\\u304c\\u6012\\u3089\\u305b\\u308b\\u306e\\u304b\\uff1f\\\",\\n unicode\\\"\\u6a5f\\u68b0\\u4eba\\u9593\\u306b\\u3082\\u3057\\u611f\\u60c5\\u304c\\u3042\\u308b\\u3068\\u3059\\u308c\\u3070\\uff1f\\u3000\\u7121\\u9650\\u306e\\u54c0\\u50b7\\u306e\\u307b\\u304b\\u306e\\u4f55\\u8005\\u3067\\u3082\\u306a\\u3044\\u3002\\\",\\n unicode\\\"\\u79c1\\u304c\\u3082\\u3057\\u7269\\u9ad4\\u3067\\u3042\\u3089\\u3046\\u3068\\u3082\\u3001\\u795e\\u306f\\u518d\\u5ea6\\u6717\\u3089\\u304b\\u306b\\u7b11\\u3072\\u306f\\u3057\\u306a\\u3044\\u3002\\u3042\\u3042\\u3001\\u7434\\u306e\\u97f3\\u304c\\u807d\\u3048\\u3066\\u4f86\\u308b\\u3002\\u2015\\u2015\\u5c0f\\u3055\\u306a\\u4e00\\u3064\\u306e\\u502b\\u7406\\uff08\\u30e2\\u30e9\\u30eb\\uff09\\u304c\\u3001\\u55aa\\u5931\\u3057\\u3066\\u3057\\u307e\\u3064\\u305f\\u306e\\u3060\\u3002\\\",\\n unicode\\\"\\u9f8d\\u306f\\u5e1d\\u738b\\u306e\\u6b32\\u671b\\u3092\\u8c61\\u5fb4\\u3057\\u3066\\u3090\\u308b\\u3002\\u6b0a\\u529b\\u306e\\u7965\\u96f2\\u306b\\u4e58\\u3064\\u3066\\u5c45\\u306a\\u304c\\u3089\\u3001\\u5e38\\u306b\\u61a4\\u307b\\u308d\\u3057\\u3044\\u605a\\u6012\\u306b\\u71c3\\u3048\\u3001\\u4e0d\\u65b7\\u306e\\u722d\\u9b2a\\u306e\\u305f\\u3081\\u306b\\u7259\\u3092\\u3080\\u3044\\u3066\\u308b\\u3002\\\",\\n unicode\\\"\\u3059\\u3079\\u3066\\u306e\\u6a4b\\u306f\\u3001\\u4e00\\u3064\\u306e\\u5efa\\u7bc9\\u610f\\u5320\\u3057\\u304b\\u6301\\u3064\\u3066\\u3090\\u306a\\u3044\\u3002\\u6642\\u9593\\u3092\\u7a7a\\u9593\\u306e\\u4e0a\\u306b\\u67b6\\u3051\\u3001\\u6216\\u308b\\u5922\\u5e7b\\u7684\\u306a\\u4e00\\u3064\\u306e\\u89c0\\u5ff5\\uff08\\u30a4\\u30c7\\u30a2\\uff09\\u3092\\u3001\\u73fe\\u5be6\\u7684\\u306b\\u8fa8\\u8b49\\u3059\\u308b\\u3053\\u3068\\u306e\\u71b1\\u610f\\u3067\\u3042\\u308b\\u3002
\\u6a4b\\u3068\\u306f\\u2015\\u2015\\u5922\\u3092\\u67b6\\u7a7a\\u3057\\u305f\\u6578\\u5b78\\u3067\\u3042\\u308b\\u3002\\\",\\n unicode\\\"\\u591a\\u304f\\u306e\\u5148\\u5929\\u7684\\u306e\\u8a69\\u4eba\\u3084\\u85dd\\u8853\\u5bb6\\u7b49\\u306f\\u3001\\u5f7c\\u7b49\\u306e\\u5bbf\\u547d\\u3065\\u3051\\u3089\\u308c\\u305f\\u4ed5\\u4e8b\\u306b\\u5c0d\\u3057\\u3066\\u3001\\u3042\\u306e\\u60b2\\u75db\\u306a\\u8036\\u8607\\u306e\\u7948\\u3092\\u3088\\u304f\\u77e5\\u3064\\u3066\\u308b\\u3002\\u300c\\u795e\\u3088\\uff01\\u3000\\u3082\\u3057\\u5fa1\\u5fc3\\u306b\\u9069\\u3075\\u306a\\u3089\\u3070\\u3001\\u3053\\u306e\\u82e6\\u304d\\u9152\\u76c3\\u3092\\u96e2\\u3057\\u7d66\\u3078\\u3002\\u3055\\u308c\\u3069\\u723e\\u306b\\u3057\\u3066\\u6b32\\u3059\\u308b\\u306a\\u3089\\u3070\\u3001\\u5fa1\\u5fc3\\u306e\\u307e\\u307e\\u306b\\u7232\\u3057\\u7d66\\u3078\\u3002\\u300d\\\",\\n unicode\\\"\\u6a5f\\u95dc\\u9283\\u3088\\u308a\\u3082\\u60b2\\u3057\\u3052\\u306b\\u3001\\u7e4b\\u7559\\u6c23\\u7403\\u3088\\u308a\\u3082\\u6182\\u9b31\\u306b\\u3001\\u70b8\\u88c2\\u5f48\\u3088\\u308a\\u3082\\u6b98\\u5fcd\\u306b\\u3001\\u6bd2\\u74e6\\u65af\\u3088\\u308a\\u3082\\u6c88\\u75db\\u306b\\u3001\\u66f3\\u706b\\u5f48\\u3088\\u308a\\u3082\\u84bc\\u767d\\u304f\\u3001\\u5927\\u7832\\u3088\\u308a\\u3082\\u30ed\\u30de\\u30f3\\u30c1\\u30c4\\u30af\\u306b\\u3001\\u7159\\u5e55\\u3088\\u308a\\u3082\\u5bc2\\u3057\\u3052\\u306b\\u3001\\u9283\\u706b\\u306e\\u767d\\u304f\\u9583\\u3081\\u304f\\u3084\\u3046\\u306a\\u8a69\\u304c\\u66f8\\u304d\\u305f\\u3044\\uff01\\\"\\n ];\\n\\n function tokenURI(uint256 id) public view returns (string memory) {\\n string[11] memory parts;\\n parts[0] = '';\\n parts[1] = '';\\n parts[2] = '';\\n parts[3] = '';\\n parts[4] = '

';\\n parts[5] = poemTitles[id];\\n parts[6] = '

';\\n parts[7] = poemBodies[id];\\n parts[8] = '

';\\n parts[9] = unicode\\\"\\u2015 \\u8429\\u539f \\u6714\\u592a\\u90ce\\\";\\n parts[10] = \\\"

\\\";\\n\\n string memory output = string(abi.encodePacked(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7], parts[8], parts[9], parts[10]));\\n string memory json = Base64.encode(bytes(string(abi.encodePacked(\\n \\\"{\\\",\\n '\\\"name\\\": \\\"', poemTitles[id], '\\\",',\\n '\\\"description\\\": \\\"Thirty-nine poems from Sakutaro Hagiwara\\\\'s late self-selected collection \\\\\\\\\\\"Shukumei\\\\\\\\\\\" have been inscribed on Blockchain as full-onchain NFTs. The content of this NFT changes depending on the owner.\\\",',\\n '\\\"image\\\": \\\"data:image/svg+xml;base64,', Base64.encode(bytes(output)), '\\\",',\\n '\\\"license\\\": \\\"CC-BY 4.0\\\",',\\n '\\\"creator\\\": \\\"Ara\\\"',\\n \\\"}\\\"\\n ))));\\n output = string(abi.encodePacked(\\\"data:application/json;base64,\\\", json));\\n\\n return output;\\n }\\n}\\n\",\"keccak256\":\"0x061ab101d0481ac8ecb99280118752a7b8616395bc39772eed6445ef075549dc\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x6080604052604051806104e001604052806040518060400160405280601b81526020017fe38182e38182e59bbae38184e6b0b7e38292e7a0b4e381a4e381a6000000000081525081526020016040518060400160405280600f81526020017fe88a9de7949fe381aee4b88ae381a7000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe8888ce381aee381aae38184e79c9ee79086000000000000000000000000000081525081526020016040518060400160405280600681526020017fe68588e682b2000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017fe7a78be699b4000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe999b8e6a98be38292e6b8a1e3828b000000000000000000000000000000000081525081526020016040518060400160405280601581526020017fe6b699e38190e381bee38197e38184e5a495e69aae000000000000000000000081525081526020016040518060400160405280601581526020017fe59cb0e79083e38292e8b7b3e8ba8de38197e381a6000000000000000000000081525081526020016040518060400160405280601281526020017fe5a49ce6b1bde8bb8ae381aee7aa93e381a7000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe698a5e381aee3818fe3828be69982000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe6a5b5e58589e59cb0e696b9e3818be38289000000000000000000000000000081525081526020016040518060400160405280600681526020017fe696b7e6a98b000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe9818be591bde381b8e381aee5bf8de8beb1000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe5af82e5afa5e381aee5b79de9828a000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe888b9e5aea4e3818be38289000000000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe8a898e686b6e38292e68da8e381a6e3828b0000000000000000000000000000815250815260200160405180606001604052806024815260200162003aeb6024913981526020016040518060400160405280601281526020017fe6b8afe381aee99b9ce8b2a8e5ba97e381a7000000000000000000000000000081525081526020016040518060400160405280600381526020017fe98fa1000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe78b90000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe590b9e99baae381aee4b8ade381a7000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe98a83e599a8e5ba97e381aee5898de381a7000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe8999ae695b8e381aee8998e000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe887aae784b6e381aee4b8ade381a7000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe8a7b8e6898be38182e3828be7a9bae99693000000000000000000000000000081525081526020016040518060400160405280600681526020017fe5a4a7e4bd9b000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe5aeb6000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe9bb92e38184e6b48be58298000000000000000000000000000000000000000081525081526020016040518060400160405280601881526020017fe68190e3828de38197e3818de4babae5bda2e88a9de5b185000000000000000081525081526020016040518060400160405280601581526020017fe9bd92e38292e38282e381a6e3828be6848fe5bf97000000000000000000000081525081526020016040518060400160405280601381526020017fe5bbbae7af89e381ae204e6f7374616c6769610000000000000000000000000081525081526020016040518060400160405280600381526020017fe788b6000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe695b5000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017fe789a9e8b3aae381aee6849fe68385000000000000000000000000000000000081525081526020016040518060400160405280600681526020017fe789a9e9ab94000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe9be8d000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017fe6a98b000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017fe5b1b1e4b88ae381aee7a588000000000000000000000000000000000000000081525081526020016040518060400160405280601281526020017fe688b0e5a0b4e381a7e381aee5b9bbe683b3000000000000000000000000000081525081525060009060276200090192919062000e31565b50604051806104e001604052806040518061022001604052806101f6815260200162002fba6101f69139815260200160405180610240016040528061021981526020016200474b61021991398152602001604051806101e001604052806101ba81526020016200440b6101ba91398152602001604051806102c00160405280610283815260200162002c59610283913981526020016040518061022001604052806101ea815260200162003fa36101ea91398152602001604051806102400160405280610204815260200162004b26610204913981526020016040518061020001604052806101e0815260200162004f3d6101e0913981526020016040518061018001604052806101578152602001620031b061015791398152602001604051806101e001604052806101b0815260200162004d2a6101b09139815260200160405180610100016040528060de815260200162002edc60de913981526020016040518061028001604052806102418152602001620054cf6102419139815260200160405180610160016040528061012381526020016200530d610123913981526020016040518060c00160405280608a815260200162004964608a91398152602001604051806102a0016040528061026e81526020016200363061026e913981526020016040518061040001604052806103d3815260200162003b0f6103d39139815260200160405180610120016040528060f681526020016200431560f6913981526020016040518061022001604052806101f081526020016200511d6101f091398152602001604051806101600160405280610128815260200162003307610128913981526020016040518060a001604052806063815260200162004eda606391398152602001604051806101600160405280610129815260200162005710610129913981526020016040518060800160405280604e815260200162003a9d604e9139815260200160405180610120016040528060e881526020016200394f60e891398152602001604051806101c001604052806101868152602001620045c5610186913981526020016040518060a0016040528060668152602001620035ca6066913981526020016040518060e0016040528060b2815260200162002b3860b2913981526020016040518060e0016040528060b181526020016200389e60b1913981526020016040518060800160405280604b815260200162005950604b913981526020016040518060c0016040528060a0815260200162003ee260a0913981526020016040518060c00160405280609f815260200162005430609f913981526020016040518060a00160405280606f815260200162002bea606f91398152602001604051806101c0016040528061018881526020016200418d6101889139815260200160405180606001604052806021815260200162003f826021913981526020016040518060a00160405280606381526020016200342f6063913981526020016040518060a001604052806066815260200162003a37606691398152602001604051806101200160405280610100815260200162002a38610100913981526020016040518060e0016040528060ae81526020016200599b60ae913981526020016040518061016001604052806101388152602001620049ee61013891398152602001604051806101600160405280610138815260200162003492610138913981526020016040518061014001604052806101178152602001620058396101179139815250600190602762000e1c92919062000e31565b5034801562000e2a57600080fd5b506200101b565b82805482825590600052602060002090810192821562000e85579160200282015b8281111562000e8457825182908051906020019062000e7392919062000e98565b509160200191906001019062000e52565b5b50905062000e94919062000f29565b5090565b82805462000ea69062000fb6565b90600052602060002090601f01602090048101928262000eca576000855562000f16565b82601f1062000ee557805160ff191683800117855562000f16565b8280016001018555821562000f16579182015b8281111562000f1557825182559160200191906001019062000ef8565b5b50905062000f25919062000f51565b5090565b5b8082111562000f4d576000818162000f43919062000f70565b5060010162000f2a565b5090565b5b8082111562000f6c57600081600090555060010162000f52565b5090565b50805462000f7e9062000fb6565b6000825580601f1062000f92575062000fb3565b601f01602090049060005260206000209081019062000fb2919062000f51565b5b50565b6000600282049050600182168062000fcf57607f821691505b6020821081141562000fe65762000fe562000fec565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611a0d806200102b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063a86faa8c14610046578063c87b56dd14610076578063e227fddb146100a6575b600080fd5b610060600480360381019061005b9190610d49565b6100d6565b60405161006d91906110d8565b60405180910390f35b610090600480360381019061008b9190610d49565b610182565b60405161009d91906110d8565b60405180910390f35b6100c060048036038101906100bb9190610d49565b610aa2565b6040516100cd91906110d8565b60405180910390f35b600081815481106100e657600080fd5b90600052602060002001600091509050805461010190611254565b80601f016020809104026020016040519081016040528092919081815260200182805461012d90611254565b801561017a5780601f1061014f5761010080835404028352916020019161017a565b820191906000526020600020905b81548152906001019060200180831161015d57829003601f168201915b505050505081565b606061018c610d0c565b6040518060800160405280605a81526020016118f5605a9139816000600b81106101df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180610260016040528061023181526020016116846102319139816001600b811061023d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806044815260200161199460449139816002600b8110610298577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180606001604052806034815260200161162460349139816003600b81106102f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060a00160405280606d81526020016115b7606d9139816004600b811061034e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060008381548110610390577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180546103a590611254565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611254565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050816005600b811061045d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060600160405280602c8152602001611658602c9139816006600b81106104b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250600183815481106104fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001805461050f90611254565b80601f016020809104026020016040519081016040528092919081815260200182805461053b90611254565b80156105885780601f1061055d57610100808354040283529160200191610588565b820191906000526020600020905b81548152906001019060200180831161056b57829003601f168201915b5050505050816007600b81106105c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806045815260200161194f60459139816008600b8110610622577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601481526020017fe2809520e890a9e58e9f20e69c94e5a4aae9838e000000000000000000000000815250816009600b811061069a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601a81526020017f3c2f703e3c2f666f726569676e4f626a6563743e3c2f7376673e00000000000081525081600a600b8110610712577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506000816000600b8110610756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151826001600b8110610795577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836002600b81106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846003600b8110610813577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856004600b8110610852577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866005600b8110610891577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151876006600b81106108d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151886007600b811061090f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151896008600b811061094e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518a6009600b811061098d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518b600a600b81106109cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040516020016109eb9b9a99989796959493929190610f96565b60405160208183030381529060405290506000610a7360008681548110610a3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001610a4e84610b4e565b604051602001610a5f92919061102f565b604051602081830303815290604052610b4e565b905080604051602001610a8691906110b6565b6040516020818303038152906040529150819350505050919050565b60018181548110610ab257600080fd5b906000526020600020016000915090508054610acd90611254565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990611254565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b505050505081565b60606000825190506000811415610b775760405180602001604052806000815250915050610d07565b60006003600283610b889190611136565b610b92919061118c565b6004610b9e91906111bd565b90506000602082610baf9190611136565b67ffffffffffffffff811115610bee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610c205781602001600182028036833780820191505090505b50905060006040518060600160405280604081526020016118b5604091399050600181016020830160005b86811015610cc45760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050610c4b565b506003860660018114610cde5760028114610cee57610cf9565b613d3d60f01b6002830352610cf9565b603d60f81b60018303525b508484525050819450505050505b919050565b604051806101600160405280600b905b6060815260200190600190039081610d1c5790505090565b600081359050610d438161159f565b92915050565b600060208284031215610d5b57600080fd5b6000610d6984828501610d34565b91505092915050565b6000610d7d8261110f565b610d87818561111a565b9350610d97818560208601611221565b610da081611313565b840191505092915050565b6000610db68261110f565b610dc0818561112b565b9350610dd0818560208601611221565b80840191505092915050565b60008154610de981611254565b610df3818661112b565b94506001821660008114610e0e5760018114610e1f57610e52565b60ff19831686528186019350610e52565b610e28856110fa565b60005b83811015610e4a57815481890152600182019150602081019050610e2b565b838801955050505b50505092915050565b6000610e6860028361112b565b9150610e7382611324565b600282019050919050565b6000610e8b60108361112b565b9150610e968261134d565b601082019050919050565b6000610eae60d78361112b565b9150610eb982611376565b60d782019050919050565b6000610ed160248361112b565b9150610edc82611483565b602482019050919050565b6000610ef460018361112b565b9150610eff826114d2565b600182019050919050565b6000610f1760098361112b565b9150610f22826114fb565b600982019050919050565b6000610f3a60018361112b565b9150610f4582611524565b600182019050919050565b6000610f5d601d8361112b565b9150610f688261154d565b601d82019050919050565b6000610f8060178361112b565b9150610f8b82611576565b601782019050919050565b6000610fa2828e610dab565b9150610fae828d610dab565b9150610fba828c610dab565b9150610fc6828b610dab565b9150610fd2828a610dab565b9150610fde8289610dab565b9150610fea8288610dab565b9150610ff68287610dab565b91506110028286610dab565b915061100e8285610dab565b915061101a8284610dab565b91508190509c9b505050505050505050505050565b600061103a82610f2d565b915061104582610f0a565b91506110518285610ddc565b915061105c82610e5b565b915061106782610ea1565b915061107282610ec4565b915061107e8284610dab565b915061108982610e5b565b915061109482610f73565b915061109f82610e7e565b91506110aa82610ee7565b91508190509392505050565b60006110c182610f50565b91506110cd8284610dab565b915081905092915050565b600060208201905081810360008301526110f28184610d72565b905092915050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061114182611217565b915061114c83611217565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561118157611180611286565b5b828201905092915050565b600061119782611217565b91506111a283611217565b9250826111b2576111b16112b5565b5b828204905092915050565b60006111c882611217565b91506111d383611217565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120c5761120b611286565b5b828202905092915050565b6000819050919050565b60005b8381101561123f578082015181840152602081019050611224565b8381111561124e576000848401525b50505050565b6000600282049050600182168061126c57607f821691505b602082108114156112805761127f6112e4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b7f2263726561746f72223a20224172612200000000000000000000000000000000600082015250565b7f226465736372697074696f6e223a20225468697274792d6e696e6520706f656d60008201527f732066726f6d2053616b757461726f2048616769776172612773206c6174652060208201527f73656c662d73656c656374656420636f6c6c656374696f6e205c225368756b7560408201527f6d65695c222068617665206265656e20696e73637269626564206f6e20426c6f60608201527f636b636861696e2061732066756c6c2d6f6e636861696e204e4654732e20546860808201527f6520636f6e74656e74206f662074686973204e4654206368616e67657320646560a08201527f70656e64696e67206f6e20746865206f776e65722e222c00000000000000000060c082015250565b7f22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62617360008201527f6536342c00000000000000000000000000000000000000000000000000000000602082015250565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b7f226e616d65223a20220000000000000000000000000000000000000000000000600082015250565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f226c6963656e7365223a202243432d425920342e30222c000000000000000000600082015250565b6115a881611217565b81146115b357600080fd5b5056fe3c666f726569676e4f626a65637420783d2232352220793d223135222077696474683d2233353022206865696768743d22333730223e3c7020636c6173733d22736861646f772220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c726563742077696474683d2234303022206865696768743d22343030222066696c6c3d2275726c282367726164312922202f3e3c2f703e3c7020786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c646566733e3c6c696e6561724772616469656e742069643d226772616431222078313d223025222079313d2235302522203e3c73746f70206f66667365743d223025222073746f702d636f6c6f723d222330663233353022203e3c616e696d6174652069643d22613122206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d22303b2061322e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613222206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d2261312e656e6422206475723d22337322202f3e3c2f73746f703e3c73746f70206f66667365743d2231303025222073746f702d636f6c6f723d222336613561636422203e3c616e696d6174652069643d22613322206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d22303b2061342e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613422206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d2261332e656e6422206475723d22337322202f3e3c2f73746f703e3c2f6c696e6561724772616469656e743e3c2f646566733e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c7376672077696474683d2234303022206865696768743d22343030222076696577426f783d22302c20302c203430302c203430302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c2f703e3c70207374796c653d2270616464696e672d746f703a2031656d2220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c7374796c6520747970653d22746578742f637373223e70207b666f6e742d66616d696c793a2073657269663b20636f6c6f723a2077686974653b7d3c2f7374796c653ea2646970667358221220233987581f65706ff65e695e8b02c51260b52c7fa27ed4cd035262c4f2e57af564736f6c63430008040033e7a781e3818ce38282e38197e789a9e9ab94e381a7e38182e38289e38186e381a8e38282e38081e7a59ee381afe5868de5baa6e69c97e38289e3818be381abe7ac91e381b2e381afe38197e381aae38184e38082e38182e38182e38081e790b4e381aee99fb3e3818ce881bde38188e381a6e4be86e3828be38082e28095e28095e5b08fe38195e381aae4b880e381a4e381ae3c727562793e3c72623ee580abe790863c2f72623e3c72703eefbc883c2f72703e3c72743ee383a2e383a9e383ab3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee3818ce38081e596aae5a4b1e38197e381a6e38197e381bee381a4e3819fe381aee381a0e38082e5aebfe591bde79a84e381aae3828be69db1e6b48be381aee5bbbae7af89e381afe38081e3819de381aee5b18be6a0b9e381aee4b88be381a7e5bf8de5be9ee38197e381aae3818ce38289e380813c727562793e3c72623ee7948d3c2f72623e3c72703eefbc883c2f72703e3c72743ee38184e38289e3818b3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381abe696bce381a6e68092e3828ae7ab8be381a4e381a6e38290e3828be38082e6848fe5bf97efbc81e38080e3819de381afe5a495e69aaee381aee6b5b7e38288e3828ae38197e381a6e38081e9b1b6e381aee5a682e3818fe381abe6b3b3e3818ee4be86e3828ae38081e9bd92e38292e4bba5e381a6e88289e381abe5999be381bfe381a4e38191e3828ae38082e9a2a8e790b4e381ae3c727562793e3c72623ee98eade9ad82e6a8823c2f72623e3c72703eefbc883c2f72703e3c72743ee3828ce3818fe3828ce38188e382803c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e3818de3818fe38284e38186e381abe38081e586a5e683b3e381aee58e9ae38184e5a381e381aee5bdb1e381a7e38081e99d9ce3818be381abe6b9a7e3818de38182e3818ce381a4e381a6e3818fe3828be9bb92e38184e6849fe68385e38082e68385e685bee381aee5bcb7e38184e683b1e381bfe38292e68a91e381b8e38081e69e9ce695a2e381aae38184e9818be591bde381b8e381aee58f9be98086e38284e38081e4bd95e381a8e38184e381b5e38193e381a8e38282e381aae38184e7949fe6b4bbe381aee69a97e68481e38284e38081e38184e38289e38184e38289e38197e3819fe5bf83e381aee784a6e787a5e38284e38292e5bf98e3828ce38195e3819be38081e5ae89e38289e3818be381aae5ae89e38289e3818be381aae5afa2e887bae381aee4b88ae381a7e38081e99d88e9ad82e381aee6b7b1e381bfe38182e3828be79ca0e3828ae38292e38195e3819de381b5e38284e38186e381aae38081e4b880e381a4e381aee58a9be38182e3828be99d9ce3818be381aae6849fe68385e38082e3819de3828ce381afe7949fe6b4bbe381aee796b2e3828ce3819fe89684e69aaee381abe38081e99fbfe69dbfe381aee9888de38184e38186e381aae3828ae38292e3819fe381a6e3828be38081e5a4a7e3818de381aae5b985e381aee38182e3828be99d9ce3818be381aae6849fe68385e38082e28095e28095e4bd9be99980e381aee69599e381b8e3819fe68588e682b2e381aee593b2e5adb8efbc81e68987e38282e381a4e88ba5e38184e5a898e38289e38081e698a5e381aee5b18fe9a2a8e381aee5898de381abe5b185e381a6e38081e5909be381aee38197e381aae38284e3818be381aae882a9e38292e38199e381b9e38289e3819be38081e889b6e38281e3818be38197e38184e69bb2e7b79ae381afe8b6b3e381abe3818be38289e38280e38082e68987e38282e381a4e88ba5e38184e5a898e38289e38081e5909be381aee7ac91e9a18fe381abe68385e38292e381b5e3818fe38281e38288e38081e698a5e381afe4be86e38289e38293e381a8e38199e38082e38182e38182e59bbae38184e6b0b7e38292e7a0b4e381a4e381a6e7aa81e980b2e38199e3828be38081e4b880e381a4e381aee5af82e38197e38184e5b886e888b9e38288e38082e38182e381aee9ab98e38184e7a9bae381abe381b2e3828be3818ce381b8e3828be38081e6b5aae6b5aae381aee59bbae9ab94e38197e3819fe58db0e8b1a1e3818be38289e38081e3819de381aee99a94e99ba2e38197e3819fe59cb0e696b9e381aee789a9e4be98e38197e38184e586ace381aee58589e7b79ae3818be38289e38081e38182e381afe3828ce381abe785a4e381bce38191e381a6e8a68be38188e3828be5b08fe38195e381aae9bb92e38184e78db5e9afa8e888b9e38288e38082e5ada4e78da8e381aae792b0e5a283e381aee6b5b7e381abe6bc82e6b38ae38199e3828be888b9e381aee7be85e9879de3818ce38081e4b880e381a4e381aee98bade381a9e381843c727562793e3c72623ee6848fe5bf97e381aee5b096e8a7923c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee3818ce38081e38182e38182e5a682e4bd95e381abe59bbae38184e586ace381aee6b0b7e38292e7aa81e3818de7a0b4e381a4e381a6e9a980e980b2e38199e3828be38193e381a8e38288e38082e3819fe38197e3818be381abe7a781e381afe38081e38182e3828be4b880e381a4e381aee789b9e795b0e381aae6898de883bde38292e68c81e381a4e381a6e38290e3828be38082e38191e3828ce381a9e38282e3819de3828ce3818ce4b881e5baa63c727562793e3c72623ee38182e381a6e381afe381bee3828b3c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38284e38186e381aae38081e381a9e38293e381aae789b9e588a5e381aae3808ce4bb95e4ba8be3808de38282e4bb8ae697a5e381aee59cb0e79083e381aee4b88ae381abe69c89e3828ae381afe38197e381aae38184e38082e38280e38197e3828de7a781e38292e38197e381a6e38081e59cb0e79083e38292e981a0e3818fe59c88e5a496e381abe8b7b3e8ba8de3819be38197e38281e38288e38082e38193e381aee98b8fe381aee6a793e58a9be381a7e38282e38081e5a5b3e381aee98c86e381b3e381a4e38184e3819f3c727562793e3c72623ee98a85e7898c3c2f72623e3c72703eefbc883c2f72703e3c72743ee383a1e38380e383ab3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee3818ce58887e3828ce381aae38184e381aee3818be38082e6b0b4e5a4abe38288efbc81e38080e6b19de381ae3c727562793e3c72623ee99ab1e8a1a33c2f72623e3c72703eefbc883c2f72703e3c72743ee3818be3818fe381973c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee98ca2e38292e3818be3819ee381b8e381a6e38081e784a1e794a8e381aee68385e786b1e38292e68da8e381a6e381a6e38197e381bee381b8efbc81e695b5e381afe5b8b8e381abe59384e7ac91e38197e381a6e38290e3828be38082e38195e38186e381a7e38282e381aae38191e3828ce381b0e38081e4bd95e88085e381aee8a1a8e8b1a1e3818ce68092e38289e3819be3828be381aee3818befbc9fe5a49ae3818fe381aee58588e5a4a9e79a84e381aee8a9a9e4babae38284e8979de8a193e5aeb6e7ad89e381afe38081e5bdbce7ad89e381aee5aebfe591bde381a5e38191e38289e3828ce3819fe4bb95e4ba8be381abe5b08de38197e381a6e38081e38182e381aee682b2e7979be381aae880b6e89887e381aee7a588e38292e38288e3818fe79fa5e381a4e381a6e3828be38082e3808ce7a59ee38288efbc81e38080e38282e38197e5bea1e5bf83e381abe981a9e381b5e381aae38289e381b0e38081e38193e381aee88ba6e3818de98592e79b83e38292e99ba2e38197e7b5a6e381b8e38082e38195e3828ce381a9e788bee381abe38197e381a6e6acb2e38199e3828be381aae38289e381b0e38081e5bea1e5bf83e381aee381bee381bee381abe788b2e38197e7b5a6e381b8e38082e3808de88d92e5afa5e381a8e38197e3819fe5b1b1e381aee4b8ade885b9e381a7e38081e5a381e381aee38284e38186e381abe6b288e9bb98e38197e381a6e38290e3828be38081e4b880e381aee5b7a8e5a4a7e381aae3828be880b3e38292e8a68be3819fe38082e58fa4e9a99be381aee38081e69fb3e381aee38182e3828be5b79de381aee5b2b8e381a7e38081e3818be3828ce381afe4bd95e38292e987a3e38289e38186e381a8e38199e3828be381aee3818be38082e38284e3818ce381a6e7949fe6b4bbe381aee89684e69aaee3818ce3818fe3828be381bee381a7e38081e3819de38293e381aae381abe38282e995b7e38184e99693e38081e9879de381aee381aae38184e987a3e7abbfe381a7e280a6e280a6e38082e3808ce590a6e3808de381a8e3819de381aee694afe982a3e4babae3818ce7ad94e381b8e3819fe38082e3808ce9ad9ae381aee7be8ee38197e3818fe8b5b0e3828be38292e79cbae38281e38288e38081e6b0b4e381aee99d9ce3818be381abe8a18ce3818fe38292e79cbae38281e38288e38082e38184e3818be381abe5909be381afe38193e381aee99d9ce8ac90e38292e5a5bde381bee381aae38184e3818be38082e38193e381aee9a2a8e699afe381aee881b0e6988ee381aae68385e8b6a3e38292e38082e38280e38197e3828de7a781e381afe38081e7b582e697a53c727562793e3c72623ee987a3e3828ae5be97e381aae381843c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38193e381a8e38292e5b88ce69c9be38197e381a6e38290e3828be38082e38195e3828ce381b0e697a5e795b6e3828ae5a5bde38184e5af82e5afa5e381aee5b2b8e9828ae381abe59d90e38197e381a6e38081e7a781e381aee381a9e38293e381aae792b0e5a283e38292e38282e4ba82e38199e381aae3818be3828ce38082e3808de3819de381aee58685e983a8e381abe6a78be980a0e381aee694afe69fb1e38292e68c81e381a1e38081e69a97e38184e6a2afe5ad90e381a8e7b693e69687e38292e8978fe38199e3828be4bd9be99980e38288efbc81e38080e6b5b7e38288e3828ae38282e981a0e3818fe38081e4babae7959ce381aee4bd8fe38280e4b896e7958ce38292e8b68ae38188e381a6e38081e68c87e381aee38284e38186e381abe5b0a8e5a4a7e381aae3828cefbc81e6988ee3828be38184e7a19de5ad90e688b8e381aee5ba97e381aee4b8ade381a7e38081e4b880e381a4e381aee7a3a8e3818be3828ce3819fe98a83e599a8e38195e381b8e38282e38081e781abe897a5e38292e8a39de5a1abe38197e381a6e381aae38184e381aee381a7e38182e3828be38082e28095e28095e4bd95e3819fe3828be8999ae5a684e3819ee380823c727562793e3c72623ee687b6e788be3c2f72623e3c72703eefbc883c2f72703e3c72743ee38289e38293e381983c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381a8e38197e381a6e7ac91e381b8efbc81e6a99fe6a2b0e4babae99693e381abe38282e38197e6849fe68385e3818ce38182e3828be381a8e38199e3828ce381b0efbc9fe38080e784a1e99990e381aee59380e582b7e381aee381bbe3818be381aee4bd95e88085e381a7e38282e381aae38184e38082e596aee381abe5ada4e78da8e381a7e38182e3828be381b0e3818be3828ae381a7e381aae38184e38082e695b5e38292e4bba5e381a6e58585e3819fe38195e3828ce381a6e38290e3828befbc81e68385e7b792e38288efbc81e38080e5909be381afe6adb8e38289e38196e3828be3818be5b590e38081e5b590e38081e6b5aae38081e6b5aae38081e5a4a7e6b5aae38081e5a4a7e6b5aae38081e5a4a7e6b5aae38082e582bee38280e3818fe59cb0e5b9b3e7b79ae38081e4b88ae69887e38199e3828be59cb0e5b9b3e7b79ae38081e890bde381a1e3818fe3828be59cb0e5b9b3e7b79ae38082e3818ce381a1e38284e3818ce381a1e38284e38081e3818ce381a1e38284e3818ce381a1e38284e38082e4b88ae794b2e69dbfe381b8e38081e4b88ae794b2e69dbfe381b8e380823c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e58db7e38191e380813c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e58db7e38191e38082e7aa81e980b2e38199e3828be38081e7aa81e980b2e38199e3828be6b0b4e5a4abe38289e38082e888b9e5aea4e381aee7aa93e38081e7aa93e38081e7aa93e38081e7aa93e38082e582bee38280e3818fe59cb0e5b9b3e7b79ae38081e4b88ae69887e38199e3828be59cb0e5b9b3e7b79ae380823c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee380813c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee380813c727562793e3c72623ee98e963c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e382a8e383b33c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38082e9a2a8e38081e9a2a8e38081e9a2a8e38082e6b0b4e38081e6b0b4e38081e6b0b4e380823c727562793e3c72623ee888b9e7aa933c2f72623e3c72703eefbc883c2f72703e3c72743ee3838fe38384e383813c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e99689e38281e3828de380823c727562793e3c72623ee888b9e7aa933c2f72623e3c72703eefbc883c2f72703e3c72743ee3838fe38384e383813c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e99689e38281e3828de38082e58fb3e888b7e381b8e38081e5b7a6e888b7e381b8e38082e6b5aae38081e6b5aae38081e6b5aae38082e381bbe381b2e38286e383bce3828be38082e381bbe381b2e38286e383bce3828be38082e381bbe381b2e38286e383bce3828be38082e68682e9acb1e381aee995b7e38184e69f84e3818be38289e38081e99ba8e3818ce38197e381a8e38197e381a8e381a83c727562793e3c72623ee6bbb43c2f72623e3c72703eefbc883c2f72703e3c72743ee38197e381a5e3818f3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e38197e381a6e38290e3828be38082e79c9ee9bb92e381aee5a4a7e3818de381aae6b48be58298efbc81e788b6e381afe6b0b8e981a0e381abe682b2e5a3afe381a7e38182e3828be38082e789a7e5a0b4e381aee7899be3818ce88d89e38292e9a39fe381a4e381a6e38290e3828be381aee38292e381bfe381a6e38081e99691e695a3e38284e680a0e683b0e381aee8b6a3e591b3e38292e8a7a3e38197e381aae38184e381bbe381a9e38081e3819de3828ce381bbe381a93c727562793e3c72623ee8bf91e4bba3e79a84e381abe381aae381a4e381a6e38197e381bee381a4e3819f3c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee4babae4babae381abe381bee381a7e38081e7a781e381afe38184e3818be381aae3828be69c83e8a9b1e38292e38282e38195e38191e3828be381a7e38182e38289e38186e38082e7a781e381aee8828ce381abe38197e381bfe8bebce38293e381a7e3818fe3828be38081e38193e381aee7a78be697a5e5928ce381aee789a9e580a6e38184e79ca0e3819fe38195e381abe5b0b1e38184e381a6e38081e38193e381aee58fa4e9a2a8e381aae3828be7a781e381aee6809de683b3e381aee68385e8aabfe381abe5b0b1e38184e381a6e38081e38193e381aee4b88ae38282e381afe38284e8aa9ee38289e381aae38184e381a7e38182e38289e38186e38082e5bbbae7af89e28095e28095e789b9e381abe7bea4e59c98e38197e3819fe5bbbae7af89e28095e28095e381aee6a8a3e5bc8fe381afe38081e7a9bae381aee7a9b9e7aabfe381abe5b08de38197e381a6e6a78be683b3e38195e3828ce381ade381b0e381aae38289e381ace38082e58db3e381a1e58887e696b7e38195e3828ce3819fe3828be79083e381aee5bca7e5bda2e381abe5b08de38197e381a6e38081e6a78de78ab6e381aee59e82e79bb4e7b79ae38284e38081e59c93e98c90e5bda2e38284e381aee4baa4e98cafe3819be3828be6a78be683b3e38292e794a8e6848fe38199e381b9e3818de381a7e38182e3828be380823c62722f3ee38193e381aee892bce7a9bae381aee4b88be381abe696bce38191e3828be38081e981a0e696b9e381aee983bde69c83e381aee58db0e8b1a1e381a8e38197e381a6e38081e3818ae381bbe38280e381ade381aee5bbbae7af89e381afe4b880e381a4e381aee9878de8a681e381aae6848fe58ca0e38292e5bf98e3828ce381a6e38290e3828be38082e6a3aee3818be38289e3818be381b8e3828be381a8e3818de38081e7a781e381afe5b8bde5ad90e38292e381ace3818ee38199e381a6e3819fe38082e38182e38182e38081e8a898e686b6e38082e68190e3828de38197e3818fe7a0b4e3828ce381a1e3818ee381a4e3819fe8a898e686b6e38082e381bfe38198e38281e381aae38081e6b3a5e6b0b4e381aee4b8ade381abe88590e381a4e3819fe8a898e686b6e38082e38195e381b3e38197e38184e99ba8e699afe381aee98193e381abe381b5e3828be381b8e3828be7a781e381aee5b8bde5ad90e38082e8838ce5be8ce381abe68da8e381a6e381a6e8a18ce3818fe38082e381a8e38182e3828be5b9bbe78788e381aee4b8ade381a7e38081e99d92e799bde38184e99baae381aee9998de3828ae381a4e38282e381a4e381a6e38290e3828be38081e38197e381a5e3818be381aae38197e381a5e3818be381aae699afe889b2e381aee4b8ade381a7e38081e7a781e381afe4b880e381a4e381aee79c9ee79086e38292e381a4e3818be38293e381a0e38082e789a9e8a880e381b5e38193e381a8e381aee381a7e3818de381aae38184e38081e6b0b8e981a0e381abe6b0b8e981a0e381abe38186e38289e682b2e38197e38192e381aae38081e7a781e381afe3808ce8888ce381aee381aae38184e79c9ee79086e3808de38292e6849fe38198e3819fe38082e699afe889b2e381aee38081e5b9bbe78788e381aee38081e99baae381aee381a4e38282e3828be5bdb1e38292e9818ee3818ee58ebbe381a4e381a6e8a18ce3818fe38081e38195e381b3e38197e38184e99d92e78cabe381ae3c727562793e3c72623ee5838f3c2f72623e3c72703eefbc883c2f72703e3c72743ee3818be3819fe381a13c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e3818be38293e38198e3819fe38082e58d9ae5be92e7ad89e99b86e381bee3828ae38081e68a95e38192e381a4e38191e38289e3828ce3819fe3828be7949fe6b6afe381ae3c727562793e3c72623ee6a99fe59ba03c2f72623e3c72703eefbc883c2f72703e3c72743ee38381e383a4e383b3e382b93c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee4b88ae381a7e38081e8999ae695b8e381aee68385e786b1e38292e8b3ade38191e59088e381a4e381a6e38290e3828be38082e381bfe381aae58587e69ab4e381aee381a4e382893c727562793e3c72623ee9ad823c2f72623e3c72703eefbc883c2f72703e3c72743ee381a0e381bee38197e381b23c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee380823c727562793e3c72623ee4bb81e7bea93c2f72623e3c72703eefbc883c2f72703e3c72743ee38198e38293e3818e3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e6a78be381b8e38081e8998ee381aee38284e38186e381aae7a9bae6b49ee381abe5b185e3828be38082e88ba5e88d89e381aee88abde3818ce8908ce38188e3828be38284e38186e381abe38081e38193e381aee697a5e795b6e3828ae381aee38288e38184e88a9de7949fe381aee4b88ae381a7e381afe38081e6809de683b3e3818ce5be8ce3818be38289e5be8ce3818be38289e381a8e68890e995b7e38197e381a6e3818fe3828be38082e38191e3828ce381a9e38282e3819de3828ce38289e381aee6809de683b3e381afe38081e7a781e381abe381bee381a7e4bd95e381aee4baa4e6b889e3818ce38182e38289e38186e3819ee38082e7a781e381afe3819fe381a0e99d92e7a9bae38292e79cbae38281e381a6e5b185e3819fe38184e38082e38182e381aee892bce5a4a9e381aee5a4a2e381aee4b8ade381abe6bab6e38191e381a6e38197e381bee381b5e38284e38186e381aae38081e38195e38186e38184e381b5e6809de683b3e381aee5b9bbe683b3e381a0e38191e38292e882b2e3818fe381bfe3819fe38184e381aee381a0e38082e7a781e887aae8baabe381aee68385e7b792e381aee5bdb1e381a7e38081e381aae381a4e3818be38197e38184e7b791e999b0e381aee5a4a2e38292e381a4e3818fe3828be38284e38186e381aae38081e3819de3828ce38289e381aee3808ce68385e8aabfe38182e3828be6809de683b3e3808de381a0e38191e38292e8aa9ee3828ae3819fe38184e381aee381a0e38082e7a9bae9a39be381b6e5b08fe9b3a5e38288e38082e381a8e381afe38184e381b8e792b0e5a283e381aee99787e38292e7aa81e7a0b4e38199e381b9e3818de38081e381a9e38293e381aae58a9be3818ce3819de38193e381abe38182e3828be3818be38082e9bd92e3818ce381bfe381a6e38193e38289e381b8e38288e38082e38193e38289e381b8e38288e38082e38193e38289e381b8e38288e38082e38199e381b9e381a6e381aee6a98be381afe38081e4b880e381a4e381aee5bbbae7af89e6848fe58ca0e38197e3818be68c81e381a4e381a6e38290e381aae38184e38082e69982e99693e38292e7a9bae99693e381aee4b88ae381abe69eb6e38191e38081e68896e3828be5a4a2e5b9bbe79a84e381aae4b880e381a4e381ae3c727562793e3c72623ee8a780e5bfb53c2f72623e3c72703eefbc883c2f72703e3c72743ee382a4e38387e382a23c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee38292e38081e78fbee5afa6e79a84e381abe8bea8e8ad89e38199e3828be38193e381a8e381aee786b1e6848fe381a7e38182e3828be380823c62722f3ee6a98be381a8e381afe28095e28095e5a4a2e38292e69eb6e7a9bae38197e3819fe695b8e5adb8e381a7e38182e3828be38082e68682e9acb1e381abe6b288e381bfe381aae3818ce38289e38081e381b2e381a8e3828ae5af82e38197e3818fe999b8e6a98be38292e6b8a1e381a4e381a6e8a18ce3818fe38082e3818be381a4e381a6e4bd95e789a9e381abe38195e381b8e5a6a5e58d94e3819be38196e3828be38081e4bd95e789a9e381abe38195e381b8e5ae89e69893e3819be38196e3828be38081e38193e381aee4b880e381a4e381aee6849fe68385e38292e381a9e38193e381b8e8a18ce3818be38186e3818be38082e890bde697a5e381afe59cb0e5b9b3e381abe4bd8ee3818fe38081e792b0e5a283e381afe68092e3828ae381abe78783e38188e381a6e3828be38082e4b880e58887e38292e6868ee683a1e38197e38081e7b289e7a28ee38197e38081e58f9be98086e38197e38081e598b2e7ac91e38197e38081e696ace5a5b8e38197e38081e695b5e684bee38199e3828be38081e38193e381aee4b880e5808be381aee9bb92e38184e5bdb1e38292e3839ee383b3e38388e381abe381a4e381a4e38293e381a7e38081e381b2e381a8e3828ae5af82e38197e3818fe999b8e6a98be38292e6b8a1e381a4e381a6e8a18ce3818fe38082e3818be381aee9ab98e38184e69eb6e7a9bae381aee6a98be38292e8b68ae38188e381a6e38081e381afe3828be3818be381aee5b9bbe78788e381aee5b882e8a197e381abe381bee381a7e38082e5a49ce6b1bde8bb8ae381aee4b8ade381a7e38081e99bbbe78788e381afe69a97e3818fe38081e6b288e9acb1e38197e3819fe7a9bae6b0a3e381aee4b8ade381a7e38081e4babae4babae381afe6b7b1e38184e79ca0e3828ae381abe890bde381a1e381a6e38290e3828be38082e4b880e4babae8b5b7e3818de381a6e7aa93e38292e381b2e38289e38191e381b0e38081e5a49ce9a2a8e381afe381a4e38281e3819fe3818fe8828ce381abe381b5e3828ce38081e99787e5a49ce381aee69a97e9bb92e381aae9878ee58e9fe38292e9a39be381b6e38081e38197e3818de3828ae381abe9a39be381b6e781abe89fb2e38292e381bfe3828be38082e38182e38182e38193e381aee79c9ee381a4e69a97e381aae68190e3828de38197e38184e699afe889b2e38292e8b2abe9809ae38199e3828befbc81e38080e6b7b1e5a49ce381aee8bd9fe8bd9fe381a8e38184e381b5e99fbfe381aee4b8ade381a7e38081e38184e381a5e38193e381b8e38081e38184e381a5e38193e381b8e38081e7a781e381aee5a49ce6b1bde8bb8ae381afe8a18ce3818be38186e381a8e38199e3828be381aee3818be38082e98fa1e381aee38186e38197e3828de381b8e5bbbbe381a4e381a6e381bfe381a6e38282e38081e3808ce7a781e3808de381afe3819de38193e381abe5b185e381aae38184e381aee381a7e38199e38288e38082e3818ae5ad83e38195e38293efbc81e38193e3828ce38289e381aee5a495e69aaee381afe6b699e38190e381bee38197e3818fe38081e7a781e381aee69bb8e9bd8be381abe8a8aae3828ce381a6e3818fe3828be38082e6809de683b3e381afe68385e8aabfe381aee5bdb1e381abe381ace3828ce381a6e38081e6849fe38198e381aee38288e38184e6b8a9e99b85e381aee889b2e59088e38292e5b8b6e381b3e381a6e8a68be38188e3828be38082e38182e38182e38184e3818be381abe4bb8ae381aee7a781e381abe381bee381a7e38081e4b880e381a4e381aee683a0e381bee3828ce3819fe5beb3e381afe381aae38184e3818be38082e4bd95e789a9e381aee58d91e58aa3e381abe38199e38289e38081e4bd95e789a9e381aee8999ae5839ee381abe38199e38289e38081e38182e381b8e381a6e9ab98e8b2b4e381aee5af9be5aeb9e38292e7a4bae38197e5be97e3828be38284e38186e381aae38081e4b880e381a4e381aee7a9a9e38284e3818be381abe38197e381a6e99691e99b85e381aae3828be5beb3e381afe381aae38184e3818be38082e28095e28095e7a781e38292e38197e381a6e78da8e3828ae5af82e38197e3818fe38081e4bb8ae697a5e381aee5a495e69aaee381aee7a9bae381abe9bb98e6809de3819be38197e38281e38288e38082e69bb8e7949fe381afe794bae381abe8a18ce3818de38081e5b7a5e5a0b4e381aee4b88be38292e9809ae3828ae38081e6a99fe9979ce8bb8ae381aee9b3b4e3828be99fbfe38292e881bde38184e3819fe38082e781abe5a4abe381aee8b5b0e3828ae38081e8bb8ae8bcaae381aee5bbbbe3828ae38081e7bea4e9b489e381aee596a7e8999fe38199e3828be5b7b7e381aee4b8ade381a7e38081e381afe38284e4b880e381a4e381aee883a1e5bc93e381afe88db7e980a0e38195e3828ce38081e8b2a8e8bb8ae381abe7a98de381bee3828ce38081e38195e38186e38197e381a6e6b8afe381aee58089e5baabe381aee696b9e381b8e38081e7a88ee9979ce381aee99680e38292e3818fe38190e381a4e381a6e8a18ce381a4e3819fe380823c62722f3ee58d81e69c88e4b88be697ace38082e69bb8e7949fe381afe9a3afe38292e9a39fe381afe38186e381a8e38197e381a6e38081e69eafe3828ce3819fe88a9de88d89e381aee58089e5baabe381aee5bdb1e381abe38081e99fb3e6a882e381aee5bf8de381b3e5b185e3828ae38081e89f8be89f80e381aee38284e38186e381abe9b3b4e3818fe381aee38292e881bde38184e3819fe380823c62722f3ee28095e28095e68385e7b792e38288e38081e5909be381afe6adb8e38289e38196e3828be3818be38082e5a49ce98193e38292e8b5b0e3828be6b1bde8bb8ae381bee381a7e38081e4b880e381a4e381aee8b5a4e38184e78788e781abe38292e7a4bae3819be38288e38082e4bb8ae3819de38193e381abe58db1e99aaae3818ce38182e3828be38082e696b7e6a98befbc81e38080e696b7e6a98befbc81e38080e38182e38182e682b2e9b3b4e381afe9a2a8e38292e381a4e38293e38196e3818fe38082e381a0e3828ce3818ce3819de3828ce38292e79fa5e3828be3818be38082e7b2bee7a59ee381afe99787e381aee69ba0e9878ee38292e381b2e3819fe8b5b0e3828be38082e680a5e8a18ce38197e38081e680a5e8a18ce38197e38081e680a5e8a18ce38197e38081e5bdbce381aee682b2e58a87e381aee7b582e9a99be381b8e381a8e38082e79086e9abaee5ba97e381aee99d92e38184e7aa93e3818be38289e38081e891b1e381aee38284e38186e381abe7aa81e3818de587bae38199e6a38de6a392e38082e3819de38184e381a4e381aee9a6ace9b9bfe38289e38197e38184e6a99fe6a2b0e4bb95e68e9be381a7e38081e5a4a2e4b8ade381abe381aae38190e38289e3828ce38081e381aae38190e38289e3828ce381a6e5b185e3828be380823c727562793e3c72623ee6b5b7e8b1b93c2f72623e3c72703eefbc883c2f72703e3c72743ee38182e38196e38289e381973c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee38284e38186e381abe38081e6a5b5e58589e381aee8a68be38188e3828be6b0b7e381aee4b88ae381a7e38081e381bce38293e38284e3828ae381a8e3808ce887aae58886e38292e5bf98e3828ce381a6e3808de59d90e381a4e381a6e38290e3819fe38184e38082e3819de38193e381abe69982e58aabe3818ce38199e3818ee58ebbe381a4e381a6e8a18ce3818fe38082e6999de5a49ce381aee381aae38184e6a5b5e58589e59cb0e696b9e381aee38081e38184e381a4e38282e69aaee3828ce696b9e381aee38284e38186e381aae58589e7b79ae3818ce38081e9888de3818fe682b2e38197e38192e381abe5b9bde6bb85e38199e3828be381a8e38193e3828de38082e38182e38182e3819de381aee981a0e38184e58c97e6a5b5e59c88e381aee6b0b7e381aee4b88ae381a7e38081e381bce38293e38284e3828ae381a8e6b5b7e8b1b9e381aee38284e38186e381abe59d90e381a4e381a6e5b185e3819fe38184e38082e6b0b8e981a0e381abe38081e6b0b8e981a0e381abe38081e887aae58886e38292e5bf98e3828ce381a6e38081e6809de6839fe381aee381bbe381aee69a97e38184e6b5b7e381abe6b5aee381b6e38081e4b880e381a4e381aee4be98e38197e38184e5b9bbe8b1a1e38292e79cbae38281e381a6e5b185e3819fe38184e381aee381a7e38199e38082e8a68be38288efbc81e38080e5bdbce381afe9a2a8e381aee38284e38186e381abe4be86e3828be38082e3819de381aee9a18de381afe68682e9acb1e381abe99d92e38196e38281e381a6e38290e3828be38082e880b3e381afe38199e3828be381a9e3818fe58887e381a4e7ab8be381a1e38081e381bee381aae38198e3828ae381afe68092e381abe8a382e38191e381a6e38290e3828be380823c62722f3ee5909be38288efbc81e380803c727562793e3c72623ee78ba1e699ba3c2f72623e3c72703eefbc883c2f72703e3c72743ee383bbe383bb3c2f72743e3c72703eefbc893c2f72703e3c2f727562793ee381aee3818be3818fe381aee5a682e3818de7be8ee38197e3818de8a1a8e68385e38292e381a9e38193e381abe8a68be3819fe3818be38082e6a99fe9979ce98a83e38288e3828ae38282e682b2e38197e38192e381abe38081e7b98be79599e6b0a3e79083e38288e3828ae38282e68682e9acb1e381abe38081e782b8e8a382e5bd88e38288e3828ae38282e6ae98e5bf8de381abe38081e6af92e793a6e696afe38288e3828ae38282e6b288e7979be381abe38081e69bb3e781abe5bd88e38288e3828ae38282e892bce799bde3818fe38081e5a4a7e7a0b2e38288e3828ae38282e383ade3839ee383b3e38381e38384e382afe381abe38081e78599e5b995e38288e3828ae38282e5af82e38197e38192e381abe38081e98a83e781abe381aee799bde3818fe99683e38281e3818fe38284e38186e381aae8a9a9e3818ce69bb8e3818de3819fe38184efbc81e4babae3818ce5aeb6e381aee4b8ade381abe4bd8fe38293e381a7e3828be381aee381afe38081e59cb0e4b88ae381aee682b2e38197e38184e9a2a8e699afe381a7e38182e3828be38082e9be8de381afe5b89de78e8be381aee6acb2e69c9be38292e8b1a1e5beb4e38197e381a6e38290e3828be38082e6ac8ae58a9be381aee7a5a5e99bb2e381abe4b998e381a4e381a6e5b185e381aae3818ce38289e38081e5b8b8e381abe686a4e381bbe3828de38197e38184e6819ae68092e381abe78783e38188e38081e4b88de696b7e381aee788ade9acaae381aee3819fe38281e381abe78999e38292e38280e38184e381a6e3828be38082", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063a86faa8c14610046578063c87b56dd14610076578063e227fddb146100a6575b600080fd5b610060600480360381019061005b9190610d49565b6100d6565b60405161006d91906110d8565b60405180910390f35b610090600480360381019061008b9190610d49565b610182565b60405161009d91906110d8565b60405180910390f35b6100c060048036038101906100bb9190610d49565b610aa2565b6040516100cd91906110d8565b60405180910390f35b600081815481106100e657600080fd5b90600052602060002001600091509050805461010190611254565b80601f016020809104026020016040519081016040528092919081815260200182805461012d90611254565b801561017a5780601f1061014f5761010080835404028352916020019161017a565b820191906000526020600020905b81548152906001019060200180831161015d57829003601f168201915b505050505081565b606061018c610d0c565b6040518060800160405280605a81526020016118f5605a9139816000600b81106101df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180610260016040528061023181526020016116846102319139816001600b811061023d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806044815260200161199460449139816002600b8110610298577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180606001604052806034815260200161162460349139816003600b81106102f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060a00160405280606d81526020016115b7606d9139816004600b811061034e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060008381548110610390577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180546103a590611254565b80601f01602080910402602001604051908101604052809291908181526020018280546103d190611254565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b5050505050816005600b811061045d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060600160405280602c8152602001611658602c9139816006600b81106104b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250600183815481106104fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001805461050f90611254565b80601f016020809104026020016040519081016040528092919081815260200182805461053b90611254565b80156105885780601f1061055d57610100808354040283529160200191610588565b820191906000526020600020905b81548152906001019060200180831161056b57829003601f168201915b5050505050816007600b81106105c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180608001604052806045815260200161194f60459139816008600b8110610622577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601481526020017fe2809520e890a9e58e9f20e69c94e5a4aae9838e000000000000000000000000815250816009600b811061069a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280601a81526020017f3c2f703e3c2f666f726569676e4f626a6563743e3c2f7376673e00000000000081525081600a600b8110610712577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506000816000600b8110610756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151826001600b8110610795577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836002600b81106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846003600b8110610813577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856004600b8110610852577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866005600b8110610891577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151876006600b81106108d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151886007600b811061090f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151896008600b811061094e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518a6009600b811061098d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518b600a600b81106109cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516040516020016109eb9b9a99989796959493929190610f96565b60405160208183030381529060405290506000610a7360008681548110610a3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001610a4e84610b4e565b604051602001610a5f92919061102f565b604051602081830303815290604052610b4e565b905080604051602001610a8691906110b6565b6040516020818303038152906040529150819350505050919050565b60018181548110610ab257600080fd5b906000526020600020016000915090508054610acd90611254565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990611254565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b505050505081565b60606000825190506000811415610b775760405180602001604052806000815250915050610d07565b60006003600283610b889190611136565b610b92919061118c565b6004610b9e91906111bd565b90506000602082610baf9190611136565b67ffffffffffffffff811115610bee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610c205781602001600182028036833780820191505090505b50905060006040518060600160405280604081526020016118b5604091399050600181016020830160005b86811015610cc45760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050610c4b565b506003860660018114610cde5760028114610cee57610cf9565b613d3d60f01b6002830352610cf9565b603d60f81b60018303525b508484525050819450505050505b919050565b604051806101600160405280600b905b6060815260200190600190039081610d1c5790505090565b600081359050610d438161159f565b92915050565b600060208284031215610d5b57600080fd5b6000610d6984828501610d34565b91505092915050565b6000610d7d8261110f565b610d87818561111a565b9350610d97818560208601611221565b610da081611313565b840191505092915050565b6000610db68261110f565b610dc0818561112b565b9350610dd0818560208601611221565b80840191505092915050565b60008154610de981611254565b610df3818661112b565b94506001821660008114610e0e5760018114610e1f57610e52565b60ff19831686528186019350610e52565b610e28856110fa565b60005b83811015610e4a57815481890152600182019150602081019050610e2b565b838801955050505b50505092915050565b6000610e6860028361112b565b9150610e7382611324565b600282019050919050565b6000610e8b60108361112b565b9150610e968261134d565b601082019050919050565b6000610eae60d78361112b565b9150610eb982611376565b60d782019050919050565b6000610ed160248361112b565b9150610edc82611483565b602482019050919050565b6000610ef460018361112b565b9150610eff826114d2565b600182019050919050565b6000610f1760098361112b565b9150610f22826114fb565b600982019050919050565b6000610f3a60018361112b565b9150610f4582611524565b600182019050919050565b6000610f5d601d8361112b565b9150610f688261154d565b601d82019050919050565b6000610f8060178361112b565b9150610f8b82611576565b601782019050919050565b6000610fa2828e610dab565b9150610fae828d610dab565b9150610fba828c610dab565b9150610fc6828b610dab565b9150610fd2828a610dab565b9150610fde8289610dab565b9150610fea8288610dab565b9150610ff68287610dab565b91506110028286610dab565b915061100e8285610dab565b915061101a8284610dab565b91508190509c9b505050505050505050505050565b600061103a82610f2d565b915061104582610f0a565b91506110518285610ddc565b915061105c82610e5b565b915061106782610ea1565b915061107282610ec4565b915061107e8284610dab565b915061108982610e5b565b915061109482610f73565b915061109f82610e7e565b91506110aa82610ee7565b91508190509392505050565b60006110c182610f50565b91506110cd8284610dab565b915081905092915050565b600060208201905081810360008301526110f28184610d72565b905092915050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061114182611217565b915061114c83611217565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561118157611180611286565b5b828201905092915050565b600061119782611217565b91506111a283611217565b9250826111b2576111b16112b5565b5b828204905092915050565b60006111c882611217565b91506111d383611217565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120c5761120b611286565b5b828202905092915050565b6000819050919050565b60005b8381101561123f578082015181840152602081019050611224565b8381111561124e576000848401525b50505050565b6000600282049050600182168061126c57607f821691505b602082108114156112805761127f6112e4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b7f2263726561746f72223a20224172612200000000000000000000000000000000600082015250565b7f226465736372697074696f6e223a20225468697274792d6e696e6520706f656d60008201527f732066726f6d2053616b757461726f2048616769776172612773206c6174652060208201527f73656c662d73656c656374656420636f6c6c656374696f6e205c225368756b7560408201527f6d65695c222068617665206265656e20696e73637269626564206f6e20426c6f60608201527f636b636861696e2061732066756c6c2d6f6e636861696e204e4654732e20546860808201527f6520636f6e74656e74206f662074686973204e4654206368616e67657320646560a08201527f70656e64696e67206f6e20746865206f776e65722e222c00000000000000000060c082015250565b7f22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62617360008201527f6536342c00000000000000000000000000000000000000000000000000000000602082015250565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b7f226e616d65223a20220000000000000000000000000000000000000000000000600082015250565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f226c6963656e7365223a202243432d425920342e30222c000000000000000000600082015250565b6115a881611217565b81146115b357600080fd5b5056fe3c666f726569676e4f626a65637420783d2232352220793d223135222077696474683d2233353022206865696768743d22333730223e3c7020636c6173733d22736861646f772220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c726563742077696474683d2234303022206865696768743d22343030222066696c6c3d2275726c282367726164312922202f3e3c2f703e3c7020786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c646566733e3c6c696e6561724772616469656e742069643d226772616431222078313d223025222079313d2235302522203e3c73746f70206f66667365743d223025222073746f702d636f6c6f723d222330663233353022203e3c616e696d6174652069643d22613122206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d22303b2061322e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613222206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d2261312e656e6422206475723d22337322202f3e3c2f73746f703e3c73746f70206f66667365743d2231303025222073746f702d636f6c6f723d222336613561636422203e3c616e696d6174652069643d22613322206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233661356163643b20233066323335302220626567696e3d22303b2061342e656e6422206475723d22337322202f3e3c616e696d6174652069643d22613422206174747269627574654e616d653d2273746f702d636f6c6f72222076616c7565733d22233066323335303b20233661356163642220626567696e3d2261332e656e6422206475723d22337322202f3e3c2f73746f703e3c2f6c696e6561724772616469656e743e3c2f646566733e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c7376672077696474683d2234303022206865696768743d22343030222076696577426f783d22302c20302c203430302c203430302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c2f703e3c70207374796c653d2270616464696e672d746f703a2031656d2220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c223e3c7374796c6520747970653d22746578742f637373223e70207b666f6e742d66616d696c793a2073657269663b20636f6c6f723a2077686974653b7d3c2f7374796c653ea2646970667358221220233987581f65706ff65e695e8b02c51260b52c7fa27ed4cd035262c4f2e57af564736f6c63430008040033", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 952, + "contract": "contracts/TokenURI.sol:TokenURI", + "label": "poemTitles", + "offset": 0, + "slot": "0", + "type": "t_array(t_string_storage)dyn_storage" + }, + { + "astId": 995, + "contract": "contracts/TokenURI.sol:TokenURI", + "label": "poemBodies", + "offset": 0, + "slot": "1", + "type": "t_array(t_string_storage)dyn_storage" + } + ], + "types": { + "t_array(t_string_storage)dyn_storage": { + "base": "t_string_storage", + "encoding": "dynamic_array", + "label": "string[]", + "numberOfBytes": "32" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/evm-compatible/deployments/filecointestnet/solcInputs/9d362a9261eac5217bad10d772735e46.json b/packages/contracts/evm-compatible/deployments/filecointestnet/solcInputs/9d362a9261eac5217bad10d772735e46.json new file mode 100644 index 0000000..aab1427 --- /dev/null +++ b/packages/contracts/evm-compatible/deployments/filecointestnet/solcInputs/9d362a9261eac5217bad10d772735e46.json @@ -0,0 +1,47 @@ +{ + "language": "Solidity", + "sources": { + "@openzeppelin/contracts/utils/Counters.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n" + }, + "@rari-capital/solmate/src/tokens/ERC721.sol": { + "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity >=0.8.0;\n\n/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\nabstract contract ERC721 {\n /*//////////////////////////////////////////////////////////////\n EVENTS\n //////////////////////////////////////////////////////////////*/\n\n event Transfer(address indexed from, address indexed to, uint256 indexed id);\n\n event Approval(address indexed owner, address indexed spender, uint256 indexed id);\n\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /*//////////////////////////////////////////////////////////////\n METADATA STORAGE/LOGIC\n //////////////////////////////////////////////////////////////*/\n\n string public name;\n\n string public symbol;\n\n function tokenURI(uint256 id) public view virtual returns (string memory);\n\n /*//////////////////////////////////////////////////////////////\n ERC721 BALANCE/OWNER STORAGE\n //////////////////////////////////////////////////////////////*/\n\n mapping(uint256 => address) internal _ownerOf;\n\n mapping(address => uint256) internal _balanceOf;\n\n function ownerOf(uint256 id) public view virtual returns (address owner) {\n require((owner = _ownerOf[id]) != address(0), \"NOT_MINTED\");\n }\n\n function balanceOf(address owner) public view virtual returns (uint256) {\n require(owner != address(0), \"ZERO_ADDRESS\");\n\n return _balanceOf[owner];\n }\n\n /*//////////////////////////////////////////////////////////////\n ERC721 APPROVAL STORAGE\n //////////////////////////////////////////////////////////////*/\n\n mapping(uint256 => address) public getApproved;\n\n mapping(address => mapping(address => bool)) public isApprovedForAll;\n\n /*//////////////////////////////////////////////////////////////\n CONSTRUCTOR\n //////////////////////////////////////////////////////////////*/\n\n constructor(string memory _name, string memory _symbol) {\n name = _name;\n symbol = _symbol;\n }\n\n /*//////////////////////////////////////////////////////////////\n ERC721 LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function approve(address spender, uint256 id) public virtual {\n address owner = _ownerOf[id];\n\n require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \"NOT_AUTHORIZED\");\n\n getApproved[id] = spender;\n\n emit Approval(owner, spender, id);\n }\n\n function setApprovalForAll(address operator, bool approved) public virtual {\n isApprovedForAll[msg.sender][operator] = approved;\n\n emit ApprovalForAll(msg.sender, operator, approved);\n }\n\n function transferFrom(\n address from,\n address to,\n uint256 id\n ) public virtual {\n require(from == _ownerOf[id], \"WRONG_FROM\");\n\n require(to != address(0), \"INVALID_RECIPIENT\");\n\n require(\n msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],\n \"NOT_AUTHORIZED\"\n );\n\n // Underflow of the sender's balance is impossible because we check for\n // ownership above and the recipient's balance can't realistically overflow.\n unchecked {\n _balanceOf[from]--;\n\n _balanceOf[to]++;\n }\n\n _ownerOf[id] = to;\n\n delete getApproved[id];\n\n emit Transfer(from, to, id);\n }\n\n function safeTransferFrom(\n address from,\n address to,\n uint256 id\n ) public virtual {\n transferFrom(from, to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, \"\") ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n bytes calldata data\n ) public virtual {\n transferFrom(from, to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n\n /*//////////////////////////////////////////////////////////////\n ERC165 LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\n interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata\n }\n\n /*//////////////////////////////////////////////////////////////\n INTERNAL MINT/BURN LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function _mint(address to, uint256 id) internal virtual {\n require(to != address(0), \"INVALID_RECIPIENT\");\n\n require(_ownerOf[id] == address(0), \"ALREADY_MINTED\");\n\n // Counter overflow is incredibly unrealistic.\n unchecked {\n _balanceOf[to]++;\n }\n\n _ownerOf[id] = to;\n\n emit Transfer(address(0), to, id);\n }\n\n function _burn(uint256 id) internal virtual {\n address owner = _ownerOf[id];\n\n require(owner != address(0), \"NOT_MINTED\");\n\n // Ownership check above ensures no underflow.\n unchecked {\n _balanceOf[owner]--;\n }\n\n delete _ownerOf[id];\n\n delete getApproved[id];\n\n emit Transfer(owner, address(0), id);\n }\n\n /*//////////////////////////////////////////////////////////////\n INTERNAL SAFE MINT LOGIC\n //////////////////////////////////////////////////////////////*/\n\n function _safeMint(address to, uint256 id) internal virtual {\n _mint(to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, \"\") ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n\n function _safeMint(\n address to,\n uint256 id,\n bytes memory data\n ) internal virtual {\n _mint(to, id);\n\n require(\n to.code.length == 0 ||\n ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==\n ERC721TokenReceiver.onERC721Received.selector,\n \"UNSAFE_RECIPIENT\"\n );\n }\n}\n\n/// @notice A generic interface for a contract which properly accepts ERC721 tokens.\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\nabstract contract ERC721TokenReceiver {\n function onERC721Received(\n address,\n address,\n uint256,\n bytes calldata\n ) external virtual returns (bytes4) {\n return ERC721TokenReceiver.onERC721Received.selector;\n }\n}\n" + }, + "contracts/Base64.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.2;\n\n/// @title Base64\n/// @notice Provides a function for encoding some bytes in base64\n/// @author Brecht Devos \nlibrary Base64 {\n bytes internal constant TABLE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n /// @notice Encodes some bytes to the base64 representation\n function encode(bytes memory data) internal pure returns (string memory) {\n uint256 len = data.length;\n if (len == 0) return \"\";\n\n // multiply by 4/3 rounded up\n uint256 encodedLen = 4 * ((len + 2) / 3);\n\n // Add some extra buffer at the end\n bytes memory result = new bytes(encodedLen + 32);\n\n bytes memory table = TABLE;\n\n assembly {\n let tablePtr := add(table, 1)\n let resultPtr := add(result, 32)\n\n for {\n let i := 0\n } lt(i, len) {\n\n } {\n i := add(i, 3)\n let input := and(mload(add(data, i)), 0xffffff)\n\n let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))\n out := shl(8, out)\n out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))\n out := shl(8, out)\n out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))\n out := shl(8, out)\n out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))\n out := shl(224, out)\n\n mstore(resultPtr, out)\n\n resultPtr := add(resultPtr, 4)\n }\n\n switch mod(len, 3)\n case 1 {\n mstore(sub(resultPtr, 2), shl(240, 0x3d3d))\n }\n case 2 {\n mstore(sub(resultPtr, 1), shl(248, 0x3d))\n }\n\n mstore(result, encodedLen)\n }\n\n return string(result);\n }\n}\n" + }, + "contracts/SakutaroPoem.sol": { + "content": "// SPDX-License-Identifier: MIT\n//\n// _____ _ _\n// / ___| | | | |\n// \\ `--. __ _ | | __ _ _ | |_ __ _ _ __ ___\n// `--. \\ / _` || |/ /| | | || __| / _` || '__| / _ \\\n// /\\__/ /| (_| || < | |_| || |_ | (_| || | | (_) |\n// \\____/ \\__,_||_|\\_\\ \\__,_| \\__| \\__,_||_| \\___/\n//\npragma solidity ^0.8.2;\n\nimport {ERC721} from \"@rari-capital/solmate/src/tokens/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\n\ninterface ITokenURI {\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n\ncontract SakutaroPoem is ERC721 {\n using Counters for Counters.Counter;\n Counters.Counter private _tokenIdCounter;\n\n uint256 public constant maxElements = 39;\n uint256 public constant secondarySaleRoyalty = 10_00000; // 10.0%\n uint256 public constant modulo = 100_00000; // precision 100.00000%\n\n address public tokenURIContractAddress;\n address public royaltyReceiver;\n uint256 private seed;\n\n constructor(address _tokenURIContractAddress) ERC721(\"Sakutaro Poem\", \"SAKU\") {\n tokenURIContractAddress = _tokenURIContractAddress;\n royaltyReceiver = msg.sender;\n seed = block.timestamp;\n }\n\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n function totalSupply() public view returns (uint256) {\n return _tokenIdCounter.current();\n }\n\n function mint(address to) public {\n require(_tokenIdCounter.current() < maxElements, \"Mint would exceed max supply of NFTs\");\n _tokenIdCounter.increment();\n uint256 tokenId = _tokenIdCounter.current();\n _safeMint(to, tokenId);\n }\n\n function _burn(uint256 tokenId) internal override(ERC721) {\n super._burn(tokenId);\n }\n\n function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) {\n uint256 id = (uint160(ownerOf(tokenId)) + seed) % uint256(39);\n return ITokenURI(tokenURIContractAddress).tokenURI(id);\n }\n\n function supportsInterface(bytes4 interfaceId) public pure virtual override(ERC721) returns (bool) {\n return\n interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\n interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\n interfaceId == 0x5b5e139f || // ERC165 Interface ID for ERC721Metadata\n interfaceId == 0x2a55205a; // ERC165 Interface ID for ERC2981\n }\n\n // ERC-2981\n function royaltyInfo(\n uint256 /* _tokenId */,\n uint256 _value\n ) external view returns (address _receiver, uint256 _royaltyAmount) {\n _receiver = royaltyReceiver;\n _royaltyAmount = (_value / modulo) * secondarySaleRoyalty;\n }\n}\n" + }, + "contracts/TokenURI.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.2;\n\nimport {Base64} from \"./Base64.sol\";\n\ncontract TokenURI {\n string[] public poemTitles = [\n unicode\"ああ固い氷を破つて\",\n unicode\"芝生の上で\",\n unicode\"舌のない眞理\",\n unicode\"慈悲\",\n unicode\"秋晴\",\n unicode\"陸橋を渡る\",\n unicode\"涙ぐましい夕暮\",\n unicode\"地球を跳躍して\",\n unicode\"夜汽車の窓で\",\n unicode\"春のくる時\",\n unicode\"極光地方から\",\n unicode\"斷橋\",\n unicode\"運命への忍辱\",\n unicode\"寂寥の川邊\",\n unicode\"船室から\",\n unicode\"記憶を捨てる\",\n unicode\"情緒よ! 君は歸らざるか\",\n unicode\"港の雜貨店で\",\n unicode\"鏡\",\n unicode\"狐\",\n unicode\"吹雪の中で\",\n unicode\"銃器店の前で\",\n unicode\"虚數の虎\",\n unicode\"自然の中で\",\n unicode\"觸手ある空間\",\n unicode\"大佛\",\n unicode\"家\",\n unicode\"黒い洋傘\",\n unicode\"恐ろしき人形芝居\",\n unicode\"齒をもてる意志\",\n unicode\"建築の Nostalgia\",\n unicode\"父\",\n unicode\"敵\",\n unicode\"物質の感情\",\n unicode\"物體\",\n unicode\"龍\",\n unicode\"橋\",\n unicode\"山上の祈\",\n unicode\"戰場での幻想\"\n ];\n\n string[] public poemBodies = [\n unicode\"ああ固い氷を破つて突進する、一つの寂しい帆船よ。あの高い空にひるがへる、浪浪の固體した印象から、その隔離した地方の物侘しい冬の光線から、あはれに煤ぼけて見える小さな黒い獵鯨船よ。孤獨な環境の海に漂泊する船の羅針が、一つの鋭どい意志の尖角・・・・・が、ああ如何に固い冬の氷を突き破つて驀進することよ。\",\n unicode\"若草の芽が萌えるやうに、この日當りのよい芝生の上では、思想が後から後からと成長してくる。けれどもそれらの思想は、私にまで何の交渉があらうぞ。私はただ青空を眺めて居たい。あの蒼天の夢の中に溶けてしまふやうな、さういふ思想の幻想だけを育くみたいのだ。私自身の情緒の影で、なつかしい緑陰の夢をつくるやうな、それらの「情調ある思想」だけを語りたいのだ。空飛ぶ小鳥よ。\",\n unicode\"とある幻燈の中で、青白い雪の降りつもつてゐる、しづかなしづかな景色の中で、私は一つの眞理をつかんだ。物言ふことのできない、永遠に永遠にうら悲しげな、私は「舌のない眞理」を感じた。景色の、幻燈の、雪のつもる影を過ぎ去つて行く、さびしい青猫のかたちをかんじた。\",\n unicode\"風琴の鎭魂樂れくれえむをきくやうに、冥想の厚い壁の影で、靜かに湧きあがつてくる黒い感情。情慾の強い惱みを抑へ、果敢ない運命への叛逆や、何といふこともない生活の暗愁や、いらいらした心の焦燥やを忘れさせ、安らかな安らかな寢臺の上で、靈魂の深みある眠りをさそふやうな、一つの力ある靜かな感情。それは生活の疲れた薄暮に、響板の鈍いうなりをたてる、大きな幅のある靜かな感情。――佛陀の教へた慈悲の哲學!\",\n unicode\"牧場の牛が草を食つてゐるのをみて、閑散や怠惰の趣味を解しないほど、それほど近代的になつてしまつた・・・・・・・・・・・人人にまで、私はいかなる會話をもさけるであらう。私の肌にしみ込んでくる、この秋日和の物倦い眠たさに就いて、この古風なる私の思想の情調に就いて、この上もはや語らないであらう。\",\n unicode\"憂鬱に沈みながら、ひとり寂しく陸橋を渡つて行く。かつて何物にさへ妥協せざる、何物にさへ安易せざる、この一つの感情をどこへ行かうか。落日は地平に低く、環境は怒りに燃えてる。一切を憎惡し、粉碎し、叛逆し、嘲笑し、斬奸し、敵愾する、この一個の黒い影をマントにつつんで、ひとり寂しく陸橋を渡つて行く。かの高い架空の橋を越えて、はるかの幻燈の市街にまで。\",\n unicode\"これらの夕暮は涙ぐましく、私の書齋に訪れてくる。思想は情調の影にぬれて、感じのよい温雅の色合を帶びて見える。ああいかに今の私にまで、一つの惠まれた徳はないか。何物の卑劣にすら、何物の虚僞にすら、あへて高貴の寛容を示し得るやうな、一つの穩やかにして閑雅なる徳はないか。――私をして獨り寂しく、今日の夕暮の空に默思せしめよ。\",\n unicode\"たしかに私は、ある一つの特異な才能を持つてゐる。けれどもそれが丁度あてはまる・・・・・やうな、どんな特別な「仕事」も今日の地球の上に有りはしない。むしろ私をして、地球を遠く圈外に跳躍せしめよ。\",\n unicode\"夜汽車の中で、電燈は暗く、沈鬱した空氣の中で、人人は深い眠りに落ちてゐる。一人起きて窓をひらけば、夜風はつめたく肌にふれ、闇夜の暗黒な野原を飛ぶ、しきりに飛ぶ火蟲をみる。ああこの眞つ暗な恐ろしい景色を貫通する! 深夜の轟轟といふ響の中で、いづこへ、いづこへ、私の夜汽車は行かうとするのか。\",\n unicode\"扇もつ若い娘ら、春の屏風の前に居て、君のしなやかな肩をすべらせ、艶めかしい曲線は足にからむ。扇もつ若い娘ら、君の笑顏に情をふくめよ、春は來らんとす。\",\n unicode\"海豹あざらしのやうに、極光の見える氷の上で、ぼんやりと「自分を忘れて」坐つてゐたい。そこに時劫がすぎ去つて行く。晝夜のない極光地方の、いつも暮れ方のやうな光線が、鈍く悲しげに幽滅するところ。ああその遠い北極圈の氷の上で、ぼんやりと海豹のやうに坐つて居たい。永遠に、永遠に、自分を忘れて、思惟のほの暗い海に浮ぶ、一つの侘しい幻象を眺めて居たいのです。\",\n unicode\"夜道を走る汽車まで、一つの赤い燈火を示せよ。今そこに危險がある。斷橋! 斷橋! ああ悲鳴は風をつんざく。だれがそれを知るか。精神は闇の曠野をひた走る。急行し、急行し、急行し、彼の悲劇の終驛へと。\",\n unicode\"とはいへ環境の闇を突破すべき、どんな力がそこにあるか。齒がみてこらへよ。こらへよ。こらへよ。\",\n unicode\"古驛の、柳のある川の岸で、かれは何を釣らうとするのか。やがて生活の薄暮がくるまで、そんなにも長い間、針のない釣竿で……。「否」とその支那人が答へた。「魚の美しく走るを眺めよ、水の靜かに行くを眺めよ。いかに君はこの靜謐を好まないか。この風景の聰明な情趣を。むしろ私は、終日釣り得ない・・・・・ことを希望してゐる。されば日當り好い寂寥の岸邊に坐して、私のどんな環境をも亂すなかれ。」\",\n unicode\"嵐、嵐、浪、浪、大浪、大浪、大浪。傾むく地平線、上昇する地平線、落ちくる地平線。がちやがちや、がちやがちや。上甲板へ、上甲板へ。チエンを卷け、チエンを卷け。突進する、突進する水夫ら。船室の窓、窓、窓、窓。傾むく地平線、上昇する地平線。チエンチエンチエン。風、風、風。水、水、水。船窓ハツチを閉めろ。船窓ハツチを閉めろ。右舷へ、左舷へ。浪、浪、浪。ほひゆーる。ほひゆーる。ほひゆーる。\",\n unicode\"森からかへるとき、私は帽子をぬぎすてた。ああ、記憶。恐ろしく破れちぎつた記憶。みじめな、泥水の中に腐つた記憶。さびしい雨景の道にふるへる私の帽子。背後に捨てて行く。\",\n unicode\"書生は町に行き、工場の下を通り、機關車の鳴る響を聽いた。火夫の走り、車輪の廻り、群鴉の喧號する巷の中で、はや一つの胡弓は荷造され、貨車に積まれ、さうして港の倉庫の方へ、税關の門をくぐつて行つた。
十月下旬。書生は飯を食はうとして、枯れた芝草の倉庫の影に、音樂の忍び居り、蟋蟀のやうに鳴くのを聽いた。
――情緒よ、君は歸らざるか。\",\n unicode\"この鋏の槓力でも、女の錆びついた銅牌メダルが切れないのか。水夫よ! 汝の隱衣かくしの錢をかぞへて、無用の情熱を捨ててしまへ!\",\n unicode\"鏡のうしろへ廻つてみても、「私」はそこに居ないのですよ。お孃さん!\",\n unicode\"見よ! 彼は風のやうに來る。その額は憂鬱に青ざめてゐる。耳はするどく切つ立ち、まなじりは怒に裂けてゐる。
君よ! 狡智・・のかくの如き美しき表情をどこに見たか。\",\n unicode\"單に孤獨であるばかりでない。敵を以て充たされてゐる!\",\n unicode\"明るい硝子戸の店の中で、一つの磨かれた銃器さへも、火藥を裝填してないのである。――何たる虚妄ぞ。懶爾らんじとして笑へ!\",\n unicode\"博徒等集まり、投げつけられたる生涯の機因チヤンスの上で、虚數の情熱を賭け合つてゐる。みな兇暴のつらだましひ仁義じんぎを構へ、虎のやうな空洞に居る。\",\n unicode\"荒寥とした山の中腹で、壁のやうに沈默してゐる、一の巨大なる耳を見た。\",\n unicode\"宿命的なる東洋の建築は、その屋根の下で忍從しながら、いらかに於て怒り立つてゐる。\",\n unicode\"その内部に構造の支柱を持ち、暗い梯子と經文を藏する佛陀よ! 海よりも遠く、人畜の住む世界を越えて、指のやうに尨大なれ!\",\n unicode\"人が家の中に住んでるのは、地上の悲しい風景である。\",\n unicode\"憂鬱の長い柄から、雨がしとしととしづくをしてゐる。眞黒の大きな洋傘!\",\n unicode\"理髮店の青い窓から、葱のやうに突き出す棍棒。そいつの馬鹿らしい機械仕掛で、夢中になぐられ、なぐられて居る。\",\n unicode\"意志! そは夕暮の海よりして、鱶の如くに泳ぎ來り、齒を以て肉に噛みつけり。\",\n unicode\"建築――特に群團した建築――の樣式は、空の穹窿に對して構想されねばならぬ。即ち切斷されたる球の弧形に對して、槍状の垂直線や、圓錐形やの交錯せる構想を用意すべきである。
この蒼空の下に於ける、遠方の都會の印象として、おほむねの建築は一つの重要な意匠を忘れてゐる。\",\n unicode\"父は永遠に悲壯である。\",\n unicode\"敵は常に哄笑してゐる。さうでもなければ、何者の表象が怒らせるのか?\",\n unicode\"機械人間にもし感情があるとすれば? 無限の哀傷のほかの何者でもない。\",\n unicode\"私がもし物體であらうとも、神は再度朗らかに笑ひはしない。ああ、琴の音が聽えて來る。――小さな一つの倫理モラルが、喪失してしまつたのだ。\",\n unicode\"龍は帝王の欲望を象徴してゐる。權力の祥雲に乘つて居ながら、常に憤ほろしい恚怒に燃え、不斷の爭鬪のために牙をむいてる。\",\n unicode\"すべての橋は、一つの建築意匠しか持つてゐない。時間を空間の上に架け、或る夢幻的な一つの觀念イデアを、現實的に辨證することの熱意である。
橋とは――夢を架空した數學である。\",\n unicode\"多くの先天的の詩人や藝術家等は、彼等の宿命づけられた仕事に對して、あの悲痛な耶蘇の祈をよく知つてる。「神よ! もし御心に適ふならば、この苦き酒盃を離し給へ。されど爾にして欲するならば、御心のままに爲し給へ。」\",\n unicode\"機關銃よりも悲しげに、繋留氣球よりも憂鬱に、炸裂彈よりも殘忍に、毒瓦斯よりも沈痛に、曳火彈よりも蒼白く、大砲よりもロマンチツクに、煙幕よりも寂しげに、銃火の白く閃めくやうな詩が書きたい!\"\n ];\n\n function tokenURI(uint256 id) public view returns (string memory) {\n string[11] memory parts;\n parts[0] = '';\n parts[1] = '';\n parts[2] = '';\n parts[3] = '';\n parts[4] = '

';\n parts[5] = poemTitles[id];\n parts[6] = '

';\n parts[7] = poemBodies[id];\n parts[8] = '

';\n parts[9] = unicode\"― 萩原 朔太郎\";\n parts[10] = \"

\";\n\n string memory output = string(abi.encodePacked(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7], parts[8], parts[9], parts[10]));\n string memory json = Base64.encode(bytes(string(abi.encodePacked(\n \"{\",\n '\"name\": \"', poemTitles[id], '\",',\n '\"description\": \"Thirty-nine poems from Sakutaro Hagiwara\\'s late self-selected collection \\\\\"Shukumei\\\\\" have been inscribed on Blockchain as full-onchain NFTs. The content of this NFT changes depending on the owner.\",',\n '\"image\": \"data:image/svg+xml;base64,', Base64.encode(bytes(output)), '\",',\n '\"license\": \"CC-BY 4.0\",',\n '\"creator\": \"Ara\"',\n \"}\"\n ))));\n output = string(abi.encodePacked(\"data:application/json;base64,\", json));\n\n return output;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} \ No newline at end of file diff --git a/packages/contracts/evm-compatible/hardhat.config.ts b/packages/contracts/evm-compatible/hardhat.config.ts index dd7b9cc..5daaf4f 100644 --- a/packages/contracts/evm-compatible/hardhat.config.ts +++ b/packages/contracts/evm-compatible/hardhat.config.ts @@ -108,6 +108,18 @@ module.exports = { gas: 21000000, gasPrice: 32000000000000, }, + filecoin: { + url: "https://api.node.glif.io/rpc/v1", + accounts: [privateKey], + gas: 2100000, + gasPrice: 8000000000, + }, + filecointestnet: { + url: "https://api.calibration.node.glif.io/rpc/v1", + accounts: [privateKey], + gas: 2100000, + gasPrice: 8000000000, + }, }, etherscan: { apiKey: process.env.ETHERSCAN_KEY, diff --git a/packages/contracts/evm-compatible/package.json b/packages/contracts/evm-compatible/package.json index 1c21d6e..f118f3f 100644 --- a/packages/contracts/evm-compatible/package.json +++ b/packages/contracts/evm-compatible/package.json @@ -13,14 +13,14 @@ "license": "ISC", "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.2", - "@nomiclabs/hardhat-etherscan": "^2.1.4", + "@nomiclabs/hardhat-etherscan": "^3.1.8", "@nomiclabs/hardhat-waffle": "^2.0.1", "@types/mocha": "^9.0.0", "chai": "^4.3.4", "ethereum-waffle": "^3.4.0", "ethers": "^5.4.4", - "hardhat": "^2.6.0", - "hardhat-deploy": "^0.8.11", + "hardhat": "^2.22.4", + "hardhat-deploy": "^0.12.4", "hardhat-typechain": "^0.3.5", "solidity-coverage": "^0.7.16", "ts-generator": "^0.1.1", diff --git a/packages/contracts/evm-compatible/typechain/Erc721.d.ts b/packages/contracts/evm-compatible/typechain/Erc721.d.ts index ff34096..cd86abd 100644 --- a/packages/contracts/evm-compatible/typechain/Erc721.d.ts +++ b/packages/contracts/evm-compatible/typechain/Erc721.d.ts @@ -145,14 +145,14 @@ export class Erc721 extends Contract { ): Promise; balanceOf( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise<{ 0: BigNumber; }>; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise<{ 0: BigNumber; @@ -197,16 +197,18 @@ export class Erc721 extends Contract { }>; ownerOf( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise<{ + owner: string; 0: string; }>; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise<{ + owner: string; 0: string; }>; @@ -300,10 +302,10 @@ export class Erc721 extends Contract { overrides?: Overrides ): Promise; - balanceOf(arg0: string, overrides?: CallOverrides): Promise; + balanceOf(owner: string, overrides?: CallOverrides): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -330,10 +332,10 @@ export class Erc721 extends Contract { "name()"(overrides?: CallOverrides): Promise; - ownerOf(arg0: BigNumberish, overrides?: CallOverrides): Promise; + ownerOf(id: BigNumberish, overrides?: CallOverrides): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; @@ -412,10 +414,10 @@ export class Erc721 extends Contract { overrides?: CallOverrides ): Promise; - balanceOf(arg0: string, overrides?: CallOverrides): Promise; + balanceOf(owner: string, overrides?: CallOverrides): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -442,10 +444,10 @@ export class Erc721 extends Contract { "name()"(overrides?: CallOverrides): Promise; - ownerOf(arg0: BigNumberish, overrides?: CallOverrides): Promise; + ownerOf(id: BigNumberish, overrides?: CallOverrides): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; @@ -545,10 +547,10 @@ export class Erc721 extends Contract { overrides?: Overrides ): Promise; - balanceOf(arg0: string, overrides?: CallOverrides): Promise; + balanceOf(owner: string, overrides?: CallOverrides): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -578,10 +580,10 @@ export class Erc721 extends Contract { "name()"(overrides?: CallOverrides): Promise; - ownerOf(arg0: BigNumberish, overrides?: CallOverrides): Promise; + ownerOf(id: BigNumberish, overrides?: CallOverrides): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; @@ -662,12 +664,12 @@ export class Erc721 extends Contract { ): Promise; balanceOf( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -698,12 +700,12 @@ export class Erc721 extends Contract { "name()"(overrides?: CallOverrides): Promise; ownerOf( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; diff --git a/packages/contracts/evm-compatible/typechain/Erc721Factory.ts b/packages/contracts/evm-compatible/typechain/Erc721Factory.ts index 2bc9c31..cb0b669 100644 --- a/packages/contracts/evm-compatible/typechain/Erc721Factory.ts +++ b/packages/contracts/evm-compatible/typechain/Erc721Factory.ts @@ -111,7 +111,7 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + name: "owner", type: "address", }, ], @@ -186,7 +186,7 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "", + name: "id", type: "uint256", }, ], @@ -194,7 +194,7 @@ const _abi = [ outputs: [ { internalType: "address", - name: "", + name: "owner", type: "address", }, ], @@ -286,7 +286,7 @@ const _abi = [ type: "bool", }, ], - stateMutability: "pure", + stateMutability: "view", type: "function", }, { diff --git a/packages/contracts/evm-compatible/typechain/Erc721TokenReceiver.d.ts b/packages/contracts/evm-compatible/typechain/Erc721TokenReceiver.d.ts index 8179362..5f5c477 100644 --- a/packages/contracts/evm-compatible/typechain/Erc721TokenReceiver.d.ts +++ b/packages/contracts/evm-compatible/typechain/Erc721TokenReceiver.d.ts @@ -53,52 +53,52 @@ export class Erc721TokenReceiver extends Contract { functions: { onERC721Received( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; "onERC721Received(address,address,uint256,bytes)"( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; }; onERC721Received( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; "onERC721Received(address,address,uint256,bytes)"( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; callStatic: { onERC721Received( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: CallOverrides ): Promise; "onERC721Received(address,address,uint256,bytes)"( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: CallOverrides ): Promise; }; @@ -107,36 +107,36 @@ export class Erc721TokenReceiver extends Contract { estimateGas: { onERC721Received( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; "onERC721Received(address,address,uint256,bytes)"( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; }; populateTransaction: { onERC721Received( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; "onERC721Received(address,address,uint256,bytes)"( - operator: string, - from: string, - id: BigNumberish, - data: BytesLike, + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, overrides?: Overrides ): Promise; }; diff --git a/packages/contracts/evm-compatible/typechain/Erc721TokenReceiverFactory.ts b/packages/contracts/evm-compatible/typechain/Erc721TokenReceiverFactory.ts index 1c1d398..96a2ff0 100644 --- a/packages/contracts/evm-compatible/typechain/Erc721TokenReceiverFactory.ts +++ b/packages/contracts/evm-compatible/typechain/Erc721TokenReceiverFactory.ts @@ -21,22 +21,22 @@ const _abi = [ inputs: [ { internalType: "address", - name: "operator", + name: "", type: "address", }, { internalType: "address", - name: "from", + name: "", type: "address", }, { internalType: "uint256", - name: "id", + name: "", type: "uint256", }, { internalType: "bytes", - name: "data", + name: "", type: "bytes", }, ], diff --git a/packages/contracts/evm-compatible/typechain/SakutaroPoem.d.ts b/packages/contracts/evm-compatible/typechain/SakutaroPoem.d.ts index 88048d2..115d8b3 100644 --- a/packages/contracts/evm-compatible/typechain/SakutaroPoem.d.ts +++ b/packages/contracts/evm-compatible/typechain/SakutaroPoem.d.ts @@ -205,14 +205,14 @@ export class SakutaroPoem extends Contract { ): Promise; balanceOf( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise<{ 0: BigNumber; }>; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise<{ 0: BigNumber; @@ -280,16 +280,18 @@ export class SakutaroPoem extends Contract { }>; ownerOf( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise<{ + owner: string; 0: string; }>; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise<{ + owner: string; 0: string; }>; @@ -437,10 +439,10 @@ export class SakutaroPoem extends Contract { overrides?: Overrides ): Promise; - balanceOf(arg0: string, overrides?: CallOverrides): Promise; + balanceOf(owner: string, overrides?: CallOverrides): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -482,10 +484,10 @@ export class SakutaroPoem extends Contract { "name()"(overrides?: CallOverrides): Promise; - ownerOf(arg0: BigNumberish, overrides?: CallOverrides): Promise; + ownerOf(id: BigNumberish, overrides?: CallOverrides): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; @@ -602,10 +604,10 @@ export class SakutaroPoem extends Contract { overrides?: CallOverrides ): Promise; - balanceOf(arg0: string, overrides?: CallOverrides): Promise; + balanceOf(owner: string, overrides?: CallOverrides): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -644,10 +646,10 @@ export class SakutaroPoem extends Contract { "name()"(overrides?: CallOverrides): Promise; - ownerOf(arg0: BigNumberish, overrides?: CallOverrides): Promise; + ownerOf(id: BigNumberish, overrides?: CallOverrides): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; @@ -785,10 +787,10 @@ export class SakutaroPoem extends Contract { overrides?: Overrides ): Promise; - balanceOf(arg0: string, overrides?: CallOverrides): Promise; + balanceOf(owner: string, overrides?: CallOverrides): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -830,10 +832,10 @@ export class SakutaroPoem extends Contract { "name()"(overrides?: CallOverrides): Promise; - ownerOf(arg0: BigNumberish, overrides?: CallOverrides): Promise; + ownerOf(id: BigNumberish, overrides?: CallOverrides): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; @@ -945,12 +947,12 @@ export class SakutaroPoem extends Contract { ): Promise; balanceOf( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; "balanceOf(address)"( - arg0: string, + owner: string, overrides?: CallOverrides ): Promise; @@ -996,12 +998,12 @@ export class SakutaroPoem extends Contract { "name()"(overrides?: CallOverrides): Promise; ownerOf( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; "ownerOf(uint256)"( - arg0: BigNumberish, + id: BigNumberish, overrides?: CallOverrides ): Promise; diff --git a/packages/contracts/evm-compatible/typechain/SakutaroPoemFactory.ts b/packages/contracts/evm-compatible/typechain/SakutaroPoemFactory.ts index 0a08d54..7f575ef 100644 --- a/packages/contracts/evm-compatible/typechain/SakutaroPoemFactory.ts +++ b/packages/contracts/evm-compatible/typechain/SakutaroPoemFactory.ts @@ -154,7 +154,7 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + name: "owner", type: "address", }, ], @@ -268,7 +268,7 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "", + name: "id", type: "uint256", }, ], @@ -276,7 +276,7 @@ const _abi = [ outputs: [ { internalType: "address", - name: "", + name: "owner", type: "address", }, ], @@ -510,4 +510,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604051620025d8380380620025d883398181016040528101906200003791906200022e565b6040518060400160405280600d81526020017f53616b757261746f20506f656d000000000000000000000000000000000000008152506040518060400160405280600481526020017f53414b55000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000bb92919062000167565b508060019080519060200190620000d492919062000167565b50505080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600981905550506200030d565b82805462000175906200028e565b90600052602060002090601f016020900481019282620001995760008555620001e5565b82601f10620001b457805160ff1916838001178555620001e5565b82800160010185558215620001e5579182015b82811115620001e4578251825591602001919060010190620001c7565b5b509050620001f49190620001f8565b5090565b5b8082111562000213576000816000905550600101620001f9565b5090565b6000815190506200022881620002f3565b92915050565b6000602082840312156200024157600080fd5b6000620002518482850162000217565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006002820490506001821680620002a757607f821691505b60208210811415620002be57620002bd620002c4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620002fe816200025a565b81146200030a57600080fd5b50565b6122bb806200031d6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b85780639fbc87131161007c5780639fbc871314610351578063a22cb4651461036f578063b88d4fde1461038b578063c87b56dd146103a7578063d9cc1886146103d7578063e985e9c5146103f557610137565b80636352211e1461029957806363f204d0146102c95780636a627842146102e757806370a082311461030357806395d89b411461033357610137565b806323b872dd116100ff57806323b872dd146101f457806329745262146102105780632a55205a1461022e57806342842e0e1461025f578063558fa0f51461027b57610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b610156600480360381019061015191906118d5565b610425565b6040516101639190611c3b565b60405180910390f35b6101746104e7565b6040516101819190611c56565b60405180910390f35b6101a4600480360381019061019f9190611968565b610575565b6040516101b19190611b61565b60405180910390f35b6101d460048036038101906101cf9190611899565b6105a8565b005b6101de610791565b6040516101eb9190611d38565b60405180910390f35b61020e60048036038101906102099190611793565b6107a2565b005b610218610ba2565b6040516102259190611d38565b60405180910390f35b61024860048036038101906102439190611991565b610ba9565b604051610256929190611c12565b60405180910390f35b61027960048036038101906102749190611793565b610bf7565b005b610283610d3e565b6040516102909190611d38565b60405180910390f35b6102b360048036038101906102ae9190611968565b610d43565b6040516102c09190611b61565b60405180910390f35b6102d1610d76565b6040516102de9190611d38565b60405180910390f35b61030160048036038101906102fc919061172e565b610d7d565b005b61031d6004803603810190610318919061172e565b610def565b60405161032a9190611d38565b60405180910390f35b61033b610e07565b6040516103489190611c56565b60405180910390f35b610359610e95565b6040516103669190611b61565b60405180910390f35b6103896004803603810190610384919061185d565b610ebb565b005b6103a560048036038101906103a091906117e2565b610fb8565b005b6103c160048036038101906103bc9190611968565b611102565b6040516103ce9190611c56565b60405180910390f35b6103df611223565b6040516103ec9190611b61565b60405180910390f35b61040f600480360381019061040a9190611757565b611249565b60405161041c9190611c3b565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104b05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e05750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546104f490611fa9565b80601f016020809104026020016040519081016040528092919081815260200182805461052090611fa9565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106a05750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611cf8565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061079d6006611278565b905090565b6003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90611c78565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061094b57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806109dc5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290611cf8565b60405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6298968081565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150620f42406298968084610be49190611e68565b610bee9190611e99565b90509250929050565b610c028383836107a2565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610cfa575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610c8793929190611bc8565b602060405180830381600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906118fe565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090611cb8565b60405180910390fd5b505050565b602781565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b620f424081565b6027610d896006611278565b10610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090611c98565b60405180910390fd5b610dd36006611286565b6000610ddf6006611278565b9050610deb828261129c565b5050565b60026020528060005260406000206000915090505481565b60018054610e1490611fa9565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4090611fa9565b8015610e8d5780601f10610e6257610100808354040283529160200191610e8d565b820191906000526020600020905b815481529060010190602001808311610e7057829003601f168201915b505050505081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610fac9190611c3b565b60405180910390a35050565b610fc38484846107a2565b60008373ffffffffffffffffffffffffffffffffffffffff163b14806110bd575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b815260040161104a9493929190611b7c565b602060405180830381600087803b15801561106457600080fd5b505af1158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109c91906118fe565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390611cb8565b60405180910390fd5b50505050565b6060600060276009546003600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661115f9190611e12565b611169919061200c565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016111c69190611d38565b60006040518083038186803b1580156111de57600080fd5b505afa1580156111f2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061121b9190611927565b915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600081600001549050919050565b6001816000016000828254019250508190555050565b6112a682826113e2565b60008273ffffffffffffffffffffffffffffffffffffffff163b148061139f575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b815260040161132c93929190611bc8565b602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e91906118fe565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590611cb8565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990611c78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90611cd8565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600061160861160384611d78565b611d53565b90508281526020810184848401111561162057600080fd5b61162b848285611f67565b509392505050565b600061164661164184611da9565b611d53565b90508281526020810184848401111561165e57600080fd5b611669848285611f76565b509392505050565b60008135905061168081612229565b92915050565b60008135905061169581612240565b92915050565b6000813590506116aa81612257565b92915050565b6000815190506116bf81612257565b92915050565b600082601f8301126116d657600080fd5b81356116e68482602086016115f5565b91505092915050565b600082601f83011261170057600080fd5b8151611710848260208601611633565b91505092915050565b6000813590506117288161226e565b92915050565b60006020828403121561174057600080fd5b600061174e84828501611671565b91505092915050565b6000806040838503121561176a57600080fd5b600061177885828601611671565b925050602061178985828601611671565b9150509250929050565b6000806000606084860312156117a857600080fd5b60006117b686828701611671565b93505060206117c786828701611671565b92505060406117d886828701611719565b9150509250925092565b600080600080608085870312156117f857600080fd5b600061180687828801611671565b945050602061181787828801611671565b935050604061182887828801611719565b925050606085013567ffffffffffffffff81111561184557600080fd5b611851878288016116c5565b91505092959194509250565b6000806040838503121561187057600080fd5b600061187e85828601611671565b925050602061188f85828601611686565b9150509250929050565b600080604083850312156118ac57600080fd5b60006118ba85828601611671565b92505060206118cb85828601611719565b9150509250929050565b6000602082840312156118e757600080fd5b60006118f58482850161169b565b91505092915050565b60006020828403121561191057600080fd5b600061191e848285016116b0565b91505092915050565b60006020828403121561193957600080fd5b600082015167ffffffffffffffff81111561195357600080fd5b61195f848285016116ef565b91505092915050565b60006020828403121561197a57600080fd5b600061198884828501611719565b91505092915050565b600080604083850312156119a457600080fd5b60006119b285828601611719565b92505060206119c385828601611719565b9150509250929050565b6119d681611ef3565b82525050565b6119e581611f05565b82525050565b60006119f682611dda565b611a008185611df0565b9350611a10818560208601611f76565b611a19816120f9565b840191505092915050565b6000611a2f82611de5565b611a398185611e01565b9350611a49818560208601611f76565b611a52816120f9565b840191505092915050565b6000611a6a601183611e01565b9150611a758261210a565b602082019050919050565b6000611a8d602483611e01565b9150611a9882612133565b604082019050919050565b6000611ab0601083611e01565b9150611abb82612182565b602082019050919050565b6000611ad3600083611df0565b9150611ade826121ab565b600082019050919050565b6000611af6600e83611e01565b9150611b01826121ae565b602082019050919050565b6000611b19600e83611e01565b9150611b24826121d7565b602082019050919050565b6000611b3c600a83611e01565b9150611b4782612200565b602082019050919050565b611b5b81611f5d565b82525050565b6000602082019050611b7660008301846119cd565b92915050565b6000608082019050611b9160008301876119cd565b611b9e60208301866119cd565b611bab6040830185611b52565b8181036060830152611bbd81846119eb565b905095945050505050565b6000608082019050611bdd60008301866119cd565b611bea60208301856119cd565b611bf76040830184611b52565b8181036060830152611c0881611ac6565b9050949350505050565b6000604082019050611c2760008301856119cd565b611c346020830184611b52565b9392505050565b6000602082019050611c5060008301846119dc565b92915050565b60006020820190508181036000830152611c708184611a24565b905092915050565b60006020820190508181036000830152611c9181611a5d565b9050919050565b60006020820190508181036000830152611cb181611a80565b9050919050565b60006020820190508181036000830152611cd181611aa3565b9050919050565b60006020820190508181036000830152611cf181611ae9565b9050919050565b60006020820190508181036000830152611d1181611b0c565b9050919050565b60006020820190508181036000830152611d3181611b2f565b9050919050565b6000602082019050611d4d6000830184611b52565b92915050565b6000611d5d611d6e565b9050611d698282611fdb565b919050565b6000604051905090565b600067ffffffffffffffff821115611d9357611d926120ca565b5b611d9c826120f9565b9050602081019050919050565b600067ffffffffffffffff821115611dc457611dc36120ca565b5b611dcd826120f9565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611e1d82611f5d565b9150611e2883611f5d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e5d57611e5c61203d565b5b828201905092915050565b6000611e7382611f5d565b9150611e7e83611f5d565b925082611e8e57611e8d61206c565b5b828204905092915050565b6000611ea482611f5d565b9150611eaf83611f5d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611ee857611ee761203d565b5b828202905092915050565b6000611efe82611f3d565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611f94578082015181840152602081019050611f79565b83811115611fa3576000848401525b50505050565b60006002820490506001821680611fc157607f821691505b60208210811415611fd557611fd461209b565b5b50919050565b611fe4826120f9565b810181811067ffffffffffffffff82111715612003576120026120ca565b5b80604052505050565b600061201782611f5d565b915061202283611f5d565b9250826120325761203161206c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b7f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060008201527f4e46547300000000000000000000000000000000000000000000000000000000602082015250565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b50565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b61223281611ef3565b811461223d57600080fd5b50565b61224981611f05565b811461225457600080fd5b50565b61226081611f11565b811461226b57600080fd5b50565b61227781611f5d565b811461228257600080fd5b5056fea2646970667358221220a6abc34f463cca65d352afa1237e5a67587bd3f8deba97af8f26f85d527f4c4964736f6c63430008040033"; + "0x60806040523480156200001157600080fd5b50604051620027423803806200274283398181016040528101906200003791906200022e565b6040518060400160405280600d81526020017f53616b757461726f20506f656d000000000000000000000000000000000000008152506040518060400160405280600481526020017f53414b55000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000bb92919062000167565b508060019080519060200190620000d492919062000167565b50505080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600981905550506200030d565b82805462000175906200028e565b90600052602060002090601f016020900481019282620001995760008555620001e5565b82601f10620001b457805160ff1916838001178555620001e5565b82800160010185558215620001e5579182015b82811115620001e4578251825591602001919060010190620001c7565b5b509050620001f49190620001f8565b5090565b5b8082111562000213576000816000905550600101620001f9565b5090565b6000815190506200022881620002f3565b92915050565b6000602082840312156200024157600080fd5b6000620002518482850162000217565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006002820490506001821680620002a757607f821691505b60208210811415620002be57620002bd620002c4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620002fe816200025a565b81146200030a57600080fd5b50565b612425806200031d6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636352211e116100b85780639fbc87131161007c5780639fbc871314610351578063a22cb4651461036f578063b88d4fde1461038b578063c87b56dd146103a7578063d9cc1886146103d7578063e985e9c5146103f557610137565b80636352211e1461029957806363f204d0146102c95780636a627842146102e757806370a082311461030357806395d89b411461033357610137565b806323b872dd116100ff57806323b872dd146101f457806329745262146102105780632a55205a1461022e57806342842e0e1461025f578063558fa0f51461027b57610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b610156600480360381019061015191906119ad565b610425565b6040516101639190611d4f565b60405180910390f35b6101746104e7565b6040516101819190611d6a565b60405180910390f35b6101a4600480360381019061019f9190611a40565b610575565b6040516101b19190611c73565b60405180910390f35b6101d460048036038101906101cf9190611971565b6105a8565b005b6101de610791565b6040516101eb9190611e8c565b60405180910390f35b61020e60048036038101906102099190611866565b6107a2565b005b610218610ba2565b6040516102259190611e8c565b60405180910390f35b61024860048036038101906102439190611a69565b610ba9565b604051610256929190611d26565b60405180910390f35b61027960048036038101906102749190611866565b610bf7565b005b610283610d3e565b6040516102909190611e8c565b60405180910390f35b6102b360048036038101906102ae9190611a40565b610d43565b6040516102c09190611c73565b60405180910390f35b6102d1610def565b6040516102de9190611e8c565b60405180910390f35b61030160048036038101906102fc9190611801565b610df6565b005b61031d60048036038101906103189190611801565b610e68565b60405161032a9190611e8c565b60405180910390f35b61033b610f20565b6040516103489190611d6a565b60405180910390f35b610359610fae565b6040516103669190611c73565b60405180910390f35b61038960048036038101906103849190611935565b610fd4565b005b6103a560048036038101906103a091906118b5565b6110d1565b005b6103c160048036038101906103bc9190611a40565b61121e565b6040516103ce9190611d6a565b60405180910390f35b6103df611314565b6040516103ec9190611c73565b60405180910390f35b61040f600480360381019061040a919061182a565b61133a565b60405161041c9190611d4f565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104b05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e05750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546104f4906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610520906120c1565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106a05750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690611e2c565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061079d6006611369565b905090565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611e6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90611d8c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109735750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806109dc57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290611e2c565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6298968081565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150620f42406298968084610be49190611f80565b610bee9190611fb1565b90509250929050565b610c028383836107a2565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610cfa575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610c8793929190611cdc565b602060405180830381600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090611dec565b60405180910390fd5b505050565b602781565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff161415610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190611e4c565b60405180910390fd5b919050565b620f424081565b6027610e026006611369565b10610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611dac565b60405180910390fd5b610e4c6006611377565b6000610e586006611369565b9050610e64828261138d565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090611dcc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610f2d906120c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f59906120c1565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b505050505081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110c59190611d4f565b60405180910390a35050565b6110dc8585856107a2565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806111d8575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611165959493929190611c8e565b602060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b791906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120e90611dec565b60405180910390fd5b5050505050565b60606000602760095461123085610d43565b73ffffffffffffffffffffffffffffffffffffffff166112509190611f2a565b61125a9190612124565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016112b79190611e8c565b60006040518083038186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130c91906119ff565b915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600081600001549050919050565b6001816000016000828254019250508190555050565b61139782826114d3565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611490575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b815260040161141d93929190611cdc565b602060405180830381600087803b15801561143757600080fd5b505af115801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906119d6565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690611dec565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90611d8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90611e0c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006116f96116f484611ecc565b611ea7565b90508281526020810184848401111561171157600080fd5b61171c84828561208e565b509392505050565b60008135905061173381612393565b92915050565b600081359050611748816123aa565b92915050565b60008135905061175d816123c1565b92915050565b600081519050611772816123c1565b92915050565b60008083601f84011261178a57600080fd5b8235905067ffffffffffffffff8111156117a357600080fd5b6020830191508360018202830111156117bb57600080fd5b9250929050565b600082601f8301126117d357600080fd5b81516117e38482602086016116e6565b91505092915050565b6000813590506117fb816123d8565b92915050565b60006020828403121561181357600080fd5b600061182184828501611724565b91505092915050565b6000806040838503121561183d57600080fd5b600061184b85828601611724565b925050602061185c85828601611724565b9150509250929050565b60008060006060848603121561187b57600080fd5b600061188986828701611724565b935050602061189a86828701611724565b92505060406118ab868287016117ec565b9150509250925092565b6000806000806000608086880312156118cd57600080fd5b60006118db88828901611724565b95505060206118ec88828901611724565b94505060406118fd888289016117ec565b935050606086013567ffffffffffffffff81111561191a57600080fd5b61192688828901611778565b92509250509295509295909350565b6000806040838503121561194857600080fd5b600061195685828601611724565b925050602061196785828601611739565b9150509250929050565b6000806040838503121561198457600080fd5b600061199285828601611724565b92505060206119a3858286016117ec565b9150509250929050565b6000602082840312156119bf57600080fd5b60006119cd8482850161174e565b91505092915050565b6000602082840312156119e857600080fd5b60006119f684828501611763565b91505092915050565b600060208284031215611a1157600080fd5b600082015167ffffffffffffffff811115611a2b57600080fd5b611a37848285016117c2565b91505092915050565b600060208284031215611a5257600080fd5b6000611a60848285016117ec565b91505092915050565b60008060408385031215611a7c57600080fd5b6000611a8a858286016117ec565b9250506020611a9b858286016117ec565b9150509250929050565b611aae8161200b565b82525050565b611abd8161201d565b82525050565b6000611acf8385611f08565b9350611adc83858461207f565b611ae583612211565b840190509392505050565b6000611afb82611efd565b611b058185611f19565b9350611b1581856020860161208e565b611b1e81612211565b840191505092915050565b6000611b36601183611f19565b9150611b4182612222565b602082019050919050565b6000611b59602483611f19565b9150611b648261224b565b604082019050919050565b6000611b7c600c83611f19565b9150611b878261229a565b602082019050919050565b6000611b9f601083611f19565b9150611baa826122c3565b602082019050919050565b6000611bc2600083611f08565b9150611bcd826122ec565b600082019050919050565b6000611be5600e83611f19565b9150611bf0826122ef565b602082019050919050565b6000611c08600e83611f19565b9150611c1382612318565b602082019050919050565b6000611c2b600a83611f19565b9150611c3682612341565b602082019050919050565b6000611c4e600a83611f19565b9150611c598261236a565b602082019050919050565b611c6d81612075565b82525050565b6000602082019050611c886000830184611aa5565b92915050565b6000608082019050611ca36000830188611aa5565b611cb06020830187611aa5565b611cbd6040830186611c64565b8181036060830152611cd0818486611ac3565b90509695505050505050565b6000608082019050611cf16000830186611aa5565b611cfe6020830185611aa5565b611d0b6040830184611c64565b8181036060830152611d1c81611bb5565b9050949350505050565b6000604082019050611d3b6000830185611aa5565b611d486020830184611c64565b9392505050565b6000602082019050611d646000830184611ab4565b92915050565b60006020820190508181036000830152611d848184611af0565b905092915050565b60006020820190508181036000830152611da581611b29565b9050919050565b60006020820190508181036000830152611dc581611b4c565b9050919050565b60006020820190508181036000830152611de581611b6f565b9050919050565b60006020820190508181036000830152611e0581611b92565b9050919050565b60006020820190508181036000830152611e2581611bd8565b9050919050565b60006020820190508181036000830152611e4581611bfb565b9050919050565b60006020820190508181036000830152611e6581611c1e565b9050919050565b60006020820190508181036000830152611e8581611c41565b9050919050565b6000602082019050611ea16000830184611c64565b92915050565b6000611eb1611ec2565b9050611ebd82826120f3565b919050565b6000604051905090565b600067ffffffffffffffff821115611ee757611ee66121e2565b5b611ef082612211565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f3582612075565b9150611f4083612075565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f7557611f74612155565b5b828201905092915050565b6000611f8b82612075565b9150611f9683612075565b925082611fa657611fa5612184565b5b828204905092915050565b6000611fbc82612075565b9150611fc783612075565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200057611fff612155565b5b828202905092915050565b600061201682612055565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156120ac578082015181840152602081019050612091565b838111156120bb576000848401525b50505050565b600060028204905060018216806120d957607f821691505b602082108114156120ed576120ec6121b3565b5b50919050565b6120fc82612211565b810181811067ffffffffffffffff8211171561211b5761211a6121e2565b5b80604052505050565b600061212f82612075565b915061213a83612075565b92508261214a57612149612184565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b7f4d696e7420776f756c6420657863656564206d617820737570706c79206f662060008201527f4e46547300000000000000000000000000000000000000000000000000000000602082015250565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b50565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b61239c8161200b565b81146123a757600080fd5b50565b6123b38161201d565b81146123be57600080fd5b50565b6123ca81612029565b81146123d557600080fd5b50565b6123e181612075565b81146123ec57600080fd5b5056fea2646970667358221220c0a55333192370778c2c0e5ad175b095a2229989edeaa2cd1474aa8ea526793a64736f6c63430008040033"; diff --git a/packages/react-app/src/components/templates/HomeTemplate.tsx b/packages/react-app/src/components/templates/HomeTemplate.tsx index bff6b8e..3ec3b29 100644 --- a/packages/react-app/src/components/templates/HomeTemplate.tsx +++ b/packages/react-app/src/components/templates/HomeTemplate.tsx @@ -415,6 +415,45 @@ export const HomeTemplate: React.FC = () => { externalUrl="https://explorer.aptoslabs.com/account/0x718f20ae37f309e0aa59fcbe38eb731b73f01aa1459a01d1e157f347c3c6db6d/modules/code/sakutaro_poem?network=mainnet" /> + + {/* */} + {/* */} diff --git a/packages/react-app/src/contracts/external_contracts.ts b/packages/react-app/src/contracts/external_contracts.ts index 8bde74a..62086fd 100644 --- a/packages/react-app/src/contracts/external_contracts.ts +++ b/packages/react-app/src/contracts/external_contracts.ts @@ -1125,6 +1125,16 @@ const contractsInfo: any = { nft: { address: "0xA87AbF6854207075e65D16cF86a8ece1216eA973", abi: nftAbi }, }, }, + 314: { + contracts: { + nft: { address: "0xA87AbF6854207075e65D16cF86a8ece1216eA973", abi: nftAbi }, + }, + }, + 314159: { + contracts: { + nft: { address: "0x6750d3fd143e91083d4ff10dc659efc517c3ec85", abi: nftAbi }, + }, + }, }; export default contractsInfo; diff --git a/yarn.lock b/yarn.lock index 2120136..d30e677 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2138,7 +2138,7 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/transactions" "^5.4.0" -"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.3.0": +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.3.0", "@ethersproject/contracts@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -2463,7 +2463,7 @@ "@ethersproject/sha2" "^5.4.0" "@ethersproject/strings" "^5.4.0" -"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.3.0": +"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.3.0", "@ethersproject/solidity@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== @@ -2562,7 +2562,7 @@ "@ethersproject/transactions" "^5.4.0" "@ethersproject/wordlists" "^5.4.0" -"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.3.0": +"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.3.0", "@ethersproject/wallet@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== @@ -3706,6 +3706,54 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@nomicfoundation/edr-darwin-arm64@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.8.tgz#09de1f03c0336670fce959f376f0fe9137545836" + integrity sha512-eB0leCexS8sQEmfyD72cdvLj9djkBzQGP4wSQw6SNf2I4Sw4Cnzb3d45caG2FqFFjbvfqL0t+badUUIceqQuMw== + +"@nomicfoundation/edr-darwin-x64@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.8.tgz#c3ca237c74ed3b6fb800fd7f1de7174f4ad24f72" + integrity sha512-JksVCS1N5ClwVF14EvO25HCQ+Laljh/KRfHERMVAC9ZwPbTuAd/9BtKvToCBi29uCHWqsXMI4lxCApYQv2nznw== + +"@nomicfoundation/edr-linux-arm64-gnu@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.8.tgz#08bd367789e745f4e78a8a87368fc470eea8a7de" + integrity sha512-raCE+fOeNXhVBLUo87cgsHSGvYYRB6arih4eG6B9KGACWK5Veebtm9xtKeiD8YCsdUlUfat6F7ibpeNm91fpsA== + +"@nomicfoundation/edr-linux-arm64-musl@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.8.tgz#9cab5cbec0052cb5812c6c66c463d28a756cd916" + integrity sha512-PwiDp4wBZWMCIy29eKkv8moTKRrpiSDlrc+GQMSZLhOAm8T33JKKXPwD/2EbplbhCygJDGXZdtEKl9x9PaH66A== + +"@nomicfoundation/edr-linux-x64-gnu@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.8.tgz#d4a11b6ebcd1b29d7431d185c6df3e65a2cd4bde" + integrity sha512-6AcvA/XKoipGap5jJmQ9Y6yT7Uf39D9lu2hBcDCXnXbMcXaDGw4mn1/L4R63D+9VGZyu1PqlcJixCUZlGGIWlg== + +"@nomicfoundation/edr-linux-x64-musl@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.8.tgz#b8eef960d06380a365866ddd1e97ecb7fbf6bd70" + integrity sha512-cxb0sEmZjlwhYWO28sPsV64VDx31ekskhC1IsDXU1p9ntjHSJRmW4KEIqJ2O3QwJap/kLKfMS6TckvY10gjc6w== + +"@nomicfoundation/edr-win32-x64-msvc@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.8.tgz#ac7061aeb07cc847c429513080b76bb05297a869" + integrity sha512-yVuVPqRRNLZk7TbBMkKw7lzCvI8XO8fNTPTYxymGadjr9rEGRuNTU1yBXjfJ59I1jJU/X2TSkRk1OFX0P5tpZQ== + +"@nomicfoundation/edr@^0.3.7": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.3.8.tgz#28fe7ae4f462ae74a16cd1a714ff7b1cd9c22b4c" + integrity sha512-u2UJ5QpznSHVkZRh6ePWoeVb6kmPrrqh08gCnZ9FHlJV9CITqlrTQHJkacd+INH31jx88pTAJnxePE4XAiH5qg== + dependencies: + "@nomicfoundation/edr-darwin-arm64" "0.3.8" + "@nomicfoundation/edr-darwin-x64" "0.3.8" + "@nomicfoundation/edr-linux-arm64-gnu" "0.3.8" + "@nomicfoundation/edr-linux-arm64-musl" "0.3.8" + "@nomicfoundation/edr-linux-x64-gnu" "0.3.8" + "@nomicfoundation/edr-linux-x64-musl" "0.3.8" + "@nomicfoundation/edr-win32-x64-msvc" "0.3.8" + "@nomicfoundation/ethereumjs-block@5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d" @@ -3746,6 +3794,13 @@ "@nomicfoundation/ethereumjs-util" "9.0.1" crc-32 "^1.2.0" +"@nomicfoundation/ethereumjs-common@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz#9901f513af2d4802da87c66d6f255b510bef5acb" + integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.4" + "@nomicfoundation/ethereumjs-ethash@3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41" @@ -3777,6 +3832,11 @@ resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28" integrity sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ== +"@nomicfoundation/ethereumjs-rlp@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz#66c95256fc3c909f6fb18f6a586475fc9762fa30" + integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw== + "@nomicfoundation/ethereumjs-statemanager@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935" @@ -3812,6 +3872,16 @@ "@nomicfoundation/ethereumjs-util" "9.0.1" ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-tx@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz#b0ceb58c98cc34367d40a30d255d6315b2f456da" + integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + ethereum-cryptography "0.1.3" + "@nomicfoundation/ethereumjs-util@9.0.1": version "9.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89" @@ -3821,6 +3891,14 @@ "@nomicfoundation/ethereumjs-rlp" "5.0.1" ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-util@9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz#84c5274e82018b154244c877b76bc049a4ed7b38" + integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + ethereum-cryptography "0.1.3" + "@nomicfoundation/ethereumjs-vm@7.0.1": version "7.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz#7d035e0993bcad10716c8b36e61dfb87fa3ca05f" @@ -3924,6 +4002,22 @@ node-fetch "^2.6.0" semver "^6.3.0" +"@nomiclabs/hardhat-etherscan@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.8.tgz#3c12ee90b3733e0775e05111146ef9418d4f5a38" + integrity sha512-v5F6IzQhrsjHh6kQz4uNrym49brK9K5bYCq2zQZ729RYRaifI9hHbtmK+KkIVevfhut7huQFEQ77JLRMAzWYjQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + fs-extra "^7.0.1" + lodash "^4.17.11" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + "@nomiclabs/hardhat-waffle@^2.0.1": version "2.0.6" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.6.tgz#d11cb063a5f61a77806053e54009c40ddee49a54" @@ -5669,6 +5763,11 @@ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== +"@types/qs@^6.9.7": + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + "@types/range-parser@*": version "1.2.4" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" @@ -6386,6 +6485,16 @@ ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: require-from-string "^2.0.2" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.14.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.14.0.tgz#f514ddfd4756abb200e1704414963620a625ebbb" + integrity sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -6864,6 +6973,11 @@ ast-types@^0.13.2: dependencies: tslib "^2.0.1" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-eventemitter@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" @@ -7885,7 +7999,7 @@ boxen@^4.2.0: type-fest "^0.8.1" widest-line "^3.1.0" -boxen@^5.0.0: +boxen@^5.0.0, boxen@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== @@ -8368,6 +8482,13 @@ cbor@^5.0.2: bignumber.js "^9.0.1" nofilter "^1.0.4" +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== + dependencies: + nofilter "^3.1.0" + chai@^4.3.4: version "4.3.7" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" @@ -8471,6 +8592,21 @@ chokidar@3.5.3, chokidar@^3.0.2, chokidar@^3.3.0, chokidar@^3.4.0, chokidar@^3.4 optionalDependencies: fsevents "~2.3.2" +chokidar@^3.5.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -11125,7 +11261,7 @@ ethers@^4.0.32: uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^5.0.1, ethers@^5.0.2, ethers@^5.4.4, ethers@^5.5.2, ethers@^5.7.1: +ethers@^5.0.1, ethers@^5.0.2, ethers@^5.4.4, ethers@^5.5.2, ethers@^5.7.0, ethers@^5.7.1, ethers@~5.7.0: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -12640,6 +12776,36 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +hardhat-deploy@^0.12.4: + version "0.12.4" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.12.4.tgz#5ebef37f1004f52a74987213b0465ad7c9433fb2" + integrity sha512-bYO8DIyeGxZWlhnMoCBon9HNZb6ji0jQn7ngP1t5UmGhC8rQYhji7B73qETMOFhzt5ECZPr+U52duj3nubsqdQ== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/providers" "^5.7.2" + "@ethersproject/solidity" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wallet" "^5.7.0" + "@types/qs" "^6.9.7" + axios "^0.21.1" + chalk "^4.1.2" + chokidar "^3.5.2" + debug "^4.3.2" + enquirer "^2.3.6" + ethers "^5.7.0" + form-data "^4.0.0" + fs-extra "^10.0.0" + match-all "^1.2.6" + murmur-128 "^0.2.1" + qs "^6.9.4" + zksync-ethers "^5.0.0" + hardhat-deploy@^0.8.11: version "0.8.11" resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.8.11.tgz#faa20def76f031101db81c5b71d7388e0475b794" @@ -12672,6 +12838,55 @@ hardhat-typechain@^0.3.5: resolved "https://registry.yarnpkg.com/hardhat-typechain/-/hardhat-typechain-0.3.5.tgz#8e50616a9da348b33bd001168c8fda9c66b7b4af" integrity sha512-w9lm8sxqTJACY+V7vijiH+NkPExnmtiQEjsV9JKD1KgMdVk2q8y+RhvU/c4B7+7b1+HylRUCxpOIvFuB3rE4+w== +hardhat@^2.22.4: + version "2.22.4" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.4.tgz#766227b6cefca5dbf4fd15ab5b5a68138fa13baf" + integrity sha512-09qcXJFBHQUaraJkYNr7XlmwjOj27xBB0SL2rYS024hTj9tPMbp26AFjlf5quBMO9SR4AJFg+4qWahcYcvXBuQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/edr" "^0.3.7" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + boxen "^5.1.2" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + hardhat@^2.6.0: version "2.17.0" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.0.tgz#574478790fa4f4a45c5ccf162e82e54f36671749" @@ -15403,6 +15618,11 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" @@ -16443,6 +16663,11 @@ nofilter@^1.0.4: resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -20067,6 +20292,15 @@ slash@^5.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -20896,6 +21130,17 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@^6.8.0: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + tailwindcss@^3.0.2, tailwindcss@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf" @@ -21806,7 +22051,7 @@ update-notifier@^5.1.0: semver-diff "^3.1.1" xdg-basedir "^4.0.0" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -23570,3 +23815,10 @@ zip-stream@^4.1.0: archiver-utils "^2.1.0" compress-commons "^4.1.0" readable-stream "^3.6.0" + +zksync-ethers@^5.0.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/zksync-ethers/-/zksync-ethers-5.7.2.tgz#e965a9926e6f8168963ab565dd6ad0d38c4f7f18" + integrity sha512-D+wn4nkGixUOek9ZsVvIZ/MHponQ5xvw74FSbDJDv6SLCI4LZALOAc8lF3b1ml8nOkpeE2pGV0VKmHTSquRNJg== + dependencies: + ethers "~5.7.0"