diff --git a/README.md b/README.md index abc7a88..ea6140f 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Demo NFT collection for learning purposes. 2. https://testnets.opensea.io/collection/squarenft-bndes4idpq 3. https://testnets.opensea.io/collection/squarenft-lemz9demvy 4. https://testnets.opensea.io/collection/squarenft-1xkwn34mdz +5. https://testnets.opensea.io/collection/squarenft-qlxxnjj8mo (0x6c603E2bF856529A095dAbC9D9991f0c559e1855) ## Square NFT diff --git a/client/src/App.js b/client/src/App.js index 859cd8e..894b3cb 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -7,6 +7,9 @@ import epicNFT from "./lib/epicNFT.json"; function App() { const [currentAccount, setCurrentAccount] = useState(""); + const contractAddress = process.env.REACT_APP_STAGING_CONTRACT_ADDRESS; + const contractABI = epicNFT.abi; + const checkIfWalletConnected = withEth(async (ethereum) => { const accounts = await ethereum.request({ method: "eth_accounts" }); if (accounts.length !== 0) { @@ -22,9 +25,6 @@ function App() { }); 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); @@ -38,6 +38,27 @@ function App() { checkIfWalletConnected(); }, []); + useEffect(() => { + let contract; + const handleNewEpicNFT = (from, tokenID) => { + console.log(from, tokenID.toNumber()); + alert( + `Hey there! We've minted your NFT. It may be blank right now. It can take a max of 10 min to show up on OpenSea. Here's the link: ` + ); + }; + + if (window.ethereum) { + const signer = new providers.Web3Provider(window.ethereum).getSigner(); + contract = new Contract(contractAddress, contractABI, signer); + contract.on("NewEpicNFTMinted", handleNewEpicNFT); + } + return () => { + if (contract) { + contract.off("NewEpicNFTMinted", handleNewEpicNFT); + } + }; + }, [contractABI, contractAddress]); + return (
diff --git a/client/src/lib/epicNFT.json b/client/src/lib/epicNFT.json index f047fc1..044e9e1 100644 --- a/client/src/lib/epicNFT.json +++ b/client/src/lib/epicNFT.json @@ -58,6 +58,25 @@ "name": "ApprovalForAll", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + } + ], + "name": "NewEpicNFTMinted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -375,8 +394,8 @@ "type": "function" } ], - "bytecode": "0x60806040526040518060a001604052806076815260200162004b8960769139600890805190602001906200003592919062000c55565b506040518060e0016040528060b3815260200162004ad660b39139600990805190602001906200006792919062000c55565b506040518061014001604052806040518060400160405280600381526020017f726564000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f677265656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f626c75650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f776869746500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f79656c6c6f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f6379616e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f70696e6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6d6167656e74610000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f73696c766572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f676f6c6400000000000000000000000000000000000000000000000000000000815250815250600a90600a620002d292919062000ce6565b506040518061014001604052806040518060400160405280600481526020017f457069630000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4c6567656e64617279000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865726f6963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f46616e746173746963000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5465727269626c6500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4372617a7900000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f57696c640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f54657272696679696e670000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f53706f6f6b790000000000000000000000000000000000000000000000000000815250815250600b90600a6200053d92919062000ce6565b506040518061018001604052806040518060400160405280600881526020017f417373617373696e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f436c65726963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f526f67756500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4e696e6a6100000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4c6f72640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f57697a617264000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f57617272696f720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4265727365726b6572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4e6563726f6d616e64657200000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f53756d6d6f6e657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426172640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4c616e6365720000000000000000000000000000000000000000000000000000815250815250600c90600c6200081e92919062000d4d565b506040518061014001604052806040518060400160405280600781526020017f536f6c646965720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865616c6572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4578706c6f72657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4d65726368616e7400000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f446576656c6f706572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f426c61636b536d6974680000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4869746d616e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f48756e746572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f5361696c6f720000000000000000000000000000000000000000000000000000815250815250600d90600a62000a8992919062000ce6565b5034801562000a9757600080fd5b506040518060400160405280600981526020017f5371756172654e465400000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5351554152450000000000000000000000000000000000000000000000000000815250816000908051906020019062000b1c92919062000c55565b50806001908051906020019062000b3592919062000c55565b50505062000b836040518060400160405280601e81526020017f4d79206669727374204e465420636f6e7472616374212045504943212121000081525062000b8960201b6200119d1760201c565b62000f6e565b62000c298160405160240162000ba0919062000e82565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505062000c2c60201b60201c565b50565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b82805462000c639062000ef8565b90600052602060002090601f01602090048101928262000c87576000855562000cd3565b82601f1062000ca257805160ff191683800117855562000cd3565b8280016001018555821562000cd3579182015b8281111562000cd257825182559160200191906001019062000cb5565b5b50905062000ce2919062000db4565b5090565b82805482825590600052602060002090810192821562000d3a579160200282015b8281111562000d3957825182908051906020019062000d2892919062000c55565b509160200191906001019062000d07565b5b50905062000d49919062000dd3565b5090565b82805482825590600052602060002090810192821562000da1579160200282015b8281111562000da057825182908051906020019062000d8f92919062000c55565b509160200191906001019062000d6e565b5b50905062000db0919062000dd3565b5090565b5b8082111562000dcf57600081600090555060010162000db5565b5090565b5b8082111562000df7576000818162000ded919062000dfb565b5060010162000dd4565b5090565b50805462000e099062000ef8565b6000825580601f1062000e1d575062000e3e565b601f01602090049060005260206000209081019062000e3d919062000db4565b5b50565b600062000e4e8262000ea6565b62000e5a818562000eb1565b935062000e6c81856020860162000ec2565b62000e778162000f5d565b840191505092915050565b6000602082019050818103600083015262000e9e818462000e41565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ee257808201518184015260208101905062000ec5565b8381111562000ef2576000848401525b50505050565b6000600282049050600182168062000f1157607f821691505b6020821081141562000f285762000f2762000f2e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613b588062000f7e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612760565b61031c565b6040516101219190612db3565b60405180910390f35b6101326103fe565b60405161013f9190612dce565b60405180910390f35b610162600480360381019061015d91906127b2565b610490565b60405161016f9190612d4c565b60405180910390f35b610192600480360381019061018d91906126a5565b610515565b005b61019c61062d565b005b6101b860048036038101906101b3919061259f565b610c31565b005b6101d460048036038101906101cf919061259f565b610c91565b005b6101f060048036038101906101eb91906127b2565b610cb1565b6040516101fd9190612d4c565b60405180910390f35b610220600480360381019061021b919061253a565b610d63565b60405161022d919061302e565b60405180910390f35b61023e610e1b565b60405161024b9190612dce565b60405180910390f35b61026e600480360381019061026991906126e1565b610ead565b60405161027b9190612dce565b60405180910390f35b61029e60048036038101906102999190612669565b610f3f565b005b6102ba60048036038101906102b591906125ee565b610f55565b005b6102d660048036038101906102d191906127b2565b610fb7565b6040516102e39190612dce565b60405180910390f35b61030660048036038101906103019190612563565b611109565b6040516103139190612db3565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f682611236565b5b9050919050565b60606000805461040d9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546104399061331f565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112a0565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190612fae565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890612fee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b061130c565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d961130c565b611109565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612eee565b60405180910390fd5b6106288383611314565b505050565b600061063960076113cd565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e5783829060005260206000200180546106819061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad9061331f565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ead565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b828210156108235783829060005260206000200180546107969061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546107c29061331f565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ead565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546108d79061331f565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ead565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c09061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec9061331f565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ead565b9050600084848484604051602001610aa89493929190612c44565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612c82565b60405160208183030381529060405290506000610b1d83610af8846113db565b604051602001610b09929190612ce5565b6040516020818303038152906040526113db565b9050600081604051602001610b329190612d2a565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d000000000000000000000081525061119d565b610b8a8161119d565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a000000000000000000000081525061119d565b610bd2338a611599565b610bdc89826115b7565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a3361162b565b610c2660076116ca565b505050505050505050565b610c42610c3c61130c565b826116e0565b610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c789061300e565b60405180910390fd5b610c8c8383836117be565b505050565b610cac83838360405180602001604052806000815250610f55565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190612f2e565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90612f0e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e2a9061331f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e569061331f565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b60606000610ee384610ebe85611a25565b604051602001610ecf929190612c20565b604051602081830303815290604052611bd2565b9050845181610ef291906133cb565b9050848181518110610f2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f51610f4a61130c565b8383611c05565b5050565b610f66610f6061130c565b836116e0565b610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c9061300e565b60405180910390fd5b610fb184848484611d72565b50505050565b6060610fc2826112a0565b611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff890612f8e565b60405180910390fd5b60006006600084815260200190815260200160002080546110219061331f565b80601f016020809104026020016040519081016040528092919081815260200182805461104d9061331f565b801561109a5780601f1061106f5761010080835404028352916020019161109a565b820191906000526020600020905b81548152906001019060200180831161107d57829003601f168201915b5050505050905060006110ab611dce565b90506000815114156110c1578192505050611104565b6000825111156110f65780826040516020016110de929190612c20565b60405160208183030381529060405292505050611104565b6110ff84611de5565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611233816040516024016111b19190612dce565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661138783610cb1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b606060008251905060008114156114045760405180602001604052806000815250915050611594565b600060036002836114159190613154565b61141f91906131aa565b600461142b91906131db565b9050600060208261143c9190613154565b67ffffffffffffffff81111561147b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114ad5781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613ae3604091399050600181016020830160005b868110156115515760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b905080845260048401935050506114d8565b50600386066001811461156b576002811461157b57611586565b613d3d60f01b6002830352611586565b603d60f81b60018303525b508484525050819450505050505b919050565b6115b3828260405180602001604052806000815250611eb5565b5050565b6115c0826112a0565b6115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612f4e565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906116269291906122ae565b505050565b6116c583838360405160240161164393929190612df0565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b505050565b6001816000016000828254019250508190555050565b60006116eb826112a0565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612ece565b60405180910390fd5b600061173583610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117a457508373ffffffffffffffffffffffffffffffffffffffff1661178c84610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117b557506117b48185611109565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117de82610cb1565b73ffffffffffffffffffffffffffffffffffffffff1614611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90612e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b90612e8e565b60405180910390fd5b6118af838383611f10565b6118ba600082611314565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190a9190613235565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119619190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a20838383611f15565b505050565b60606000821415611a6d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611bcd565b600082905060005b60008214611a9f578080611a8890613382565b915050600a82611a9891906131aa565b9150611a75565b60008167ffffffffffffffff811115611ae1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b135781602001600182028036833780820191505090505b5090505b60008514611bc657600182611b2c9190613235565b9150600a85611b3b91906133cb565b6030611b479190613154565b60f81b818381518110611b83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bbf91906131aa565b9450611b17565b8093505050505b919050565b600081604051602001611be59190612c09565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90612eae565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d659190612db3565b60405180910390a3505050565b611d7d8484846117be565b611d8984848484611f1a565b611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90612e2e565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611df0826112a0565b611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690612fce565b60405180910390fd5b6000611e39611dce565b90506000815111611e595760405180602001604052806000815250611e84565b80611e6384611a25565b604051602001611e74929190612c20565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ebf83836120b1565b611ecc6000848484611f1a565b611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290612e2e565b60405180910390fd5b505050565b505050565b505050565b6000611f3b8473ffffffffffffffffffffffffffffffffffffffff1661228b565b156120a4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f6461130c565b8786866040518563ffffffff1660e01b8152600401611f869493929190612d67565b602060405180830381600087803b158015611fa057600080fd5b505af1925050508015611fd157506040513d601f19601f82011682018060405250810190611fce9190612789565b60015b612054573d8060008114612001576040519150601f19603f3d011682016040523d82523d6000602084013e612006565b606091505b5060008151141561204c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204390612e2e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120a9565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211890612f6e565b60405180910390fd5b61212a816112a0565b1561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190612e6e565b60405180910390fd5b61217660008383611f10565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121c69190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461228760008383611f15565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122ba9061331f565b90600052602060002090601f0160209004810192826122dc5760008555612323565b82601f106122f557805160ff1916838001178555612323565b82800160010185558215612323579182015b82811115612322578251825591602001919060010190612307565b5b5090506123309190612334565b5090565b5b8082111561234d576000816000905550600101612335565b5090565b600061236461235f8461306e565b613049565b9050808382526020820190508285602086028201111561238357600080fd5b60005b858110156123cd57813567ffffffffffffffff8111156123a557600080fd5b8086016123b289826124fb565b85526020850194506020840193505050600181019050612386565b5050509392505050565b60006123ea6123e58461309a565b613049565b90508281526020810184848401111561240257600080fd5b61240d8482856132dd565b509392505050565b6000612428612423846130cb565b613049565b90508281526020810184848401111561244057600080fd5b61244b8482856132dd565b509392505050565b60008135905061246281613a86565b92915050565b600082601f83011261247957600080fd5b8135612489848260208601612351565b91505092915050565b6000813590506124a181613a9d565b92915050565b6000813590506124b681613ab4565b92915050565b6000815190506124cb81613ab4565b92915050565b600082601f8301126124e257600080fd5b81356124f28482602086016123d7565b91505092915050565b600082601f83011261250c57600080fd5b813561251c848260208601612415565b91505092915050565b60008135905061253481613acb565b92915050565b60006020828403121561254c57600080fd5b600061255a84828501612453565b91505092915050565b6000806040838503121561257657600080fd5b600061258485828601612453565b925050602061259585828601612453565b9150509250929050565b6000806000606084860312156125b457600080fd5b60006125c286828701612453565b93505060206125d386828701612453565b92505060406125e486828701612525565b9150509250925092565b6000806000806080858703121561260457600080fd5b600061261287828801612453565b945050602061262387828801612453565b935050604061263487828801612525565b925050606085013567ffffffffffffffff81111561265157600080fd5b61265d878288016124d1565b91505092959194509250565b6000806040838503121561267c57600080fd5b600061268a85828601612453565b925050602061269b85828601612492565b9150509250929050565b600080604083850312156126b857600080fd5b60006126c685828601612453565b92505060206126d785828601612525565b9150509250929050565b6000806000606084860312156126f657600080fd5b600084013567ffffffffffffffff81111561271057600080fd5b61271c86828701612468565b935050602084013567ffffffffffffffff81111561273957600080fd5b612745868287016124fb565b925050604061275686828701612525565b9150509250925092565b60006020828403121561277257600080fd5b6000612780848285016124a7565b91505092915050565b60006020828403121561279b57600080fd5b60006127a9848285016124bc565b91505092915050565b6000602082840312156127c457600080fd5b60006127d284828501612525565b91505092915050565b6127e481613269565b82525050565b6127f38161327b565b82525050565b600061280482613111565b61280e8185613127565b935061281e8185602086016132ec565b612827816134b8565b840191505092915050565b600061283d8261311c565b6128478185613138565b93506128578185602086016132ec565b612860816134b8565b840191505092915050565b60006128768261311c565b6128808185613149565b93506128908185602086016132ec565b80840191505092915050565b600081546128a98161331f565b6128b38186613149565b945060018216600081146128ce57600181146128df57612912565b60ff19831686528186019350612912565b6128e8856130fc565b60005b8381101561290a578154818901526001820191506020810190506128eb565b838801955050505b50505092915050565b6000612928603283613138565b9150612933826134c9565b604082019050919050565b600061294b602583613138565b915061295682613518565b604082019050919050565b600061296e601c83613138565b915061297982613567565b602082019050919050565b6000612991602483613138565b915061299c82613590565b604082019050919050565b60006129b4601983613138565b91506129bf826135df565b602082019050919050565b60006129d7606383613149565b91506129e282613608565b606382019050919050565b60006129fa602c83613138565b9150612a05826136a3565b604082019050919050565b6000612a1d600d83613149565b9150612a28826136f2565b600d82019050919050565b6000612a40603883613138565b9150612a4b8261371b565b604082019050919050565b6000612a63602a83613138565b9150612a6e8261376a565b604082019050919050565b6000612a86602983613138565b9150612a91826137b9565b604082019050919050565b6000612aa9602e83613138565b9150612ab482613808565b604082019050919050565b6000612acc600283613149565b9150612ad782613857565b600282019050919050565b6000612aef602083613138565b9150612afa82613880565b602082019050919050565b6000612b12603183613138565b9150612b1d826138a9565b604082019050919050565b6000612b35602c83613138565b9150612b40826138f8565b604082019050919050565b6000612b58602f83613138565b9150612b6382613947565b604082019050919050565b6000612b7b600a83613149565b9150612b8682613996565b600a82019050919050565b6000612b9e602183613138565b9150612ba9826139bf565b604082019050919050565b6000612bc1601d83613149565b9150612bcc82613a0e565b601d82019050919050565b6000612be4603183613138565b9150612bef82613a37565b604082019050919050565b612c03816132d3565b82525050565b6000612c15828461286b565b915081905092915050565b6000612c2c828561286b565b9150612c38828461286b565b91508190509392505050565b6000612c50828761286b565b9150612c5c828661286b565b9150612c68828561286b565b9150612c74828461286b565b915081905095945050505050565b6000612c8e828961289c565b9150612c9a828861286b565b9150612ca6828761289c565b9150612cb2828661286b565b9150612cbe828561286b565b9150612cca828461286b565b9150612cd582612a10565b9150819050979650505050505050565b6000612cf082612b6e565b9150612cfc828561286b565b9150612d07826129ca565b9150612d13828461286b565b9150612d1e82612abf565b91508190509392505050565b6000612d3582612bb4565b9150612d41828461286b565b915081905092915050565b6000602082019050612d6160008301846127db565b92915050565b6000608082019050612d7c60008301876127db565b612d8960208301866127db565b612d966040830185612bfa565b8181036060830152612da881846127f9565b905095945050505050565b6000602082019050612dc860008301846127ea565b92915050565b60006020820190508181036000830152612de88184612832565b905092915050565b60006060820190508181036000830152612e0a8186612832565b9050612e196020830185612bfa565b612e2660408301846127db565b949350505050565b60006020820190508181036000830152612e478161291b565b9050919050565b60006020820190508181036000830152612e678161293e565b9050919050565b60006020820190508181036000830152612e8781612961565b9050919050565b60006020820190508181036000830152612ea781612984565b9050919050565b60006020820190508181036000830152612ec7816129a7565b9050919050565b60006020820190508181036000830152612ee7816129ed565b9050919050565b60006020820190508181036000830152612f0781612a33565b9050919050565b60006020820190508181036000830152612f2781612a56565b9050919050565b60006020820190508181036000830152612f4781612a79565b9050919050565b60006020820190508181036000830152612f6781612a9c565b9050919050565b60006020820190508181036000830152612f8781612ae2565b9050919050565b60006020820190508181036000830152612fa781612b05565b9050919050565b60006020820190508181036000830152612fc781612b28565b9050919050565b60006020820190508181036000830152612fe781612b4b565b9050919050565b6000602082019050818103600083015261300781612b91565b9050919050565b6000602082019050818103600083015261302781612bd7565b9050919050565b60006020820190506130436000830184612bfa565b92915050565b6000613053613064565b905061305f8282613351565b919050565b6000604051905090565b600067ffffffffffffffff82111561308957613088613489565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130b5576130b4613489565b5b6130be826134b8565b9050602081019050919050565b600067ffffffffffffffff8211156130e6576130e5613489565b5b6130ef826134b8565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061315f826132d3565b915061316a836132d3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319f5761319e6133fc565b5b828201905092915050565b60006131b5826132d3565b91506131c0836132d3565b9250826131d0576131cf61342b565b5b828204905092915050565b60006131e6826132d3565b91506131f1836132d3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322a576132296133fc565b5b828202905092915050565b6000613240826132d3565b915061324b836132d3565b92508282101561325e5761325d6133fc565b5b828203905092915050565b6000613274826132b3565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561330a5780820151818401526020810190506132ef565b83811115613319576000848401525b50505050565b6000600282049050600182168061333757607f821691505b6020821081141561334b5761334a61345a565b5b50919050565b61335a826134b8565b810181811067ffffffffffffffff8211171561337957613378613489565b5b80604052505050565b600061338d826132d3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133c0576133bf6133fc565b5b600182019050919050565b60006133d6826132d3565b91506133e1836132d3565b9250826133f1576133f061342b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613a8f81613269565b8114613a9a57600080fd5b50565b613aa68161327b565b8114613ab157600080fd5b50565b613abd81613287565b8114613ac857600080fd5b50565b613ad4816132d3565b8114613adf57600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208bd9e2de0ff96561d60a8e4b211a10ab3250c1f888dd58d30d355526807ef6a764736f6c634300080400333b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20323470783b207d3c2f7374796c653e3c726563742077696474683d273130302527206865696768743d2731303025272066696c6c3d27626c61636b27202f3e3c7465787420783d273530252720793d273530252720636c6173733d27626173652720646f6d696e616e742d626173656c696e653d276d6964646c652720746578742d616e63686f723d276d6964646c65273e3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f73766727207072657365727665417370656374526174696f3d27784d696e594d696e206d656574272076696577426f783d273020302033353020333530273e3c7374796c653e2e62617365207b2066696c6c3a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612760565b61031c565b6040516101219190612db3565b60405180910390f35b6101326103fe565b60405161013f9190612dce565b60405180910390f35b610162600480360381019061015d91906127b2565b610490565b60405161016f9190612d4c565b60405180910390f35b610192600480360381019061018d91906126a5565b610515565b005b61019c61062d565b005b6101b860048036038101906101b3919061259f565b610c31565b005b6101d460048036038101906101cf919061259f565b610c91565b005b6101f060048036038101906101eb91906127b2565b610cb1565b6040516101fd9190612d4c565b60405180910390f35b610220600480360381019061021b919061253a565b610d63565b60405161022d919061302e565b60405180910390f35b61023e610e1b565b60405161024b9190612dce565b60405180910390f35b61026e600480360381019061026991906126e1565b610ead565b60405161027b9190612dce565b60405180910390f35b61029e60048036038101906102999190612669565b610f3f565b005b6102ba60048036038101906102b591906125ee565b610f55565b005b6102d660048036038101906102d191906127b2565b610fb7565b6040516102e39190612dce565b60405180910390f35b61030660048036038101906103019190612563565b611109565b6040516103139190612db3565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f682611236565b5b9050919050565b60606000805461040d9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546104399061331f565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112a0565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190612fae565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890612fee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b061130c565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d961130c565b611109565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612eee565b60405180910390fd5b6106288383611314565b505050565b600061063960076113cd565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e5783829060005260206000200180546106819061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad9061331f565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ead565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b828210156108235783829060005260206000200180546107969061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546107c29061331f565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ead565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab9061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546108d79061331f565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ead565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c09061331f565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec9061331f565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ead565b9050600084848484604051602001610aa89493929190612c44565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612c82565b60405160208183030381529060405290506000610b1d83610af8846113db565b604051602001610b09929190612ce5565b6040516020818303038152906040526113db565b9050600081604051602001610b329190612d2a565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d000000000000000000000081525061119d565b610b8a8161119d565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a000000000000000000000081525061119d565b610bd2338a611599565b610bdc89826115b7565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a3361162b565b610c2660076116ca565b505050505050505050565b610c42610c3c61130c565b826116e0565b610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c789061300e565b60405180910390fd5b610c8c8383836117be565b505050565b610cac83838360405180602001604052806000815250610f55565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190612f2e565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90612f0e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e2a9061331f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e569061331f565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b60606000610ee384610ebe85611a25565b604051602001610ecf929190612c20565b604051602081830303815290604052611bd2565b9050845181610ef291906133cb565b9050848181518110610f2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f51610f4a61130c565b8383611c05565b5050565b610f66610f6061130c565b836116e0565b610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c9061300e565b60405180910390fd5b610fb184848484611d72565b50505050565b6060610fc2826112a0565b611001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff890612f8e565b60405180910390fd5b60006006600084815260200190815260200160002080546110219061331f565b80601f016020809104026020016040519081016040528092919081815260200182805461104d9061331f565b801561109a5780601f1061106f5761010080835404028352916020019161109a565b820191906000526020600020905b81548152906001019060200180831161107d57829003601f168201915b5050505050905060006110ab611dce565b90506000815114156110c1578192505050611104565b6000825111156110f65780826040516020016110de929190612c20565b60405160208183030381529060405292505050611104565b6110ff84611de5565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611233816040516024016111b19190612dce565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661138783610cb1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b606060008251905060008114156114045760405180602001604052806000815250915050611594565b600060036002836114159190613154565b61141f91906131aa565b600461142b91906131db565b9050600060208261143c9190613154565b67ffffffffffffffff81111561147b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114ad5781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613ae3604091399050600181016020830160005b868110156115515760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b905080845260048401935050506114d8565b50600386066001811461156b576002811461157b57611586565b613d3d60f01b6002830352611586565b603d60f81b60018303525b508484525050819450505050505b919050565b6115b3828260405180602001604052806000815250611eb5565b5050565b6115c0826112a0565b6115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612f4e565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906116269291906122ae565b505050565b6116c583838360405160240161164393929190612df0565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e8c565b505050565b6001816000016000828254019250508190555050565b60006116eb826112a0565b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612ece565b60405180910390fd5b600061173583610cb1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117a457508373ffffffffffffffffffffffffffffffffffffffff1661178c84610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117b557506117b48185611109565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117de82610cb1565b73ffffffffffffffffffffffffffffffffffffffff1614611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90612e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b90612e8e565b60405180910390fd5b6118af838383611f10565b6118ba600082611314565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190a9190613235565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119619190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a20838383611f15565b505050565b60606000821415611a6d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611bcd565b600082905060005b60008214611a9f578080611a8890613382565b915050600a82611a9891906131aa565b9150611a75565b60008167ffffffffffffffff811115611ae1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b135781602001600182028036833780820191505090505b5090505b60008514611bc657600182611b2c9190613235565b9150600a85611b3b91906133cb565b6030611b479190613154565b60f81b818381518110611b83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bbf91906131aa565b9450611b17565b8093505050505b919050565b600081604051602001611be59190612c09565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90612eae565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d659190612db3565b60405180910390a3505050565b611d7d8484846117be565b611d8984848484611f1a565b611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90612e2e565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611df0826112a0565b611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690612fce565b60405180910390fd5b6000611e39611dce565b90506000815111611e595760405180602001604052806000815250611e84565b80611e6384611a25565b604051602001611e74929190612c20565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ebf83836120b1565b611ecc6000848484611f1a565b611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290612e2e565b60405180910390fd5b505050565b505050565b505050565b6000611f3b8473ffffffffffffffffffffffffffffffffffffffff1661228b565b156120a4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f6461130c565b8786866040518563ffffffff1660e01b8152600401611f869493929190612d67565b602060405180830381600087803b158015611fa057600080fd5b505af1925050508015611fd157506040513d601f19601f82011682018060405250810190611fce9190612789565b60015b612054573d8060008114612001576040519150601f19603f3d011682016040523d82523d6000602084013e612006565b606091505b5060008151141561204c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204390612e2e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120a9565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211890612f6e565b60405180910390fd5b61212a816112a0565b1561216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190612e6e565b60405180910390fd5b61217660008383611f10565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121c69190613154565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461228760008383611f15565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122ba9061331f565b90600052602060002090601f0160209004810192826122dc5760008555612323565b82601f106122f557805160ff1916838001178555612323565b82800160010185558215612323579182015b82811115612322578251825591602001919060010190612307565b5b5090506123309190612334565b5090565b5b8082111561234d576000816000905550600101612335565b5090565b600061236461235f8461306e565b613049565b9050808382526020820190508285602086028201111561238357600080fd5b60005b858110156123cd57813567ffffffffffffffff8111156123a557600080fd5b8086016123b289826124fb565b85526020850194506020840193505050600181019050612386565b5050509392505050565b60006123ea6123e58461309a565b613049565b90508281526020810184848401111561240257600080fd5b61240d8482856132dd565b509392505050565b6000612428612423846130cb565b613049565b90508281526020810184848401111561244057600080fd5b61244b8482856132dd565b509392505050565b60008135905061246281613a86565b92915050565b600082601f83011261247957600080fd5b8135612489848260208601612351565b91505092915050565b6000813590506124a181613a9d565b92915050565b6000813590506124b681613ab4565b92915050565b6000815190506124cb81613ab4565b92915050565b600082601f8301126124e257600080fd5b81356124f28482602086016123d7565b91505092915050565b600082601f83011261250c57600080fd5b813561251c848260208601612415565b91505092915050565b60008135905061253481613acb565b92915050565b60006020828403121561254c57600080fd5b600061255a84828501612453565b91505092915050565b6000806040838503121561257657600080fd5b600061258485828601612453565b925050602061259585828601612453565b9150509250929050565b6000806000606084860312156125b457600080fd5b60006125c286828701612453565b93505060206125d386828701612453565b92505060406125e486828701612525565b9150509250925092565b6000806000806080858703121561260457600080fd5b600061261287828801612453565b945050602061262387828801612453565b935050604061263487828801612525565b925050606085013567ffffffffffffffff81111561265157600080fd5b61265d878288016124d1565b91505092959194509250565b6000806040838503121561267c57600080fd5b600061268a85828601612453565b925050602061269b85828601612492565b9150509250929050565b600080604083850312156126b857600080fd5b60006126c685828601612453565b92505060206126d785828601612525565b9150509250929050565b6000806000606084860312156126f657600080fd5b600084013567ffffffffffffffff81111561271057600080fd5b61271c86828701612468565b935050602084013567ffffffffffffffff81111561273957600080fd5b612745868287016124fb565b925050604061275686828701612525565b9150509250925092565b60006020828403121561277257600080fd5b6000612780848285016124a7565b91505092915050565b60006020828403121561279b57600080fd5b60006127a9848285016124bc565b91505092915050565b6000602082840312156127c457600080fd5b60006127d284828501612525565b91505092915050565b6127e481613269565b82525050565b6127f38161327b565b82525050565b600061280482613111565b61280e8185613127565b935061281e8185602086016132ec565b612827816134b8565b840191505092915050565b600061283d8261311c565b6128478185613138565b93506128578185602086016132ec565b612860816134b8565b840191505092915050565b60006128768261311c565b6128808185613149565b93506128908185602086016132ec565b80840191505092915050565b600081546128a98161331f565b6128b38186613149565b945060018216600081146128ce57600181146128df57612912565b60ff19831686528186019350612912565b6128e8856130fc565b60005b8381101561290a578154818901526001820191506020810190506128eb565b838801955050505b50505092915050565b6000612928603283613138565b9150612933826134c9565b604082019050919050565b600061294b602583613138565b915061295682613518565b604082019050919050565b600061296e601c83613138565b915061297982613567565b602082019050919050565b6000612991602483613138565b915061299c82613590565b604082019050919050565b60006129b4601983613138565b91506129bf826135df565b602082019050919050565b60006129d7606383613149565b91506129e282613608565b606382019050919050565b60006129fa602c83613138565b9150612a05826136a3565b604082019050919050565b6000612a1d600d83613149565b9150612a28826136f2565b600d82019050919050565b6000612a40603883613138565b9150612a4b8261371b565b604082019050919050565b6000612a63602a83613138565b9150612a6e8261376a565b604082019050919050565b6000612a86602983613138565b9150612a91826137b9565b604082019050919050565b6000612aa9602e83613138565b9150612ab482613808565b604082019050919050565b6000612acc600283613149565b9150612ad782613857565b600282019050919050565b6000612aef602083613138565b9150612afa82613880565b602082019050919050565b6000612b12603183613138565b9150612b1d826138a9565b604082019050919050565b6000612b35602c83613138565b9150612b40826138f8565b604082019050919050565b6000612b58602f83613138565b9150612b6382613947565b604082019050919050565b6000612b7b600a83613149565b9150612b8682613996565b600a82019050919050565b6000612b9e602183613138565b9150612ba9826139bf565b604082019050919050565b6000612bc1601d83613149565b9150612bcc82613a0e565b601d82019050919050565b6000612be4603183613138565b9150612bef82613a37565b604082019050919050565b612c03816132d3565b82525050565b6000612c15828461286b565b915081905092915050565b6000612c2c828561286b565b9150612c38828461286b565b91508190509392505050565b6000612c50828761286b565b9150612c5c828661286b565b9150612c68828561286b565b9150612c74828461286b565b915081905095945050505050565b6000612c8e828961289c565b9150612c9a828861286b565b9150612ca6828761289c565b9150612cb2828661286b565b9150612cbe828561286b565b9150612cca828461286b565b9150612cd582612a10565b9150819050979650505050505050565b6000612cf082612b6e565b9150612cfc828561286b565b9150612d07826129ca565b9150612d13828461286b565b9150612d1e82612abf565b91508190509392505050565b6000612d3582612bb4565b9150612d41828461286b565b915081905092915050565b6000602082019050612d6160008301846127db565b92915050565b6000608082019050612d7c60008301876127db565b612d8960208301866127db565b612d966040830185612bfa565b8181036060830152612da881846127f9565b905095945050505050565b6000602082019050612dc860008301846127ea565b92915050565b60006020820190508181036000830152612de88184612832565b905092915050565b60006060820190508181036000830152612e0a8186612832565b9050612e196020830185612bfa565b612e2660408301846127db565b949350505050565b60006020820190508181036000830152612e478161291b565b9050919050565b60006020820190508181036000830152612e678161293e565b9050919050565b60006020820190508181036000830152612e8781612961565b9050919050565b60006020820190508181036000830152612ea781612984565b9050919050565b60006020820190508181036000830152612ec7816129a7565b9050919050565b60006020820190508181036000830152612ee7816129ed565b9050919050565b60006020820190508181036000830152612f0781612a33565b9050919050565b60006020820190508181036000830152612f2781612a56565b9050919050565b60006020820190508181036000830152612f4781612a79565b9050919050565b60006020820190508181036000830152612f6781612a9c565b9050919050565b60006020820190508181036000830152612f8781612ae2565b9050919050565b60006020820190508181036000830152612fa781612b05565b9050919050565b60006020820190508181036000830152612fc781612b28565b9050919050565b60006020820190508181036000830152612fe781612b4b565b9050919050565b6000602082019050818103600083015261300781612b91565b9050919050565b6000602082019050818103600083015261302781612bd7565b9050919050565b60006020820190506130436000830184612bfa565b92915050565b6000613053613064565b905061305f8282613351565b919050565b6000604051905090565b600067ffffffffffffffff82111561308957613088613489565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130b5576130b4613489565b5b6130be826134b8565b9050602081019050919050565b600067ffffffffffffffff8211156130e6576130e5613489565b5b6130ef826134b8565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061315f826132d3565b915061316a836132d3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319f5761319e6133fc565b5b828201905092915050565b60006131b5826132d3565b91506131c0836132d3565b9250826131d0576131cf61342b565b5b828204905092915050565b60006131e6826132d3565b91506131f1836132d3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322a576132296133fc565b5b828202905092915050565b6000613240826132d3565b915061324b836132d3565b92508282101561325e5761325d6133fc565b5b828203905092915050565b6000613274826132b3565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561330a5780820151818401526020810190506132ef565b83811115613319576000848401525b50505050565b6000600282049050600182168061333757607f821691505b6020821081141561334b5761334a61345a565b5b50919050565b61335a826134b8565b810181811067ffffffffffffffff8211171561337957613378613489565b5b80604052505050565b600061338d826132d3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133c0576133bf6133fc565b5b600182019050919050565b60006133d6826132d3565b91506133e1836132d3565b9250826133f1576133f061342b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613a8f81613269565b8114613a9a57600080fd5b50565b613aa68161327b565b8114613ab157600080fd5b50565b613abd81613287565b8114613ac857600080fd5b50565b613ad4816132d3565b8114613adf57600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208bd9e2de0ff96561d60a8e4b211a10ab3250c1f888dd58d30d355526807ef6a764736f6c63430008040033", + "bytecode": "0x60806040526040518060a001604052806076815260200162004beb60769139600890805190602001906200003592919062000c55565b506040518060e0016040528060b3815260200162004b3860b39139600990805190602001906200006792919062000c55565b506040518061014001604052806040518060400160405280600381526020017f726564000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f677265656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f626c75650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f776869746500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f79656c6c6f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f6379616e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f70696e6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6d6167656e74610000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f73696c766572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f676f6c6400000000000000000000000000000000000000000000000000000000815250815250600a90600a620002d292919062000ce6565b506040518061014001604052806040518060400160405280600481526020017f457069630000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4c6567656e64617279000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865726f6963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f46616e746173746963000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5465727269626c6500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4372617a7900000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f57696c640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f54657272696679696e670000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f53706f6f6b790000000000000000000000000000000000000000000000000000815250815250600b90600a6200053d92919062000ce6565b506040518061018001604052806040518060400160405280600881526020017f417373617373696e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f436c65726963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f526f67756500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4e696e6a6100000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4c6f72640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f57697a617264000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f57617272696f720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4265727365726b6572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4e6563726f6d616e64657200000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f53756d6d6f6e657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426172640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4c616e6365720000000000000000000000000000000000000000000000000000815250815250600c90600c6200081e92919062000d4d565b506040518061014001604052806040518060400160405280600781526020017f536f6c646965720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865616c6572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4578706c6f72657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4d65726368616e7400000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f446576656c6f706572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f426c61636b536d6974680000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4869746d616e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f48756e746572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f5361696c6f720000000000000000000000000000000000000000000000000000815250815250600d90600a62000a8992919062000ce6565b5034801562000a9757600080fd5b506040518060400160405280600981526020017f5371756172654e465400000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5351554152450000000000000000000000000000000000000000000000000000815250816000908051906020019062000b1c92919062000c55565b50806001908051906020019062000b3592919062000c55565b50505062000b836040518060400160405280601e81526020017f4d79206669727374204e465420636f6e7472616374212045504943212121000081525062000b8960201b620011d61760201c565b62000f6e565b62000c298160405160240162000ba0919062000e82565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505062000c2c60201b60201c565b50565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b82805462000c639062000ef8565b90600052602060002090601f01602090048101928262000c87576000855562000cd3565b82601f1062000ca257805160ff191683800117855562000cd3565b8280016001018555821562000cd3579182015b8281111562000cd257825182559160200191906001019062000cb5565b5b50905062000ce2919062000db4565b5090565b82805482825590600052602060002090810192821562000d3a579160200282015b8281111562000d3957825182908051906020019062000d2892919062000c55565b509160200191906001019062000d07565b5b50905062000d49919062000dd3565b5090565b82805482825590600052602060002090810192821562000da1579160200282015b8281111562000da057825182908051906020019062000d8f92919062000c55565b509160200191906001019062000d6e565b5b50905062000db0919062000dd3565b5090565b5b8082111562000dcf57600081600090555060010162000db5565b5090565b5b8082111562000df7576000818162000ded919062000dfb565b5060010162000dd4565b5090565b50805462000e099062000ef8565b6000825580601f1062000e1d575062000e3e565b601f01602090049060005260206000209081019062000e3d919062000db4565b5b50565b600062000e4e8262000ea6565b62000e5a818562000eb1565b935062000e6c81856020860162000ec2565b62000e778162000f5d565b840191505092915050565b6000602082019050818103600083015262000e9e818462000e41565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ee257808201518184015260208101905062000ec5565b8381111562000ef2576000848401525b50505050565b6000600282049050600182168062000f1157607f821691505b6020821081141562000f285762000f2762000f2e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613bba8062000f7e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612799565b61031c565b6040516101219190612e15565b60405180910390f35b6101326103fe565b60405161013f9190612e30565b60405180910390f35b610162600480360381019061015d91906127eb565b610490565b60405161016f9190612d85565b60405180910390f35b610192600480360381019061018d91906126de565b610515565b005b61019c61062d565b005b6101b860048036038101906101b391906125d8565b610c6a565b005b6101d460048036038101906101cf91906125d8565b610cca565b005b6101f060048036038101906101eb91906127eb565b610cea565b6040516101fd9190612d85565b60405180910390f35b610220600480360381019061021b9190612573565b610d9c565b60405161022d9190613090565b60405180910390f35b61023e610e54565b60405161024b9190612e30565b60405180910390f35b61026e6004803603810190610269919061271a565b610ee6565b60405161027b9190612e30565b60405180910390f35b61029e600480360381019061029991906126a2565b610f78565b005b6102ba60048036038101906102b59190612627565b610f8e565b005b6102d660048036038101906102d191906127eb565b610ff0565b6040516102e39190612e30565b60405180910390f35b6103066004803603810190610301919061259c565b611142565b6040516103139190612e15565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f68261126f565b5b9050919050565b60606000805461040d90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461043990613381565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112d9565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190613010565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890613050565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b0611345565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d9611345565b611142565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612f50565b60405180910390fd5b610628838361134d565b505050565b60006106396007611406565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e57838290600052602060002001805461068190613381565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad90613381565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ee6565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b8282101561082357838290600052602060002001805461079690613381565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290613381565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ee6565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab90613381565b80601f01602080910402602001604051908101604052809291908181526020018280546108d790613381565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ee6565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c090613381565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec90613381565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ee6565b9050600084848484604051602001610aa89493929190612c7d565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612cbb565b60405160208183030381529060405290506000610b1d83610af884611414565b604051602001610b09929190612d1e565b604051602081830303815290604052611414565b9050600081604051602001610b329190612d63565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d00000000000000000000008152506111d6565b610b8a816111d6565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a00000000000000000000008152506111d6565b610bd2338a6115d2565b610bdc89826115f0565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a33611664565b610c266007611703565b7febb98688741ffa4c7589bf325de30cf7becb63de567842e1ccdb6cb949fdc82c338a604051610c57929190612dec565b60405180910390a1505050505050505050565b610c7b610c75611345565b82611719565b610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613070565b60405180910390fd5b610cc58383836117f7565b505050565b610ce583838360405180602001604052806000815250610f8e565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90612f90565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612f70565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e6390613381565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8f90613381565b8015610edc5780601f10610eb157610100808354040283529160200191610edc565b820191906000526020600020905b815481529060010190602001808311610ebf57829003601f168201915b5050505050905090565b60606000610f1c84610ef785611a5e565b604051602001610f08929190612c59565b604051602081830303815290604052611c0b565b9050845181610f2b919061342d565b9050848181518110610f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f8a610f83611345565b8383611c3e565b5050565b610f9f610f99611345565b83611719565b610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590613070565b60405180910390fd5b610fea84848484611dab565b50505050565b6060610ffb826112d9565b61103a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103190612ff0565b60405180910390fd5b600060066000848152602001908152602001600020805461105a90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461108690613381565b80156110d35780601f106110a8576101008083540402835291602001916110d3565b820191906000526020600020905b8154815290600101906020018083116110b657829003601f168201915b5050505050905060006110e4611e07565b90506000815114156110fa57819250505061113d565b60008251111561112f578082604051602001611117929190612c59565b6040516020818303038152906040529250505061113d565b61113884611e1e565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61126c816040516024016111ea9190612e30565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166113c083610cea565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6060600082519050600081141561143d57604051806020016040528060008152509150506115cd565b6000600360028361144e91906131b6565b611458919061320c565b6004611464919061323d565b9050600060208261147591906131b6565b67ffffffffffffffff8111156114b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114e65781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613b45604091399050600181016020830160005b8681101561158a5760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050611511565b5060038606600181146115a457600281146115b4576115bf565b613d3d60f01b60028303526115bf565b603d60f81b60018303525b508484525050819450505050505b919050565b6115ec828260405180602001604052806000815250611eee565b5050565b6115f9826112d9565b611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612fb0565b60405180910390fd5b8060066000848152602001908152602001600020908051906020019061165f9291906122e7565b505050565b6116fe83838360405160240161167c93929190612e52565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b505050565b6001816000016000828254019250508190555050565b6000611724826112d9565b611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a90612f30565b60405180910390fd5b600061176e83610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117dd57508373ffffffffffffffffffffffffffffffffffffffff166117c584610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117ee57506117ed8185611142565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661181782610cea565b73ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490612eb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490612ef0565b60405180910390fd5b6118e8838383611f49565b6118f360008261134d565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119439190613297565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199a91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a59838383611f4e565b505050565b60606000821415611aa6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c06565b600082905060005b60008214611ad8578080611ac1906133e4565b915050600a82611ad1919061320c565b9150611aae565b60008167ffffffffffffffff811115611b1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b4c5781602001600182028036833780820191505090505b5090505b60008514611bff57600182611b659190613297565b9150600a85611b74919061342d565b6030611b8091906131b6565b60f81b818381518110611bbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bf8919061320c565b9450611b50565b8093505050505b919050565b600081604051602001611c1e9190612c42565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490612f10565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d9e9190612e15565b60405180910390a3505050565b611db68484846117f7565b611dc284848484611f53565b611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df890612e90565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611e29826112d9565b611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613030565b60405180910390fd5b6000611e72611e07565b90506000815111611e925760405180602001604052806000815250611ebd565b80611e9c84611a5e565b604051602001611ead929190612c59565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ef883836120ea565b611f056000848484611f53565b611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90612e90565b60405180910390fd5b505050565b505050565b505050565b6000611f748473ffffffffffffffffffffffffffffffffffffffff166122c4565b156120dd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f9d611345565b8786866040518563ffffffff1660e01b8152600401611fbf9493929190612da0565b602060405180830381600087803b158015611fd957600080fd5b505af192505050801561200a57506040513d601f19601f8201168201806040525081019061200791906127c2565b60015b61208d573d806000811461203a576040519150601f19603f3d011682016040523d82523d6000602084013e61203f565b606091505b50600081511415612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207c90612e90565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120e2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190612fd0565b60405180910390fd5b612163816112d9565b156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90612ed0565b60405180910390fd5b6121af60008383611f49565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121ff91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122c060008383611f4e565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122f390613381565b90600052602060002090601f016020900481019282612315576000855561235c565b82601f1061232e57805160ff191683800117855561235c565b8280016001018555821561235c579182015b8281111561235b578251825591602001919060010190612340565b5b509050612369919061236d565b5090565b5b8082111561238657600081600090555060010161236e565b5090565b600061239d612398846130d0565b6130ab565b905080838252602082019050828560208602820111156123bc57600080fd5b60005b8581101561240657813567ffffffffffffffff8111156123de57600080fd5b8086016123eb8982612534565b855260208501945060208401935050506001810190506123bf565b5050509392505050565b600061242361241e846130fc565b6130ab565b90508281526020810184848401111561243b57600080fd5b61244684828561333f565b509392505050565b600061246161245c8461312d565b6130ab565b90508281526020810184848401111561247957600080fd5b61248484828561333f565b509392505050565b60008135905061249b81613ae8565b92915050565b600082601f8301126124b257600080fd5b81356124c284826020860161238a565b91505092915050565b6000813590506124da81613aff565b92915050565b6000813590506124ef81613b16565b92915050565b60008151905061250481613b16565b92915050565b600082601f83011261251b57600080fd5b813561252b848260208601612410565b91505092915050565b600082601f83011261254557600080fd5b813561255584826020860161244e565b91505092915050565b60008135905061256d81613b2d565b92915050565b60006020828403121561258557600080fd5b60006125938482850161248c565b91505092915050565b600080604083850312156125af57600080fd5b60006125bd8582860161248c565b92505060206125ce8582860161248c565b9150509250929050565b6000806000606084860312156125ed57600080fd5b60006125fb8682870161248c565b935050602061260c8682870161248c565b925050604061261d8682870161255e565b9150509250925092565b6000806000806080858703121561263d57600080fd5b600061264b8782880161248c565b945050602061265c8782880161248c565b935050604061266d8782880161255e565b925050606085013567ffffffffffffffff81111561268a57600080fd5b6126968782880161250a565b91505092959194509250565b600080604083850312156126b557600080fd5b60006126c38582860161248c565b92505060206126d4858286016124cb565b9150509250929050565b600080604083850312156126f157600080fd5b60006126ff8582860161248c565b92505060206127108582860161255e565b9150509250929050565b60008060006060848603121561272f57600080fd5b600084013567ffffffffffffffff81111561274957600080fd5b612755868287016124a1565b935050602084013567ffffffffffffffff81111561277257600080fd5b61277e86828701612534565b925050604061278f8682870161255e565b9150509250925092565b6000602082840312156127ab57600080fd5b60006127b9848285016124e0565b91505092915050565b6000602082840312156127d457600080fd5b60006127e2848285016124f5565b91505092915050565b6000602082840312156127fd57600080fd5b600061280b8482850161255e565b91505092915050565b61281d816132cb565b82525050565b61282c816132dd565b82525050565b600061283d82613173565b6128478185613189565b935061285781856020860161334e565b6128608161351a565b840191505092915050565b60006128768261317e565b612880818561319a565b935061289081856020860161334e565b6128998161351a565b840191505092915050565b60006128af8261317e565b6128b981856131ab565b93506128c981856020860161334e565b80840191505092915050565b600081546128e281613381565b6128ec81866131ab565b9450600182166000811461290757600181146129185761294b565b60ff1983168652818601935061294b565b6129218561315e565b60005b8381101561294357815481890152600182019150602081019050612924565b838801955050505b50505092915050565b600061296160328361319a565b915061296c8261352b565b604082019050919050565b600061298460258361319a565b915061298f8261357a565b604082019050919050565b60006129a7601c8361319a565b91506129b2826135c9565b602082019050919050565b60006129ca60248361319a565b91506129d5826135f2565b604082019050919050565b60006129ed60198361319a565b91506129f882613641565b602082019050919050565b6000612a106063836131ab565b9150612a1b8261366a565b606382019050919050565b6000612a33602c8361319a565b9150612a3e82613705565b604082019050919050565b6000612a56600d836131ab565b9150612a6182613754565b600d82019050919050565b6000612a7960388361319a565b9150612a848261377d565b604082019050919050565b6000612a9c602a8361319a565b9150612aa7826137cc565b604082019050919050565b6000612abf60298361319a565b9150612aca8261381b565b604082019050919050565b6000612ae2602e8361319a565b9150612aed8261386a565b604082019050919050565b6000612b056002836131ab565b9150612b10826138b9565b600282019050919050565b6000612b2860208361319a565b9150612b33826138e2565b602082019050919050565b6000612b4b60318361319a565b9150612b568261390b565b604082019050919050565b6000612b6e602c8361319a565b9150612b798261395a565b604082019050919050565b6000612b91602f8361319a565b9150612b9c826139a9565b604082019050919050565b6000612bb4600a836131ab565b9150612bbf826139f8565b600a82019050919050565b6000612bd760218361319a565b9150612be282613a21565b604082019050919050565b6000612bfa601d836131ab565b9150612c0582613a70565b601d82019050919050565b6000612c1d60318361319a565b9150612c2882613a99565b604082019050919050565b612c3c81613335565b82525050565b6000612c4e82846128a4565b915081905092915050565b6000612c6582856128a4565b9150612c7182846128a4565b91508190509392505050565b6000612c8982876128a4565b9150612c9582866128a4565b9150612ca182856128a4565b9150612cad82846128a4565b915081905095945050505050565b6000612cc782896128d5565b9150612cd382886128a4565b9150612cdf82876128d5565b9150612ceb82866128a4565b9150612cf782856128a4565b9150612d0382846128a4565b9150612d0e82612a49565b9150819050979650505050505050565b6000612d2982612ba7565b9150612d3582856128a4565b9150612d4082612a03565b9150612d4c82846128a4565b9150612d5782612af8565b91508190509392505050565b6000612d6e82612bed565b9150612d7a82846128a4565b915081905092915050565b6000602082019050612d9a6000830184612814565b92915050565b6000608082019050612db56000830187612814565b612dc26020830186612814565b612dcf6040830185612c33565b8181036060830152612de18184612832565b905095945050505050565b6000604082019050612e016000830185612814565b612e0e6020830184612c33565b9392505050565b6000602082019050612e2a6000830184612823565b92915050565b60006020820190508181036000830152612e4a818461286b565b905092915050565b60006060820190508181036000830152612e6c818661286b565b9050612e7b6020830185612c33565b612e886040830184612814565b949350505050565b60006020820190508181036000830152612ea981612954565b9050919050565b60006020820190508181036000830152612ec981612977565b9050919050565b60006020820190508181036000830152612ee98161299a565b9050919050565b60006020820190508181036000830152612f09816129bd565b9050919050565b60006020820190508181036000830152612f29816129e0565b9050919050565b60006020820190508181036000830152612f4981612a26565b9050919050565b60006020820190508181036000830152612f6981612a6c565b9050919050565b60006020820190508181036000830152612f8981612a8f565b9050919050565b60006020820190508181036000830152612fa981612ab2565b9050919050565b60006020820190508181036000830152612fc981612ad5565b9050919050565b60006020820190508181036000830152612fe981612b1b565b9050919050565b6000602082019050818103600083015261300981612b3e565b9050919050565b6000602082019050818103600083015261302981612b61565b9050919050565b6000602082019050818103600083015261304981612b84565b9050919050565b6000602082019050818103600083015261306981612bca565b9050919050565b6000602082019050818103600083015261308981612c10565b9050919050565b60006020820190506130a56000830184612c33565b92915050565b60006130b56130c6565b90506130c182826133b3565b919050565b6000604051905090565b600067ffffffffffffffff8211156130eb576130ea6134eb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613117576131166134eb565b5b6131208261351a565b9050602081019050919050565b600067ffffffffffffffff821115613148576131476134eb565b5b6131518261351a565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006131c182613335565b91506131cc83613335565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132015761320061345e565b5b828201905092915050565b600061321782613335565b915061322283613335565b9250826132325761323161348d565b5b828204905092915050565b600061324882613335565b915061325383613335565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561328c5761328b61345e565b5b828202905092915050565b60006132a282613335565b91506132ad83613335565b9250828210156132c0576132bf61345e565b5b828203905092915050565b60006132d682613315565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561336c578082015181840152602081019050613351565b8381111561337b576000848401525b50505050565b6000600282049050600182168061339957607f821691505b602082108114156133ad576133ac6134bc565b5b50919050565b6133bc8261351a565b810181811067ffffffffffffffff821117156133db576133da6134eb565b5b80604052505050565b60006133ef82613335565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134225761342161345e565b5b600182019050919050565b600061343882613335565b915061344383613335565b9250826134535761345261348d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613af1816132cb565b8114613afc57600080fd5b50565b613b08816132dd565b8114613b1357600080fd5b50565b613b1f816132e9565b8114613b2a57600080fd5b50565b613b3681613335565b8114613b4157600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208835271af283586e8475ff0dbf4b9d6bb622983065d1b39b658693cf8897e61664736f6c634300080400333b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20323470783b207d3c2f7374796c653e3c726563742077696474683d273130302527206865696768743d2731303025272066696c6c3d27626c61636b27202f3e3c7465787420783d273530252720793d273530252720636c6173733d27626173652720646f6d696e616e742d626173656c696e653d276d6964646c652720746578742d616e63686f723d276d6964646c65273e3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f73766727207072657365727665417370656374526174696f3d27784d696e594d696e206d656574272076696577426f783d273020302033353020333530273e3c7374796c653e2e62617365207b2066696c6c3a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612799565b61031c565b6040516101219190612e15565b60405180910390f35b6101326103fe565b60405161013f9190612e30565b60405180910390f35b610162600480360381019061015d91906127eb565b610490565b60405161016f9190612d85565b60405180910390f35b610192600480360381019061018d91906126de565b610515565b005b61019c61062d565b005b6101b860048036038101906101b391906125d8565b610c6a565b005b6101d460048036038101906101cf91906125d8565b610cca565b005b6101f060048036038101906101eb91906127eb565b610cea565b6040516101fd9190612d85565b60405180910390f35b610220600480360381019061021b9190612573565b610d9c565b60405161022d9190613090565b60405180910390f35b61023e610e54565b60405161024b9190612e30565b60405180910390f35b61026e6004803603810190610269919061271a565b610ee6565b60405161027b9190612e30565b60405180910390f35b61029e600480360381019061029991906126a2565b610f78565b005b6102ba60048036038101906102b59190612627565b610f8e565b005b6102d660048036038101906102d191906127eb565b610ff0565b6040516102e39190612e30565b60405180910390f35b6103066004803603810190610301919061259c565b611142565b6040516103139190612e15565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f68261126f565b5b9050919050565b60606000805461040d90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461043990613381565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112d9565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190613010565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890613050565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b0611345565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d9611345565b611142565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612f50565b60405180910390fd5b610628838361134d565b505050565b60006106396007611406565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e57838290600052602060002001805461068190613381565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad90613381565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ee6565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b8282101561082357838290600052602060002001805461079690613381565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290613381565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ee6565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab90613381565b80601f01602080910402602001604051908101604052809291908181526020018280546108d790613381565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ee6565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c090613381565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec90613381565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ee6565b9050600084848484604051602001610aa89493929190612c7d565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612cbb565b60405160208183030381529060405290506000610b1d83610af884611414565b604051602001610b09929190612d1e565b604051602081830303815290604052611414565b9050600081604051602001610b329190612d63565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d00000000000000000000008152506111d6565b610b8a816111d6565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a00000000000000000000008152506111d6565b610bd2338a6115d2565b610bdc89826115f0565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a33611664565b610c266007611703565b7febb98688741ffa4c7589bf325de30cf7becb63de567842e1ccdb6cb949fdc82c338a604051610c57929190612dec565b60405180910390a1505050505050505050565b610c7b610c75611345565b82611719565b610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613070565b60405180910390fd5b610cc58383836117f7565b505050565b610ce583838360405180602001604052806000815250610f8e565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90612f90565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612f70565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e6390613381565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8f90613381565b8015610edc5780601f10610eb157610100808354040283529160200191610edc565b820191906000526020600020905b815481529060010190602001808311610ebf57829003601f168201915b5050505050905090565b60606000610f1c84610ef785611a5e565b604051602001610f08929190612c59565b604051602081830303815290604052611c0b565b9050845181610f2b919061342d565b9050848181518110610f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f8a610f83611345565b8383611c3e565b5050565b610f9f610f99611345565b83611719565b610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590613070565b60405180910390fd5b610fea84848484611dab565b50505050565b6060610ffb826112d9565b61103a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103190612ff0565b60405180910390fd5b600060066000848152602001908152602001600020805461105a90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461108690613381565b80156110d35780601f106110a8576101008083540402835291602001916110d3565b820191906000526020600020905b8154815290600101906020018083116110b657829003601f168201915b5050505050905060006110e4611e07565b90506000815114156110fa57819250505061113d565b60008251111561112f578082604051602001611117929190612c59565b6040516020818303038152906040529250505061113d565b61113884611e1e565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61126c816040516024016111ea9190612e30565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166113c083610cea565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6060600082519050600081141561143d57604051806020016040528060008152509150506115cd565b6000600360028361144e91906131b6565b611458919061320c565b6004611464919061323d565b9050600060208261147591906131b6565b67ffffffffffffffff8111156114b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114e65781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613b45604091399050600181016020830160005b8681101561158a5760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050611511565b5060038606600181146115a457600281146115b4576115bf565b613d3d60f01b60028303526115bf565b603d60f81b60018303525b508484525050819450505050505b919050565b6115ec828260405180602001604052806000815250611eee565b5050565b6115f9826112d9565b611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612fb0565b60405180910390fd5b8060066000848152602001908152602001600020908051906020019061165f9291906122e7565b505050565b6116fe83838360405160240161167c93929190612e52565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b505050565b6001816000016000828254019250508190555050565b6000611724826112d9565b611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a90612f30565b60405180910390fd5b600061176e83610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117dd57508373ffffffffffffffffffffffffffffffffffffffff166117c584610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117ee57506117ed8185611142565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661181782610cea565b73ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490612eb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490612ef0565b60405180910390fd5b6118e8838383611f49565b6118f360008261134d565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119439190613297565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199a91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a59838383611f4e565b505050565b60606000821415611aa6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c06565b600082905060005b60008214611ad8578080611ac1906133e4565b915050600a82611ad1919061320c565b9150611aae565b60008167ffffffffffffffff811115611b1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b4c5781602001600182028036833780820191505090505b5090505b60008514611bff57600182611b659190613297565b9150600a85611b74919061342d565b6030611b8091906131b6565b60f81b818381518110611bbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bf8919061320c565b9450611b50565b8093505050505b919050565b600081604051602001611c1e9190612c42565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490612f10565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d9e9190612e15565b60405180910390a3505050565b611db68484846117f7565b611dc284848484611f53565b611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df890612e90565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611e29826112d9565b611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613030565b60405180910390fd5b6000611e72611e07565b90506000815111611e925760405180602001604052806000815250611ebd565b80611e9c84611a5e565b604051602001611ead929190612c59565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ef883836120ea565b611f056000848484611f53565b611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90612e90565b60405180910390fd5b505050565b505050565b505050565b6000611f748473ffffffffffffffffffffffffffffffffffffffff166122c4565b156120dd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f9d611345565b8786866040518563ffffffff1660e01b8152600401611fbf9493929190612da0565b602060405180830381600087803b158015611fd957600080fd5b505af192505050801561200a57506040513d601f19601f8201168201806040525081019061200791906127c2565b60015b61208d573d806000811461203a576040519150601f19603f3d011682016040523d82523d6000602084013e61203f565b606091505b50600081511415612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207c90612e90565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120e2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190612fd0565b60405180910390fd5b612163816112d9565b156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90612ed0565b60405180910390fd5b6121af60008383611f49565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121ff91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122c060008383611f4e565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122f390613381565b90600052602060002090601f016020900481019282612315576000855561235c565b82601f1061232e57805160ff191683800117855561235c565b8280016001018555821561235c579182015b8281111561235b578251825591602001919060010190612340565b5b509050612369919061236d565b5090565b5b8082111561238657600081600090555060010161236e565b5090565b600061239d612398846130d0565b6130ab565b905080838252602082019050828560208602820111156123bc57600080fd5b60005b8581101561240657813567ffffffffffffffff8111156123de57600080fd5b8086016123eb8982612534565b855260208501945060208401935050506001810190506123bf565b5050509392505050565b600061242361241e846130fc565b6130ab565b90508281526020810184848401111561243b57600080fd5b61244684828561333f565b509392505050565b600061246161245c8461312d565b6130ab565b90508281526020810184848401111561247957600080fd5b61248484828561333f565b509392505050565b60008135905061249b81613ae8565b92915050565b600082601f8301126124b257600080fd5b81356124c284826020860161238a565b91505092915050565b6000813590506124da81613aff565b92915050565b6000813590506124ef81613b16565b92915050565b60008151905061250481613b16565b92915050565b600082601f83011261251b57600080fd5b813561252b848260208601612410565b91505092915050565b600082601f83011261254557600080fd5b813561255584826020860161244e565b91505092915050565b60008135905061256d81613b2d565b92915050565b60006020828403121561258557600080fd5b60006125938482850161248c565b91505092915050565b600080604083850312156125af57600080fd5b60006125bd8582860161248c565b92505060206125ce8582860161248c565b9150509250929050565b6000806000606084860312156125ed57600080fd5b60006125fb8682870161248c565b935050602061260c8682870161248c565b925050604061261d8682870161255e565b9150509250925092565b6000806000806080858703121561263d57600080fd5b600061264b8782880161248c565b945050602061265c8782880161248c565b935050604061266d8782880161255e565b925050606085013567ffffffffffffffff81111561268a57600080fd5b6126968782880161250a565b91505092959194509250565b600080604083850312156126b557600080fd5b60006126c38582860161248c565b92505060206126d4858286016124cb565b9150509250929050565b600080604083850312156126f157600080fd5b60006126ff8582860161248c565b92505060206127108582860161255e565b9150509250929050565b60008060006060848603121561272f57600080fd5b600084013567ffffffffffffffff81111561274957600080fd5b612755868287016124a1565b935050602084013567ffffffffffffffff81111561277257600080fd5b61277e86828701612534565b925050604061278f8682870161255e565b9150509250925092565b6000602082840312156127ab57600080fd5b60006127b9848285016124e0565b91505092915050565b6000602082840312156127d457600080fd5b60006127e2848285016124f5565b91505092915050565b6000602082840312156127fd57600080fd5b600061280b8482850161255e565b91505092915050565b61281d816132cb565b82525050565b61282c816132dd565b82525050565b600061283d82613173565b6128478185613189565b935061285781856020860161334e565b6128608161351a565b840191505092915050565b60006128768261317e565b612880818561319a565b935061289081856020860161334e565b6128998161351a565b840191505092915050565b60006128af8261317e565b6128b981856131ab565b93506128c981856020860161334e565b80840191505092915050565b600081546128e281613381565b6128ec81866131ab565b9450600182166000811461290757600181146129185761294b565b60ff1983168652818601935061294b565b6129218561315e565b60005b8381101561294357815481890152600182019150602081019050612924565b838801955050505b50505092915050565b600061296160328361319a565b915061296c8261352b565b604082019050919050565b600061298460258361319a565b915061298f8261357a565b604082019050919050565b60006129a7601c8361319a565b91506129b2826135c9565b602082019050919050565b60006129ca60248361319a565b91506129d5826135f2565b604082019050919050565b60006129ed60198361319a565b91506129f882613641565b602082019050919050565b6000612a106063836131ab565b9150612a1b8261366a565b606382019050919050565b6000612a33602c8361319a565b9150612a3e82613705565b604082019050919050565b6000612a56600d836131ab565b9150612a6182613754565b600d82019050919050565b6000612a7960388361319a565b9150612a848261377d565b604082019050919050565b6000612a9c602a8361319a565b9150612aa7826137cc565b604082019050919050565b6000612abf60298361319a565b9150612aca8261381b565b604082019050919050565b6000612ae2602e8361319a565b9150612aed8261386a565b604082019050919050565b6000612b056002836131ab565b9150612b10826138b9565b600282019050919050565b6000612b2860208361319a565b9150612b33826138e2565b602082019050919050565b6000612b4b60318361319a565b9150612b568261390b565b604082019050919050565b6000612b6e602c8361319a565b9150612b798261395a565b604082019050919050565b6000612b91602f8361319a565b9150612b9c826139a9565b604082019050919050565b6000612bb4600a836131ab565b9150612bbf826139f8565b600a82019050919050565b6000612bd760218361319a565b9150612be282613a21565b604082019050919050565b6000612bfa601d836131ab565b9150612c0582613a70565b601d82019050919050565b6000612c1d60318361319a565b9150612c2882613a99565b604082019050919050565b612c3c81613335565b82525050565b6000612c4e82846128a4565b915081905092915050565b6000612c6582856128a4565b9150612c7182846128a4565b91508190509392505050565b6000612c8982876128a4565b9150612c9582866128a4565b9150612ca182856128a4565b9150612cad82846128a4565b915081905095945050505050565b6000612cc782896128d5565b9150612cd382886128a4565b9150612cdf82876128d5565b9150612ceb82866128a4565b9150612cf782856128a4565b9150612d0382846128a4565b9150612d0e82612a49565b9150819050979650505050505050565b6000612d2982612ba7565b9150612d3582856128a4565b9150612d4082612a03565b9150612d4c82846128a4565b9150612d5782612af8565b91508190509392505050565b6000612d6e82612bed565b9150612d7a82846128a4565b915081905092915050565b6000602082019050612d9a6000830184612814565b92915050565b6000608082019050612db56000830187612814565b612dc26020830186612814565b612dcf6040830185612c33565b8181036060830152612de18184612832565b905095945050505050565b6000604082019050612e016000830185612814565b612e0e6020830184612c33565b9392505050565b6000602082019050612e2a6000830184612823565b92915050565b60006020820190508181036000830152612e4a818461286b565b905092915050565b60006060820190508181036000830152612e6c818661286b565b9050612e7b6020830185612c33565b612e886040830184612814565b949350505050565b60006020820190508181036000830152612ea981612954565b9050919050565b60006020820190508181036000830152612ec981612977565b9050919050565b60006020820190508181036000830152612ee98161299a565b9050919050565b60006020820190508181036000830152612f09816129bd565b9050919050565b60006020820190508181036000830152612f29816129e0565b9050919050565b60006020820190508181036000830152612f4981612a26565b9050919050565b60006020820190508181036000830152612f6981612a6c565b9050919050565b60006020820190508181036000830152612f8981612a8f565b9050919050565b60006020820190508181036000830152612fa981612ab2565b9050919050565b60006020820190508181036000830152612fc981612ad5565b9050919050565b60006020820190508181036000830152612fe981612b1b565b9050919050565b6000602082019050818103600083015261300981612b3e565b9050919050565b6000602082019050818103600083015261302981612b61565b9050919050565b6000602082019050818103600083015261304981612b84565b9050919050565b6000602082019050818103600083015261306981612bca565b9050919050565b6000602082019050818103600083015261308981612c10565b9050919050565b60006020820190506130a56000830184612c33565b92915050565b60006130b56130c6565b90506130c182826133b3565b919050565b6000604051905090565b600067ffffffffffffffff8211156130eb576130ea6134eb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613117576131166134eb565b5b6131208261351a565b9050602081019050919050565b600067ffffffffffffffff821115613148576131476134eb565b5b6131518261351a565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006131c182613335565b91506131cc83613335565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132015761320061345e565b5b828201905092915050565b600061321782613335565b915061322283613335565b9250826132325761323161348d565b5b828204905092915050565b600061324882613335565b915061325383613335565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561328c5761328b61345e565b5b828202905092915050565b60006132a282613335565b91506132ad83613335565b9250828210156132c0576132bf61345e565b5b828203905092915050565b60006132d682613315565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561336c578082015181840152602081019050613351565b8381111561337b576000848401525b50505050565b6000600282049050600182168061339957607f821691505b602082108114156133ad576133ac6134bc565b5b50919050565b6133bc8261351a565b810181811067ffffffffffffffff821117156133db576133da6134eb565b5b80604052505050565b60006133ef82613335565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134225761342161345e565b5b600182019050919050565b600061343882613335565b915061344383613335565b9250826134535761345261348d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613af1816132cb565b8114613afc57600080fd5b50565b613b08816132dd565b8114613b1357600080fd5b50565b613b1f816132e9565b8114613b2a57600080fd5b50565b613b3681613335565b8114613b4157600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208835271af283586e8475ff0dbf4b9d6bb622983065d1b39b658693cf8897e61664736f6c63430008040033", "linkReferences": {}, "deployedLinkReferences": {} }