From 25f0e40cc85f7e28596010f876c1d75d1ef62f89 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Thu, 7 Apr 2022 19:31:06 -0400 Subject: [PATCH] mint NFT from client --- client/src/App.js | 16 +- client/src/lib/epicNFT.json | 382 ++++++++++++++++++++++++++++++++++++ 2 files changed, 396 insertions(+), 2 deletions(-) create mode 100644 client/src/lib/epicNFT.json diff --git a/client/src/App.js b/client/src/App.js index 6c14d8b..859cd8e 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -1,7 +1,8 @@ import "./App.css"; -import {} from "ethers"; +import { providers, Contract } from "ethers"; import { useEffect, useState } from "react"; import { withEth } from "./lib/eth"; +import epicNFT from "./lib/epicNFT.json"; function App() { const [currentAccount, setCurrentAccount] = useState(""); @@ -20,7 +21,18 @@ function App() { setCurrentAccount(accounts[0]); }); - const mintNFT = withEth(async (ethereum) => {}); + const mintNFT = withEth(async (ethereum) => { + const contractAddress = process.env.REACT_APP_STAGING_CONTRACT_ADDRESS; + const contractABI = epicNFT.abi; + + const signer = new providers.Web3Provider(ethereum).getSigner(); + const contract = new Contract(contractAddress, contractABI, signer); + + const txn = await contract.mint(); + console.log(`Mining ${txn.hash}…`); + await txn.wait(); + console.log(`Minted. See transaction: https://rinkeby.etherscan.io/tx/${txn.hash}`); + }); useEffect(() => { checkIfWalletConnected(); diff --git a/client/src/lib/epicNFT.json b/client/src/lib/epicNFT.json new file mode 100644 index 0000000..f047fc1 --- /dev/null +++ b/client/src/lib/epicNFT.json @@ -0,0 +1,382 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EpicNFT", + "sourceName": "contracts/EpicNFT.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "words", + "type": "string[]" + }, + { + "internalType": "string", + "name": "position", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + } + ], + "name": "pickRandomWord", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526040518060a001604052806076815260200162004b8960769139600890805190602001906200003592919062000c55565b506040518060e0016040528060b3815260200162004ad660b39139600990805190602001906200006792919062000c55565b506040518061014001604052806040518060400160405280600381526020017f726564000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f677265656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f626c75650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f776869746500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f79656c6c6f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f6379616e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f70696e6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6d6167656e74610000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f73696c766572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f676f6c6400000000000000000000000000000000000000000000000000000000815250815250600a90600a620002d292919062000ce6565b506040518061014001604052806040518060400160405280600481526020017f457069630000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4c6567656e64617279000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865726f6963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f46616e746173746963000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5465727269626c6500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4372617a7900000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f57696c640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f54657272696679696e670000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f53706f6f6b790000000000000000000000000000000000000000000000000000815250815250600b90600a6200053d92919062000ce6565b506040518061018001604052806040518060400160405280600881526020017f417373617373696e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f436c65726963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f526f67756500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4e696e6a6100000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4c6f72640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f57697a617264000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f57617272696f720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4265727365726b6572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4e6563726f6d616e64657200000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f53756d6d6f6e657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426172640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4c616e6365720000000000000000000000000000000000000000000000000000815250815250600c90600c6200081e92919062000d4d565b506040518061014001604052806040518060400160405280600781526020017f536f6c646965720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865616c6572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4578706c6f72657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4d65726368616e7400000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f446576656c6f706572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f426c61636b536d6974680000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4869746d616e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f48756e746572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f5361696c6f720000000000000000000000000000000000000000000000000000815250815250600d90600a62000a8992919062000ce6565b5034801562000a9757600080fd5b506040518060400160405280600981526020017f5371756172654e465400000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5351554152450000000000000000000000000000000000000000000000000000815250816000908051906020019062000b1c92919062000c55565b50806001908051906020019062000b3592919062000c55565b50505062000b836040518060400160405280601e81526020017f4d79206669727374204e465420636f6e7472616374212045504943212121000081525062000b8960201b6200119d1760201c565b62000f6e565b62000c298160405160240162000ba0919062000e82565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505062000c2c60201b60201c565b50565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b82805462000c639062000ef8565b90600052602060002090601f01602090048101928262000c87576000855562000cd3565b82601f1062000ca257805160ff191683800117855562000cd3565b8280016001018555821562000cd3579182015b8281111562000cd257825182559160200191906001019062000cb5565b5b50905062000ce2919062000db4565b5090565b82805482825590600052602060002090810192821562000d3a579160200282015b8281111562000d3957825182908051906020019062000d2892919062000c55565b509160200191906001019062000d07565b5b50905062000d49919062000dd3565b5090565b82805482825590600052602060002090810192821562000da1579160200282015b8281111562000da057825182908051906020019062000d8f92919062000c55565b509160200191906001019062000d6e565b5b50905062000db0919062000dd3565b5090565b5b8082111562000dcf57600081600090555060010162000db5565b5090565b5b8082111562000df7576000818162000ded919062000dfb565b5060010162000dd4565b5090565b50805462000e099062000ef8565b6000825580601f1062000e1d575062000e3e565b601f01602090049060005260206000209081019062000e3d919062000db4565b5b50565b600062000e4e8262000ea6565b62000e5a818562000eb1565b935062000e6c81856020860162000ec2565b62000e778162000f5d565b840191505092915050565b6000602082019050818103600083015262000e9e818462000e41565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ee257808201518184015260208101905062000ec5565b8381111562000ef2576000848401525b50505050565b6000600282049050600182168062000f1157607f821691505b6020821081141562000f285762000f2762000f2e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613b588062000f7e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612760565b61031c565b6040516101219190612db3565b60405180910390f35b6101326103fe565b60405161013f9190612dce565b60405180910390f35b610162600480360381019061015d91906127b2565b610490565b60405161016f9190612d4c565b60405180910390f35b610192600480360381019061018d91906126a5565b610515565b005b61019c61062d565b005b6101b860048036038101906101b3919061259f565b610c31565b005b6101d460048036038101906101cf919061259f565b610c91565b005b6101f060048036038101906101eb91906127b2565b610cb1565b6040516101fd9190612d4c565b60405180910390f35b610220600480360381019061021b919061253a565b610d63565b60405161022d919061302e565b60405180910390f35b61023e610e1b565b60405161024b9190612dce565b60405180910390f35b61026e600480360381019061026991906126e1565b610ead565b60405161027b9190612dce565b60405180910390f35b61029e60048036038101906102999190612669565b610f3f565b005b6102ba60048036038101906102b591906125ee565b610f55565b005b6102d660048036038101906102d191906127b2565b610fb7565b6040516102e39190612dce565b60405180910390f35b61030660048036038101906103019190612563565b611109565b6040516103139190612db3565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f682611236565b5b9050919050565b60606000805461040d9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546104399061331f565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112a0565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190612fae565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890612fee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b061130c565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d961130c565b611109565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612eee565b60405180910390fd5b6106288383611314565b505050565b600061063960076113cd565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e5783829060005260206000200180546106819061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad9061331f565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ead565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b828210156108235783829060005260206000200180546107969061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546107c29061331f565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ead565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546108d79061331f565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ead565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c09061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec9061331f565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ead565b9050600084848484604051602001610aa89493929190612c44565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612c82565b60405160208183030381529060405290506000610b1d83610af8846113db565b604051602001610b09929190612ce5565b6040516020818303038152906040526113db565b9050600081604051602001610b329190612d2a565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d000000000000000000000081525061119d565b610b8a8161119d565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a000000000000000000000081525061119d565b610bd2338a611599565b610bdc89826115b7565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a3361162b565b610c2660076116ca565b505050505050505050565b610c42610c3c61130c565b826116e0565b610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c789061300e565b60405180910390fd5b610c8c8383836117be565b505050565b610cac83838360405180602001604052806000815250610f55565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190612f2e565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90612f0e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e2a9061331f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e569061331f565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b60606000610ee384610ebe85611a25565b604051602001610ecf929190612c20565b604051602081830303815290604052611bd2565b9050845181610ef291906133cb565b9050848181518110610f2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f51610f4a61130c565b8383611c05565b5050565b610f66610f6061130c565b836116e0565b610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c9061300e565b60405180910390fd5b610fb184848484611d72565b50505050565b6060610fc2826112a0565b611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff890612f8e565b60405180910390fd5b60006006600084815260200190815260200160002080546110219061331f565b80601f016020809104026020016040519081016040528092919081815260200182805461104d9061331f565b801561109a5780601f1061106f5761010080835404028352916020019161109a565b820191906000526020600020905b81548152906001019060200180831161107d57829003601f168201915b5050505050905060006110ab611dce565b90506000815114156110c1578192505050611104565b6000825111156110f65780826040516020016110de929190612c20565b60405160208183030381529060405292505050611104565b6110ff84611de5565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611233816040516024016111b19190612dce565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661138783610cb1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b606060008251905060008114156114045760405180602001604052806000815250915050611594565b600060036002836114159190613154565b61141f91906131aa565b600461142b91906131db565b9050600060208261143c9190613154565b67ffffffffffffffff81111561147b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114ad5781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613ae3604091399050600181016020830160005b868110156115515760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b905080845260048401935050506114d8565b50600386066001811461156b576002811461157b57611586565b613d3d60f01b6002830352611586565b603d60f81b60018303525b508484525050819450505050505b919050565b6115b3828260405180602001604052806000815250611eb5565b5050565b6115c0826112a0565b6115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612f4e565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906116269291906122ae565b505050565b6116c583838360405160240161164393929190612df0565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b505050565b6001816000016000828254019250508190555050565b60006116eb826112a0565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612ece565b60405180910390fd5b600061173583610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117a457508373ffffffffffffffffffffffffffffffffffffffff1661178c84610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117b557506117b48185611109565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117de82610cb1565b73ffffffffffffffffffffffffffffffffffffffff1614611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90612e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b90612e8e565b60405180910390fd5b6118af838383611f10565b6118ba600082611314565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190a9190613235565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119619190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a20838383611f15565b505050565b60606000821415611a6d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611bcd565b600082905060005b60008214611a9f578080611a8890613382565b915050600a82611a9891906131aa565b9150611a75565b60008167ffffffffffffffff811115611ae1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b135781602001600182028036833780820191505090505b5090505b60008514611bc657600182611b2c9190613235565b9150600a85611b3b91906133cb565b6030611b479190613154565b60f81b818381518110611b83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bbf91906131aa565b9450611b17565b8093505050505b919050565b600081604051602001611be59190612c09565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90612eae565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d659190612db3565b60405180910390a3505050565b611d7d8484846117be565b611d8984848484611f1a565b611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90612e2e565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611df0826112a0565b611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690612fce565b60405180910390fd5b6000611e39611dce565b90506000815111611e595760405180602001604052806000815250611e84565b80611e6384611a25565b604051602001611e74929190612c20565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ebf83836120b1565b611ecc6000848484611f1a565b611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290612e2e565b60405180910390fd5b505050565b505050565b505050565b6000611f3b8473ffffffffffffffffffffffffffffffffffffffff1661228b565b156120a4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f6461130c565b8786866040518563ffffffff1660e01b8152600401611f869493929190612d67565b602060405180830381600087803b158015611fa057600080fd5b505af1925050508015611fd157506040513d601f19601f82011682018060405250810190611fce9190612789565b60015b612054573d8060008114612001576040519150601f19603f3d011682016040523d82523d6000602084013e612006565b606091505b5060008151141561204c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204390612e2e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120a9565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211890612f6e565b60405180910390fd5b61212a816112a0565b1561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190612e6e565b60405180910390fd5b61217660008383611f10565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121c69190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461228760008383611f15565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122ba9061331f565b90600052602060002090601f0160209004810192826122dc5760008555612323565b82601f106122f557805160ff1916838001178555612323565b82800160010185558215612323579182015b82811115612322578251825591602001919060010190612307565b5b5090506123309190612334565b5090565b5b8082111561234d576000816000905550600101612335565b5090565b600061236461235f8461306e565b613049565b9050808382526020820190508285602086028201111561238357600080fd5b60005b858110156123cd57813567ffffffffffffffff8111156123a557600080fd5b8086016123b289826124fb565b85526020850194506020840193505050600181019050612386565b5050509392505050565b60006123ea6123e58461309a565b613049565b90508281526020810184848401111561240257600080fd5b61240d8482856132dd565b509392505050565b6000612428612423846130cb565b613049565b90508281526020810184848401111561244057600080fd5b61244b8482856132dd565b509392505050565b60008135905061246281613a86565b92915050565b600082601f83011261247957600080fd5b8135612489848260208601612351565b91505092915050565b6000813590506124a181613a9d565b92915050565b6000813590506124b681613ab4565b92915050565b6000815190506124cb81613ab4565b92915050565b600082601f8301126124e257600080fd5b81356124f28482602086016123d7565b91505092915050565b600082601f83011261250c57600080fd5b813561251c848260208601612415565b91505092915050565b60008135905061253481613acb565b92915050565b60006020828403121561254c57600080fd5b600061255a84828501612453565b91505092915050565b6000806040838503121561257657600080fd5b600061258485828601612453565b925050602061259585828601612453565b9150509250929050565b6000806000606084860312156125b457600080fd5b60006125c286828701612453565b93505060206125d386828701612453565b92505060406125e486828701612525565b9150509250925092565b6000806000806080858703121561260457600080fd5b600061261287828801612453565b945050602061262387828801612453565b935050604061263487828801612525565b925050606085013567ffffffffffffffff81111561265157600080fd5b61265d878288016124d1565b91505092959194509250565b6000806040838503121561267c57600080fd5b600061268a85828601612453565b925050602061269b85828601612492565b9150509250929050565b600080604083850312156126b857600080fd5b60006126c685828601612453565b92505060206126d785828601612525565b9150509250929050565b6000806000606084860312156126f657600080fd5b600084013567ffffffffffffffff81111561271057600080fd5b61271c86828701612468565b935050602084013567ffffffffffffffff81111561273957600080fd5b612745868287016124fb565b925050604061275686828701612525565b9150509250925092565b60006020828403121561277257600080fd5b6000612780848285016124a7565b91505092915050565b60006020828403121561279b57600080fd5b60006127a9848285016124bc565b91505092915050565b6000602082840312156127c457600080fd5b60006127d284828501612525565b91505092915050565b6127e481613269565b82525050565b6127f38161327b565b82525050565b600061280482613111565b61280e8185613127565b935061281e8185602086016132ec565b612827816134b8565b840191505092915050565b600061283d8261311c565b6128478185613138565b93506128578185602086016132ec565b612860816134b8565b840191505092915050565b60006128768261311c565b6128808185613149565b93506128908185602086016132ec565b80840191505092915050565b600081546128a98161331f565b6128b38186613149565b945060018216600081146128ce57600181146128df57612912565b60ff19831686528186019350612912565b6128e8856130fc565b60005b8381101561290a578154818901526001820191506020810190506128eb565b838801955050505b50505092915050565b6000612928603283613138565b9150612933826134c9565b604082019050919050565b600061294b602583613138565b915061295682613518565b604082019050919050565b600061296e601c83613138565b915061297982613567565b602082019050919050565b6000612991602483613138565b915061299c82613590565b604082019050919050565b60006129b4601983613138565b91506129bf826135df565b602082019050919050565b60006129d7606383613149565b91506129e282613608565b606382019050919050565b60006129fa602c83613138565b9150612a05826136a3565b604082019050919050565b6000612a1d600d83613149565b9150612a28826136f2565b600d82019050919050565b6000612a40603883613138565b9150612a4b8261371b565b604082019050919050565b6000612a63602a83613138565b9150612a6e8261376a565b604082019050919050565b6000612a86602983613138565b9150612a91826137b9565b604082019050919050565b6000612aa9602e83613138565b9150612ab482613808565b604082019050919050565b6000612acc600283613149565b9150612ad782613857565b600282019050919050565b6000612aef602083613138565b9150612afa82613880565b602082019050919050565b6000612b12603183613138565b9150612b1d826138a9565b604082019050919050565b6000612b35602c83613138565b9150612b40826138f8565b604082019050919050565b6000612b58602f83613138565b9150612b6382613947565b604082019050919050565b6000612b7b600a83613149565b9150612b8682613996565b600a82019050919050565b6000612b9e602183613138565b9150612ba9826139bf565b604082019050919050565b6000612bc1601d83613149565b9150612bcc82613a0e565b601d82019050919050565b6000612be4603183613138565b9150612bef82613a37565b604082019050919050565b612c03816132d3565b82525050565b6000612c15828461286b565b915081905092915050565b6000612c2c828561286b565b9150612c38828461286b565b91508190509392505050565b6000612c50828761286b565b9150612c5c828661286b565b9150612c68828561286b565b9150612c74828461286b565b915081905095945050505050565b6000612c8e828961289c565b9150612c9a828861286b565b9150612ca6828761289c565b9150612cb2828661286b565b9150612cbe828561286b565b9150612cca828461286b565b9150612cd582612a10565b9150819050979650505050505050565b6000612cf082612b6e565b9150612cfc828561286b565b9150612d07826129ca565b9150612d13828461286b565b9150612d1e82612abf565b91508190509392505050565b6000612d3582612bb4565b9150612d41828461286b565b915081905092915050565b6000602082019050612d6160008301846127db565b92915050565b6000608082019050612d7c60008301876127db565b612d8960208301866127db565b612d966040830185612bfa565b8181036060830152612da881846127f9565b905095945050505050565b6000602082019050612dc860008301846127ea565b92915050565b60006020820190508181036000830152612de88184612832565b905092915050565b60006060820190508181036000830152612e0a8186612832565b9050612e196020830185612bfa565b612e2660408301846127db565b949350505050565b60006020820190508181036000830152612e478161291b565b9050919050565b60006020820190508181036000830152612e678161293e565b9050919050565b60006020820190508181036000830152612e8781612961565b9050919050565b60006020820190508181036000830152612ea781612984565b9050919050565b60006020820190508181036000830152612ec7816129a7565b9050919050565b60006020820190508181036000830152612ee7816129ed565b9050919050565b60006020820190508181036000830152612f0781612a33565b9050919050565b60006020820190508181036000830152612f2781612a56565b9050919050565b60006020820190508181036000830152612f4781612a79565b9050919050565b60006020820190508181036000830152612f6781612a9c565b9050919050565b60006020820190508181036000830152612f8781612ae2565b9050919050565b60006020820190508181036000830152612fa781612b05565b9050919050565b60006020820190508181036000830152612fc781612b28565b9050919050565b60006020820190508181036000830152612fe781612b4b565b9050919050565b6000602082019050818103600083015261300781612b91565b9050919050565b6000602082019050818103600083015261302781612bd7565b9050919050565b60006020820190506130436000830184612bfa565b92915050565b6000613053613064565b905061305f8282613351565b919050565b6000604051905090565b600067ffffffffffffffff82111561308957613088613489565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130b5576130b4613489565b5b6130be826134b8565b9050602081019050919050565b600067ffffffffffffffff8211156130e6576130e5613489565b5b6130ef826134b8565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061315f826132d3565b915061316a836132d3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319f5761319e6133fc565b5b828201905092915050565b60006131b5826132d3565b91506131c0836132d3565b9250826131d0576131cf61342b565b5b828204905092915050565b60006131e6826132d3565b91506131f1836132d3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322a576132296133fc565b5b828202905092915050565b6000613240826132d3565b915061324b836132d3565b92508282101561325e5761325d6133fc565b5b828203905092915050565b6000613274826132b3565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561330a5780820151818401526020810190506132ef565b83811115613319576000848401525b50505050565b6000600282049050600182168061333757607f821691505b6020821081141561334b5761334a61345a565b5b50919050565b61335a826134b8565b810181811067ffffffffffffffff8211171561337957613378613489565b5b80604052505050565b600061338d826132d3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133c0576133bf6133fc565b5b600182019050919050565b60006133d6826132d3565b91506133e1836132d3565b9250826133f1576133f061342b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613a8f81613269565b8114613a9a57600080fd5b50565b613aa68161327b565b8114613ab157600080fd5b50565b613abd81613287565b8114613ac857600080fd5b50565b613ad4816132d3565b8114613adf57600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208bd9e2de0ff96561d60a8e4b211a10ab3250c1f888dd58d30d355526807ef6a764736f6c634300080400333b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20323470783b207d3c2f7374796c653e3c726563742077696474683d273130302527206865696768743d2731303025272066696c6c3d27626c61636b27202f3e3c7465787420783d273530252720793d273530252720636c6173733d27626173652720646f6d696e616e742d626173656c696e653d276d6964646c652720746578742d616e63686f723d276d6964646c65273e3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f73766727207072657365727665417370656374526174696f3d27784d696e594d696e206d656574272076696577426f783d273020302033353020333530273e3c7374796c653e2e62617365207b2066696c6c3a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612760565b61031c565b6040516101219190612db3565b60405180910390f35b6101326103fe565b60405161013f9190612dce565b60405180910390f35b610162600480360381019061015d91906127b2565b610490565b60405161016f9190612d4c565b60405180910390f35b610192600480360381019061018d91906126a5565b610515565b005b61019c61062d565b005b6101b860048036038101906101b3919061259f565b610c31565b005b6101d460048036038101906101cf919061259f565b610c91565b005b6101f060048036038101906101eb91906127b2565b610cb1565b6040516101fd9190612d4c565b60405180910390f35b610220600480360381019061021b919061253a565b610d63565b60405161022d919061302e565b60405180910390f35b61023e610e1b565b60405161024b9190612dce565b60405180910390f35b61026e600480360381019061026991906126e1565b610ead565b60405161027b9190612dce565b60405180910390f35b61029e60048036038101906102999190612669565b610f3f565b005b6102ba60048036038101906102b591906125ee565b610f55565b005b6102d660048036038101906102d191906127b2565b610fb7565b6040516102e39190612dce565b60405180910390f35b61030660048036038101906103019190612563565b611109565b6040516103139190612db3565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f682611236565b5b9050919050565b60606000805461040d9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546104399061331f565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112a0565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190612fae565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890612fee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b061130c565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d961130c565b611109565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612eee565b60405180910390fd5b6106288383611314565b505050565b600061063960076113cd565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e5783829060005260206000200180546106819061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad9061331f565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ead565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b828210156108235783829060005260206000200180546107969061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546107c29061331f565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ead565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546108d79061331f565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ead565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c09061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec9061331f565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ead565b9050600084848484604051602001610aa89493929190612c44565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612c82565b60405160208183030381529060405290506000610b1d83610af8846113db565b604051602001610b09929190612ce5565b6040516020818303038152906040526113db565b9050600081604051602001610b329190612d2a565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d000000000000000000000081525061119d565b610b8a8161119d565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a000000000000000000000081525061119d565b610bd2338a611599565b610bdc89826115b7565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a3361162b565b610c2660076116ca565b505050505050505050565b610c42610c3c61130c565b826116e0565b610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c789061300e565b60405180910390fd5b610c8c8383836117be565b505050565b610cac83838360405180602001604052806000815250610f55565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190612f2e565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90612f0e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e2a9061331f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e569061331f565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b60606000610ee384610ebe85611a25565b604051602001610ecf929190612c20565b604051602081830303815290604052611bd2565b9050845181610ef291906133cb565b9050848181518110610f2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f51610f4a61130c565b8383611c05565b5050565b610f66610f6061130c565b836116e0565b610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c9061300e565b60405180910390fd5b610fb184848484611d72565b50505050565b6060610fc2826112a0565b611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff890612f8e565b60405180910390fd5b60006006600084815260200190815260200160002080546110219061331f565b80601f016020809104026020016040519081016040528092919081815260200182805461104d9061331f565b801561109a5780601f1061106f5761010080835404028352916020019161109a565b820191906000526020600020905b81548152906001019060200180831161107d57829003601f168201915b5050505050905060006110ab611dce565b90506000815114156110c1578192505050611104565b6000825111156110f65780826040516020016110de929190612c20565b60405160208183030381529060405292505050611104565b6110ff84611de5565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611233816040516024016111b19190612dce565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661138783610cb1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b606060008251905060008114156114045760405180602001604052806000815250915050611594565b600060036002836114159190613154565b61141f91906131aa565b600461142b91906131db565b9050600060208261143c9190613154565b67ffffffffffffffff81111561147b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114ad5781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613ae3604091399050600181016020830160005b868110156115515760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b905080845260048401935050506114d8565b50600386066001811461156b576002811461157b57611586565b613d3d60f01b6002830352611586565b603d60f81b60018303525b508484525050819450505050505b919050565b6115b3828260405180602001604052806000815250611eb5565b5050565b6115c0826112a0565b6115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612f4e565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906116269291906122ae565b505050565b6116c583838360405160240161164393929190612df0565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b505050565b6001816000016000828254019250508190555050565b60006116eb826112a0565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612ece565b60405180910390fd5b600061173583610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117a457508373ffffffffffffffffffffffffffffffffffffffff1661178c84610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117b557506117b48185611109565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117de82610cb1565b73ffffffffffffffffffffffffffffffffffffffff1614611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90612e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b90612e8e565b60405180910390fd5b6118af838383611f10565b6118ba600082611314565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190a9190613235565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119619190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a20838383611f15565b505050565b60606000821415611a6d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611bcd565b600082905060005b60008214611a9f578080611a8890613382565b915050600a82611a9891906131aa565b9150611a75565b60008167ffffffffffffffff811115611ae1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b135781602001600182028036833780820191505090505b5090505b60008514611bc657600182611b2c9190613235565b9150600a85611b3b91906133cb565b6030611b479190613154565b60f81b818381518110611b83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bbf91906131aa565b9450611b17565b8093505050505b919050565b600081604051602001611be59190612c09565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90612eae565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d659190612db3565b60405180910390a3505050565b611d7d8484846117be565b611d8984848484611f1a565b611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90612e2e565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611df0826112a0565b611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690612fce565b60405180910390fd5b6000611e39611dce565b90506000815111611e595760405180602001604052806000815250611e84565b80611e6384611a25565b604051602001611e74929190612c20565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ebf83836120b1565b611ecc6000848484611f1a565b611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290612e2e565b60405180910390fd5b505050565b505050565b505050565b6000611f3b8473ffffffffffffffffffffffffffffffffffffffff1661228b565b156120a4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f6461130c565b8786866040518563ffffffff1660e01b8152600401611f869493929190612d67565b602060405180830381600087803b158015611fa057600080fd5b505af1925050508015611fd157506040513d601f19601f82011682018060405250810190611fce9190612789565b60015b612054573d8060008114612001576040519150601f19603f3d011682016040523d82523d6000602084013e612006565b606091505b5060008151141561204c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204390612e2e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120a9565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211890612f6e565b60405180910390fd5b61212a816112a0565b1561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190612e6e565b60405180910390fd5b61217660008383611f10565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121c69190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461228760008383611f15565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122ba9061331f565b90600052602060002090601f0160209004810192826122dc5760008555612323565b82601f106122f557805160ff1916838001178555612323565b82800160010185558215612323579182015b82811115612322578251825591602001919060010190612307565b5b5090506123309190612334565b5090565b5b8082111561234d576000816000905550600101612335565b5090565b600061236461235f8461306e565b613049565b9050808382526020820190508285602086028201111561238357600080fd5b60005b858110156123cd57813567ffffffffffffffff8111156123a557600080fd5b8086016123b289826124fb565b85526020850194506020840193505050600181019050612386565b5050509392505050565b60006123ea6123e58461309a565b613049565b90508281526020810184848401111561240257600080fd5b61240d8482856132dd565b509392505050565b6000612428612423846130cb565b613049565b90508281526020810184848401111561244057600080fd5b61244b8482856132dd565b509392505050565b60008135905061246281613a86565b92915050565b600082601f83011261247957600080fd5b8135612489848260208601612351565b91505092915050565b6000813590506124a181613a9d565b92915050565b6000813590506124b681613ab4565b92915050565b6000815190506124cb81613ab4565b92915050565b600082601f8301126124e257600080fd5b81356124f28482602086016123d7565b91505092915050565b600082601f83011261250c57600080fd5b813561251c848260208601612415565b91505092915050565b60008135905061253481613acb565b92915050565b60006020828403121561254c57600080fd5b600061255a84828501612453565b91505092915050565b6000806040838503121561257657600080fd5b600061258485828601612453565b925050602061259585828601612453565b9150509250929050565b6000806000606084860312156125b457600080fd5b60006125c286828701612453565b93505060206125d386828701612453565b92505060406125e486828701612525565b9150509250925092565b6000806000806080858703121561260457600080fd5b600061261287828801612453565b945050602061262387828801612453565b935050604061263487828801612525565b925050606085013567ffffffffffffffff81111561265157600080fd5b61265d878288016124d1565b91505092959194509250565b6000806040838503121561267c57600080fd5b600061268a85828601612453565b925050602061269b85828601612492565b9150509250929050565b600080604083850312156126b857600080fd5b60006126c685828601612453565b92505060206126d785828601612525565b9150509250929050565b6000806000606084860312156126f657600080fd5b600084013567ffffffffffffffff81111561271057600080fd5b61271c86828701612468565b935050602084013567ffffffffffffffff81111561273957600080fd5b612745868287016124fb565b925050604061275686828701612525565b9150509250925092565b60006020828403121561277257600080fd5b6000612780848285016124a7565b91505092915050565b60006020828403121561279b57600080fd5b60006127a9848285016124bc565b91505092915050565b6000602082840312156127c457600080fd5b60006127d284828501612525565b91505092915050565b6127e481613269565b82525050565b6127f38161327b565b82525050565b600061280482613111565b61280e8185613127565b935061281e8185602086016132ec565b612827816134b8565b840191505092915050565b600061283d8261311c565b6128478185613138565b93506128578185602086016132ec565b612860816134b8565b840191505092915050565b60006128768261311c565b6128808185613149565b93506128908185602086016132ec565b80840191505092915050565b600081546128a98161331f565b6128b38186613149565b945060018216600081146128ce57600181146128df57612912565b60ff19831686528186019350612912565b6128e8856130fc565b60005b8381101561290a578154818901526001820191506020810190506128eb565b838801955050505b50505092915050565b6000612928603283613138565b9150612933826134c9565b604082019050919050565b600061294b602583613138565b915061295682613518565b604082019050919050565b600061296e601c83613138565b915061297982613567565b602082019050919050565b6000612991602483613138565b915061299c82613590565b604082019050919050565b60006129b4601983613138565b91506129bf826135df565b602082019050919050565b60006129d7606383613149565b91506129e282613608565b606382019050919050565b60006129fa602c83613138565b9150612a05826136a3565b604082019050919050565b6000612a1d600d83613149565b9150612a28826136f2565b600d82019050919050565b6000612a40603883613138565b9150612a4b8261371b565b604082019050919050565b6000612a63602a83613138565b9150612a6e8261376a565b604082019050919050565b6000612a86602983613138565b9150612a91826137b9565b604082019050919050565b6000612aa9602e83613138565b9150612ab482613808565b604082019050919050565b6000612acc600283613149565b9150612ad782613857565b600282019050919050565b6000612aef602083613138565b9150612afa82613880565b602082019050919050565b6000612b12603183613138565b9150612b1d826138a9565b604082019050919050565b6000612b35602c83613138565b9150612b40826138f8565b604082019050919050565b6000612b58602f83613138565b9150612b6382613947565b604082019050919050565b6000612b7b600a83613149565b9150612b8682613996565b600a82019050919050565b6000612b9e602183613138565b9150612ba9826139bf565b604082019050919050565b6000612bc1601d83613149565b9150612bcc82613a0e565b601d82019050919050565b6000612be4603183613138565b9150612bef82613a37565b604082019050919050565b612c03816132d3565b82525050565b6000612c15828461286b565b915081905092915050565b6000612c2c828561286b565b9150612c38828461286b565b91508190509392505050565b6000612c50828761286b565b9150612c5c828661286b565b9150612c68828561286b565b9150612c74828461286b565b915081905095945050505050565b6000612c8e828961289c565b9150612c9a828861286b565b9150612ca6828761289c565b9150612cb2828661286b565b9150612cbe828561286b565b9150612cca828461286b565b9150612cd582612a10565b9150819050979650505050505050565b6000612cf082612b6e565b9150612cfc828561286b565b9150612d07826129ca565b9150612d13828461286b565b9150612d1e82612abf565b91508190509392505050565b6000612d3582612bb4565b9150612d41828461286b565b915081905092915050565b6000602082019050612d6160008301846127db565b92915050565b6000608082019050612d7c60008301876127db565b612d8960208301866127db565b612d966040830185612bfa565b8181036060830152612da881846127f9565b905095945050505050565b6000602082019050612dc860008301846127ea565b92915050565b60006020820190508181036000830152612de88184612832565b905092915050565b60006060820190508181036000830152612e0a8186612832565b9050612e196020830185612bfa565b612e2660408301846127db565b949350505050565b60006020820190508181036000830152612e478161291b565b9050919050565b60006020820190508181036000830152612e678161293e565b9050919050565b60006020820190508181036000830152612e8781612961565b9050919050565b60006020820190508181036000830152612ea781612984565b9050919050565b60006020820190508181036000830152612ec7816129a7565b9050919050565b60006020820190508181036000830152612ee7816129ed565b9050919050565b60006020820190508181036000830152612f0781612a33565b9050919050565b60006020820190508181036000830152612f2781612a56565b9050919050565b60006020820190508181036000830152612f4781612a79565b9050919050565b60006020820190508181036000830152612f6781612a9c565b9050919050565b60006020820190508181036000830152612f8781612ae2565b9050919050565b60006020820190508181036000830152612fa781612b05565b9050919050565b60006020820190508181036000830152612fc781612b28565b9050919050565b60006020820190508181036000830152612fe781612b4b565b9050919050565b6000602082019050818103600083015261300781612b91565b9050919050565b6000602082019050818103600083015261302781612bd7565b9050919050565b60006020820190506130436000830184612bfa565b92915050565b6000613053613064565b905061305f8282613351565b919050565b6000604051905090565b600067ffffffffffffffff82111561308957613088613489565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130b5576130b4613489565b5b6130be826134b8565b9050602081019050919050565b600067ffffffffffffffff8211156130e6576130e5613489565b5b6130ef826134b8565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061315f826132d3565b915061316a836132d3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319f5761319e6133fc565b5b828201905092915050565b60006131b5826132d3565b91506131c0836132d3565b9250826131d0576131cf61342b565b5b828204905092915050565b60006131e6826132d3565b91506131f1836132d3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322a576132296133fc565b5b828202905092915050565b6000613240826132d3565b915061324b836132d3565b92508282101561325e5761325d6133fc565b5b828203905092915050565b6000613274826132b3565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561330a5780820151818401526020810190506132ef565b83811115613319576000848401525b50505050565b6000600282049050600182168061333757607f821691505b6020821081141561334b5761334a61345a565b5b50919050565b61335a826134b8565b810181811067ffffffffffffffff8211171561337957613378613489565b5b80604052505050565b600061338d826132d3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133c0576133bf6133fc565b5b600182019050919050565b60006133d6826132d3565b91506133e1836132d3565b9250826133f1576133f061342b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613a8f81613269565b8114613a9a57600080fd5b50565b613aa68161327b565b8114613ab157600080fd5b50565b613abd81613287565b8114613ac857600080fd5b50565b613ad4816132d3565b8114613adf57600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208bd9e2de0ff96561d60a8e4b211a10ab3250c1f888dd58d30d355526807ef6a764736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +}