ETH Price: $3,459.28 (+2.10%)
Gas: 9 Gwei

Token

Creepy Little Ducks (CLD)
 

Overview

Max Total Supply

0 CLD

Holders

207

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
icemastert.eth
Balance
0 CLD
0x99903f6236194935a61084d140986072d4d003a7
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CreepyDucks

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 15 : creepyduck.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/PullPayment.sol";

contract CreepyDucks is ERC721, Ownable, PullPayment {
 mapping(address => bool) private minters;
 string public baseTokenURI;
 uint256 public constant TOTAL_SUPPLY = 333;
 using Counters for Counters.Counter;
 Counters.Counter private currentTokenId;
 
 constructor() ERC721("Creepy Little Ducks", "CLD") {
 baseTokenURI = "https://bafybeic6lxqeii55d7rrf377ugys6ntlginx3ewbjhoafjttstrulxcn7q.ipfs.dweb.link/metadata/";
 minters[0xda94065C938f03789f2e70e1d0b40545e505547B]=true;
 minters[0x2Ae4c4aa5075f3c8DfA03E922d0C6E04F43b59A1]=true;
 minters[0x83eF2337b624dE4C7819B0026000969ba31ec0C7]=true;
 minters[0x4792798A6886E5F5624917c68d66E7399708541a]=true;
 minters[0x9fbC39cc1D420BE3C996Df34Ed3D1971c09600C7]=true;
 minters[0x9a9fa55e38C481d747B0D12e4245d2937EAC33f5]=true;
 minters[0x70a730dEb5360D033253eDd70Eed4b8fa3593D41]=true;
 minters[0xBa666cac76449Cc03A65579686b1CeeF1E567252]=true;
 minters[0xD62E2d0D9558a9d09baB2E432D5DBC7De5EDFfA8]=true;
 minters[0x5C8934135f1139F16750D9a4F676F3e5f44b9fd4]=true;
 minters[0xc90D62B8DAA813FF374EdD306288d4090B94848F]=true;
 minters[0x70cf1e5F9044C51e79911D49b15c6017B91805Dd]=true;
 minters[0x22B66D07096637A518Fb150adE0CBA1d9923Aa5B]=true;
 minters[0xB135819Cf0A43CefBD225EA3E2ca731B2008abA4]=true;
 minters[0xb35e59E8D4F185CbE35c02769B77368d236240Bc]=true;
 minters[0x6F8B0120F20db39bA7f60623046578a7dd3A704B]=true;
 minters[0x5aBCbF7B26C3281ee0DB5480c1fdaBAcd34aAB89]=true;
 minters[0x90186c9756847fC41Ec4655024379dD20875A2A1]=true;
 minters[0x9ce40B4B352Fb17ceC43B867612aFeD2Cfc7ef35]=true;
 minters[0xD4a67d7b32286B431102DD7b90dcDA5283792f66]=true;
 minters[0x6884a95c408d375107726ed13DDE4D60709c3ca1]=true;
 minters[0x6ef3a33e0a5FEb0354ba42c277C36d49b0abAa7E]=true;
 minters[0xCf9650F39d6d8637AF19f0A7d355fae25484cace]=true;
 minters[0x8392f31F7Ec7e52BE4Fd924d05Fc6D23D70BBDaF]=true;
 minters[0xb138c1628B390bDd7CE1774BfDB247724C709a33]=true;
 minters[0x2D0B3C64a50fcaD7Bf1e9ef8Cc83145D4a9CCFe9]=true;
 minters[0x0252489124C40908c36A2AFA450f48195f44a779]=true;
 minters[0xdd66006Ef778682089bE5FeDe192Ce6fb465dfF4]=true;
 minters[0x8Bd09d1eA65598bb6d8058f434a70643a91dF627]=true;
 minters[0x5BD23E817FbE1a22b5B98430cf0cA328AaDaF406]=true;
 minters[0x016EDd68735c242C0473edbaBBE61c54a08B661F]=true;
 minters[0x56c0bA46B9Fb21a331A92bCcB57c25bdCA630C8b]=true;
 minters[0xFfeDbffd9a1383Da5F5803F5bC92AE55f9711EEe]=true;
 minters[0x28F9B6b0beb0F42145d21FA5533b459741ab96D2]=true;
 minters[0x81A4D95cddAac08b83B7a02a187519BAeb88C68F]=true;
 minters[0x1FA3Cec431ac5908cd8Ce3afb4B8bca2346a2B50]=true;
 minters[0xc540033F826677A2443ca8a52Ed7B7B50EA227F1]=true;
 minters[0x0C850404012F2D91f2cc534242d9599991ae86C7]=true;
 minters[0xF9832991f521d163E81f8A000ffA075A0132AFb4]=true;
 minters[0x607d48F7476484AB6847AC6804BF21137b6c84ba]=true;
 minters[0xCa716268D89362053e637891f50084E1184e7d11]=true;
 minters[0x54Bcf4b079fCe4d95677c92A94EAa76cFCeBC15B]=true;
 minters[0x97896f62ea8Ee7Ed120A669db70B41F3A068BaB2]=true;
 minters[0xD70e40BCC3Fb42f776109181bb17400A5C9c6ae9]=true;
 minters[0xb170bA9dDB13490DED439bC5712EC9822e05eFb2]=true;
 minters[0xC1AfB128b3EFc6D0fA8068CE608EcEC3Fdcf5Bbf]=true;
 minters[0xC5B68F5861368873557cF084928560e31AC7386d]=true;
 minters[0xEfB98bE97aC8702205E16CD538380f5c76D5630b]=true;
 minters[0x8250F597B4aFCd1AACE5fCDB7694b353218Af5D2]=true;
 minters[0xC9528c64cD847230a957AaA755F9d1264aC39cf8]=true;
 minters[0x87490b1112F800881BaC2Ec570668c72C43a7F64]=true;
 minters[0xC9A866FA022A244e3fe3389AA39F381b9689bA33]=true;
 minters[0x3946A7f14A08038Cf79290Dda86f8912f6E2FD2b]=true;
 minters[0x18A80Ddd8448198a56197d806D66e6FAbcf8971f]=true;
 minters[0xb47C91f55896fe899393f9A7ecFD6A4426bb0AbF]=true;
 minters[0xeB547dA811ea10207fa591Cdf95331F282501D5E]=true;
 minters[0x55535656deDd3fe8B7d9ca01873a8e5Fb471bbc0]=true;
 minters[0xe3130a7b9fDF7CFBE78501050EE9B4daC078C889]=true;
 minters[0x8B7a63E00CA07a5FDB586E1EE64B4C5Dc4932878]=true;
 minters[0xCC1cE6B57a8DEbb3aB7cE6C1174A4EfFddf06b82]=true;
 minters[0x275D17f14Afe6E38f229397ba80ee5563f67a7DF]=true;
 minters[0x750986aBC383a87500581C18834E2569A7087e85]=true;
 minters[0x4CEb57Bbf10e50c6d866b950d95d36Edc9934E86]=true;
 minters[0xD22BF9544aC39729f820F3d517f1d65b4fF2f54c]=true;
 minters[0xE8C3d6ADa9756F2E2DddA792A304295286611ec6]=true;
 minters[0xb20C9173530B0afcbCB9cd515F4c69C4BE8f60dF]=true;
 minters[0x724c05D323Ef747465E68F621A2B10Edd9a84463]=true;
 minters[0x7FEC361e4618F5b2dea90b21074fFf363Ca43417]=true;
 minters[0xbc35D4d1901b351B09Cb7c5b41cF087F288fC96a]=true;
 minters[0x9f272bbdd0F021921Aa9283f3caca37c6FF55a60]=true;
 minters[0x9D7d4301000984b5655c83fC070708c38f0B0521]=true;
 minters[0x50A2ddAddEF08434c2979AD110302A698009Eff9]=true;
 minters[0x8b3bC3f8Aac484A816bb7d206c368a6031ea7967]=true;
 minters[0x0a639c2FB93F5aB5e8ad9d4cD7e74279667aFc84]=true;
 minters[0xa5019793EddaED84A5C3E51D3D1AEBf4CA9D2710]=true;
 minters[0x2a65773F5606C00cAB7caBB400F4C0fFe9d9bD12]=true;
 minters[0xf3Fa5B4265076657fd3fC409D5A1A840f5F56Ed0]=true;
 minters[0xF0BdE0EE7a45f0241bDA74397a6eCd1bfc10D524]=true;
 minters[0x0C803DEE8733Cd11d3d30B07e61AaC1AcE5a962F]=true;
 minters[0xC911520Cb294a1eA9ca12eC3d2D1E32e7AE1a468]=true;
 minters[0xEA99a428D69aa84aD9a20D782Cde4a1e6c3E9017]=true;
 minters[0x29e8B46428d3B140aeC7273260666dbfE956136B]=true;
 minters[0xa5A9606691D60510be735b4f85fAa1b1C8acDb6f]=true;
 minters[0xe3762A03B75BF15805262603B7062ab206bD412a]=true;
 minters[0x10c5771C0bf902D1772Dd286eA42d33Bf3949bdd]=true;
 minters[0xf2243DCeBC4d0e4A6A82e87677B3A85f997b809f]=true;
 minters[0xfE7F9613778D3ac6E088A649A2d2739614AA6D0a]=true;
 minters[0xF2fAC2b95856614D7D1e6215f43c3aBbf75Ffa1c]=true;
 minters[0x2F22E44C29485bCa2A7dBE0f9432fA78C8d0c9dC]=true;
 minters[0x5e79F393201F72618Fce91238dD1C17964c06400]=true;
 minters[0x4fff41b2777D33FD600a228A2b10c56e4bC5Ad28]=true;
 minters[0xc09a4b43882B10C28eEeB223269fFDC6a99fae91]=true;
 minters[0x087CBAdf474d6248Ade1B06e3cC938cB34510F94]=true;
 minters[0x3A183EC6844e4A6256F03F8A787D5FDcC41c5BD4]=true;
 minters[0x73102B7F49638C5Efb70b0f37191C4786E411efF]=true;
 minters[0xEc820dd77Db8c532762aDe5Ec9789A906F8fF9D9]=true;
 minters[0x1a00320BEd2cb1C2C375533108D2645001F871d3]=true;
 minters[0x6435364Cb421491d63c1d8ec88D4b33B356e476C]=true;
 minters[0xd68F933ecd0d285135d100dDA8D528A5a4D3C451]=true;
 minters[0xAfa28fD74c9a84d453D633cec5e543F49B0F3285]=true;
 minters[0x6b5aE07a04Efe314cEA21Bc9D815A908146F1D1D]=true;
 minters[0x6e206C3631511B6880C45Ba9a0a28C89d1BDdb93]=true;
 minters[0x15e6b13F418c940955950B0c960793dCE1289710]=true;
 minters[0x6fE3C571E89FC2018699261437943cFcfB8e01B9]=true;
 minters[0x42359891E9213783d0de76411D26885984Df60c4]=true;
 minters[0xB41B450cE67Bc298868A8aA9D85aA5c69619d38D]=true;
 minters[0x87F8a386eB19BE282192f14809BeFa3D6760A329]=true;
 minters[0x78763FbE89C48bC4eCE961FF4097896eC2a4B3b6]=true;
 minters[0xf4F5f08E817223C6A1FEa6414dE1a8A6B7Dbac30]=true;
 minters[0x19D7401bd6Dc02e10299a747899B9d42a88A1159]=true;
 minters[0xe3dba654C754F50759556C97c057490c9A762188]=true;
 minters[0x4FDF3264926c08f0E4D905Eb258B60725593aF44]=true;
 minters[0x9B1d57fcc79f2f6B8247b992E68D5881A16AdF2d]=true;
 minters[0xc652A30974cf298B16B87d1d7Ac63645ff07fA82]=true;
 minters[0xa0545e076122f52A7e2cc672f9fb9403EB310ABf]=true;
 minters[0x7b3eE1789eBD069F9FdbD4F2570087A4C1BbeF9A]=true;
 minters[0xA7564348F72cFF395EecE64bd28Abfa10e014c4B]=true;
 minters[0x32F14803485175d0D5DE4BF7C1495A0734C9Aa65]=true;
 minters[0x1327F35216e3a6785a2943a70de6B159F28809D3]=true;
 minters[0xD99836319A334E919730345660cD2715aAC487e1]=true;
 minters[0xc00E4580E9D5C8668F61C9094C9D2f92b631BdE6]=true;
 minters[0x35C1147AE493d82f3b07450Eb174374214bCF4cc]=true;
 minters[0x1171646580c73a93a85f9d4F8ACb62Df1A3aF296]=true;
 minters[0x506Cc2f31D7aC86F60fD015790c31cbd93CBa840]=true;
 minters[0xB5EB92B3D208f0d9c11Ac6FB8853a0AbADD844b3]=true;
 minters[0xcD9E0fE98bfe8D06B52fF93aBF12b2a63FEd2bc8]=true;
 minters[0xee03987263847e3Ea9D471F778FB0D9E097b4a90]=true;
 minters[0x7f04c4387423c5460f0a797b79B7De2A4769567A]=true;
 minters[0x06D74321E0876E57310c38aACa6915C1e86EF71d]=true;
 minters[0xAaE4B7908D0de7f2522746Cf6Bb8b6E118b0E630]=true;
 minters[0x10a74D536d07baab67B4537D59a943205861EC31]=true;
 minters[0x32C8c81D8b096857376D66B3894a4cF4d8C4188E]=true;
 minters[0xc6386A71D11198bEE4153B3547126cCfc6f30ac9]=true;
 minters[0x96b8Bcc93c481c065006cdE99f8B5e3d78b19bAA]=true;
 minters[0x4224dB12C4bf340561EC56eEDAa7be937F070bcD]=true;
 minters[0xEAd215514e9A0d72276AF668156cF74bFe574495]=true;
 minters[0x0ee38C6615E34Ee9aF2ac305BdD29E259a6e9f2D]=true;
 minters[0xA30024Af5B789997535dF14bE2253C4557e6Cf23]=true;
 minters[0x3041138595603149b956804cE534A3034F35c6Aa]=true;
 minters[0xC4173Ac2A95f1ba774051774Ec2614bA83fE76c7]=true;
 minters[0x49Aa097eDDdb55Ef0503896974a447B5662874A5]=true;
 minters[0x09d76B985204A3B906a1931B0A58C9D5435283A5]=true;
 minters[0xe6C1DeF4d9913c7E280257f999E0eAF992117675]=true;
 minters[0x2356BB0204b76F61e21e305a5507eA753f3A80DC]=true;
 minters[0x3Ce622d2CCdfE0ce66A9511EEeD4d4BBf26cD8EA]=true;
 minters[0x6c1f1a4C4F79c3bf05AB66c2794fd06cfFB3D60C]=true;
 minters[0x64bB252eeA3BC05685194E6C2C1c1956a19cf38f]=true;
 minters[0x8B98C4F2BB9281D1DD55F0d421E023BEFbc0dA15]=true;
 minters[0xAf60844B7619FA7826C2EA1CCC0c6285bEB33634]=true;
 minters[0xf5f8ec465f112f8061cE958589Ca8602e14c28ea]=true;
 minters[0xB340d9F239D101d8791ebe3ADd34675EBc184941]=true;
 minters[0xe19843E8eC8Ee6922731801Cba48E2dE6813963A]=true;
 minters[0x0815106E8f0Ffb800Ed09116615E8DfAf40593c7]=true;
 minters[0xBD78811C1B92984a9c804Ea0689FD7ac33E6f1b0]=true;
 minters[0x6DccD033c4C2453d6916e49bae05D486710ee0bA]=true;
 minters[0xe8Af2757C5dB9B318702E98F2fE3fc1584899669]=true;
 minters[0xF63dEEd82968776994ea7871460c1E5A3237c64F]=true;
 minters[0xe384715d363942EFbf200b1038220d76bE6B2FC8]=true;
 minters[0x4aDD3674266Bbf77F7F1158f19beB6cf18a1E8ce]=true;
 minters[0x709E7eFf5d8B4B7A4Ea6d4739457571cC70e02bb]=true;
 minters[0xcC956E90F64cae90ADbA4b1c632f83F474232577]=true;
 minters[0x8C2E4caCef6c60f8C250ed4e5FD24D1896Ac3f36]=true;
 minters[0xe340Cd31A6eCF2A39fcaCA94FFeF4461BBB41512]=true;
 minters[0x3D687efD871F9224Fc6134FEd80c331454AD63c9]=true;
 minters[0x902A3719c3b39550791707F47a5E89c5Bc405efD]=true;
 minters[0xE7235BF158EE41876c64690265b844a9548796fe]=true;
 minters[0x51B926066e3B949Eb7595C1Eab2724329E059a33]=true;
 minters[0x9752909568437f79Adc3f3807604a08698D7783d]=true;
 minters[0x4b2cBEe9D411a3dc4B8fBBF37B71E0543fAb402f]=true;
 minters[0x50c4577f1E29d6A2d6bFd8B1E2c6289d6b3D8477]=true;
 minters[0x0065b323795D54081d7dA1128018EFA87fE2f8B1]=true;
 minters[0x7B984Efb3aCa7b8fA60DfC962426FAEff44c7DC4]=true;
 minters[0x555fab084Bd0ccf53370a02b1B637DbBBacDDB8F]=true;
 minters[0x55043BB22AD9D7074a2EB6f6c6732331d9fDd171]=true;
 minters[0x8f05cF5A47C67ADd9c9e6074eAd0D7a70895bd2D]=true;
 minters[0x40176015724d3022C11df096e4B13bcF547E3015]=true;
 minters[0xaE412f025Cdf3E8F4bbc69Cc19E60EB0Cc8Bb01F]=true;
 minters[0x4206a7DE172d0e101020F52496A226761d8c5c4C]=true;
 minters[0xED1baecBe083f8449918A304530c9894CCA2c2FA]=true;
 minters[0x59777b1c5fB530810E3b0f7Dcef7b0323b849B2f]=true;
 minters[0xE0d8E73Ed9dF6e2EacFBFfCb9F7a126e18d51DDD]=true;
 minters[0x5dda76FA25997eDd8722927c422e0807DDaB91FF]=true;
 minters[0xBDBb4093390A5d65F4E4db234d42CF9cA21CcD2e]=true;
 minters[0xe24C9e8DB8BC14236811e253945f262cE402ea3A]=true;
 minters[0x1380902B5E7ce383C5a911e3Bc06ea5b6b1CAb41]=true;
 minters[0xAED970Dcd7BDF7966a2a660aC6d78B79F8AE0FdE]=true;
 minters[0xf9946523c93D277Fd64f98cDba1aD344177C6467]=true;
 minters[0x41C20c11BF225c57Cf23f542adfb85A7474d41c3]=true;
 minters[0xcE2a6D6c3cc6d038F955f64673E1922756DAE4DD]=true;
 minters[0xc68d994c192E1FcDcf281f9579C3337d9B618775]=true;
 minters[0xcaDd5D28880c36099ce760FDC083a6F0dF003bb3]=true;
 minters[0xd76907f41048F30367c9035C957f269fA17093BB]=true;
 minters[0xc9405687a9e1165791ae70178a948159D52895e4]=true;
 minters[0x089A58e60355D0bba99306C650Fb7Bf96582B2EB]=true;
 minters[0x363968DD44b294c8430b28D5f98f318614C95a1D]=true;
 minters[0x9F3e77Cb89Df964003053aa5B438E5697C77F4F9]=true;
 minters[0x4E775d7e73290cDe921b6f8e925A9a90BBc4b3B4]=true;
 minters[0xFC11E0eA39b41b39455AA6E9BA1Ebc0dFD48Db6B]=true;
 minters[0x5ca323d70A71d96eCe9ECb601B7F21C18f3E28e7]=true;
 minters[0x2f410a1bB25912b159726Ba52a18139E0fE8daE7]=true;
 minters[0x4CB35Baaa6FE5dec74BfB02A82c653B60aa8042E]=true;
 minters[0xDdB58D168aE908a6d072863C035164A69F59B26F]=true;
 minters[0xFe1B9DF4e601Ef59B0b9bB9Ae0B8D8cf0D1E923d]=true;
 minters[0x1C684D63202B3e6A76043e3a70DC2C2eC78B5355]=true;
 minters[0xe5eDa1eabfC23075D010927bd0111E8E36C33Def]=true;
 minters[0x68FBcfcD51C365831a3ca9B7152cd78c585332e1]=true;
 minters[0xC98bc4E02207d7dDD39D3CfBe2D5b87393B30CF8]=true;
 minters[0x5cAd93D9E52b1c1A138E19552Bd9571F015EbA45]=true;
 minters[0xe65a43c50de364B5eC88856D439357dF52552db3]=true;
 minters[0x0EcD499e4b8022CC4F6e44599f5B4b92091d8fB7]=true;
 minters[0x1d98E614Af33103Db041C4E6f1BB7B8b80B365c7]=true;
 minters[0x64ff8A32bd2b2746ed2A42Ce46eb1Bd74C59f70C]=true;
 minters[0x40E45F12693CEdA54FdC4009464eA593030f8999]=true;
 minters[0x796965F6e05a00E8E497B4CF6B93ec2EA603C842]=true;
 minters[0x44938e22CDFc90e5Ab5e272E57217f42c19181C0]=true;
 minters[0x84269D3cF9C8006f1b6f8EE396B6026b353dcE8C]=true;
 minters[0x874932ac148ec87a2114Df0dbbAec0Ad8608acCd]=true;
 minters[0x9DB81470546d803ae771d4C1E99C32572854Ee49]=true;
 minters[0x21BB955A63589679CfB60Cf4dd602c25feD375dd]=true;
 minters[0xdc799aF2752fbc93e286d565c29038B8b8ac80a9]=true;
 minters[0x989c8DE75AC4e3E72044436b018090c97635A7fa]=true;
 minters[0x6A66Fafd732AdaDFc45A75a9cf13C9991BE087ca]=true;
 minters[0xf2Cb928AC7D3df1fcd80E68af7b03b625DE523A2]=true;
 minters[0x47aa96A8BDCc9dBcd98485B67880b40a87663108]=true;
 minters[0x5307a22215a6EAF67E9F1dea3feDD86452E49E16]=true;
 minters[0x3D43Adc857F73c9f62d1e4F32f1d660aDC3E11C9]=true;
 minters[0xab8483244C1fA9c817278cb4b23bA5BfA006b7c7]=true;
 minters[0x9b0B001C1474556dE1F3dAC25d4BF1Fe8D5CA175]=true;
 minters[0xc231C5bfdE3C6216312bef2002740a3eD6cF69d0]=true;
 minters[0xe48681DEd47637382fc22509C585067f4F7996fd]=true;
 minters[0xB8636A08718AD5C54203F7644409879CA4f07D17]=true;
 minters[0x84ea0b8D5B920e6A10043AB9C6F7500bCb2C9D25]=true;
 minters[0xDA088DC5Cd9aA4AA8FD34C4B4796f62341F48989]=true;
 minters[0x24726bb1C7996dBE80dae1e87799034125577144]=true;
 minters[0xc12440419b3cc9E69eD9B919F76aF95a42d0c4B2]=true;
 minters[0xE0e62EDcAd709a3CB02e468f620db66FAA7E7a82]=true;
 minters[0x5Ab27Eda1Ded37663A321a06e0964A0e0aae8f70]=true;
 minters[0xA6Cc878F25A01555dBC348E248d2bB0d7E9eaC29]=true;
 minters[0xD03185ef2fF2916165d5FdC6Fa7B45B5284Ed039]=true;
 minters[0x7eD96976E8FBbE95944f01ba82AeE0Fd23211f99]=true;
 minters[0x77d714fDd8c48BeeA974F37D7F6b11D1032e9954]=true;
 minters[0x4CB36E4f3FF360E57bA14D0AC6f570e73ee27899]=true;
 minters[0x23ba56b63a280D93bD2ea9395Af662c776eDB37a]=true;
 minters[0x18dfB3Bb5A3c780aBba8c092384239175DE76D90]=true;
 minters[0xDA08e514C6074E4D1acF88f68887D27cfC966F6f]=true;
 minters[0x576ed9f68a4201e2f2597edC0b98523cc0aC5fAe]=true;
 minters[0x25c59677f83CC6d0b7Af2159aF6b8b873b5FA4ce]=true;
 minters[0xF1ad65CeF201bAB540b3c7DC9452ca20fBCaDE1f]=true;
 minters[0x1A131a4D57BDFa8b84532515145Df2947E0F13ca]=true;
 minters[0xA8BcEFe3018181D0abd3D7846349098CFEB83Bc2]=true;
 minters[0x5c2260103bA960D23603a7b824c80a24EAe159b9]=true;
 minters[0x4B6A535DfbBd7Bc4618F002Cd5441602F6004896]=true;
 minters[0xc70380a8AFB827c9EEE408b340c71E8838dE8901]=true;
 minters[0x78dd42e29892393896F6E19cB805a9ae8C575edb]=true;
 minters[0xCbD6473629E43da2282e9059cc74ee5A1c8ac34a]=true;
 minters[0x5871E6B1e58d0014a7F29c496fbb8ee25852dfCe]=true;
 minters[0x2e1091E1e9d6dB1C5a442A496bDFF110132EC92b]=true;
 minters[0x9Dd07e02f13BE8CB4A6550E1D11fD33199B35587]=true;
 minters[0x25eF7c3eB7634541362CC41530f4f62771628476]=true;
 minters[0x209E1E86A70a9e37A7f07f3B6db26334749E50a2]=true;
 minters[0x3be2585e4408848EdA54A57A0EA8F20A075B56C2]=true;
 minters[0x49Dc75a57d936e806393389ee713646F467FBEF0]=true;
 minters[0x4CEf98D34e5BBe12491CeF4D565FFBEb128A4B46]=true;
 minters[0x952F3C482D3A7Ff3B6dEFC6b40DB7B9A0580a0B7]=true;
 minters[0xcDbd7Fa89184EA15B1eA9b9bE05012654d022571]=true;
 minters[0x208bC2E334C45442Df95e22034Dc1bD2c0bF3618]=true;
 minters[0x56a2fA90fD15c3f842B8343D01926c1fa6AC2eAC]=true;
 minters[0xFa2b80F4b003173c36EFd3982f95C19f11854486]=true;
 minters[0x9367cF8CbF3c172d7c2471edbBF0F3699BBdB9A1]=true;
 minters[0xe17F28A125539D5800d5D29B62DAdf416805C7c8]=true;
 minters[0x83D0A7EE99CA499C447CAb722dA02a71aAaC6b15]=true;
 minters[0x9cc52988C3329d22C79bb9ba10ad791ea165A2C0]=true;
 minters[0xD3F9AaF681b5a7EC3A513FC5A813c136F581C365]=true;
 minters[0xC659a8504173102EA3F79f307d6A4fa21534a089]=true;
 minters[0x10f81231879A1038960707D861deb248F5D3957e]=true;
 minters[0x04A7dC490C42712393513B707A8Bf2fB5c4D8d3c]=true;
 minters[0x23206830471c151c799AC8bf15Ca8AFe5669ECCD]=true;
 minters[0x06B1e6b2c9d381C9a06aAfa4E8D67dE1F80d24c2]=true;
 minters[0xb8A29155aad1F7F4C025F363D6906253c0090760]=true;
 minters[0x5668D454a0594a0A18B720080eC3052C5Ecf871E]=true;
 minters[0x6c7582D02Fb90949BBd367BF4fc2910A632D9A9E]=true;
 minters[0xaf1852e6e552136f3b7dC23c926E4FBCaE4e686d]=true;
 minters[0xE2572db6C92D280F1100C6000eb8196F537aFFa2]=true;
 minters[0xd17B5A1F82374C1635E1477e447220E87592c86C]=true;
 minters[0x3B7b6928C676053FFEfD7b2698b83636b99D1860]=true;
 minters[0xf0109ca8714c5865E17c3Cf479Ae4bdEd0cD459B]=true;
 minters[0xaf9AC8f3634C49c1907cc945f063e5bd4Ff1b0C9]=true;
 minters[0xF07078dAa062Ce456ef5f37C356551417C4E703F]=true;
 minters[0x3e80826B3aB59a7b2548Df65C7ABf8C0B239c643]=true;
 minters[0x13FEefdcd1090ACcEAE0D154C867a2267cA502FF]=true;
 minters[0xb4Ae11B7816112f8684A5d464d628FC33EBE1A67]=true;
 minters[0xe3Ea378826D5d7b041e2Ee730d41710d86000e32]=true;
 minters[0x3162947986982E70B2FAC2A90bA49d8657F34334]=true;
 minters[0xcb31A79E8904D326B65b5550E03466977BEcCC6b]=true;
 minters[0x7166Dc6a5638bbff155660740dC22632699fcCB1]=true;
 minters[0x584b601A5567Ff0A1C577571d546EFBd3f13faC1]=true;
 minters[0x28c0647db1Ae7Bec8108ED5ec20Ed6e48b74c792]=true;
 minters[0xdf5479F5E42f83D961116D0E32De1b3FC97C31dc]=true;
 minters[0x13F42dE84279149Eb872644Ff87e9f6F004454E5]=true;
 minters[0xa72d53a4068732FB8A8aC2749338818af606F3e3]=true;
 minters[0xEF43aA45d20752aCf6D65d0AA2642D303ECf2538]=true;
 minters[0x1f4552752bdb8e060b53fe126d78c7d26DcB7671]=true;
 minters[0xeDe911Ecd1547842b220bCB977B306abE4d44e8C]=true;
 minters[0xd389e3272bE2dd07aCa708dd4055d7d5C2F94883]=true;
 minters[0xdF243CeC4f516974ACDf0071aFC6E7f3d6011339]=true;
 minters[0x17e53556FDdA3bf5E53b73AF1b68cFceDaDD6B1c]=true;
 minters[0xEbC0866972871799c334464E272D3Ff50D241168]=true;
 minters[0xf53ED94f5FB975a5BE7Eb26a3fe6912057ff225A]=true;
 minters[0xDa7ac208A6f8f42463587A97041614e5bF0d46da]=true;
 minters[0x34f2231f1e998CA3D2A7803455cCd7f057E90554]=true;
 minters[0xb493e7E59E5f8869d2c603CFc1683D5A47244cA6]=true;
 minters[0x6e29dfBeB854f35664276a09465A56B3BCD5E625]=true;
 minters[0xc7270454a203D13a2B3ee27348ee9f4aac450539]=true;
 minters[0x7306Da486eF680bdeda0B63C8040CB688bD997A8]=true;
 minters[0x9E48768b63c61c5B237104da708E36c2d90043c2]=true;
 minters[0x533270199Dd375F662A05A3519E776476d00dA2e]=true;
 minters[0x03E44389b831E3d3ef9Fb58DcC2Eb572d5B6dEc6]=true;
 minters[0x4fcb9416B820d8eB84E25434Dd0F62643d215770]=true;
 minters[0x51C770A67EeFB697C4Cf6135Fa0ea2B8479E6F99]=true;
 minters[0xB96c25586Bb2465472dE9ad1d98F7757F66e1453]=true;
 minters[0x6af444DbA626c622E7C3266C110908E51E1c9A77]=true;
 minters[0x6a9c606ba79Fe219d7278e0292D695BbA7218c13]=true;
 minters[0xD09a70e83B784bBB781A31d0c0f51be81998F440]=true;
 minters[0xf97F9c7FC006f5469c9f871515C307226e807311]=true;
 minters[0x3b058bdDA56393bC5e23a915A382d9f199fe510d]=true;
 minters[0xB11B1c37813518752689c96a4CA540F7618D7514]=true;
 minters[0x505523cC2b967f5476a6096c173b7BA2D6C48916]=true;
 minters[0x96243644899dDec29bd85aAFF4a0F996bf266a3d]=true;
 minters[0x3f1b244FAE614d50ceE1ef438a9caBBed4798Dc6]=true;
 minters[0x07a69fa7Ad06E8C0bEB7DaA1E2c15a9B61030FF7]=true;
 minters[0x648A984003798b4735C198eebB81A78D546ce24C]=true;
 minters[0xc1210a6E677e9204dd0Ffdf99CfBaeb9cAEdD3f0]=true;
 minters[0x4eb133023249A236A5AF78cbBB581D03Bbe8B3EB]=true;
 minters[0x7AF9c03a26f2C8Ded98b6Bc96881A3055e3E79A6]=true;
 minters[0xdaC26dbbb2B1d86747b517d4c5E8805ff51DCA35]=true;
 minters[0x7674c3d61E9764fCa0Dc2FED6c9A914Fe2d9334d]=true;
 minters[0x790C3a09F5C76Eb9d8b61AEd7dae3E21E8F982Dc]=true;
 minters[0x1333BBAD610be7b5dC6B7630451587405E685761]=true;
 minters[0x0C2d8deF28cD4053Aa2C191B02243f06D23dBA12]=true;
 minters[0xDF0F202dcEF758Cc6a9630eb40743deA372978Dc]=true;
 minters[0xd3DfAbDf1086Ca8D31698C48F1e160Be0b083F6F]=true;
 minters[0x0E1d4C43f8CEfF3B7570343e4AeA4aBBdCA1013f]=true;
 minters[0xed7a9DEAA61D79bF665AA36759cbfa68F4427fe2]=true;
 minters[0x70961eA4b379201965AB1c61B62697B365988053]=true;
 minters[0x1f27eCfEa2c6B575560955662166D2781B0c5111]=true;
 minters[0xC51Ca59eF172496dec274E4392BaFe09a8429344]=true;
 minters[0x38F3B1F7E861fdabe17b6741BB3bE02E4bEEe343]=true;
 minters[0xd6a0C200c19a448a6e8cB32dd7142028BA2e160d]=true;
 minters[0x5fD09f558b48ee6E9096e8114477537F5783147f]=true;
 minters[0x6C7B672be5da5DD0154C35E41876998EF9786870]=true;
 minters[0xB5fd1938E65De58ee11Bc48005F476bAD23933C2]=true;
 minters[0xa9b97be85E1789ac097E16c155Cea0c43197171E]=true;
 minters[0x6aBb097238E8bC8a8574e6D5568D4010eB932F74]=true;
 minters[0x3341124Cf5e00391c5c995B0d41D0C9ba72d17D1]=true;
 minters[0x2682CeDC3C5eFBaCEc7593Bd40dFC974C1Da0637]=true;
 minters[0xB2272ff131e7afD77927722B80A87eaC82Fa1392]=true;
 minters[0x827af0562c9DFcc3976d091D57F6cd3bAF05800E]=true;
 minters[0x0851885a2BaeC9BE7B052FEa94ff211e4207eEF2]=true;
 minters[0xbBFfDEb97637c5Ac5198cA2a3b391fc8Fb1dB647]=true;
 minters[0x21B5A2F2D0B87f01eA030086b586BC4d63D516C3]=true;
 minters[0xBDafC31B8aF397319DC3915a2bDab999B917E81f]=true;
 minters[0xD08F764a6399c19e886B582ac52136AfDEC01394]=true;
 minters[0xA4a3b0462dbCe9f39232739e348F197089e6a816]=true;
 minters[0xdcb50f03dF160ba78C198707fA995752DF60AF3d]=true;
 minters[0xDb25afDB6b1556A11C5e29aCeEDdf497A038A09B]=true;
 minters[0x915AD6F86B456097701F8d4683EEaaC8DE3a8541]=true;
 minters[0x1223D2593aD5621b9257Ca3921eB0c2Aa52c1ffF]=true;
 minters[0xed9Acb78AC13d48bCe739bDF582DfA4b1C17f60d]=true;
 minters[0x7662c5B391A3Fa466d15A9c7B1C127155cC81d1E]=true;
 minters[0xEe7F8BE61eE66A3A6092fb8085De36E2eA333f94]=true;
 minters[0x5ca6976e993ac0201B5dD4F17eE93a86E4a6BD90]=true;
 minters[0x0B24Dc8537340DCF4FF89f522F32ceb6395ef396]=true;
 minters[0x9f20f89dAf274D34b49868Ca8ec147A20a7f7e56]=true;
 minters[0xe9Dc029fE9E069B984a97690f78f7fDdD9Fc7106]=true;
 minters[0x7aCB27B14d0C030488677635Bf0a8cb6d733c80d]=true;
 minters[0xb958153117E6842849F267EEd7C2b8f89565517a]=true;
 minters[0x2Be5fE3421CD236cFAa901D96d3Cab7EC4e4C7c4]=true;
 minters[0x1562265F4eE4aC7f18C3b95F7764a6B2B702bC44]=true;
 minters[0xb5C60Ad7C88fFe4FAf93de93D75ac628aFFc8Ea3]=true;
 minters[0x9B046E2ad017A6E23D7F8058c250176e71c885f8]=true;
 minters[0x1a64c8ba39FaAdeec66Bb81B3819952a632359D7]=true;
 minters[0xc0Ae2cd3F950CcFD8A258b25E606A8B9E2dbBE5B]=true;
 minters[0x8954b761b774184ECAe4f03dDA8f71031d65884b]=true;
 minters[0x7be58553335CA8aE53c5a4B51f775b394e4b7F8d]=true;
 minters[0x733155767aF75d5599A9853c9C73bDdb5cFf140b]=true;
 minters[0xb85eF4488f9066141202Eb51210e4E1D9Df02F53]=true;
 minters[0xBe73FA76F7E34675B849c36585d79e5Dd770a833]=true;
 minters[0xfFe187Bf4e4482f10F04B335381C760bb02A7088]=true;
 minters[0xC0D5d7e8c3bbA97034dcfdBF4448626d8477a054]=true;
 minters[0x361ba255A10938D7Fe28234Ca6999e2141639E5C]=true;
 minters[0x8eD1FC23e54acaD02140Ff5123018029547983F2]=true;
 minters[0x52817bE92F3C47F707B152D436763B3d9571C164]=true;
 minters[0x925342639DcC7906B6a6817e1f59390645dBf117]=true;
 minters[0xca787230e02Cf5Beabcf4F299708cb7515fcd84d]=true;
 minters[0x0250afF3d863BA6eD05F0f889988062bE44c1E40]=true;
 minters[0x155026cF3D32957a7fC4bf6e0e076659A7e4529f]=true;
 minters[0xCB33d61Af7C2DD6fAc01563b6ae309698F7C3352]=true;
 minters[0x93007426cA56bad2A3c115AC6496E06716cE59b6]=true;
 minters[0xF655E23B8e53402833519B1DE7eCbD4f63D5e6ad]=true;
 minters[0x9574fA6B05CF7f947978dd7d688d600fbf221e8f]=true;
 minters[0x5B408c0aDC4C8b0106b643b4ecDfE127FF949469]=true;
 minters[0x1B9160b5d0059eCBA0Fcf4D63865063e468A0a2F]=true;
 minters[0x5364a0e3Ce1C05D567e3Cf900c4E589BA129D6a0]=true;
 minters[0x047D6F2285C5fFEaB610c927DE6f86a2B2e9e738]=true;
 minters[0x111bb952E44fb1D43BD1D8861e965E0b0EcF5Df4]=true;
 minters[0x76AB95C8ac7f74E09684Eb8Fe9FCF97Eb0d885C4]=true;
 minters[0x3eC39F446b64a47f68A65E91f10E94D5063927FA]=true;
 minters[0x0af822D4D100bA9dc6da3d97bA1e20d771e58C57]=true;
 minters[0x781855Acb9C57184bed179F02Ee7823D372aA2C5]=true;
 minters[0x6Fcc6A63d5A88d11DB950Dd030E78a20969eF28e]=true;
 minters[0xD22f50ad512BdB526EEBd040De791A336FA08F86]=true;
 minters[0xb9189C585CD5bBB45C3e074A87c48747D3530aDa]=true;
 minters[0x965E30796C562c87a6859613D9408a7480bD914D]=true;
 minters[0x97F2b1Bc30c1E4Fd1a33bb8ea1E14F2Ca8A524cb]=true;
 minters[0xC8eD349529BAb23AC6c726693623ceFa2e31Ed98]=true;
 minters[0xDDA8B35cC5987279b43Ff8E6C0777897f56Fe3f0]=true;
 minters[0x1E2bba1C2f5fcFdc95c19eA40a4Cf714b557F374]=true;
 minters[0xe83366A625F1E7374Bd76E631010207EDBc6d194]=true;
 minters[0x3E2e55995Baf83b9B1fc349D9A4A45d57ad2914B]=true;
 minters[0xF892DcFf83BcC97C2EB1FEc8e76c5b2f9D4a8E1b]=true;
 minters[0x833eab3f58cf58323B8E133CF69503698c3a21f1]=true;
 minters[0x224B5E80309C565bd310F2984b0363054cBa90f5]=true;
 minters[0x28afC128874229e557d6870e93dE93d8eFCF3718]=true;
 minters[0x10a26926689c4ebC1f190238892b0B78c3688f62]=true;
 minters[0x970b52Bf8964934E721f655325cc946e4901bE6b]=true;
 minters[0x59B0C32345289252B7009773a1d233A7e1765c23]=true;
 minters[0x021f4E8b7f8F253B6e2eC8347C0B6d8F73a3Ed1C]=true;
 }

 function _baseURI() internal view virtual override returns (string memory) {
 return baseTokenURI;
 }
 function setBaseTokenURI(string memory _baseTokenURI) public onlyOwner {
 baseTokenURI = _baseTokenURI;
 }
 
 function mint()
 public
 returns (uint256)
 {
 uint256 tokenId = currentTokenId.current();
 require(tokenId < TOTAL_SUPPLY, "Max supply reached");
 if(msg.sender == 0xda94065C938f03789f2e70e1d0b40545e505547B) {
 currentTokenId.increment();
 uint256 newItemId = currentTokenId.current();
 _safeMint(msg.sender, newItemId);
 return newItemId;
 } else {
 require(minters[msg.sender], "only 1 mint per whitelisted wallet");
 currentTokenId.increment();
 uint256 newItemId = currentTokenId.current();
 _safeMint(msg.sender, newItemId);
 minters[msg.sender] = false;
 return newItemId;
 }
 }

 function withdrawPayments(address payable payee) public override onlyOwner virtual {
 super.withdrawPayments(payee);
 }
}

File 2 of 15 : PullPayment.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (security/PullPayment.sol)

pragma solidity ^0.8.0;

import "../utils/escrow/Escrow.sol";

/**
 * @dev Simple implementation of a
 * https://consensys.github.io/smart-contract-best-practices/development-recommendations/general/external-calls/#favor-pull-over-push-for-external-calls[pull-payment]
 * strategy, where the paying contract doesn't interact directly with the
 * receiver account, which must withdraw its payments itself.
 *
 * Pull-payments are often considered the best practice when it comes to sending
 * Ether, security-wise. It prevents recipients from blocking execution, and
 * eliminates reentrancy concerns.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 *
 * To use, derive from the `PullPayment` contract, and use {_asyncTransfer}
 * instead of Solidity's `transfer` function. Payees can query their due
 * payments with {payments}, and retrieve them with {withdrawPayments}.
 */
abstract contract PullPayment {
    Escrow private immutable _escrow;

    constructor() {
        _escrow = new Escrow();
    }

    /**
     * @dev Withdraw accumulated payments, forwarding all gas to the recipient.
     *
     * Note that _any_ account can call this function, not just the `payee`.
     * This means that contracts unaware of the `PullPayment` protocol can still
     * receive funds this way, by having a separate account call
     * {withdrawPayments}.
     *
     * WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities.
     * Make sure you trust the recipient, or are either following the
     * checks-effects-interactions pattern or using {ReentrancyGuard}.
     *
     * @param payee Whose payments will be withdrawn.
     *
     * Causes the `escrow` to emit a {Withdrawn} event.
     */
    function withdrawPayments(address payable payee) public virtual {
        _escrow.withdraw(payee);
    }

    /**
     * @dev Returns the payments owed to an address.
     * @param dest The creditor's address.
     */
    function payments(address dest) public view returns (uint256) {
        return _escrow.depositsOf(dest);
    }

    /**
     * @dev Called by the payer to store the sent amount as credit to be pulled.
     * Funds sent in this way are stored in an intermediate {Escrow} contract, so
     * there is no danger of them being spent before withdrawal.
     *
     * @param dest The destination address of the funds.
     * @param amount The amount to transfer.
     *
     * Causes the `escrow` to emit a {Deposited} event.
     */
    function _asyncTransfer(address dest, uint256 amount) internal virtual {
        _escrow.deposit{value: amount}(dest);
    }
}

File 3 of 15 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 15 : Counters.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

File 5 of 15 : ERC721.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/ERC721.sol)

pragma solidity ^0.8.0;

import "./IERC721.sol";
import "./IERC721Receiver.sol";
import "./extensions/IERC721Metadata.sol";
import "../../utils/Address.sol";
import "../../utils/Context.sol";
import "../../utils/Strings.sol";
import "../../utils/introspection/ERC165.sol";

/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: address zero is not a valid owner");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _ownerOf(tokenId);
        require(owner != address(0), "ERC721: invalid token ID");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        _requireMinted(tokenId);

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overridden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not token owner or approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        _requireMinted(tokenId);

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");
        _safeTransfer(from, to, tokenId, data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist
     */
    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {
        return _owners[tokenId];
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _ownerOf(tokenId) != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId, 1);

        // Check that tokenId was not minted by `_beforeTokenTransfer` hook
        require(!_exists(tokenId), "ERC721: token already minted");

        unchecked {
            // Will not overflow unless all 2**256 token ids are minted to the same owner.
            // Given that tokens are minted one by one, it is impossible in practice that
            // this ever happens. Might change if we allow batch minting.
            // The ERC fails to describe this case.
            _balances[to] += 1;
        }

        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);

        _afterTokenTransfer(address(0), to, tokenId, 1);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     * This is an internal function that does not check if the sender is authorized to operate on the token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId, 1);

        // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook
        owner = ERC721.ownerOf(tokenId);

        // Clear approvals
        delete _tokenApprovals[tokenId];

        unchecked {
            // Cannot overflow, as that would require more tokens to be burned/transferred
            // out than the owner initially received through minting and transferring in.
            _balances[owner] -= 1;
        }
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId, 1);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId, 1);

        // Check that tokenId was not transferred by `_beforeTokenTransfer` hook
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");

        // Clear approvals from the previous owner
        delete _tokenApprovals[tokenId];

        unchecked {
            // `_balances[from]` cannot overflow for the same reason as described in `_burn`:
            // `from`'s balance is the number of token held, which is at least one before the current
            // transfer.
            // `_balances[to]` could overflow in the conditions described in `_mint`. That would require
            // all 2**256 token ids to be minted, which in practice is impossible.
            _balances[from] -= 1;
            _balances[to] += 1;
        }
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId, 1);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits an {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits an {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @dev Reverts if the `tokenId` has not been minted yet.
     */
    function _requireMinted(uint256 tokenId) internal view virtual {
        require(_exists(tokenId), "ERC721: invalid token ID");
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    /// @solidity memory-safe-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is
     * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.
     * - When `from` is zero, the tokens will be minted for `to`.
     * - When `to` is zero, ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     * - `batchSize` is non-zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256, /* firstTokenId */
        uint256 batchSize
    ) internal virtual {
        if (batchSize > 1) {
            if (from != address(0)) {
                _balances[from] -= batchSize;
            }
            if (to != address(0)) {
                _balances[to] += batchSize;
            }
        }
    }

    /**
     * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is
     * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.
     * - When `from` is zero, the tokens were minted for `to`.
     * - When `to` is zero, ``from``'s tokens were burned.
     * - `from` and `to` are never both zero.
     * - `batchSize` is non-zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 firstTokenId,
        uint256 batchSize
    ) internal virtual {}
}

File 6 of 15 : ERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

File 7 of 15 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)

pragma solidity ^0.8.0;

import "./math/Math.sol";

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
            /// @solidity memory-safe-assembly
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                /// @solidity memory-safe-assembly
                assembly {
                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        unchecked {
            return toHexString(value, Math.log256(value) + 1);
        }
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

File 8 of 15 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 9 of 15 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

File 10 of 15 : IERC721Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC721.sol";

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

File 11 of 15 : IERC721Receiver.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

File 12 of 15 : IERC721.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
     * understand this adds an external call which potentially creates a reentrancy vulnerability.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

File 13 of 15 : Escrow.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/escrow/Escrow.sol)

pragma solidity ^0.8.0;

import "../../access/Ownable.sol";
import "../Address.sol";

/**
 * @title Escrow
 * @dev Base escrow contract, holds funds designated for a payee until they
 * withdraw them.
 *
 * Intended usage: This contract (and derived escrow contracts) should be a
 * standalone contract, that only interacts with the contract that instantiated
 * it. That way, it is guaranteed that all Ether will be handled according to
 * the `Escrow` rules, and there is no need to check for payable functions or
 * transfers in the inheritance tree. The contract that uses the escrow as its
 * payment method should be its owner, and provide public methods redirecting
 * to the escrow's deposit and withdraw.
 */
contract Escrow is Ownable {
    using Address for address payable;

    event Deposited(address indexed payee, uint256 weiAmount);
    event Withdrawn(address indexed payee, uint256 weiAmount);

    mapping(address => uint256) private _deposits;

    function depositsOf(address payee) public view returns (uint256) {
        return _deposits[payee];
    }

    /**
     * @dev Stores the sent amount as credit to be withdrawn.
     * @param payee The destination address of the funds.
     *
     * Emits a {Deposited} event.
     */
    function deposit(address payee) public payable virtual onlyOwner {
        uint256 amount = msg.value;
        _deposits[payee] += amount;
        emit Deposited(payee, amount);
    }

    /**
     * @dev Withdraw accumulated balance for a payee, forwarding all gas to the
     * recipient.
     *
     * WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities.
     * Make sure you trust the recipient, or are either following the
     * checks-effects-interactions pattern or using {ReentrancyGuard}.
     *
     * @param payee The address whose funds will be withdrawn and transferred to.
     *
     * Emits a {Withdrawn} event.
     */
    function withdraw(address payable payee) public virtual onlyOwner {
        uint256 payment = _deposits[payee];

        _deposits[payee] = 0;

        payee.sendValue(payment);

        emit Withdrawn(payee, payment);
    }
}

File 14 of 15 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 15 of 15 : Math.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)

pragma solidity ^0.8.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    enum Rounding {
        Down, // Toward negative infinity
        Up, // Toward infinity
        Zero // Toward zero
    }

    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow.
        return (a & b) + (a ^ b) / 2;
    }

    /**
     * @dev Returns the ceiling of the division of two numbers.
     *
     * This differs from standard division with `/` in that it rounds up instead
     * of rounding down.
     */
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    /**
     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
     * with further edits by Uniswap Labs also under MIT license.
     */
    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        unchecked {
            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
            // variables such that product = prod1 * 2^256 + prod0.
            uint256 prod0; // Least significant 256 bits of the product
            uint256 prod1; // Most significant 256 bits of the product
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            // Handle non-overflow cases, 256 by 256 division.
            if (prod1 == 0) {
                return prod0 / denominator;
            }

            // Make sure the result is less than 2^256. Also prevents denominator == 0.
            require(denominator > prod1);

            ///////////////////////////////////////////////
            // 512 by 256 division.
            ///////////////////////////////////////////////

            // Make division exact by subtracting the remainder from [prod1 prod0].
            uint256 remainder;
            assembly {
                // Compute remainder using mulmod.
                remainder := mulmod(x, y, denominator)

                // Subtract 256 bit number from 512 bit number.
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
            // See https://cs.stackexchange.com/q/138556/92363.

            // Does not overflow because the denominator cannot be zero at this stage in the function.
            uint256 twos = denominator & (~denominator + 1);
            assembly {
                // Divide denominator by twos.
                denominator := div(denominator, twos)

                // Divide [prod1 prod0] by twos.
                prod0 := div(prod0, twos)

                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
                twos := add(div(sub(0, twos), twos), 1)
            }

            // Shift in bits from prod1 into prod0.
            prod0 |= prod1 * twos;

            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
            // four bits. That is, denominator * inv = 1 mod 2^4.
            uint256 inverse = (3 * denominator) ^ 2;

            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
            // in modular arithmetic, doubling the correct bits in each step.
            inverse *= 2 - denominator * inverse; // inverse mod 2^8
            inverse *= 2 - denominator * inverse; // inverse mod 2^16
            inverse *= 2 - denominator * inverse; // inverse mod 2^32
            inverse *= 2 - denominator * inverse; // inverse mod 2^64
            inverse *= 2 - denominator * inverse; // inverse mod 2^128
            inverse *= 2 - denominator * inverse; // inverse mod 2^256

            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
            // is no longer required.
            result = prod0 * inverse;
            return result;
        }
    }

    /**
     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
     */
    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator,
        Rounding rounding
    ) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    /**
     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.
     *
     * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
     */
    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
        //
        // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
        // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
        //
        // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
        // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
        // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
        //
        // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
        uint256 result = 1 << (log2(a) >> 1);

        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
        // into the expected uint128 result.
        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

    /**
     * @notice Calculates sqrt(a), following the selected rounding direction.
     */
    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 2, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 10, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10**64) {
                value /= 10**64;
                result += 64;
            }
            if (value >= 10**32) {
                value /= 10**32;
                result += 32;
            }
            if (value >= 10**16) {
                value /= 10**16;
                result += 16;
            }
            if (value >= 10**8) {
                value /= 10**8;
                result += 8;
            }
            if (value >= 10**4) {
                value /= 10**4;
                result += 4;
            }
            if (value >= 10**2) {
                value /= 10**2;
                result += 2;
            }
            if (value >= 10**1) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 256, rounded down, of a positive value.
     * Returns 0 if given 0.
     *
     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
     */
    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dest","type":"address"}],"name":"payments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseTokenURI","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdrawPayments","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b506040518060400160405280601381526020017f437265657079204c6974746c65204475636b73000000000000000000000000008152506040518060400160405280600381526020017f434c4400000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000969291906200b65a565b508060019080519060200190620000af9291906200b65a565b505050620000d2620000c66200b58c60201b60201c565b6200b59460201b60201c565b604051620000e0906200b6eb565b604051809103906000f080158015620000fd573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506040518060800160405280605c81526020016200f61f605c913960089080519060200190620001629291906200b65a565b5060016007600073da94065c938f03789f2e70e1d0b40545e505547b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732ae4c4aa5075f3c8dfa03e922d0c6e04f43b59a173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007383ef2337b624de4c7819b0026000969ba31ec0c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734792798a6886e5f5624917c68d66e7399708541a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739fbc39cc1d420be3c996df34ed3d1971c09600c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739a9fa55e38c481d747b0d12e4245d2937eac33f573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007370a730deb5360d033253edd70eed4b8fa3593d4173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ba666cac76449cc03a65579686b1ceef1e56725273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d62e2d0d9558a9d09bab2e432d5dbc7de5edffa873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735c8934135f1139f16750d9a4f676f3e5f44b9fd473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c90d62b8daa813ff374edd306288d4090b94848f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007370cf1e5f9044c51e79911d49b15c6017b91805dd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007322b66d07096637a518fb150ade0cba1d9923aa5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b135819cf0a43cefbd225ea3e2ca731b2008aba473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b35e59e8d4f185cbe35c02769b77368d236240bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736f8b0120f20db39ba7f60623046578a7dd3a704b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735abcbf7b26c3281ee0db5480c1fdabacd34aab8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007390186c9756847fc41ec4655024379dd20875a2a173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739ce40b4b352fb17cec43b867612afed2cfc7ef3573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d4a67d7b32286b431102dd7b90dcda5283792f6673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736884a95c408d375107726ed13dde4d60709c3ca173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736ef3a33e0a5feb0354ba42c277c36d49b0abaa7e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cf9650f39d6d8637af19f0a7d355fae25484cace73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738392f31f7ec7e52be4fd924d05fc6d23d70bbdaf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b138c1628b390bdd7ce1774bfdb247724c709a3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732d0b3c64a50fcad7bf1e9ef8cc83145d4a9ccfe973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730252489124c40908c36a2afa450f48195f44a77973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073dd66006ef778682089be5fede192ce6fb465dff473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738bd09d1ea65598bb6d8058f434a70643a91df62773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735bd23e817fbe1a22b5b98430cf0ca328aadaf40673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073016edd68735c242c0473edbabbe61c54a08b661f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007356c0ba46b9fb21a331a92bccb57c25bdca630c8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ffedbffd9a1383da5f5803f5bc92ae55f9711eee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007328f9b6b0beb0f42145d21fa5533b459741ab96d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007381a4d95cddaac08b83b7a02a187519baeb88c68f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731fa3cec431ac5908cd8ce3afb4b8bca2346a2b5073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c540033f826677a2443ca8a52ed7b7b50ea227f173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730c850404012f2d91f2cc534242d9599991ae86c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f9832991f521d163e81f8a000ffa075a0132afb473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073607d48f7476484ab6847ac6804bf21137b6c84ba73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ca716268d89362053e637891f50084e1184e7d1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007354bcf4b079fce4d95677c92a94eaa76cfcebc15b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007397896f62ea8ee7ed120a669db70b41f3a068bab273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d70e40bcc3fb42f776109181bb17400a5c9c6ae973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b170ba9ddb13490ded439bc5712ec9822e05efb273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c1afb128b3efc6d0fa8068ce608ecec3fdcf5bbf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c5b68f5861368873557cf084928560e31ac7386d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073efb98be97ac8702205e16cd538380f5c76d5630b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738250f597b4afcd1aace5fcdb7694b353218af5d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c9528c64cd847230a957aaa755f9d1264ac39cf873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007387490b1112f800881bac2ec570668c72c43a7f6473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c9a866fa022a244e3fe3389aa39f381b9689ba3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733946a7f14a08038cf79290dda86f8912f6e2fd2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007318a80ddd8448198a56197d806d66e6fabcf8971f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b47c91f55896fe899393f9a7ecfd6a4426bb0abf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073eb547da811ea10207fa591cdf95331f282501d5e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007355535656dedd3fe8b7d9ca01873a8e5fb471bbc073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e3130a7b9fdf7cfbe78501050ee9b4dac078c88973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738b7a63e00ca07a5fdb586e1ee64b4c5dc493287873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cc1ce6b57a8debb3ab7ce6c1174a4effddf06b8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073275d17f14afe6e38f229397ba80ee5563f67a7df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073750986abc383a87500581c18834e2569a7087e8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734ceb57bbf10e50c6d866b950d95d36edc9934e8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d22bf9544ac39729f820f3d517f1d65b4ff2f54c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e8c3d6ada9756f2e2ddda792a304295286611ec673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b20c9173530b0afcbcb9cd515f4c69c4be8f60df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073724c05d323ef747465e68f621a2b10edd9a8446373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737fec361e4618f5b2dea90b21074fff363ca4341773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bc35d4d1901b351b09cb7c5b41cf087f288fc96a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739f272bbdd0f021921aa9283f3caca37c6ff55a6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739d7d4301000984b5655c83fc070708c38f0b052173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007350a2ddaddef08434c2979ad110302a698009eff973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738b3bc3f8aac484a816bb7d206c368a6031ea796773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730a639c2fb93f5ab5e8ad9d4cd7e74279667afc8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a5019793eddaed84a5c3e51d3d1aebf4ca9d271073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732a65773f5606c00cab7cabb400f4c0ffe9d9bd1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f3fa5b4265076657fd3fc409d5a1a840f5f56ed073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f0bde0ee7a45f0241bda74397a6ecd1bfc10d52473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730c803dee8733cd11d3d30b07e61aac1ace5a962f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c911520cb294a1ea9ca12ec3d2d1e32e7ae1a46873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ea99a428d69aa84ad9a20d782cde4a1e6c3e901773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007329e8b46428d3b140aec7273260666dbfe956136b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a5a9606691d60510be735b4f85faa1b1c8acdb6f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e3762a03b75bf15805262603b7062ab206bd412a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007310c5771c0bf902d1772dd286ea42d33bf3949bdd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f2243dcebc4d0e4a6a82e87677b3a85f997b809f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073fe7f9613778d3ac6e088a649a2d2739614aa6d0a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f2fac2b95856614d7d1e6215f43c3abbf75ffa1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732f22e44c29485bca2a7dbe0f9432fa78c8d0c9dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735e79f393201f72618fce91238dd1c17964c0640073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734fff41b2777d33fd600a228a2b10c56e4bc5ad2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c09a4b43882b10c28eeeb223269ffdc6a99fae9173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073087cbadf474d6248ade1b06e3cc938cb34510f9473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733a183ec6844e4a6256f03f8a787d5fdcc41c5bd473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007373102b7f49638c5efb70b0f37191c4786e411eff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ec820dd77db8c532762ade5ec9789a906f8ff9d973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731a00320bed2cb1c2c375533108d2645001f871d373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736435364cb421491d63c1d8ec88d4b33b356e476c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d68f933ecd0d285135d100dda8d528a5a4d3c45173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073afa28fd74c9a84d453d633cec5e543f49b0f328573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736b5ae07a04efe314cea21bc9d815a908146f1d1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736e206c3631511b6880c45ba9a0a28c89d1bddb9373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007315e6b13f418c940955950b0c960793dce128971073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736fe3c571e89fc2018699261437943cfcfb8e01b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007342359891e9213783d0de76411d26885984df60c473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b41b450ce67bc298868a8aa9d85aa5c69619d38d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007387f8a386eb19be282192f14809befa3d6760a32973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007378763fbe89c48bc4ece961ff4097896ec2a4b3b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f4f5f08e817223c6a1fea6414de1a8a6b7dbac3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007319d7401bd6dc02e10299a747899b9d42a88a115973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e3dba654c754f50759556c97c057490c9a76218873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734fdf3264926c08f0e4d905eb258b60725593af4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739b1d57fcc79f2f6b8247b992e68d5881a16adf2d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c652a30974cf298b16b87d1d7ac63645ff07fa8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a0545e076122f52a7e2cc672f9fb9403eb310abf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737b3ee1789ebd069f9fdbd4f2570087a4c1bbef9a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a7564348f72cff395eece64bd28abfa10e014c4b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007332f14803485175d0d5de4bf7c1495a0734c9aa6573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731327f35216e3a6785a2943a70de6b159f28809d373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d99836319a334e919730345660cd2715aac487e173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c00e4580e9d5c8668f61c9094c9d2f92b631bde673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007335c1147ae493d82f3b07450eb174374214bcf4cc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731171646580c73a93a85f9d4f8acb62df1a3af29673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073506cc2f31d7ac86f60fd015790c31cbd93cba84073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b5eb92b3d208f0d9c11ac6fb8853a0abadd844b373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cd9e0fe98bfe8d06b52ff93abf12b2a63fed2bc873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ee03987263847e3ea9d471f778fb0d9e097b4a9073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737f04c4387423c5460f0a797b79b7de2a4769567a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007306d74321e0876e57310c38aaca6915c1e86ef71d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073aae4b7908d0de7f2522746cf6bb8b6e118b0e63073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007310a74d536d07baab67b4537d59a943205861ec3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007332c8c81d8b096857376d66b3894a4cf4d8c4188e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c6386a71d11198bee4153b3547126ccfc6f30ac973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007396b8bcc93c481c065006cde99f8b5e3d78b19baa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734224db12c4bf340561ec56eedaa7be937f070bcd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ead215514e9a0d72276af668156cf74bfe57449573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730ee38c6615e34ee9af2ac305bdd29e259a6e9f2d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a30024af5b789997535df14be2253c4557e6cf2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733041138595603149b956804ce534a3034f35c6aa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c4173ac2a95f1ba774051774ec2614ba83fe76c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007349aa097edddb55ef0503896974a447b5662874a573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007309d76b985204a3b906a1931b0a58c9d5435283a573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e6c1def4d9913c7e280257f999e0eaf99211767573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732356bb0204b76f61e21e305a5507ea753f3a80dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733ce622d2ccdfe0ce66a9511eeed4d4bbf26cd8ea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736c1f1a4c4f79c3bf05ab66c2794fd06cffb3d60c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007364bb252eea3bc05685194e6c2c1c1956a19cf38f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738b98c4f2bb9281d1dd55f0d421e023befbc0da1573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073af60844b7619fa7826c2ea1ccc0c6285beb3363473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f5f8ec465f112f8061ce958589ca8602e14c28ea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b340d9f239d101d8791ebe3add34675ebc18494173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e19843e8ec8ee6922731801cba48e2de6813963a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730815106e8f0ffb800ed09116615e8dfaf40593c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bd78811c1b92984a9c804ea0689fd7ac33e6f1b073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736dccd033c4c2453d6916e49bae05d486710ee0ba73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e8af2757c5db9b318702e98f2fe3fc158489966973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f63deed82968776994ea7871460c1e5a3237c64f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e384715d363942efbf200b1038220d76be6b2fc873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734add3674266bbf77f7f1158f19beb6cf18a1e8ce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073709e7eff5d8b4b7a4ea6d4739457571cc70e02bb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cc956e90f64cae90adba4b1c632f83f47423257773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738c2e4cacef6c60f8c250ed4e5fd24d1896ac3f3673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e340cd31a6ecf2a39fcaca94ffef4461bbb4151273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733d687efd871f9224fc6134fed80c331454ad63c973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073902a3719c3b39550791707f47a5e89c5bc405efd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e7235bf158ee41876c64690265b844a9548796fe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007351b926066e3b949eb7595c1eab2724329e059a3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739752909568437f79adc3f3807604a08698d7783d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734b2cbee9d411a3dc4b8fbbf37b71e0543fab402f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007350c4577f1e29d6a2d6bfd8b1e2c6289d6b3d847773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007265b323795d54081d7da1128018efa87fe2f8b173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737b984efb3aca7b8fa60dfc962426faeff44c7dc473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073555fab084bd0ccf53370a02b1b637dbbbacddb8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007355043bb22ad9d7074a2eb6f6c6732331d9fdd17173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738f05cf5a47c67add9c9e6074ead0d7a70895bd2d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007340176015724d3022c11df096e4b13bcf547e301573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ae412f025cdf3e8f4bbc69cc19e60eb0cc8bb01f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734206a7de172d0e101020f52496a226761d8c5c4c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ed1baecbe083f8449918a304530c9894cca2c2fa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007359777b1c5fb530810e3b0f7dcef7b0323b849b2f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e0d8e73ed9df6e2eacfbffcb9f7a126e18d51ddd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735dda76fa25997edd8722927c422e0807ddab91ff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bdbb4093390a5d65f4e4db234d42cf9ca21ccd2e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e24c9e8db8bc14236811e253945f262ce402ea3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731380902b5e7ce383c5a911e3bc06ea5b6b1cab4173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073aed970dcd7bdf7966a2a660ac6d78b79f8ae0fde73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f9946523c93d277fd64f98cdba1ad344177c646773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007341c20c11bf225c57cf23f542adfb85a7474d41c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ce2a6d6c3cc6d038f955f64673e1922756dae4dd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c68d994c192e1fcdcf281f9579c3337d9b61877573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cadd5d28880c36099ce760fdc083a6f0df003bb373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d76907f41048f30367c9035c957f269fa17093bb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c9405687a9e1165791ae70178a948159d52895e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073089a58e60355d0bba99306c650fb7bf96582b2eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073363968dd44b294c8430b28d5f98f318614c95a1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739f3e77cb89df964003053aa5b438e5697c77f4f973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734e775d7e73290cde921b6f8e925a9a90bbc4b3b473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073fc11e0ea39b41b39455aa6e9ba1ebc0dfd48db6b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735ca323d70a71d96ece9ecb601b7f21c18f3e28e773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732f410a1bb25912b159726ba52a18139e0fe8dae773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734cb35baaa6fe5dec74bfb02a82c653b60aa8042e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ddb58d168ae908a6d072863c035164a69f59b26f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073fe1b9df4e601ef59b0b9bb9ae0b8d8cf0d1e923d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731c684d63202b3e6a76043e3a70dc2c2ec78b535573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e5eda1eabfc23075d010927bd0111e8e36c33def73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007368fbcfcd51c365831a3ca9b7152cd78c585332e173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c98bc4e02207d7ddd39d3cfbe2d5b87393b30cf873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735cad93d9e52b1c1a138e19552bd9571f015eba4573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e65a43c50de364b5ec88856d439357df52552db373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730ecd499e4b8022cc4f6e44599f5b4b92091d8fb773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731d98e614af33103db041c4e6f1bb7b8b80b365c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007364ff8a32bd2b2746ed2a42ce46eb1bd74c59f70c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007340e45f12693ceda54fdc4009464ea593030f899973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073796965f6e05a00e8e497b4cf6b93ec2ea603c84273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007344938e22cdfc90e5ab5e272e57217f42c19181c073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007384269d3cf9c8006f1b6f8ee396b6026b353dce8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073874932ac148ec87a2114df0dbbaec0ad8608accd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739db81470546d803ae771d4c1e99c32572854ee4973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007321bb955a63589679cfb60cf4dd602c25fed375dd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073dc799af2752fbc93e286d565c29038b8b8ac80a973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073989c8de75ac4e3e72044436b018090c97635a7fa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736a66fafd732adadfc45a75a9cf13c9991be087ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f2cb928ac7d3df1fcd80e68af7b03b625de523a273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007347aa96a8bdcc9dbcd98485b67880b40a8766310873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735307a22215a6eaf67e9f1dea3fedd86452e49e1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733d43adc857f73c9f62d1e4f32f1d660adc3e11c973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ab8483244c1fa9c817278cb4b23ba5bfa006b7c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739b0b001c1474556de1f3dac25d4bf1fe8d5ca17573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c231c5bfde3c6216312bef2002740a3ed6cf69d073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e48681ded47637382fc22509c585067f4f7996fd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b8636a08718ad5c54203f7644409879ca4f07d1773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007384ea0b8d5b920e6a10043ab9c6f7500bcb2c9d2573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073da088dc5cd9aa4aa8fd34c4b4796f62341f4898973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007324726bb1c7996dbe80dae1e8779903412557714473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c12440419b3cc9e69ed9b919f76af95a42d0c4b273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e0e62edcad709a3cb02e468f620db66faa7e7a8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735ab27eda1ded37663a321a06e0964a0e0aae8f7073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a6cc878f25a01555dbc348e248d2bb0d7e9eac2973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d03185ef2ff2916165d5fdc6fa7b45b5284ed03973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737ed96976e8fbbe95944f01ba82aee0fd23211f9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007377d714fdd8c48beea974f37d7f6b11d1032e995473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734cb36e4f3ff360e57ba14d0ac6f570e73ee2789973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007323ba56b63a280d93bd2ea9395af662c776edb37a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007318dfb3bb5a3c780abba8c092384239175de76d9073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073da08e514c6074e4d1acf88f68887d27cfc966f6f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073576ed9f68a4201e2f2597edc0b98523cc0ac5fae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007325c59677f83cc6d0b7af2159af6b8b873b5fa4ce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f1ad65cef201bab540b3c7dc9452ca20fbcade1f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731a131a4d57bdfa8b84532515145df2947e0f13ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a8bcefe3018181d0abd3d7846349098cfeb83bc273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735c2260103ba960d23603a7b824c80a24eae159b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734b6a535dfbbd7bc4618f002cd5441602f600489673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c70380a8afb827c9eee408b340c71e8838de890173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007378dd42e29892393896f6e19cb805a9ae8c575edb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cbd6473629e43da2282e9059cc74ee5a1c8ac34a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735871e6b1e58d0014a7f29c496fbb8ee25852dfce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732e1091e1e9d6db1c5a442a496bdff110132ec92b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739dd07e02f13be8cb4a6550e1d11fd33199b3558773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007325ef7c3eb7634541362cc41530f4f6277162847673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073209e1e86a70a9e37a7f07f3b6db26334749e50a273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733be2585e4408848eda54a57a0ea8f20a075b56c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007349dc75a57d936e806393389ee713646f467fbef073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734cef98d34e5bbe12491cef4d565ffbeb128a4b4673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073952f3c482d3a7ff3b6defc6b40db7b9a0580a0b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cdbd7fa89184ea15b1ea9b9be05012654d02257173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073208bc2e334c45442df95e22034dc1bd2c0bf361873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007356a2fa90fd15c3f842b8343d01926c1fa6ac2eac73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073fa2b80f4b003173c36efd3982f95c19f1185448673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739367cf8cbf3c172d7c2471edbbf0f3699bbdb9a173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e17f28a125539d5800d5d29b62dadf416805c7c873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007383d0a7ee99ca499c447cab722da02a71aaac6b1573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739cc52988c3329d22c79bb9ba10ad791ea165a2c073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d3f9aaf681b5a7ec3a513fc5a813c136f581c36573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c659a8504173102ea3f79f307d6a4fa21534a08973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007310f81231879a1038960707d861deb248f5d3957e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007304a7dc490c42712393513b707a8bf2fb5c4d8d3c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007323206830471c151c799ac8bf15ca8afe5669eccd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007306b1e6b2c9d381c9a06aafa4e8d67de1f80d24c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b8a29155aad1f7f4c025f363d6906253c009076073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735668d454a0594a0a18b720080ec3052c5ecf871e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736c7582d02fb90949bbd367bf4fc2910a632d9a9e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073af1852e6e552136f3b7dc23c926e4fbcae4e686d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e2572db6c92d280f1100c6000eb8196f537affa273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d17b5a1f82374c1635e1477e447220e87592c86c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733b7b6928c676053ffefd7b2698b83636b99d186073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f0109ca8714c5865e17c3cf479ae4bded0cd459b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073af9ac8f3634c49c1907cc945f063e5bd4ff1b0c973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f07078daa062ce456ef5f37c356551417c4e703f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733e80826b3ab59a7b2548df65c7abf8c0b239c64373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007313feefdcd1090acceae0d154c867a2267ca502ff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b4ae11b7816112f8684a5d464d628fc33ebe1a6773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e3ea378826d5d7b041e2ee730d41710d86000e3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733162947986982e70b2fac2a90ba49d8657f3433473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cb31a79e8904d326b65b5550e03466977beccc6b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737166dc6a5638bbff155660740dc22632699fccb173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073584b601a5567ff0a1c577571d546efbd3f13fac173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007328c0647db1ae7bec8108ed5ec20ed6e48b74c79273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073df5479f5e42f83d961116d0e32de1b3fc97c31dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007313f42de84279149eb872644ff87e9f6f004454e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a72d53a4068732fb8a8ac2749338818af606f3e373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ef43aa45d20752acf6d65d0aa2642d303ecf253873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731f4552752bdb8e060b53fe126d78c7d26dcb767173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ede911ecd1547842b220bcb977b306abe4d44e8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d389e3272be2dd07aca708dd4055d7d5c2f9488373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073df243cec4f516974acdf0071afc6e7f3d601133973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007317e53556fdda3bf5e53b73af1b68cfcedadd6b1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ebc0866972871799c334464e272d3ff50d24116873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f53ed94f5fb975a5be7eb26a3fe6912057ff225a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073da7ac208a6f8f42463587a97041614e5bf0d46da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007334f2231f1e998ca3d2a7803455ccd7f057e9055473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b493e7e59e5f8869d2c603cfc1683d5a47244ca673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736e29dfbeb854f35664276a09465a56b3bcd5e62573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c7270454a203d13a2b3ee27348ee9f4aac45053973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737306da486ef680bdeda0b63c8040cb688bd997a873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739e48768b63c61c5b237104da708e36c2d90043c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073533270199dd375f662a05a3519e776476d00da2e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007303e44389b831e3d3ef9fb58dcc2eb572d5b6dec673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734fcb9416b820d8eb84e25434dd0f62643d21577073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007351c770a67eefb697c4cf6135fa0ea2b8479e6f9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b96c25586bb2465472de9ad1d98f7757f66e145373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736af444dba626c622e7c3266c110908e51e1c9a7773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736a9c606ba79fe219d7278e0292d695bba7218c1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d09a70e83b784bbb781a31d0c0f51be81998f44073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f97f9c7fc006f5469c9f871515c307226e80731173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733b058bdda56393bc5e23a915a382d9f199fe510d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b11b1c37813518752689c96a4ca540f7618d751473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073505523cc2b967f5476a6096c173b7ba2d6c4891673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007396243644899ddec29bd85aaff4a0f996bf266a3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733f1b244fae614d50cee1ef438a9cabbed4798dc673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007307a69fa7ad06e8c0beb7daa1e2c15a9b61030ff773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073648a984003798b4735c198eebb81a78d546ce24c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c1210a6e677e9204dd0ffdf99cfbaeb9caedd3f073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000734eb133023249a236a5af78cbbb581d03bbe8b3eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737af9c03a26f2c8ded98b6bc96881a3055e3e79a673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073dac26dbbb2b1d86747b517d4c5e8805ff51dca3573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737674c3d61e9764fca0dc2fed6c9a914fe2d9334d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073790c3a09f5c76eb9d8b61aed7dae3e21e8f982dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731333bbad610be7b5dc6b7630451587405e68576173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730c2d8def28cd4053aa2c191b02243f06d23dba1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073df0f202dcef758cc6a9630eb40743dea372978dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d3dfabdf1086ca8d31698c48f1e160be0b083f6f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730e1d4c43f8ceff3b7570343e4aea4abbdca1013f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ed7a9deaa61d79bf665aa36759cbfa68f4427fe273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007370961ea4b379201965ab1c61b62697b36598805373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731f27ecfea2c6b575560955662166d2781b0c511173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c51ca59ef172496dec274e4392bafe09a842934473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007338f3b1f7e861fdabe17b6741bb3be02e4beee34373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d6a0c200c19a448a6e8cb32dd7142028ba2e160d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735fd09f558b48ee6e9096e8114477537f5783147f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736c7b672be5da5dd0154c35e41876998ef978687073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b5fd1938e65de58ee11bc48005f476bad23933c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a9b97be85e1789ac097e16c155cea0c43197171e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736abb097238e8bc8a8574e6d5568d4010eb932f7473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733341124cf5e00391c5c995b0d41d0c9ba72d17d173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732682cedc3c5efbacec7593bd40dfc974c1da063773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b2272ff131e7afd77927722b80a87eac82fa139273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073827af0562c9dfcc3976d091d57f6cd3baf05800e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730851885a2baec9be7b052fea94ff211e4207eef273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bbffdeb97637c5ac5198ca2a3b391fc8fb1db64773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007321b5a2f2d0b87f01ea030086b586bc4d63d516c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bdafc31b8af397319dc3915a2bdab999b917e81f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d08f764a6399c19e886b582ac52136afdec0139473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073a4a3b0462dbce9f39232739e348f197089e6a81673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073dcb50f03df160ba78c198707fa995752df60af3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073db25afdb6b1556a11c5e29aceeddf497a038a09b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073915ad6f86b456097701f8d4683eeaac8de3a854173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731223d2593ad5621b9257ca3921eb0c2aa52c1fff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ed9acb78ac13d48bce739bdf582dfa4b1c17f60d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737662c5b391a3fa466d15a9c7b1c127155cc81d1e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ee7f8be61ee66a3a6092fb8085de36e2ea333f9473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735ca6976e993ac0201b5dd4f17ee93a86e4a6bd9073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730b24dc8537340dcf4ff89f522f32ceb6395ef39673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739f20f89daf274d34b49868ca8ec147a20a7f7e5673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e9dc029fe9e069b984a97690f78f7fddd9fc710673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737acb27b14d0c030488677635bf0a8cb6d733c80d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b958153117e6842849f267eed7c2b8f89565517a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000732be5fe3421cd236cfaa901d96d3cab7ec4e4c7c473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731562265f4ee4ac7f18c3b95f7764a6b2b702bc4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b5c60ad7c88ffe4faf93de93d75ac628affc8ea373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739b046e2ad017a6e23d7f8058c250176e71c885f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731a64c8ba39faadeec66bb81b3819952a632359d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c0ae2cd3f950ccfd8a258b25e606a8b9e2dbbe5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738954b761b774184ecae4f03dda8f71031d65884b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737be58553335ca8ae53c5a4b51f775b394e4b7f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073733155767af75d5599a9853c9c73bddb5cff140b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b85ef4488f9066141202eb51210e4e1d9df02f5373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073be73fa76f7e34675b849c36585d79e5dd770a83373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ffe187bf4e4482f10f04b335381c760bb02a708873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c0d5d7e8c3bba97034dcfdbf4448626d8477a05473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073361ba255a10938d7fe28234ca6999e2141639e5c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000738ed1fc23e54acad02140ff5123018029547983f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007352817be92f3c47f707b152d436763b3d9571c16473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073925342639dcc7906b6a6817e1f59390645dbf11773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ca787230e02cf5beabcf4f299708cb7515fcd84d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730250aff3d863ba6ed05f0f889988062be44c1e4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073155026cf3d32957a7fc4bf6e0e076659a7e4529f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cb33d61af7c2dd6fac01563b6ae309698f7c335273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007393007426ca56bad2a3c115ac6496e06716ce59b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f655e23b8e53402833519b1de7ecbd4f63d5e6ad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000739574fa6b05cf7f947978dd7d688d600fbf221e8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735b408c0adc4c8b0106b643b4ecdfe127ff94946973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731b9160b5d0059ecba0fcf4d63865063e468a0a2f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735364a0e3ce1c05d567e3cf900c4e589ba129d6a073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073047d6f2285c5ffeab610c927de6f86a2b2e9e73873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073111bb952e44fb1d43bd1d8861e965e0b0ecf5df473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007376ab95c8ac7f74e09684eb8fe9fcf97eb0d885c473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733ec39f446b64a47f68a65e91f10e94d5063927fa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730af822d4d100ba9dc6da3d97ba1e20d771e58c5773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073781855acb9c57184bed179f02ee7823d372aa2c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736fcc6a63d5a88d11db950dd030e78a20969ef28e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073d22f50ad512bdb526eebd040de791a336fa08f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073b9189c585cd5bbb45c3e074a87c48747d3530ada73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073965e30796c562c87a6859613d9408a7480bd914d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007397f2b1bc30c1e4fd1a33bb8ea1e14f2ca8a524cb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073c8ed349529bab23ac6c726693623cefa2e31ed9873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073dda8b35cc5987279b43ff8e6c0777897f56fe3f073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000731e2bba1c2f5fcfdc95c19ea40a4cf714b557f37473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e83366a625f1e7374bd76e631010207edbc6d19473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000733e2e55995baf83b9b1fc349d9a4a45d57ad2914b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f892dcff83bcc97c2eb1fec8e76c5b2f9d4a8e1b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073833eab3f58cf58323b8e133cf69503698c3a21f173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073224b5e80309c565bd310f2984b0363054cba90f573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007328afc128874229e557d6870e93de93d8efcf371873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007310a26926689c4ebc1f190238892b0b78c3688f6273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073970b52bf8964934e721f655325cc946e4901be6b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007359b0c32345289252b7009773a1d233a7e1765c2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073021f4e8b7f8f253b6e2ec8347c0b6d8f73a3ed1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200b77c565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200b668906200b747565b90600052602060002090601f0160209004810192826200b68c57600085556200b6d8565b82601f106200b6a757805160ff19168380011785556200b6d8565b828001600101855582156200b6d8579182015b828111156200b6d75782518255916020019190600101906200b6ba565b5b5090506200b6e791906200b6f9565b5090565b610bc3806200ea5c83390190565b5b808211156200b7145760008160009055506001016200b6fa565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200b76057607f821691505b6020821081036200b776576200b7756200b718565b5b50919050565b6080516132bd6200b79f60003960008181610d16015261149201526132bd6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063b88d4fde1161007c578063b88d4fde1461034f578063c87b56dd1461036b578063d547cfb71461039b578063e2982c21146103b9578063e985e9c5146103e9578063f2fde38b1461041957610142565b8063715018a6146102cf5780638da5cb5b146102d9578063902d55a5146102f757806395d89b4114610315578063a22cb4651461033357610142565b806323b872dd1161010a57806323b872dd146101ff57806330176e131461021b57806331b3eb941461023757806342842e0e146102535780636352211e1461026f57806370a082311461029f57610142565b806301ffc9a71461014757806306fdde0314610177578063081812fc14610195578063095ea7b3146101c55780631249c58b146101e1575b600080fd5b610161600480360381019061015c919061213a565b610435565b60405161016e9190612182565b60405180910390f35b61017f610517565b60405161018c9190612236565b60405180910390f35b6101af60048036038101906101aa919061228e565b6105a9565b6040516101bc91906122fc565b60405180910390f35b6101df60048036038101906101da9190612343565b6105ef565b005b6101e9610706565b6040516101f69190612392565b60405180910390f35b610219600480360381019061021491906123ad565b6108db565b005b61023560048036038101906102309190612535565b61093b565b005b610251600480360381019061024c91906125bc565b61095d565b005b61026d600480360381019061026891906123ad565b610971565b005b6102896004803603810190610284919061228e565b610991565b60405161029691906122fc565b60405180910390f35b6102b960048036038101906102b491906125e9565b610a17565b6040516102c69190612392565b60405180910390f35b6102d7610ace565b005b6102e1610ae2565b6040516102ee91906122fc565b60405180910390f35b6102ff610b0c565b60405161030c9190612392565b60405180910390f35b61031d610b12565b60405161032a9190612236565b60405180910390f35b61034d60048036038101906103489190612642565b610ba4565b005b61036960048036038101906103649190612723565b610bba565b005b6103856004803603810190610380919061228e565b610c1c565b6040516103929190612236565b60405180910390f35b6103a3610c84565b6040516103b09190612236565b60405180910390f35b6103d360048036038101906103ce91906125e9565b610d12565b6040516103e09190612392565b60405180910390f35b61040360048036038101906103fe91906127a6565b610db5565b6040516104109190612182565b60405180910390f35b610433600480360381019061042e91906125e9565b610e49565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061050057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610510575061050f82610ecc565b5b9050919050565b60606000805461052690612815565b80601f016020809104026020016040519081016040528092919081815260200182805461055290612815565b801561059f5780601f106105745761010080835404028352916020019161059f565b820191906000526020600020905b81548152906001019060200180831161058257829003601f168201915b5050505050905090565b60006105b482610f36565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105fa82610991565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361066a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610661906128b8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610689610f81565b73ffffffffffffffffffffffffffffffffffffffff1614806106b857506106b7816106b2610f81565b610db5565b5b6106f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ee9061294a565b60405180910390fd5b6107018383610f89565b505050565b6000806107136009611042565b905061014d8110610759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610750906129b6565b60405180910390fd5b73da94065c938f03789f2e70e1d0b40545e505547b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036107cc576107aa6009611050565b60006107b66009611042565b90506107c23382611066565b80925050506108d8565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90612a48565b60405180910390fd5b6108626009611050565b600061086e6009611042565b905061087a3382611066565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080925050505b90565b6108ec6108e6610f81565b82611084565b61092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290612ada565b60405180910390fd5b610936838383611119565b505050565b610943611412565b806008908051906020019061095992919061202b565b5050565b610965611412565b61096e81611490565b50565b61098c83838360405180602001604052806000815250610bba565b505050565b60008061099d8361151e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590612b46565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e90612bd8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ad6611412565b610ae0600061155b565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61014d81565b606060018054610b2190612815565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4d90612815565b8015610b9a5780601f10610b6f57610100808354040283529160200191610b9a565b820191906000526020600020905b815481529060010190602001808311610b7d57829003601f168201915b5050505050905090565b610bb6610baf610f81565b8383611621565b5050565b610bcb610bc5610f81565b83611084565b610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190612ada565b60405180910390fd5b610c168484848461178d565b50505050565b6060610c2782610f36565b6000610c316117e9565b90506000815111610c515760405180602001604052806000815250610c7c565b80610c5b8461187b565b604051602001610c6c929190612c34565b6040516020818303038152906040525b915050919050565b60088054610c9190612815565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbd90612815565b8015610d0a5780601f10610cdf57610100808354040283529160200191610d0a565b820191906000526020600020905b815481529060010190602001808311610ced57829003601f168201915b505050505081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e3a9db1a836040518263ffffffff1660e01b8152600401610d6d91906122fc565b602060405180830381865afa158015610d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dae9190612c6d565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e51611412565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790612d0c565b60405180910390fd5b610ec98161155b565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610f3f81611949565b610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590612b46565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610ffc83610991565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6001816000016000828254019250508190555050565b61108082826040518060200160405280600081525061198a565b5050565b60008061109083610991565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806110d257506110d18185610db5565b5b8061111057508373ffffffffffffffffffffffffffffffffffffffff166110f8846105a9565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661113982610991565b73ffffffffffffffffffffffffffffffffffffffff161461118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690612d9e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590612e30565b60405180910390fd5b61120b83838360016119e5565b8273ffffffffffffffffffffffffffffffffffffffff1661122b82610991565b73ffffffffffffffffffffffffffffffffffffffff1614611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890612d9e565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461140d8383836001611b0b565b505050565b61141a610f81565b73ffffffffffffffffffffffffffffffffffffffff16611438610ae2565b73ffffffffffffffffffffffffffffffffffffffff161461148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148590612e9c565b60405180910390fd5b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b81526004016114e99190612ecb565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b5050505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690612f32565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117809190612182565b60405180910390a3505050565b611798848484611119565b6117a484848484611b11565b6117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90612fc4565b60405180910390fd5b50505050565b6060600880546117f890612815565b80601f016020809104026020016040519081016040528092919081815260200182805461182490612815565b80156118715780601f1061184657610100808354040283529160200191611871565b820191906000526020600020905b81548152906001019060200180831161185457829003601f168201915b5050505050905090565b60606000600161188a84611c98565b01905060008167ffffffffffffffff8111156118a9576118a861240a565b5b6040519080825280601f01601f1916602001820160405280156118db5781602001600182028036833780820191505090505b509050600082602001820190505b60011561193e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161193257611931612fe4565b5b049450600085036118e9575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661196b8361151e565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6119948383611deb565b6119a16000848484611b11565b6119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d790612fc4565b60405180910390fd5b505050565b6001811115611b0557600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611a795780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a719190613042565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b045780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611afc9190613076565b925050819055505b5b50505050565b50505050565b6000611b328473ffffffffffffffffffffffffffffffffffffffff16612008565b15611c8b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611b5b610f81565b8786866040518563ffffffff1660e01b8152600401611b7d9493929190613121565b6020604051808303816000875af1925050508015611bb957506040513d601f19601f82011682018060405250810190611bb69190613182565b60015b611c3b573d8060008114611be9576040519150601f19603f3d011682016040523d82523d6000602084013e611bee565b606091505b506000815103611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90612fc4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611c90565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611cf6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611cec57611ceb612fe4565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611d33576d04ee2d6d415b85acef81000000008381611d2957611d28612fe4565b5b0492506020810190505b662386f26fc100008310611d6257662386f26fc100008381611d5857611d57612fe4565b5b0492506010810190505b6305f5e1008310611d8b576305f5e1008381611d8157611d80612fe4565b5b0492506008810190505b6127108310611db0576127108381611da657611da5612fe4565b5b0492506004810190505b60648310611dd35760648381611dc957611dc8612fe4565b5b0492506002810190505b600a8310611de2576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e51906131fb565b60405180910390fd5b611e6381611949565b15611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613267565b60405180910390fd5b611eb16000838360016119e5565b611eba81611949565b15611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef190613267565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612004600083836001611b0b565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461203790612815565b90600052602060002090601f01602090048101928261205957600085556120a0565b82601f1061207257805160ff19168380011785556120a0565b828001600101855582156120a0579182015b8281111561209f578251825591602001919060010190612084565b5b5090506120ad91906120b1565b5090565b5b808211156120ca5760008160009055506001016120b2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612117816120e2565b811461212257600080fd5b50565b6000813590506121348161210e565b92915050565b6000602082840312156121505761214f6120d8565b5b600061215e84828501612125565b91505092915050565b60008115159050919050565b61217c81612167565b82525050565b60006020820190506121976000830184612173565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121d75780820151818401526020810190506121bc565b838111156121e6576000848401525b50505050565b6000601f19601f8301169050919050565b60006122088261219d565b61221281856121a8565b93506122228185602086016121b9565b61222b816121ec565b840191505092915050565b6000602082019050818103600083015261225081846121fd565b905092915050565b6000819050919050565b61226b81612258565b811461227657600080fd5b50565b60008135905061228881612262565b92915050565b6000602082840312156122a4576122a36120d8565b5b60006122b284828501612279565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122e6826122bb565b9050919050565b6122f6816122db565b82525050565b600060208201905061231160008301846122ed565b92915050565b612320816122db565b811461232b57600080fd5b50565b60008135905061233d81612317565b92915050565b6000806040838503121561235a576123596120d8565b5b60006123688582860161232e565b925050602061237985828601612279565b9150509250929050565b61238c81612258565b82525050565b60006020820190506123a76000830184612383565b92915050565b6000806000606084860312156123c6576123c56120d8565b5b60006123d48682870161232e565b93505060206123e58682870161232e565b92505060406123f686828701612279565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612442826121ec565b810181811067ffffffffffffffff821117156124615761246061240a565b5b80604052505050565b60006124746120ce565b90506124808282612439565b919050565b600067ffffffffffffffff8211156124a05761249f61240a565b5b6124a9826121ec565b9050602081019050919050565b82818337600083830152505050565b60006124d86124d384612485565b61246a565b9050828152602081018484840111156124f4576124f3612405565b5b6124ff8482856124b6565b509392505050565b600082601f83011261251c5761251b612400565b5b813561252c8482602086016124c5565b91505092915050565b60006020828403121561254b5761254a6120d8565b5b600082013567ffffffffffffffff811115612569576125686120dd565b5b61257584828501612507565b91505092915050565b6000612589826122bb565b9050919050565b6125998161257e565b81146125a457600080fd5b50565b6000813590506125b681612590565b92915050565b6000602082840312156125d2576125d16120d8565b5b60006125e0848285016125a7565b91505092915050565b6000602082840312156125ff576125fe6120d8565b5b600061260d8482850161232e565b91505092915050565b61261f81612167565b811461262a57600080fd5b50565b60008135905061263c81612616565b92915050565b60008060408385031215612659576126586120d8565b5b60006126678582860161232e565b92505060206126788582860161262d565b9150509250929050565b600067ffffffffffffffff82111561269d5761269c61240a565b5b6126a6826121ec565b9050602081019050919050565b60006126c66126c184612682565b61246a565b9050828152602081018484840111156126e2576126e1612405565b5b6126ed8482856124b6565b509392505050565b600082601f83011261270a57612709612400565b5b813561271a8482602086016126b3565b91505092915050565b6000806000806080858703121561273d5761273c6120d8565b5b600061274b8782880161232e565b945050602061275c8782880161232e565b935050604061276d87828801612279565b925050606085013567ffffffffffffffff81111561278e5761278d6120dd565b5b61279a878288016126f5565b91505092959194509250565b600080604083850312156127bd576127bc6120d8565b5b60006127cb8582860161232e565b92505060206127dc8582860161232e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061282d57607f821691505b6020821081036128405761283f6127e6565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006128a26021836121a8565b91506128ad82612846565b604082019050919050565b600060208201905081810360008301526128d181612895565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612934603d836121a8565b915061293f826128d8565b604082019050919050565b6000602082019050818103600083015261296381612927565b9050919050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b60006129a06012836121a8565b91506129ab8261296a565b602082019050919050565b600060208201905081810360008301526129cf81612993565b9050919050565b7f6f6e6c792031206d696e74207065722077686974656c69737465642077616c6c60008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a326022836121a8565b9150612a3d826129d6565b604082019050919050565b60006020820190508181036000830152612a6181612a25565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612ac4602d836121a8565b9150612acf82612a68565b604082019050919050565b60006020820190508181036000830152612af381612ab7565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612b306018836121a8565b9150612b3b82612afa565b602082019050919050565b60006020820190508181036000830152612b5f81612b23565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612bc26029836121a8565b9150612bcd82612b66565b604082019050919050565b60006020820190508181036000830152612bf181612bb5565b9050919050565b600081905092915050565b6000612c0e8261219d565b612c188185612bf8565b9350612c288185602086016121b9565b80840191505092915050565b6000612c408285612c03565b9150612c4c8284612c03565b91508190509392505050565b600081519050612c6781612262565b92915050565b600060208284031215612c8357612c826120d8565b5b6000612c9184828501612c58565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612cf66026836121a8565b9150612d0182612c9a565b604082019050919050565b60006020820190508181036000830152612d2581612ce9565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612d886025836121a8565b9150612d9382612d2c565b604082019050919050565b60006020820190508181036000830152612db781612d7b565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e1a6024836121a8565b9150612e2582612dbe565b604082019050919050565b60006020820190508181036000830152612e4981612e0d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e866020836121a8565b9150612e9182612e50565b602082019050919050565b60006020820190508181036000830152612eb581612e79565b9050919050565b612ec58161257e565b82525050565b6000602082019050612ee06000830184612ebc565b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612f1c6019836121a8565b9150612f2782612ee6565b602082019050919050565b60006020820190508181036000830152612f4b81612f0f565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612fae6032836121a8565b9150612fb982612f52565b604082019050919050565b60006020820190508181036000830152612fdd81612fa1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061304d82612258565b915061305883612258565b92508282101561306b5761306a613013565b5b828203905092915050565b600061308182612258565b915061308c83612258565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130c1576130c0613013565b5b828201905092915050565b600081519050919050565b600082825260208201905092915050565b60006130f3826130cc565b6130fd81856130d7565b935061310d8185602086016121b9565b613116816121ec565b840191505092915050565b600060808201905061313660008301876122ed565b61314360208301866122ed565b6131506040830185612383565b818103606083015261316281846130e8565b905095945050505050565b60008151905061317c8161210e565b92915050565b600060208284031215613198576131976120d8565b5b60006131a68482850161316d565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006131e56020836121a8565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613251601c836121a8565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b905091905056fea2646970667358221220240b5fa5120782ff9f108eba003c2af4b5008ce0f3cfe2779d9054bc75a205f164736f6c634300080d0033608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610ab68061010d6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a6146100835780638da5cb5b1461009a578063e3a9db1a146100c5578063f2fde38b14610102578063f340fa011461012b575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c91906106b2565b610147565b005b34801561008f57600080fd5b50610098610253565b005b3480156100a657600080fd5b506100af610267565b6040516100bc9190610700565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e79190610747565b610290565b6040516100f9919061078d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190610747565b6102d9565b005b61014560048036038101906101409190610747565b61035c565b005b61014f610411565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610201818373ffffffffffffffffffffffffffffffffffffffff1661048f90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d582604051610247919061078d565b60405180910390a25050565b61025b610411565b6102656000610583565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6102e1610411565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103479061082b565b60405180910390fd5b61035981610583565b50565b610364610411565b600034905080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103b8919061087a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c482604051610405919061078d565b60405180910390a25050565b610419610647565b73ffffffffffffffffffffffffffffffffffffffff16610437610267565b73ffffffffffffffffffffffffffffffffffffffff161461048d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104849061091c565b60405180910390fd5b565b804710156104d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c990610988565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104f8906109d9565b60006040518083038185875af1925050503d8060008114610535576040519150601f19603f3d011682016040523d82523d6000602084013e61053a565b606091505b505090508061057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590610a60565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061067f82610654565b9050919050565b61068f81610674565b811461069a57600080fd5b50565b6000813590506106ac81610686565b92915050565b6000602082840312156106c8576106c761064f565b5b60006106d68482850161069d565b91505092915050565b60006106ea82610654565b9050919050565b6106fa816106df565b82525050565b600060208201905061071560008301846106f1565b92915050565b610724816106df565b811461072f57600080fd5b50565b6000813590506107418161071b565b92915050565b60006020828403121561075d5761075c61064f565b5b600061076b84828501610732565b91505092915050565b6000819050919050565b61078781610774565b82525050565b60006020820190506107a2600083018461077e565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006108156026836107a8565b9150610820826107b9565b604082019050919050565b6000602082019050818103600083015261084481610808565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061088582610774565b915061089083610774565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156108c5576108c461084b565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006109066020836107a8565b9150610911826108d0565b602082019050919050565b60006020820190508181036000830152610935816108f9565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000610972601d836107a8565b915061097d8261093c565b602082019050919050565b600060208201905081810360008301526109a181610965565b9050919050565b600081905092915050565b50565b60006109c36000836109a8565b91506109ce826109b3565b600082019050919050565b60006109e4826109b6565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000610a4a603a836107a8565b9150610a55826109ee565b604082019050919050565b60006020820190508181036000830152610a7981610a3d565b905091905056fea2646970667358221220177a38013feba776b8009d4746ec4d62d36ed8ea086069ddc210c644c0dac50264736f6c634300080d003368747470733a2f2f6261667962656963366c78716569693535643772726633373775677973366e746c67696e78336577626a686f61666a7474737472756c78636e37712e697066732e647765622e6c696e6b2f6d657461646174612f

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063b88d4fde1161007c578063b88d4fde1461034f578063c87b56dd1461036b578063d547cfb71461039b578063e2982c21146103b9578063e985e9c5146103e9578063f2fde38b1461041957610142565b8063715018a6146102cf5780638da5cb5b146102d9578063902d55a5146102f757806395d89b4114610315578063a22cb4651461033357610142565b806323b872dd1161010a57806323b872dd146101ff57806330176e131461021b57806331b3eb941461023757806342842e0e146102535780636352211e1461026f57806370a082311461029f57610142565b806301ffc9a71461014757806306fdde0314610177578063081812fc14610195578063095ea7b3146101c55780631249c58b146101e1575b600080fd5b610161600480360381019061015c919061213a565b610435565b60405161016e9190612182565b60405180910390f35b61017f610517565b60405161018c9190612236565b60405180910390f35b6101af60048036038101906101aa919061228e565b6105a9565b6040516101bc91906122fc565b60405180910390f35b6101df60048036038101906101da9190612343565b6105ef565b005b6101e9610706565b6040516101f69190612392565b60405180910390f35b610219600480360381019061021491906123ad565b6108db565b005b61023560048036038101906102309190612535565b61093b565b005b610251600480360381019061024c91906125bc565b61095d565b005b61026d600480360381019061026891906123ad565b610971565b005b6102896004803603810190610284919061228e565b610991565b60405161029691906122fc565b60405180910390f35b6102b960048036038101906102b491906125e9565b610a17565b6040516102c69190612392565b60405180910390f35b6102d7610ace565b005b6102e1610ae2565b6040516102ee91906122fc565b60405180910390f35b6102ff610b0c565b60405161030c9190612392565b60405180910390f35b61031d610b12565b60405161032a9190612236565b60405180910390f35b61034d60048036038101906103489190612642565b610ba4565b005b61036960048036038101906103649190612723565b610bba565b005b6103856004803603810190610380919061228e565b610c1c565b6040516103929190612236565b60405180910390f35b6103a3610c84565b6040516103b09190612236565b60405180910390f35b6103d360048036038101906103ce91906125e9565b610d12565b6040516103e09190612392565b60405180910390f35b61040360048036038101906103fe91906127a6565b610db5565b6040516104109190612182565b60405180910390f35b610433600480360381019061042e91906125e9565b610e49565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061050057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610510575061050f82610ecc565b5b9050919050565b60606000805461052690612815565b80601f016020809104026020016040519081016040528092919081815260200182805461055290612815565b801561059f5780601f106105745761010080835404028352916020019161059f565b820191906000526020600020905b81548152906001019060200180831161058257829003601f168201915b5050505050905090565b60006105b482610f36565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105fa82610991565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361066a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610661906128b8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610689610f81565b73ffffffffffffffffffffffffffffffffffffffff1614806106b857506106b7816106b2610f81565b610db5565b5b6106f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ee9061294a565b60405180910390fd5b6107018383610f89565b505050565b6000806107136009611042565b905061014d8110610759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610750906129b6565b60405180910390fd5b73da94065c938f03789f2e70e1d0b40545e505547b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036107cc576107aa6009611050565b60006107b66009611042565b90506107c23382611066565b80925050506108d8565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90612a48565b60405180910390fd5b6108626009611050565b600061086e6009611042565b905061087a3382611066565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080925050505b90565b6108ec6108e6610f81565b82611084565b61092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290612ada565b60405180910390fd5b610936838383611119565b505050565b610943611412565b806008908051906020019061095992919061202b565b5050565b610965611412565b61096e81611490565b50565b61098c83838360405180602001604052806000815250610bba565b505050565b60008061099d8361151e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590612b46565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e90612bd8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ad6611412565b610ae0600061155b565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61014d81565b606060018054610b2190612815565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4d90612815565b8015610b9a5780601f10610b6f57610100808354040283529160200191610b9a565b820191906000526020600020905b815481529060010190602001808311610b7d57829003601f168201915b5050505050905090565b610bb6610baf610f81565b8383611621565b5050565b610bcb610bc5610f81565b83611084565b610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190612ada565b60405180910390fd5b610c168484848461178d565b50505050565b6060610c2782610f36565b6000610c316117e9565b90506000815111610c515760405180602001604052806000815250610c7c565b80610c5b8461187b565b604051602001610c6c929190612c34565b6040516020818303038152906040525b915050919050565b60088054610c9190612815565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbd90612815565b8015610d0a5780601f10610cdf57610100808354040283529160200191610d0a565b820191906000526020600020905b815481529060010190602001808311610ced57829003601f168201915b505050505081565b60007f00000000000000000000000075f6b8d2c033ac701e8477be2f53efb971bf7ec573ffffffffffffffffffffffffffffffffffffffff1663e3a9db1a836040518263ffffffff1660e01b8152600401610d6d91906122fc565b602060405180830381865afa158015610d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dae9190612c6d565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e51611412565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790612d0c565b60405180910390fd5b610ec98161155b565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610f3f81611949565b610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590612b46565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610ffc83610991565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6001816000016000828254019250508190555050565b61108082826040518060200160405280600081525061198a565b5050565b60008061109083610991565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806110d257506110d18185610db5565b5b8061111057508373ffffffffffffffffffffffffffffffffffffffff166110f8846105a9565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661113982610991565b73ffffffffffffffffffffffffffffffffffffffff161461118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690612d9e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590612e30565b60405180910390fd5b61120b83838360016119e5565b8273ffffffffffffffffffffffffffffffffffffffff1661122b82610991565b73ffffffffffffffffffffffffffffffffffffffff1614611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890612d9e565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461140d8383836001611b0b565b505050565b61141a610f81565b73ffffffffffffffffffffffffffffffffffffffff16611438610ae2565b73ffffffffffffffffffffffffffffffffffffffff161461148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148590612e9c565b60405180910390fd5b565b7f00000000000000000000000075f6b8d2c033ac701e8477be2f53efb971bf7ec573ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b81526004016114e99190612ecb565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b5050505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690612f32565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117809190612182565b60405180910390a3505050565b611798848484611119565b6117a484848484611b11565b6117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90612fc4565b60405180910390fd5b50505050565b6060600880546117f890612815565b80601f016020809104026020016040519081016040528092919081815260200182805461182490612815565b80156118715780601f1061184657610100808354040283529160200191611871565b820191906000526020600020905b81548152906001019060200180831161185457829003601f168201915b5050505050905090565b60606000600161188a84611c98565b01905060008167ffffffffffffffff8111156118a9576118a861240a565b5b6040519080825280601f01601f1916602001820160405280156118db5781602001600182028036833780820191505090505b509050600082602001820190505b60011561193e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161193257611931612fe4565b5b049450600085036118e9575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661196b8361151e565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6119948383611deb565b6119a16000848484611b11565b6119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d790612fc4565b60405180910390fd5b505050565b6001811115611b0557600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611a795780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a719190613042565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b045780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611afc9190613076565b925050819055505b5b50505050565b50505050565b6000611b328473ffffffffffffffffffffffffffffffffffffffff16612008565b15611c8b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611b5b610f81565b8786866040518563ffffffff1660e01b8152600401611b7d9493929190613121565b6020604051808303816000875af1925050508015611bb957506040513d601f19601f82011682018060405250810190611bb69190613182565b60015b611c3b573d8060008114611be9576040519150601f19603f3d011682016040523d82523d6000602084013e611bee565b606091505b506000815103611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90612fc4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611c90565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611cf6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611cec57611ceb612fe4565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611d33576d04ee2d6d415b85acef81000000008381611d2957611d28612fe4565b5b0492506020810190505b662386f26fc100008310611d6257662386f26fc100008381611d5857611d57612fe4565b5b0492506010810190505b6305f5e1008310611d8b576305f5e1008381611d8157611d80612fe4565b5b0492506008810190505b6127108310611db0576127108381611da657611da5612fe4565b5b0492506004810190505b60648310611dd35760648381611dc957611dc8612fe4565b5b0492506002810190505b600a8310611de2576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e51906131fb565b60405180910390fd5b611e6381611949565b15611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613267565b60405180910390fd5b611eb16000838360016119e5565b611eba81611949565b15611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef190613267565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612004600083836001611b0b565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461203790612815565b90600052602060002090601f01602090048101928261205957600085556120a0565b82601f1061207257805160ff19168380011785556120a0565b828001600101855582156120a0579182015b8281111561209f578251825591602001919060010190612084565b5b5090506120ad91906120b1565b5090565b5b808211156120ca5760008160009055506001016120b2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612117816120e2565b811461212257600080fd5b50565b6000813590506121348161210e565b92915050565b6000602082840312156121505761214f6120d8565b5b600061215e84828501612125565b91505092915050565b60008115159050919050565b61217c81612167565b82525050565b60006020820190506121976000830184612173565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121d75780820151818401526020810190506121bc565b838111156121e6576000848401525b50505050565b6000601f19601f8301169050919050565b60006122088261219d565b61221281856121a8565b93506122228185602086016121b9565b61222b816121ec565b840191505092915050565b6000602082019050818103600083015261225081846121fd565b905092915050565b6000819050919050565b61226b81612258565b811461227657600080fd5b50565b60008135905061228881612262565b92915050565b6000602082840312156122a4576122a36120d8565b5b60006122b284828501612279565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122e6826122bb565b9050919050565b6122f6816122db565b82525050565b600060208201905061231160008301846122ed565b92915050565b612320816122db565b811461232b57600080fd5b50565b60008135905061233d81612317565b92915050565b6000806040838503121561235a576123596120d8565b5b60006123688582860161232e565b925050602061237985828601612279565b9150509250929050565b61238c81612258565b82525050565b60006020820190506123a76000830184612383565b92915050565b6000806000606084860312156123c6576123c56120d8565b5b60006123d48682870161232e565b93505060206123e58682870161232e565b92505060406123f686828701612279565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612442826121ec565b810181811067ffffffffffffffff821117156124615761246061240a565b5b80604052505050565b60006124746120ce565b90506124808282612439565b919050565b600067ffffffffffffffff8211156124a05761249f61240a565b5b6124a9826121ec565b9050602081019050919050565b82818337600083830152505050565b60006124d86124d384612485565b61246a565b9050828152602081018484840111156124f4576124f3612405565b5b6124ff8482856124b6565b509392505050565b600082601f83011261251c5761251b612400565b5b813561252c8482602086016124c5565b91505092915050565b60006020828403121561254b5761254a6120d8565b5b600082013567ffffffffffffffff811115612569576125686120dd565b5b61257584828501612507565b91505092915050565b6000612589826122bb565b9050919050565b6125998161257e565b81146125a457600080fd5b50565b6000813590506125b681612590565b92915050565b6000602082840312156125d2576125d16120d8565b5b60006125e0848285016125a7565b91505092915050565b6000602082840312156125ff576125fe6120d8565b5b600061260d8482850161232e565b91505092915050565b61261f81612167565b811461262a57600080fd5b50565b60008135905061263c81612616565b92915050565b60008060408385031215612659576126586120d8565b5b60006126678582860161232e565b92505060206126788582860161262d565b9150509250929050565b600067ffffffffffffffff82111561269d5761269c61240a565b5b6126a6826121ec565b9050602081019050919050565b60006126c66126c184612682565b61246a565b9050828152602081018484840111156126e2576126e1612405565b5b6126ed8482856124b6565b509392505050565b600082601f83011261270a57612709612400565b5b813561271a8482602086016126b3565b91505092915050565b6000806000806080858703121561273d5761273c6120d8565b5b600061274b8782880161232e565b945050602061275c8782880161232e565b935050604061276d87828801612279565b925050606085013567ffffffffffffffff81111561278e5761278d6120dd565b5b61279a878288016126f5565b91505092959194509250565b600080604083850312156127bd576127bc6120d8565b5b60006127cb8582860161232e565b92505060206127dc8582860161232e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061282d57607f821691505b6020821081036128405761283f6127e6565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006128a26021836121a8565b91506128ad82612846565b604082019050919050565b600060208201905081810360008301526128d181612895565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612934603d836121a8565b915061293f826128d8565b604082019050919050565b6000602082019050818103600083015261296381612927565b9050919050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b60006129a06012836121a8565b91506129ab8261296a565b602082019050919050565b600060208201905081810360008301526129cf81612993565b9050919050565b7f6f6e6c792031206d696e74207065722077686974656c69737465642077616c6c60008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a326022836121a8565b9150612a3d826129d6565b604082019050919050565b60006020820190508181036000830152612a6181612a25565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612ac4602d836121a8565b9150612acf82612a68565b604082019050919050565b60006020820190508181036000830152612af381612ab7565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612b306018836121a8565b9150612b3b82612afa565b602082019050919050565b60006020820190508181036000830152612b5f81612b23565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612bc26029836121a8565b9150612bcd82612b66565b604082019050919050565b60006020820190508181036000830152612bf181612bb5565b9050919050565b600081905092915050565b6000612c0e8261219d565b612c188185612bf8565b9350612c288185602086016121b9565b80840191505092915050565b6000612c408285612c03565b9150612c4c8284612c03565b91508190509392505050565b600081519050612c6781612262565b92915050565b600060208284031215612c8357612c826120d8565b5b6000612c9184828501612c58565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612cf66026836121a8565b9150612d0182612c9a565b604082019050919050565b60006020820190508181036000830152612d2581612ce9565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612d886025836121a8565b9150612d9382612d2c565b604082019050919050565b60006020820190508181036000830152612db781612d7b565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e1a6024836121a8565b9150612e2582612dbe565b604082019050919050565b60006020820190508181036000830152612e4981612e0d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e866020836121a8565b9150612e9182612e50565b602082019050919050565b60006020820190508181036000830152612eb581612e79565b9050919050565b612ec58161257e565b82525050565b6000602082019050612ee06000830184612ebc565b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612f1c6019836121a8565b9150612f2782612ee6565b602082019050919050565b60006020820190508181036000830152612f4b81612f0f565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612fae6032836121a8565b9150612fb982612f52565b604082019050919050565b60006020820190508181036000830152612fdd81612fa1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061304d82612258565b915061305883612258565b92508282101561306b5761306a613013565b5b828203905092915050565b600061308182612258565b915061308c83612258565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130c1576130c0613013565b5b828201905092915050565b600081519050919050565b600082825260208201905092915050565b60006130f3826130cc565b6130fd81856130d7565b935061310d8185602086016121b9565b613116816121ec565b840191505092915050565b600060808201905061313660008301876122ed565b61314360208301866122ed565b6131506040830185612383565b818103606083015261316281846130e8565b905095945050505050565b60008151905061317c8161210e565b92915050565b600060208284031215613198576131976120d8565b5b60006131a68482850161316d565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006131e56020836121a8565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613251601c836121a8565b915061325c8261321b565b602082019050919050565b6000602082019050818103600083015261328081613244565b905091905056fea2646970667358221220240b5fa5120782ff9f108eba003c2af4b5008ce0f3cfe2779d9054bc75a205f164736f6c634300080d0033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.