{"matchId":"5824010","creationMatch":"exact_match","runtimeMatch":"exact_match","verifiedAt":"2024-12-22T13:01:52Z","creationBytecode":{"onchainBytecode":"0x6080604052620000126009600a6200061b565b6200002290634fb1004062000633565b60018190556101f460075560646008819055600981905560c8600a55600b819055612710600c556019600f556010556012805463ffffffff60a01b19166201010160a01b1790556207a120601a556200007f906107d0906200064d565b601c553480156200008f57600080fd5b50604051620048e4380380620048e4833981016040819052620000b2916200068d565b620000bd33620003b0565b601280546001600160a01b0319166001600160a01b0385169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013d9190620006d7565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c59190620006d7565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002389190620006d7565b601180546001600160a01b0319166001600160a01b039283161790556001543060009081526003602090815260408083206012549095168352939052919091205562000285838262000400565b3360009081526004602090815260408083208054600160ff1991821681179092556001600160a01b0387811680875284872080548416851790556011549091168652600590945282852080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905530855291909320805490911683179055600e80546001600160a01b03199081168317909155600d80549091169091179055546200033f9084906200048c565b506011546001546200035b916001600160a01b0316906200048c565b5060015433600081815260026020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050620006f5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81816040516200041090620004fa565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000444573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620004e89086815260200190565b60405180910390a35060015b92915050565b610ecd8062003a1783390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200055f57816000190482111562000543576200054362000508565b808516156200055157918102915b93841c939080029062000523565b509250929050565b6000826200057857506001620004f4565b816200058757506000620004f4565b8160018114620005a05760028114620005ab57620005cb565b6001915050620004f4565b60ff841115620005bf57620005bf62000508565b50506001821b620004f4565b5060208310610133831016604e8410600b8410161715620005f0575081810a620004f4565b620005fc83836200051e565b806000190482111562000613576200061362000508565b029392505050565b60006200062c60ff84168362000567565b9392505050565b8082028115828204841417620004f457620004f462000508565b6000826200066b57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200068857600080fd5b919050565b600080600060608486031215620006a357600080fd5b620006ae8462000670565b9250620006be6020850162000670565b9150620006ce6040850162000670565b90509250925092565b600060208284031215620006ea57600080fd5b6200062c8262000670565b61331280620007056000396000f3fe608060405260043610620002635760003560e01c80639d1944f51162000147578063d7c96f2411620000b9578063eb31d8471162000078578063eb31d847146200076e578063efa4af4c1462000793578063f2fde38b14620007ab578063f708a64f14620007d0578063f887ea4014620007f557600080fd5b8063d7c96f2414620006ad578063d85a282814620006c5578063dd62ed3e14620006dd578063e5c8c5721462000727578063e96fada2146200074c57600080fd5b8063a9059cbb1162000106578063a9059cbb14620005f1578063af38d7571462000616578063bd10bc5f146200062e578063ca33e64c1462000651578063cc642784146200067357600080fd5b80639d1944f51462000540578063a4b45c001462000565578063a51af4c5146200058a578063a771ebc714620005ac578063a8aa1b3114620005cf57600080fd5b80633bb8a8d411620001e157806370a0823111620001a057806370a082311462000474578063715018a614620004ae57806389291a8f14620004c65780638da5cb5b14620004de57806395d89b41146200051257600080fd5b80633bb8a8d414620003cc57806349d5585314620003ef5780634e71d92d146200041457806357d87f0d146200042c578063658d4b7f146200044f57600080fd5b8063201afaaa116200022e578063201afaaa146200033457806323b872dd146200034c5780632d48e8961462000371578063313ce567146200039657806339bb668a14620003b457600080fd5b8063048c7baf146200027057806306fdde031462000297578063095ea7b314620002dd57806318160ddd146200031357600080fd5b366200026b57005b600080fd5b3480156200027d57600080fd5b50620002956200028f36600462001f0f565b62000817565b005b348015620002a457600080fd5b506040805180820190915260088152672832bb9021b7b4b760c11b60208201525b604051620002d4919062001f4d565b60405180910390f35b348015620002ea57600080fd5b5062000302620002fc36600462001fb3565b62000855565b6040519015158152602001620002d4565b3480156200032057600080fd5b506001545b604051908152602001620002d4565b3480156200034157600080fd5b5062000325601c5481565b3480156200035957600080fd5b50620003026200036b36600462001fe2565b620008c3565b3480156200037e57600080fd5b50620002956200039036600462002028565b620009d6565b348015620003a357600080fd5b5060405160098152602001620002d4565b348015620003c157600080fd5b506200029562000a4c565b348015620003d957600080fd5b506012546200030290600160b81b900460ff1681565b348015620003fc57600080fd5b50620002956200040e3660046200204b565b62000a65565b3480156200042157600080fd5b506200029562000a74565b3480156200043957600080fd5b506012546200030290600160b01b900460ff1681565b3480156200045c57600080fd5b50620002956200046e36600462002065565b62000ae0565b3480156200048157600080fd5b506200032562000493366004620020a3565b6001600160a01b031660009081526002602052604090205490565b348015620004bb57600080fd5b506200029562000b15565b348015620004d357600080fd5b506200029562000b2d565b348015620004eb57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001620002d4565b3480156200051f57600080fd5b5060408051808201909152600381526250455760e81b6020820152620002c5565b3480156200054d57600080fd5b50620002956200055f3660046200204b565b62000b92565b3480156200057257600080fd5b506200029562000584366004620020c3565b62000bb1565b3480156200059757600080fd5b50601954620004f9906001600160a01b031681565b348015620005b957600080fd5b506012546200030290600160a01b900460ff1681565b348015620005dc57600080fd5b50601154620004f9906001600160a01b031681565b348015620005fe57600080fd5b50620003026200061036600462001fb3565b62000be9565b3480156200062357600080fd5b506200032562000bf8565b3480156200063b57600080fd5b506012546200030290600160a81b900460ff1681565b3480156200065e57600080fd5b50600d54620004f9906001600160a01b031681565b3480156200068057600080fd5b50620004f962000692366004620020a3565b6006602052600090815260409020546001600160a01b031681565b348015620006ba57600080fd5b506200029562000c6d565b348015620006d257600080fd5b506200029562000c86565b348015620006ea57600080fd5b5062000325620006fc366004620020c3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156200073457600080fd5b506200029562000746366004620020c3565b62000cae565b3480156200075957600080fd5b50600e54620004f9906001600160a01b031681565b3480156200077b57600080fd5b50620002956200078d366004620020a3565b62000ebc565b348015620007a057600080fd5b506200029562000fc1565b348015620007b857600080fd5b5062000295620007ca366004620020a3565b62000fda565b348015620007dd57600080fd5b5062000295620007ef36600462002065565b62001056565b3480156200080257600080fd5b50601254620004f9906001600160a01b031681565b6200082162001144565b60128054941515600160b81b0260ff60b81b1990951694909417909355601391909155600060145560155560165543601755565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914620009bf576001600160a01b0384166000908152600360209081526040808320338452909152902054821115620009695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602090815260408083203384529091529020546200099a9083906200210c565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b620009cc848484620011a0565b90505b9392505050565b620009e062001144565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000a2f57600080fd5b505af115801562000a44573d6000803e3d6000fd5b505050505050565b62000a5662001144565b6012805460ff60a81b19169055565b62000a6f62001144565b601c55565b601860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ac557600080fd5b505af115801562000ada573d6000803e3d6000fd5b50505050565b62000aea62001144565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b62000b1f62001144565b62000b2b600062001534565b565b62000b3762001144565b604051600090339047908381818185875af1925050503d806000811462000b7b576040519150601f19603f3d011682016040523d82523d6000602084013e62000b80565b606091505b505090508062000b8f57600080fd5b50565b62000b9c62001144565b620b71b0811062000bac57600080fd5b601a55565b62000bbb62001144565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000620009cf338484620011a0565b60185460405163051fa63360e31b81523360048201526000916001600160a01b0316906328fd319890602401602060405180830381865afa15801562000c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c68919062002122565b905090565b62000c7762001144565b6012805460ff60b01b19169055565b62000c9062001144565b3060008181526002602052604090205462000b8f91903390620011a0565b62000cb862001144565b601854604080516334684cbb60e21b815290516000926001600160a01b0316918391839163d1a132ec916004808301926020929190829003018187875af115801562000d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d2e919062002122565b905062000d3c858562001584565b60005b8181101562000a445760405163559bbed560e11b8152600481018290526000906001600160a01b0385169063ab377daa906024016020604051808303816000875af115801562000d93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db991906200213c565b9050600062000ddd826001600160a01b031660009081526002602052604090205490565b905062000ded6009600a62002259565b62000dfb906105396200226a565b811062000ea457601854604051630a5b654b60e11b81526001600160a01b03848116600483015260248201849052909116906314b6ca9690604401600060405180830381600087803b15801562000e5157600080fd5b505af192505050801562000e63575060015b62000e6d57600195505b851562000ea457601880546001600160a01b0387166001600160a01b03199182168117909255601980549091169091179055600080fd5b5050808062000eb39062002284565b91505062000d3f565b62000ec662001144565b6040516370a0823160e01b8152306004820181905282916001600160a01b038316916323b872dd9161dead9084906370a0823190602401602060405180830381865afa15801562000f1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f41919062002122565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620022a0565b505050565b62000fcb62001144565b6012805460ff60a01b19169055565b62000fe462001144565b6001600160a01b0381166200104b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000960565b62000b8f8162001534565b6200106062001144565b6001600160a01b03821630148015906200108857506011546001600160a01b03838116911614155b6200109257600080fd5b6001600160a01b0382166000908152600560205260409020805460ff19168215801591909117909155620010fa57601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca969060440162000a14565b6018546001600160a01b0383811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440162000a14565b6000546001600160a01b0316331462000b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000960565b601b5460009060ff1615620011c457620011bc84848462001610565b9050620009cf565b601254600160a01b900460ff1615620012b9576000620011e585856200178d565b9050808015620011fe5750601254600160a81b900460ff165b156200121c576200121385856102c362001610565b915050620009cf565b808015620012335750601254600160b01b900460ff165b15620012835760c86001546200124a9190620022d6565b836200126b866001600160a01b031660009081526002602052604090205490565b620012779190620022f9565b11156200128357600080fd5b6200128d620017f6565b156200129d576200129d62001839565b620012a762001c13565b15620012b757620012b762001c7b565b505b6001600160a01b038416600090815260026020526040902080548390039055601254600160a01b900460ff168015620012f95750620012f9848462001d04565b1562001339576000600c54600754840281620013195762001319620022c0565b306000908152600260205260409020805492909104918201905590920391505b6001600160a01b038084166000908152600260209081526040808320805487019055928716825260059052205460ff16620013e1576018546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620013cd57600080fd5b505af1925050508015620013df575060015b505b6001600160a01b03831660009081526005602052604090205460ff1662001475576018546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200146157600080fd5b505af192505050801562001473575060015b505b601854601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620014ae9160040190815260200190565b600060405180830381600087803b158015620014c957600080fd5b505af1925050508015620014db575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200152291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8181604051620015949062001ef2565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620015c8573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b60006001600160a01b038416620016785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000960565b6001600160a01b038316620016dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000960565b6001600160a01b03841660009081526002602052604090205482811015620017565760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000960565b50506001600160a01b0392831660009081526002602052604080822080548490039055929093168352912080549091019055600190565b6011546000906001600160a01b03838116911614801590620017bd57506000546001600160a01b03838116911614155b8015620017d857506000546001600160a01b03848116911614155b8015620009cf5750506000546001600160a01b031632141592915050565b6011546000906001600160a01b03163314801590620018185750601b5460ff16155b801562000c68575050601c5430600090815260026020526040902054101590565b601b805460ff19166001179055600754600954601c5460009260029290916200186391906200226a565b6200186f9190620022d6565b6200187b9190620022d6565b9050600081601c546200188f91906200210c565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620018cc57620018cc6200230f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194c91906200213c565b816001815181106200196257620019626200230f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac94790620019ae9086906000908790309042906004016200236b565b600060405180830381600087803b158015620019c957600080fd5b505af1158015620019de573d6000803e3d6000fd5b5050505060008147620019f291906200210c565b90506000600260095462001a079190620022d6565b60075462001a1691906200210c565b905060006002826009548562001a2d91906200226a565b62001a399190620022d6565b62001a459190620022d6565b9050600082600a548562001a5a91906200226a565b62001a669190620022d6565b9050600083600b548662001a7b91906200226a565b62001a879190620022d6565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001ada57600080fd5b505af19350505050801562001aed575060015b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562001b29573d6000803e3d6000fd5b50601254600d5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801562001b9b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001bc29190620023a9565b505060408051858152602081018c90527fd2f4e97410796ed7a8c179e2bcedaa646a77cc703849019db2e4a1d368473cff92500160405180910390a15050601b805460ff1916905550505050505050565b6011546000906001600160a01b0316331480159062001c355750601b5460ff16155b801562001c4b5750601254600160b81b900460ff165b801562001c6957504360165460175462001c669190620022f9565b11155b801562000c6857505060155447101590565b62001c8b60155461dead62001d7c565b436017556015546014805460009062001ca6908490620022f9565b9091555050601354601454111562001cc6576012805460ff60b81b191690555b7fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e4806960155460405162001cfa91815260200190565b60405180910390a1565b6001600160a01b03821660009081526004602052604081205460ff168062001d4457506001600160a01b03821660009081526004602052604090205460ff165b158015620009cf57506011546001600160a01b0384811691161480620009cf5750506011546001600160a01b03908116911614919050565b601b805460ff191660011790556040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200213c565b8160008151811062001e305762001e306200230f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062001e675762001e676200230f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590859062001eaf90600090869088904290600401620023d8565b6000604051808303818588803b15801562001ec957600080fd5b505af115801562001ede573d6000803e3d6000fd5b5050601b805460ff19169055505050505050565b610ecd806200241083390190565b801515811462000b8f57600080fd5b6000806000806080858703121562001f2657600080fd5b843562001f338162001f00565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b8181101562001f7c5785810183015185820160400152820162001f5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000b8f57600080fd5b6000806040838503121562001fc757600080fd5b823562001fd48162001f9d565b946020939093013593505050565b60008060006060848603121562001ff857600080fd5b8335620020058162001f9d565b92506020840135620020178162001f9d565b929592945050506040919091013590565b600080604083850312156200203c57600080fd5b50508035926020909101359150565b6000602082840312156200205e57600080fd5b5035919050565b600080604083850312156200207957600080fd5b8235620020868162001f9d565b91506020830135620020988162001f00565b809150509250929050565b600060208284031215620020b657600080fd5b8135620009cf8162001f9d565b60008060408385031215620020d757600080fd5b8235620020e48162001f9d565b91506020830135620020988162001f9d565b634e487b7160e01b600052601160045260246000fd5b81810381811115620008bd57620008bd620020f6565b6000602082840312156200213557600080fd5b5051919050565b6000602082840312156200214f57600080fd5b8151620009cf8162001f9d565b600181815b808511156200219d578160001904821115620021815762002181620020f6565b808516156200218f57918102915b93841c939080029062002161565b509250929050565b600082620021b657506001620008bd565b81620021c557506000620008bd565b8160018114620021de5760028114620021e95762002209565b6001915050620008bd565b60ff841115620021fd57620021fd620020f6565b50506001821b620008bd565b5060208310610133831016604e8410600b84101617156200222e575081810a620008bd565b6200223a83836200215c565b8060001904821115620022515762002251620020f6565b029392505050565b6000620009cf60ff841683620021a5565b8082028115828204841417620008bd57620008bd620020f6565b600060018201620022995762002299620020f6565b5060010190565b600060208284031215620022b357600080fd5b8151620009cf8162001f00565b634e487b7160e01b600052601260045260246000fd5b600082620022f457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008bd57620008bd620020f6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620023605781516001600160a01b03168752958201959082019060010162002339565b509495945050505050565b85815284602082015260a0604082015260006200238c60a083018662002325565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620023bf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000620023f3608083018662002325565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033a2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c6343000812003360806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c634300081200330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000055c0be9e192b1a5fca5fa57107e31547030c46fe0000000000000000000000006982508145454ce325ddbe47a25d4ec3d2311933","recompiledBytecode":"0x6080604052620000126009600a6200061b565b6200002290634fb1004062000633565b60018190556101f460075560646008819055600981905560c8600a55600b819055612710600c556019600f556010556012805463ffffffff60a01b19166201010160a01b1790556207a120601a556200007f906107d0906200064d565b601c553480156200008f57600080fd5b50604051620048e4380380620048e4833981016040819052620000b2916200068d565b620000bd33620003b0565b601280546001600160a01b0319166001600160a01b0385169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013d9190620006d7565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c59190620006d7565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002389190620006d7565b601180546001600160a01b0319166001600160a01b039283161790556001543060009081526003602090815260408083206012549095168352939052919091205562000285838262000400565b3360009081526004602090815260408083208054600160ff1991821681179092556001600160a01b0387811680875284872080548416851790556011549091168652600590945282852080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905530855291909320805490911683179055600e80546001600160a01b03199081168317909155600d80549091169091179055546200033f9084906200048c565b506011546001546200035b916001600160a01b0316906200048c565b5060015433600081815260026020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050620006f5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81816040516200041090620004fa565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000444573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620004e89086815260200190565b60405180910390a35060015b92915050565b610ecd8062003a1783390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200055f57816000190482111562000543576200054362000508565b808516156200055157918102915b93841c939080029062000523565b509250929050565b6000826200057857506001620004f4565b816200058757506000620004f4565b8160018114620005a05760028114620005ab57620005cb565b6001915050620004f4565b60ff841115620005bf57620005bf62000508565b50506001821b620004f4565b5060208310610133831016604e8410600b8410161715620005f0575081810a620004f4565b620005fc83836200051e565b806000190482111562000613576200061362000508565b029392505050565b60006200062c60ff84168362000567565b9392505050565b8082028115828204841417620004f457620004f462000508565b6000826200066b57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200068857600080fd5b919050565b600080600060608486031215620006a357600080fd5b620006ae8462000670565b9250620006be6020850162000670565b9150620006ce6040850162000670565b90509250925092565b600060208284031215620006ea57600080fd5b6200062c8262000670565b61331280620007056000396000f3fe608060405260043610620002635760003560e01c80639d1944f51162000147578063d7c96f2411620000b9578063eb31d8471162000078578063eb31d847146200076e578063efa4af4c1462000793578063f2fde38b14620007ab578063f708a64f14620007d0578063f887ea4014620007f557600080fd5b8063d7c96f2414620006ad578063d85a282814620006c5578063dd62ed3e14620006dd578063e5c8c5721462000727578063e96fada2146200074c57600080fd5b8063a9059cbb1162000106578063a9059cbb14620005f1578063af38d7571462000616578063bd10bc5f146200062e578063ca33e64c1462000651578063cc642784146200067357600080fd5b80639d1944f51462000540578063a4b45c001462000565578063a51af4c5146200058a578063a771ebc714620005ac578063a8aa1b3114620005cf57600080fd5b80633bb8a8d411620001e157806370a0823111620001a057806370a082311462000474578063715018a614620004ae57806389291a8f14620004c65780638da5cb5b14620004de57806395d89b41146200051257600080fd5b80633bb8a8d414620003cc57806349d5585314620003ef5780634e71d92d146200041457806357d87f0d146200042c578063658d4b7f146200044f57600080fd5b8063201afaaa116200022e578063201afaaa146200033457806323b872dd146200034c5780632d48e8961462000371578063313ce567146200039657806339bb668a14620003b457600080fd5b8063048c7baf146200027057806306fdde031462000297578063095ea7b314620002dd57806318160ddd146200031357600080fd5b366200026b57005b600080fd5b3480156200027d57600080fd5b50620002956200028f36600462001f0f565b62000817565b005b348015620002a457600080fd5b506040805180820190915260088152672832bb9021b7b4b760c11b60208201525b604051620002d4919062001f4d565b60405180910390f35b348015620002ea57600080fd5b5062000302620002fc36600462001fb3565b62000855565b6040519015158152602001620002d4565b3480156200032057600080fd5b506001545b604051908152602001620002d4565b3480156200034157600080fd5b5062000325601c5481565b3480156200035957600080fd5b50620003026200036b36600462001fe2565b620008c3565b3480156200037e57600080fd5b50620002956200039036600462002028565b620009d6565b348015620003a357600080fd5b5060405160098152602001620002d4565b348015620003c157600080fd5b506200029562000a4c565b348015620003d957600080fd5b506012546200030290600160b81b900460ff1681565b348015620003fc57600080fd5b50620002956200040e3660046200204b565b62000a65565b3480156200042157600080fd5b506200029562000a74565b3480156200043957600080fd5b506012546200030290600160b01b900460ff1681565b3480156200045c57600080fd5b50620002956200046e36600462002065565b62000ae0565b3480156200048157600080fd5b506200032562000493366004620020a3565b6001600160a01b031660009081526002602052604090205490565b348015620004bb57600080fd5b506200029562000b15565b348015620004d357600080fd5b506200029562000b2d565b348015620004eb57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001620002d4565b3480156200051f57600080fd5b5060408051808201909152600381526250455760e81b6020820152620002c5565b3480156200054d57600080fd5b50620002956200055f3660046200204b565b62000b92565b3480156200057257600080fd5b506200029562000584366004620020c3565b62000bb1565b3480156200059757600080fd5b50601954620004f9906001600160a01b031681565b348015620005b957600080fd5b506012546200030290600160a01b900460ff1681565b348015620005dc57600080fd5b50601154620004f9906001600160a01b031681565b348015620005fe57600080fd5b50620003026200061036600462001fb3565b62000be9565b3480156200062357600080fd5b506200032562000bf8565b3480156200063b57600080fd5b506012546200030290600160a81b900460ff1681565b3480156200065e57600080fd5b50600d54620004f9906001600160a01b031681565b3480156200068057600080fd5b50620004f962000692366004620020a3565b6006602052600090815260409020546001600160a01b031681565b348015620006ba57600080fd5b506200029562000c6d565b348015620006d257600080fd5b506200029562000c86565b348015620006ea57600080fd5b5062000325620006fc366004620020c3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156200073457600080fd5b506200029562000746366004620020c3565b62000cae565b3480156200075957600080fd5b50600e54620004f9906001600160a01b031681565b3480156200077b57600080fd5b50620002956200078d366004620020a3565b62000ebc565b348015620007a057600080fd5b506200029562000fc1565b348015620007b857600080fd5b5062000295620007ca366004620020a3565b62000fda565b348015620007dd57600080fd5b5062000295620007ef36600462002065565b62001056565b3480156200080257600080fd5b50601254620004f9906001600160a01b031681565b6200082162001144565b60128054941515600160b81b0260ff60b81b1990951694909417909355601391909155600060145560155560165543601755565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914620009bf576001600160a01b0384166000908152600360209081526040808320338452909152902054821115620009695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602090815260408083203384529091529020546200099a9083906200210c565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b620009cc848484620011a0565b90505b9392505050565b620009e062001144565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000a2f57600080fd5b505af115801562000a44573d6000803e3d6000fd5b505050505050565b62000a5662001144565b6012805460ff60a81b19169055565b62000a6f62001144565b601c55565b601860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ac557600080fd5b505af115801562000ada573d6000803e3d6000fd5b50505050565b62000aea62001144565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b62000b1f62001144565b62000b2b600062001534565b565b62000b3762001144565b604051600090339047908381818185875af1925050503d806000811462000b7b576040519150601f19603f3d011682016040523d82523d6000602084013e62000b80565b606091505b505090508062000b8f57600080fd5b50565b62000b9c62001144565b620b71b0811062000bac57600080fd5b601a55565b62000bbb62001144565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000620009cf338484620011a0565b60185460405163051fa63360e31b81523360048201526000916001600160a01b0316906328fd319890602401602060405180830381865afa15801562000c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c68919062002122565b905090565b62000c7762001144565b6012805460ff60b01b19169055565b62000c9062001144565b3060008181526002602052604090205462000b8f91903390620011a0565b62000cb862001144565b601854604080516334684cbb60e21b815290516000926001600160a01b0316918391839163d1a132ec916004808301926020929190829003018187875af115801562000d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d2e919062002122565b905062000d3c858562001584565b60005b8181101562000a445760405163559bbed560e11b8152600481018290526000906001600160a01b0385169063ab377daa906024016020604051808303816000875af115801562000d93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db991906200213c565b9050600062000ddd826001600160a01b031660009081526002602052604090205490565b905062000ded6009600a62002259565b62000dfb906105396200226a565b811062000ea457601854604051630a5b654b60e11b81526001600160a01b03848116600483015260248201849052909116906314b6ca9690604401600060405180830381600087803b15801562000e5157600080fd5b505af192505050801562000e63575060015b62000e6d57600195505b851562000ea457601880546001600160a01b0387166001600160a01b03199182168117909255601980549091169091179055600080fd5b5050808062000eb39062002284565b91505062000d3f565b62000ec662001144565b6040516370a0823160e01b8152306004820181905282916001600160a01b038316916323b872dd9161dead9084906370a0823190602401602060405180830381865afa15801562000f1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f41919062002122565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620022a0565b505050565b62000fcb62001144565b6012805460ff60a01b19169055565b62000fe462001144565b6001600160a01b0381166200104b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000960565b62000b8f8162001534565b6200106062001144565b6001600160a01b03821630148015906200108857506011546001600160a01b03838116911614155b6200109257600080fd5b6001600160a01b0382166000908152600560205260409020805460ff19168215801591909117909155620010fa57601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca969060440162000a14565b6018546001600160a01b0383811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440162000a14565b6000546001600160a01b0316331462000b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000960565b601b5460009060ff1615620011c457620011bc84848462001610565b9050620009cf565b601254600160a01b900460ff1615620012b9576000620011e585856200178d565b9050808015620011fe5750601254600160a81b900460ff165b156200121c576200121385856102c362001610565b915050620009cf565b808015620012335750601254600160b01b900460ff165b15620012835760c86001546200124a9190620022d6565b836200126b866001600160a01b031660009081526002602052604090205490565b620012779190620022f9565b11156200128357600080fd5b6200128d620017f6565b156200129d576200129d62001839565b620012a762001c13565b15620012b757620012b762001c7b565b505b6001600160a01b038416600090815260026020526040902080548390039055601254600160a01b900460ff168015620012f95750620012f9848462001d04565b1562001339576000600c54600754840281620013195762001319620022c0565b306000908152600260205260409020805492909104918201905590920391505b6001600160a01b038084166000908152600260209081526040808320805487019055928716825260059052205460ff16620013e1576018546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620013cd57600080fd5b505af1925050508015620013df575060015b505b6001600160a01b03831660009081526005602052604090205460ff1662001475576018546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200146157600080fd5b505af192505050801562001473575060015b505b601854601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620014ae9160040190815260200190565b600060405180830381600087803b158015620014c957600080fd5b505af1925050508015620014db575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200152291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8181604051620015949062001ef2565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620015c8573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b60006001600160a01b038416620016785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000960565b6001600160a01b038316620016dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000960565b6001600160a01b03841660009081526002602052604090205482811015620017565760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000960565b50506001600160a01b0392831660009081526002602052604080822080548490039055929093168352912080549091019055600190565b6011546000906001600160a01b03838116911614801590620017bd57506000546001600160a01b03838116911614155b8015620017d857506000546001600160a01b03848116911614155b8015620009cf5750506000546001600160a01b031632141592915050565b6011546000906001600160a01b03163314801590620018185750601b5460ff16155b801562000c68575050601c5430600090815260026020526040902054101590565b601b805460ff19166001179055600754600954601c5460009260029290916200186391906200226a565b6200186f9190620022d6565b6200187b9190620022d6565b9050600081601c546200188f91906200210c565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620018cc57620018cc6200230f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194c91906200213c565b816001815181106200196257620019626200230f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac94790620019ae9086906000908790309042906004016200236b565b600060405180830381600087803b158015620019c957600080fd5b505af1158015620019de573d6000803e3d6000fd5b5050505060008147620019f291906200210c565b90506000600260095462001a079190620022d6565b60075462001a1691906200210c565b905060006002826009548562001a2d91906200226a565b62001a399190620022d6565b62001a459190620022d6565b9050600082600a548562001a5a91906200226a565b62001a669190620022d6565b9050600083600b548662001a7b91906200226a565b62001a879190620022d6565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001ada57600080fd5b505af19350505050801562001aed575060015b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562001b29573d6000803e3d6000fd5b50601254600d5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801562001b9b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001bc29190620023a9565b505060408051858152602081018c90527fd2f4e97410796ed7a8c179e2bcedaa646a77cc703849019db2e4a1d368473cff92500160405180910390a15050601b805460ff1916905550505050505050565b6011546000906001600160a01b0316331480159062001c355750601b5460ff16155b801562001c4b5750601254600160b81b900460ff165b801562001c6957504360165460175462001c669190620022f9565b11155b801562000c6857505060155447101590565b62001c8b60155461dead62001d7c565b436017556015546014805460009062001ca6908490620022f9565b9091555050601354601454111562001cc6576012805460ff60b81b191690555b7fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e4806960155460405162001cfa91815260200190565b60405180910390a1565b6001600160a01b03821660009081526004602052604081205460ff168062001d4457506001600160a01b03821660009081526004602052604090205460ff165b158015620009cf57506011546001600160a01b0384811691161480620009cf5750506011546001600160a01b03908116911614919050565b601b805460ff191660011790556040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200213c565b8160008151811062001e305762001e306200230f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062001e675762001e676200230f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590859062001eaf90600090869088904290600401620023d8565b6000604051808303818588803b15801562001ec957600080fd5b505af115801562001ede573d6000803e3d6000fd5b5050601b805460ff19169055505050505050565b610ecd806200241083390190565b801515811462000b8f57600080fd5b6000806000806080858703121562001f2657600080fd5b843562001f338162001f00565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b8181101562001f7c5785810183015185820160400152820162001f5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000b8f57600080fd5b6000806040838503121562001fc757600080fd5b823562001fd48162001f9d565b946020939093013593505050565b60008060006060848603121562001ff857600080fd5b8335620020058162001f9d565b92506020840135620020178162001f9d565b929592945050506040919091013590565b600080604083850312156200203c57600080fd5b50508035926020909101359150565b6000602082840312156200205e57600080fd5b5035919050565b600080604083850312156200207957600080fd5b8235620020868162001f9d565b91506020830135620020988162001f00565b809150509250929050565b600060208284031215620020b657600080fd5b8135620009cf8162001f9d565b60008060408385031215620020d757600080fd5b8235620020e48162001f9d565b91506020830135620020988162001f9d565b634e487b7160e01b600052601160045260246000fd5b81810381811115620008bd57620008bd620020f6565b6000602082840312156200213557600080fd5b5051919050565b6000602082840312156200214f57600080fd5b8151620009cf8162001f9d565b600181815b808511156200219d578160001904821115620021815762002181620020f6565b808516156200218f57918102915b93841c939080029062002161565b509250929050565b600082620021b657506001620008bd565b81620021c557506000620008bd565b8160018114620021de5760028114620021e95762002209565b6001915050620008bd565b60ff841115620021fd57620021fd620020f6565b50506001821b620008bd565b5060208310610133831016604e8410600b84101617156200222e575081810a620008bd565b6200223a83836200215c565b8060001904821115620022515762002251620020f6565b029392505050565b6000620009cf60ff841683620021a5565b8082028115828204841417620008bd57620008bd620020f6565b600060018201620022995762002299620020f6565b5060010190565b600060208284031215620022b357600080fd5b8151620009cf8162001f00565b634e487b7160e01b600052601260045260246000fd5b600082620022f457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008bd57620008bd620020f6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620023605781516001600160a01b03168752958201959082019060010162002339565b509495945050505050565b85815284602082015260a0604082015260006200238c60a083018662002325565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620023bf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000620023f3608083018662002325565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033a2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c6343000812003360806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033","sourceMap":"11414:13098:0:-:0;;;11690:15;11640:1;11690:2;:15;:::i;:::-;11673:33;;:13;:33;:::i;:::-;11650:56;;;;12001:3;11982:22;;12032:3;12011:24;;;;12042:26;;;;12099:3;12075:27;;12109:26;;;;12167:5;12142:30;;12294:2;12268:28;;12303:40;;12419:29;;;-1:-1:-1;;;;12539:38:0;-1:-1:-1;;;12539:38:0;;;12864:6;12839:31;;12931:19;;12946:4;;12931:19;:::i;:::-;12897:53;;13118:989;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4168:32;3743:10;4168:18;:32::i;:::-;13214:6;:42;;-1:-1:-1;;;;;;13214:42:0;-1:-1:-1;;;;;13214:42:0;;;;;;;;13292:16;;;-1:-1:-1;;;13292:16:0;;;;:14;;:16;;;;;;;;;;;;;;;13214:42;13292:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13274:46:0;;13321:6;;;;;;;;;-1:-1:-1;;;;;13321:6:0;-1:-1:-1;;;;;13321:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13274:76;;-1:-1:-1;;;;;;13274:76:0;;;;;;;-1:-1:-1;;;;;2932:15:1;;;13274:76:0;;;2914:34:1;13344:4:0;2964:18:1;;;2957:43;2849:18;;13274:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13267:4;:83;;-1:-1:-1;;;;;;13267:83:0;-1:-1:-1;;;;;13267:83:0;;;;;;-1:-1:-1;13433:12:0;13407:4;-1:-1:-1;13387:26:0;;;:11;:26;;;;;;;;13422:6;;;;;13387:43;;;;;;;;;:58;13469:46;13486:13;13501;13469:16;:46::i;:::-;13540:10;13528:23;;;;:11;:23;;;;;;;;:30;;13554:4;-1:-1:-1;;13528:30:0;;;;;;;;-1:-1:-1;;;;;13569:29:0;;;;;;;;;:36;;;;;;;;13635:4;;;;;13618:22;;:16;:22;;;;;;:29;;;;;;;;13658:22;:29;;;;;;;;13723:4;13698:31;;;;;;:38;;;;;;;;;13749:20;:39;;-1:-1:-1;;;;;;13749:39:0;;;;;;;;13799:21;:40;;;;;;;;;;13875:12;13852:36;;13860:13;;13852:7;:36::i;:::-;-1:-1:-1;13915:4:0;;;13922:12;13899:36;;-1:-1:-1;;;;;13915:4:0;;13899:7;:36::i;:::-;-1:-1:-1;14004:12:0;;13990:10;13980:21;;;;:9;:21;;;;;;;;:36;;;14053:46;3157:25:1;;;13990:10:0;;13980:21;;14053:46;;3130:18:1;14053:46:0;;;;;;;13118:989;;;11414:13098;;5707:191;5781:16;5800:6;;-1:-1:-1;;;;;5817:17:0;;;-1:-1:-1;;;;;;5817:17:0;;;;;;5850:40;;5800:6;;;;;;;5850:40;;5781:16;5850:40;5770:128;5707:191;:::o;23688:278::-;23818:13;23833;23794:53;;;;;:::i;:::-;-1:-1:-1;;;;;2932:15:1;;;2914:34;;2984:15;;2979:2;2964:18;;2957:43;2864:2;2849:18;23794:53:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23780:11:0;:67;;-1:-1:-1;;;;;23780:67:0;;;-1:-1:-1;;;;;;23780:67:0;;;;;;;;23858:18;:41;;;;;;;;23910:27;;;;23780:11;23910:27;;;:12;:27;;;;;:48;;;;;;;;-1:-1:-1;23688:278:0:o;14805:216::-;14909:10;14880:4;14897:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14897:32:0;;;;;;;;;;:41;;;14954:37;14880:4;;14897:32;;14954:37;;;;14932:6;3157:25:1;;3145:2;3130:18;;3011:177;14954:37:0;;;;;;;;-1:-1:-1;15009:4:0;14805:216;;;;;:::o;11414:13098::-;;;;;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:422;235:1;278:5;235:1;292:270;313:7;303:8;300:21;292:270;;;372:4;368:1;364:6;360:17;354:4;351:27;348:53;;;381:18;;:::i;:::-;431:7;421:8;417:22;414:55;;;451:16;;;;414:55;530:22;;;;490:15;;;;292:270;;;296:3;146:422;;;;;:::o;573:806::-;622:5;652:8;642:80;;-1:-1:-1;693:1:1;707:5;;642:80;741:4;731:76;;-1:-1:-1;778:1:1;792:5;;731:76;823:4;841:1;836:59;;;;909:1;904:130;;;;816:218;;836:59;866:1;857:10;;880:5;;;904:130;941:3;931:8;928:17;925:43;;;948:18;;:::i;:::-;-1:-1:-1;;1004:1:1;990:16;;1019:5;;816:218;;1118:2;1108:8;1105:16;1099:3;1093:4;1090:13;1086:36;1080:2;1070:8;1067:16;1062:2;1056:4;1053:12;1049:35;1046:77;1043:159;;;-1:-1:-1;1155:19:1;;;1187:5;;1043:159;1234:34;1259:8;1253:4;1234:34;:::i;:::-;1304:6;1300:1;1296:6;1292:19;1283:7;1280:32;1277:58;;;1315:18;;:::i;:::-;1353:20;;573:806;-1:-1:-1;;;573:806:1:o;1384:140::-;1442:5;1471:47;1512:4;1502:8;1498:19;1492:4;1471:47;:::i;:::-;1462:56;1384:140;-1:-1:-1;;;1384:140:1:o;1529:168::-;1602:9;;;1633;;1650:15;;;1644:22;;1630:37;1620:71;;1671:18;;:::i;1702:217::-;1742:1;1768;1758:132;;1812:10;1807:3;1803:20;1800:1;1793:31;1847:4;1844:1;1837:15;1875:4;1872:1;1865:15;1758:132;-1:-1:-1;1904:9:1;;1702:217::o;1924:177::-;2003:13;;-1:-1:-1;;;;;2045:31:1;;2035:42;;2025:70;;2091:1;2088;2081:12;2025:70;1924:177;;;:::o;2106:378::-;2194:6;2202;2210;2263:2;2251:9;2242:7;2238:23;2234:32;2231:52;;;2279:1;2276;2269:12;2231:52;2302:40;2332:9;2302:40;:::i;:::-;2292:50;;2361:49;2406:2;2395:9;2391:18;2361:49;:::i;:::-;2351:59;;2429:49;2474:2;2463:9;2459:18;2429:49;:::i;:::-;2419:59;;2106:378;;;;;:::o;2489:208::-;2559:6;2612:2;2600:9;2591:7;2587:23;2583:32;2580:52;;;2628:1;2625;2618:12;2580:52;2651:40;2681:9;2651:40;:::i;3011:177::-;11414:13098:0;;;;;;","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c63430008120033","offset":14818},"2":{"value":"0xa2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033","offset":14765},"3":{"value":"0xa2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033","offset":14765}},"transformations":[{"type":"insert","offset":18660,"reason":"constructorArguments"}],"transformationValues":{"constructorArguments":"0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000055c0be9e192b1a5fca5fa57107e31547030c46fe0000000000000000000000006982508145454ce325ddbe47a25d4ec3d2311933"}},"runtimeBytecode":{"onchainBytecode":"0x608060405260043610620002635760003560e01c80639d1944f51162000147578063d7c96f2411620000b9578063eb31d8471162000078578063eb31d847146200076e578063efa4af4c1462000793578063f2fde38b14620007ab578063f708a64f14620007d0578063f887ea4014620007f557600080fd5b8063d7c96f2414620006ad578063d85a282814620006c5578063dd62ed3e14620006dd578063e5c8c5721462000727578063e96fada2146200074c57600080fd5b8063a9059cbb1162000106578063a9059cbb14620005f1578063af38d7571462000616578063bd10bc5f146200062e578063ca33e64c1462000651578063cc642784146200067357600080fd5b80639d1944f51462000540578063a4b45c001462000565578063a51af4c5146200058a578063a771ebc714620005ac578063a8aa1b3114620005cf57600080fd5b80633bb8a8d411620001e157806370a0823111620001a057806370a082311462000474578063715018a614620004ae57806389291a8f14620004c65780638da5cb5b14620004de57806395d89b41146200051257600080fd5b80633bb8a8d414620003cc57806349d5585314620003ef5780634e71d92d146200041457806357d87f0d146200042c578063658d4b7f146200044f57600080fd5b8063201afaaa116200022e578063201afaaa146200033457806323b872dd146200034c5780632d48e8961462000371578063313ce567146200039657806339bb668a14620003b457600080fd5b8063048c7baf146200027057806306fdde031462000297578063095ea7b314620002dd57806318160ddd146200031357600080fd5b366200026b57005b600080fd5b3480156200027d57600080fd5b50620002956200028f36600462001f0f565b62000817565b005b348015620002a457600080fd5b506040805180820190915260088152672832bb9021b7b4b760c11b60208201525b604051620002d4919062001f4d565b60405180910390f35b348015620002ea57600080fd5b5062000302620002fc36600462001fb3565b62000855565b6040519015158152602001620002d4565b3480156200032057600080fd5b506001545b604051908152602001620002d4565b3480156200034157600080fd5b5062000325601c5481565b3480156200035957600080fd5b50620003026200036b36600462001fe2565b620008c3565b3480156200037e57600080fd5b50620002956200039036600462002028565b620009d6565b348015620003a357600080fd5b5060405160098152602001620002d4565b348015620003c157600080fd5b506200029562000a4c565b348015620003d957600080fd5b506012546200030290600160b81b900460ff1681565b348015620003fc57600080fd5b50620002956200040e3660046200204b565b62000a65565b3480156200042157600080fd5b506200029562000a74565b3480156200043957600080fd5b506012546200030290600160b01b900460ff1681565b3480156200045c57600080fd5b50620002956200046e36600462002065565b62000ae0565b3480156200048157600080fd5b506200032562000493366004620020a3565b6001600160a01b031660009081526002602052604090205490565b348015620004bb57600080fd5b506200029562000b15565b348015620004d357600080fd5b506200029562000b2d565b348015620004eb57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001620002d4565b3480156200051f57600080fd5b5060408051808201909152600381526250455760e81b6020820152620002c5565b3480156200054d57600080fd5b50620002956200055f3660046200204b565b62000b92565b3480156200057257600080fd5b506200029562000584366004620020c3565b62000bb1565b3480156200059757600080fd5b50601954620004f9906001600160a01b031681565b348015620005b957600080fd5b506012546200030290600160a01b900460ff1681565b348015620005dc57600080fd5b50601154620004f9906001600160a01b031681565b348015620005fe57600080fd5b50620003026200061036600462001fb3565b62000be9565b3480156200062357600080fd5b506200032562000bf8565b3480156200063b57600080fd5b506012546200030290600160a81b900460ff1681565b3480156200065e57600080fd5b50600d54620004f9906001600160a01b031681565b3480156200068057600080fd5b50620004f962000692366004620020a3565b6006602052600090815260409020546001600160a01b031681565b348015620006ba57600080fd5b506200029562000c6d565b348015620006d257600080fd5b506200029562000c86565b348015620006ea57600080fd5b5062000325620006fc366004620020c3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156200073457600080fd5b506200029562000746366004620020c3565b62000cae565b3480156200075957600080fd5b50600e54620004f9906001600160a01b031681565b3480156200077b57600080fd5b50620002956200078d366004620020a3565b62000ebc565b348015620007a057600080fd5b506200029562000fc1565b348015620007b857600080fd5b5062000295620007ca366004620020a3565b62000fda565b348015620007dd57600080fd5b5062000295620007ef36600462002065565b62001056565b3480156200080257600080fd5b50601254620004f9906001600160a01b031681565b6200082162001144565b60128054941515600160b81b0260ff60b81b1990951694909417909355601391909155600060145560155560165543601755565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914620009bf576001600160a01b0384166000908152600360209081526040808320338452909152902054821115620009695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602090815260408083203384529091529020546200099a9083906200210c565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b620009cc848484620011a0565b90505b9392505050565b620009e062001144565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000a2f57600080fd5b505af115801562000a44573d6000803e3d6000fd5b505050505050565b62000a5662001144565b6012805460ff60a81b19169055565b62000a6f62001144565b601c55565b601860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ac557600080fd5b505af115801562000ada573d6000803e3d6000fd5b50505050565b62000aea62001144565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b62000b1f62001144565b62000b2b600062001534565b565b62000b3762001144565b604051600090339047908381818185875af1925050503d806000811462000b7b576040519150601f19603f3d011682016040523d82523d6000602084013e62000b80565b606091505b505090508062000b8f57600080fd5b50565b62000b9c62001144565b620b71b0811062000bac57600080fd5b601a55565b62000bbb62001144565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000620009cf338484620011a0565b60185460405163051fa63360e31b81523360048201526000916001600160a01b0316906328fd319890602401602060405180830381865afa15801562000c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c68919062002122565b905090565b62000c7762001144565b6012805460ff60b01b19169055565b62000c9062001144565b3060008181526002602052604090205462000b8f91903390620011a0565b62000cb862001144565b601854604080516334684cbb60e21b815290516000926001600160a01b0316918391839163d1a132ec916004808301926020929190829003018187875af115801562000d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d2e919062002122565b905062000d3c858562001584565b60005b8181101562000a445760405163559bbed560e11b8152600481018290526000906001600160a01b0385169063ab377daa906024016020604051808303816000875af115801562000d93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db991906200213c565b9050600062000ddd826001600160a01b031660009081526002602052604090205490565b905062000ded6009600a62002259565b62000dfb906105396200226a565b811062000ea457601854604051630a5b654b60e11b81526001600160a01b03848116600483015260248201849052909116906314b6ca9690604401600060405180830381600087803b15801562000e5157600080fd5b505af192505050801562000e63575060015b62000e6d57600195505b851562000ea457601880546001600160a01b0387166001600160a01b03199182168117909255601980549091169091179055600080fd5b5050808062000eb39062002284565b91505062000d3f565b62000ec662001144565b6040516370a0823160e01b8152306004820181905282916001600160a01b038316916323b872dd9161dead9084906370a0823190602401602060405180830381865afa15801562000f1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f41919062002122565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620022a0565b505050565b62000fcb62001144565b6012805460ff60a01b19169055565b62000fe462001144565b6001600160a01b0381166200104b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000960565b62000b8f8162001534565b6200106062001144565b6001600160a01b03821630148015906200108857506011546001600160a01b03838116911614155b6200109257600080fd5b6001600160a01b0382166000908152600560205260409020805460ff19168215801591909117909155620010fa57601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca969060440162000a14565b6018546001600160a01b0383811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440162000a14565b6000546001600160a01b0316331462000b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000960565b601b5460009060ff1615620011c457620011bc84848462001610565b9050620009cf565b601254600160a01b900460ff1615620012b9576000620011e585856200178d565b9050808015620011fe5750601254600160a81b900460ff165b156200121c576200121385856102c362001610565b915050620009cf565b808015620012335750601254600160b01b900460ff165b15620012835760c86001546200124a9190620022d6565b836200126b866001600160a01b031660009081526002602052604090205490565b620012779190620022f9565b11156200128357600080fd5b6200128d620017f6565b156200129d576200129d62001839565b620012a762001c13565b15620012b757620012b762001c7b565b505b6001600160a01b038416600090815260026020526040902080548390039055601254600160a01b900460ff168015620012f95750620012f9848462001d04565b1562001339576000600c54600754840281620013195762001319620022c0565b306000908152600260205260409020805492909104918201905590920391505b6001600160a01b038084166000908152600260209081526040808320805487019055928716825260059052205460ff16620013e1576018546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620013cd57600080fd5b505af1925050508015620013df575060015b505b6001600160a01b03831660009081526005602052604090205460ff1662001475576018546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200146157600080fd5b505af192505050801562001473575060015b505b601854601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620014ae9160040190815260200190565b600060405180830381600087803b158015620014c957600080fd5b505af1925050508015620014db575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200152291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8181604051620015949062001ef2565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620015c8573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b60006001600160a01b038416620016785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000960565b6001600160a01b038316620016dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000960565b6001600160a01b03841660009081526002602052604090205482811015620017565760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000960565b50506001600160a01b0392831660009081526002602052604080822080548490039055929093168352912080549091019055600190565b6011546000906001600160a01b03838116911614801590620017bd57506000546001600160a01b03838116911614155b8015620017d857506000546001600160a01b03848116911614155b8015620009cf5750506000546001600160a01b031632141592915050565b6011546000906001600160a01b03163314801590620018185750601b5460ff16155b801562000c68575050601c5430600090815260026020526040902054101590565b601b805460ff19166001179055600754600954601c5460009260029290916200186391906200226a565b6200186f9190620022d6565b6200187b9190620022d6565b9050600081601c546200188f91906200210c565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620018cc57620018cc6200230f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194c91906200213c565b816001815181106200196257620019626200230f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac94790620019ae9086906000908790309042906004016200236b565b600060405180830381600087803b158015620019c957600080fd5b505af1158015620019de573d6000803e3d6000fd5b5050505060008147620019f291906200210c565b90506000600260095462001a079190620022d6565b60075462001a1691906200210c565b905060006002826009548562001a2d91906200226a565b62001a399190620022d6565b62001a459190620022d6565b9050600082600a548562001a5a91906200226a565b62001a669190620022d6565b9050600083600b548662001a7b91906200226a565b62001a879190620022d6565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001ada57600080fd5b505af19350505050801562001aed575060015b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562001b29573d6000803e3d6000fd5b50601254600d5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801562001b9b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001bc29190620023a9565b505060408051858152602081018c90527fd2f4e97410796ed7a8c179e2bcedaa646a77cc703849019db2e4a1d368473cff92500160405180910390a15050601b805460ff1916905550505050505050565b6011546000906001600160a01b0316331480159062001c355750601b5460ff16155b801562001c4b5750601254600160b81b900460ff165b801562001c6957504360165460175462001c669190620022f9565b11155b801562000c6857505060155447101590565b62001c8b60155461dead62001d7c565b436017556015546014805460009062001ca6908490620022f9565b9091555050601354601454111562001cc6576012805460ff60b81b191690555b7fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e4806960155460405162001cfa91815260200190565b60405180910390a1565b6001600160a01b03821660009081526004602052604081205460ff168062001d4457506001600160a01b03821660009081526004602052604090205460ff165b158015620009cf57506011546001600160a01b0384811691161480620009cf5750506011546001600160a01b03908116911614919050565b601b805460ff191660011790556040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200213c565b8160008151811062001e305762001e306200230f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062001e675762001e676200230f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590859062001eaf90600090869088904290600401620023d8565b6000604051808303818588803b15801562001ec957600080fd5b505af115801562001ede573d6000803e3d6000fd5b5050601b805460ff19169055505050505050565b610ecd806200241083390190565b801515811462000b8f57600080fd5b6000806000806080858703121562001f2657600080fd5b843562001f338162001f00565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b8181101562001f7c5785810183015185820160400152820162001f5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000b8f57600080fd5b6000806040838503121562001fc757600080fd5b823562001fd48162001f9d565b946020939093013593505050565b60008060006060848603121562001ff857600080fd5b8335620020058162001f9d565b92506020840135620020178162001f9d565b929592945050506040919091013590565b600080604083850312156200203c57600080fd5b50508035926020909101359150565b6000602082840312156200205e57600080fd5b5035919050565b600080604083850312156200207957600080fd5b8235620020868162001f9d565b91506020830135620020988162001f00565b809150509250929050565b600060208284031215620020b657600080fd5b8135620009cf8162001f9d565b60008060408385031215620020d757600080fd5b8235620020e48162001f9d565b91506020830135620020988162001f9d565b634e487b7160e01b600052601160045260246000fd5b81810381811115620008bd57620008bd620020f6565b6000602082840312156200213557600080fd5b5051919050565b6000602082840312156200214f57600080fd5b8151620009cf8162001f9d565b600181815b808511156200219d578160001904821115620021815762002181620020f6565b808516156200218f57918102915b93841c939080029062002161565b509250929050565b600082620021b657506001620008bd565b81620021c557506000620008bd565b8160018114620021de5760028114620021e95762002209565b6001915050620008bd565b60ff841115620021fd57620021fd620020f6565b50506001821b620008bd565b5060208310610133831016604e8410600b84101617156200222e575081810a620008bd565b6200223a83836200215c565b8060001904821115620022515762002251620020f6565b029392505050565b6000620009cf60ff841683620021a5565b8082028115828204841417620008bd57620008bd620020f6565b600060018201620022995762002299620020f6565b5060010190565b600060208284031215620022b357600080fd5b8151620009cf8162001f00565b634e487b7160e01b600052601260045260246000fd5b600082620022f457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008bd57620008bd620020f6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620023605781516001600160a01b03168752958201959082019060010162002339565b509495945050505050565b85815284602082015260a0604082015260006200238c60a083018662002325565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620023bf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000620023f3608083018662002325565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033a2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c63430008120033","recompiledBytecode":"0x608060405260043610620002635760003560e01c80639d1944f51162000147578063d7c96f2411620000b9578063eb31d8471162000078578063eb31d847146200076e578063efa4af4c1462000793578063f2fde38b14620007ab578063f708a64f14620007d0578063f887ea4014620007f557600080fd5b8063d7c96f2414620006ad578063d85a282814620006c5578063dd62ed3e14620006dd578063e5c8c5721462000727578063e96fada2146200074c57600080fd5b8063a9059cbb1162000106578063a9059cbb14620005f1578063af38d7571462000616578063bd10bc5f146200062e578063ca33e64c1462000651578063cc642784146200067357600080fd5b80639d1944f51462000540578063a4b45c001462000565578063a51af4c5146200058a578063a771ebc714620005ac578063a8aa1b3114620005cf57600080fd5b80633bb8a8d411620001e157806370a0823111620001a057806370a082311462000474578063715018a614620004ae57806389291a8f14620004c65780638da5cb5b14620004de57806395d89b41146200051257600080fd5b80633bb8a8d414620003cc57806349d5585314620003ef5780634e71d92d146200041457806357d87f0d146200042c578063658d4b7f146200044f57600080fd5b8063201afaaa116200022e578063201afaaa146200033457806323b872dd146200034c5780632d48e8961462000371578063313ce567146200039657806339bb668a14620003b457600080fd5b8063048c7baf146200027057806306fdde031462000297578063095ea7b314620002dd57806318160ddd146200031357600080fd5b366200026b57005b600080fd5b3480156200027d57600080fd5b50620002956200028f36600462001f0f565b62000817565b005b348015620002a457600080fd5b506040805180820190915260088152672832bb9021b7b4b760c11b60208201525b604051620002d4919062001f4d565b60405180910390f35b348015620002ea57600080fd5b5062000302620002fc36600462001fb3565b62000855565b6040519015158152602001620002d4565b3480156200032057600080fd5b506001545b604051908152602001620002d4565b3480156200034157600080fd5b5062000325601c5481565b3480156200035957600080fd5b50620003026200036b36600462001fe2565b620008c3565b3480156200037e57600080fd5b50620002956200039036600462002028565b620009d6565b348015620003a357600080fd5b5060405160098152602001620002d4565b348015620003c157600080fd5b506200029562000a4c565b348015620003d957600080fd5b506012546200030290600160b81b900460ff1681565b348015620003fc57600080fd5b50620002956200040e3660046200204b565b62000a65565b3480156200042157600080fd5b506200029562000a74565b3480156200043957600080fd5b506012546200030290600160b01b900460ff1681565b3480156200045c57600080fd5b50620002956200046e36600462002065565b62000ae0565b3480156200048157600080fd5b506200032562000493366004620020a3565b6001600160a01b031660009081526002602052604090205490565b348015620004bb57600080fd5b506200029562000b15565b348015620004d357600080fd5b506200029562000b2d565b348015620004eb57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001620002d4565b3480156200051f57600080fd5b5060408051808201909152600381526250455760e81b6020820152620002c5565b3480156200054d57600080fd5b50620002956200055f3660046200204b565b62000b92565b3480156200057257600080fd5b506200029562000584366004620020c3565b62000bb1565b3480156200059757600080fd5b50601954620004f9906001600160a01b031681565b348015620005b957600080fd5b506012546200030290600160a01b900460ff1681565b348015620005dc57600080fd5b50601154620004f9906001600160a01b031681565b348015620005fe57600080fd5b50620003026200061036600462001fb3565b62000be9565b3480156200062357600080fd5b506200032562000bf8565b3480156200063b57600080fd5b506012546200030290600160a81b900460ff1681565b3480156200065e57600080fd5b50600d54620004f9906001600160a01b031681565b3480156200068057600080fd5b50620004f962000692366004620020a3565b6006602052600090815260409020546001600160a01b031681565b348015620006ba57600080fd5b506200029562000c6d565b348015620006d257600080fd5b506200029562000c86565b348015620006ea57600080fd5b5062000325620006fc366004620020c3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156200073457600080fd5b506200029562000746366004620020c3565b62000cae565b3480156200075957600080fd5b50600e54620004f9906001600160a01b031681565b3480156200077b57600080fd5b50620002956200078d366004620020a3565b62000ebc565b348015620007a057600080fd5b506200029562000fc1565b348015620007b857600080fd5b5062000295620007ca366004620020a3565b62000fda565b348015620007dd57600080fd5b5062000295620007ef36600462002065565b62001056565b3480156200080257600080fd5b50601254620004f9906001600160a01b031681565b6200082162001144565b60128054941515600160b81b0260ff60b81b1990951694909417909355601391909155600060145560155560165543601755565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914620009bf576001600160a01b0384166000908152600360209081526040808320338452909152902054821115620009695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602090815260408083203384529091529020546200099a9083906200210c565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b620009cc848484620011a0565b90505b9392505050565b620009e062001144565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000a2f57600080fd5b505af115801562000a44573d6000803e3d6000fd5b505050505050565b62000a5662001144565b6012805460ff60a81b19169055565b62000a6f62001144565b601c55565b601860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ac557600080fd5b505af115801562000ada573d6000803e3d6000fd5b50505050565b62000aea62001144565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b62000b1f62001144565b62000b2b600062001534565b565b62000b3762001144565b604051600090339047908381818185875af1925050503d806000811462000b7b576040519150601f19603f3d011682016040523d82523d6000602084013e62000b80565b606091505b505090508062000b8f57600080fd5b50565b62000b9c62001144565b620b71b0811062000bac57600080fd5b601a55565b62000bbb62001144565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000620009cf338484620011a0565b60185460405163051fa63360e31b81523360048201526000916001600160a01b0316906328fd319890602401602060405180830381865afa15801562000c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c68919062002122565b905090565b62000c7762001144565b6012805460ff60b01b19169055565b62000c9062001144565b3060008181526002602052604090205462000b8f91903390620011a0565b62000cb862001144565b601854604080516334684cbb60e21b815290516000926001600160a01b0316918391839163d1a132ec916004808301926020929190829003018187875af115801562000d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d2e919062002122565b905062000d3c858562001584565b60005b8181101562000a445760405163559bbed560e11b8152600481018290526000906001600160a01b0385169063ab377daa906024016020604051808303816000875af115801562000d93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db991906200213c565b9050600062000ddd826001600160a01b031660009081526002602052604090205490565b905062000ded6009600a62002259565b62000dfb906105396200226a565b811062000ea457601854604051630a5b654b60e11b81526001600160a01b03848116600483015260248201849052909116906314b6ca9690604401600060405180830381600087803b15801562000e5157600080fd5b505af192505050801562000e63575060015b62000e6d57600195505b851562000ea457601880546001600160a01b0387166001600160a01b03199182168117909255601980549091169091179055600080fd5b5050808062000eb39062002284565b91505062000d3f565b62000ec662001144565b6040516370a0823160e01b8152306004820181905282916001600160a01b038316916323b872dd9161dead9084906370a0823190602401602060405180830381865afa15801562000f1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f41919062002122565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620022a0565b505050565b62000fcb62001144565b6012805460ff60a01b19169055565b62000fe462001144565b6001600160a01b0381166200104b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000960565b62000b8f8162001534565b6200106062001144565b6001600160a01b03821630148015906200108857506011546001600160a01b03838116911614155b6200109257600080fd5b6001600160a01b0382166000908152600560205260409020805460ff19168215801591909117909155620010fa57601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca969060440162000a14565b6018546001600160a01b0383811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440162000a14565b6000546001600160a01b0316331462000b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000960565b601b5460009060ff1615620011c457620011bc84848462001610565b9050620009cf565b601254600160a01b900460ff1615620012b9576000620011e585856200178d565b9050808015620011fe5750601254600160a81b900460ff165b156200121c576200121385856102c362001610565b915050620009cf565b808015620012335750601254600160b01b900460ff165b15620012835760c86001546200124a9190620022d6565b836200126b866001600160a01b031660009081526002602052604090205490565b620012779190620022f9565b11156200128357600080fd5b6200128d620017f6565b156200129d576200129d62001839565b620012a762001c13565b15620012b757620012b762001c7b565b505b6001600160a01b038416600090815260026020526040902080548390039055601254600160a01b900460ff168015620012f95750620012f9848462001d04565b1562001339576000600c54600754840281620013195762001319620022c0565b306000908152600260205260409020805492909104918201905590920391505b6001600160a01b038084166000908152600260209081526040808320805487019055928716825260059052205460ff16620013e1576018546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620013cd57600080fd5b505af1925050508015620013df575060015b505b6001600160a01b03831660009081526005602052604090205460ff1662001475576018546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200146157600080fd5b505af192505050801562001473575060015b505b601854601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620014ae9160040190815260200190565b600060405180830381600087803b158015620014c957600080fd5b505af1925050508015620014db575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200152291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8181604051620015949062001ef2565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620015c8573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b60006001600160a01b038416620016785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000960565b6001600160a01b038316620016dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000960565b6001600160a01b03841660009081526002602052604090205482811015620017565760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000960565b50506001600160a01b0392831660009081526002602052604080822080548490039055929093168352912080549091019055600190565b6011546000906001600160a01b03838116911614801590620017bd57506000546001600160a01b03838116911614155b8015620017d857506000546001600160a01b03848116911614155b8015620009cf5750506000546001600160a01b031632141592915050565b6011546000906001600160a01b03163314801590620018185750601b5460ff16155b801562000c68575050601c5430600090815260026020526040902054101590565b601b805460ff19166001179055600754600954601c5460009260029290916200186391906200226a565b6200186f9190620022d6565b6200187b9190620022d6565b9050600081601c546200188f91906200210c565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620018cc57620018cc6200230f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194c91906200213c565b816001815181106200196257620019626200230f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac94790620019ae9086906000908790309042906004016200236b565b600060405180830381600087803b158015620019c957600080fd5b505af1158015620019de573d6000803e3d6000fd5b5050505060008147620019f291906200210c565b90506000600260095462001a079190620022d6565b60075462001a1691906200210c565b905060006002826009548562001a2d91906200226a565b62001a399190620022d6565b62001a459190620022d6565b9050600082600a548562001a5a91906200226a565b62001a669190620022d6565b9050600083600b548662001a7b91906200226a565b62001a879190620022d6565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001ada57600080fd5b505af19350505050801562001aed575060015b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562001b29573d6000803e3d6000fd5b50601254600d5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801562001b9b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001bc29190620023a9565b505060408051858152602081018c90527fd2f4e97410796ed7a8c179e2bcedaa646a77cc703849019db2e4a1d368473cff92500160405180910390a15050601b805460ff1916905550505050505050565b6011546000906001600160a01b0316331480159062001c355750601b5460ff16155b801562001c4b5750601254600160b81b900460ff165b801562001c6957504360165460175462001c669190620022f9565b11155b801562000c6857505060155447101590565b62001c8b60155461dead62001d7c565b436017556015546014805460009062001ca6908490620022f9565b9091555050601354601454111562001cc6576012805460ff60b81b191690555b7fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e4806960155460405162001cfa91815260200190565b60405180910390a1565b6001600160a01b03821660009081526004602052604081205460ff168062001d4457506001600160a01b03821660009081526004602052604090205460ff165b158015620009cf57506011546001600160a01b0384811691161480620009cf5750506011546001600160a01b03908116911614919050565b601b805460ff191660011790556040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200213c565b8160008151811062001e305762001e306200230f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062001e675762001e676200230f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590859062001eaf90600090869088904290600401620023d8565b6000604051808303818588803b15801562001ec957600080fd5b505af115801562001ede573d6000803e3d6000fd5b5050601b805460ff19169055505050505050565b610ecd806200241083390190565b801515811462000b8f57600080fd5b6000806000806080858703121562001f2657600080fd5b843562001f338162001f00565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b8181101562001f7c5785810183015185820160400152820162001f5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000b8f57600080fd5b6000806040838503121562001fc757600080fd5b823562001fd48162001f9d565b946020939093013593505050565b60008060006060848603121562001ff857600080fd5b8335620020058162001f9d565b92506020840135620020178162001f9d565b929592945050506040919091013590565b600080604083850312156200203c57600080fd5b50508035926020909101359150565b6000602082840312156200205e57600080fd5b5035919050565b600080604083850312156200207957600080fd5b8235620020868162001f9d565b91506020830135620020988162001f00565b809150509250929050565b600060208284031215620020b657600080fd5b8135620009cf8162001f9d565b60008060408385031215620020d757600080fd5b8235620020e48162001f9d565b91506020830135620020988162001f9d565b634e487b7160e01b600052601160045260246000fd5b81810381811115620008bd57620008bd620020f6565b6000602082840312156200213557600080fd5b5051919050565b6000602082840312156200214f57600080fd5b8151620009cf8162001f9d565b600181815b808511156200219d578160001904821115620021815762002181620020f6565b808516156200218f57918102915b93841c939080029062002161565b509250929050565b600082620021b657506001620008bd565b81620021c557506000620008bd565b8160018114620021de5760028114620021e95762002209565b6001915050620008bd565b60ff841115620021fd57620021fd620020f6565b50506001821b620008bd565b5060208310610133831016604e8410600b84101617156200222e575081810a620008bd565b6200223a83836200215c565b8060001904821115620022515762002251620020f6565b029392505050565b6000620009cf60ff841683620021a5565b8082028115828204841417620008bd57620008bd620020f6565b600060018201620022995762002299620020f6565b5060010190565b600060208284031215620022b357600080fd5b8151620009cf8162001f00565b634e487b7160e01b600052601260045260246000fd5b600082620022f457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008bd57620008bd620020f6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620023605781516001600160a01b03168752958201959082019060010162002339565b509495945050505050565b85815284602082015260a0604082015260006200238c60a083018662002325565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620023bf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000620023f3608083018662002325565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033a2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c63430008120033","sourceMap":"11414:13098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17636:358;;;;;;;;;;-1:-1:-1;17636:358:0;;;;;:::i;:::-;;:::i;:::-;;14283:80;;;;;;;;;;-1:-1:-1;14355:5:0;;;;;;;;;;;;-1:-1:-1;;;14355:5:0;;;;14283:80;;;;;;;:::i;:::-;;;;;;;;14805:216;;;;;;;;;;-1:-1:-1;14805:216:0;;;;;:::i;:::-;;:::i;:::-;;;1762:14:1;;1755:22;1737:41;;1725:2;1710:18;14805:216:0;1597:187:1;14459:88:0;;;;;;;;;;-1:-1:-1;14532:12:0;;14459:88;;;1935:25:1;;;1923:2;1908:18;14459:88:0;1789:177:1;12897:53:0;;;;;;;;;;;;;;;;15193:442;;;;;;;;;;-1:-1:-1;15193:442:0;;;;;:::i;:::-;;:::i;18836:182::-;;;;;;;;;;-1:-1:-1;18836:182:0;;;;;:::i;:::-;;:::i;14197:80::-;;;;;;;;;;-1:-1:-1;14197:80:0;;11640:1;2827:36:1;;2815:2;2800:18;14197:80:0;2685:184:1;16467:88:0;;;;;;;;;;;;;:::i;12539:38::-;;;;;;;;;;-1:-1:-1;12539:38:0;;;;-1:-1:-1;;;12539:38:0;;;;;;18718:110;;;;;;;;;;-1:-1:-1;18718:110:0;;;;;:::i;:::-;;:::i;15691:70::-;;;;;;;;;;;;;:::i;12497:35::-;;;;;;;;;;-1:-1:-1;12497:35:0;;;;-1:-1:-1;;;12497:35:0;;;;;;18356:119;;;;;;;;;;-1:-1:-1;18356:119:0;;;;;:::i;:::-;;:::i;14553:105::-;;;;;;;;;;-1:-1:-1;14553:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;14637:18:0;14619:7;14637:18;;;:9;:18;;;;;;;14553:105;5088:103;;;;;;;;;;;;;:::i;16154:166::-;;;;;;;;;;;;;:::i;4447:87::-;;;;;;;;;;-1:-1:-1;4493:7:0;4520:6;-1:-1:-1;;;;;4520:6:0;4447:87;;;-1:-1:-1;;;;;3862:32:1;;;3844:51;;3832:2;3817:18;4447:87:0;3698:203:1;14369:84:0;;;;;;;;;;-1:-1:-1;14443:7:0;;;;;;;;;;;;-1:-1:-1;;;14443:7:0;;;;14369:84;;19026:135;;;;;;;;;;-1:-1:-1;19026:135:0;;;;;:::i;:::-;;:::i;18483:227::-;;;;;;;;;;-1:-1:-1;18483:227:0;;;;;:::i;:::-;;:::i;12797:33::-;;;;;;;;;;-1:-1:-1;12797:33:0;;;;-1:-1:-1;;;;;12797:33:0;;;12419:29;;;;;;;;;;-1:-1:-1;12419:29:0;;;;-1:-1:-1;;;12419:29:0;;;;;;12352:19;;;;;;;;;;-1:-1:-1;12352:19:0;;;;-1:-1:-1;;;;;12352:19:0;;;15029:156;;;;;;;;;;-1:-1:-1;15029:156:0;;;;;:::i;:::-;;:::i;15769:118::-;;;;;;;;;;;;;:::i;12455:35::-;;;;;;;;;;-1:-1:-1;12455:35:0;;;;-1:-1:-1;;;12455:35:0;;;;;;12181:36;;;;;;;;;;-1:-1:-1;12181:36:0;;;;-1:-1:-1;;;;;12181:36:0;;;11925:48;;;;;;;;;;-1:-1:-1;11925:48:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;11925:48:0;;;16563:88;;;;;;;;;;;;;:::i;16328:131::-;;;;;;;;;;;;;:::i;14664:133::-;;;;;;;;;;-1:-1:-1;14664:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14766:19:0;;;14748:7;14766:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14664:133;16743:885;;;;;;;;;;-1:-1:-1;16743:885:0;;;;;:::i;:::-;;:::i;12224:35::-;;;;;;;;;;-1:-1:-1;12224:35:0;;;;-1:-1:-1;;;;;12224:35:0;;;15942:200;;;;;;;;;;-1:-1:-1;15942:200:0;;;;;:::i;:::-;;:::i;16659:76::-;;;;;;;;;;;;;:::i;5346:201::-;;;;;;;;;;-1:-1:-1;5346:201:0;;;;;:::i;:::-;;:::i;18002:346::-;;;;;;;;;;-1:-1:-1;18002:346:0;;;;;:::i;:::-;;:::i;12378:32::-;;;;;;;;;;-1:-1:-1;12378:32:0;;;;-1:-1:-1;;;;;12378:32:0;;;17636:358;4333:13;:11;:13::i;:::-;17761:18:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;17761:29:0::1;-1:-1:-1::0;;;;17761:29:0;;::::1;::::0;;;::::1;::::0;;;17801:14:::1;:21:::0;;;;-1:-1:-1;17833:22:0::1;:26:::0;17870:17:::1;:27:::0;17908:22:::1;:32:::0;17974:12:::1;17761:18;17951:35:::0;17636:358::o;14805:216::-;14909:10;14880:4;14897:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14897:32:0;;;;;;;;;;:41;;;14954:37;14880:4;;14897:32;;14954:37;;;;14932:6;1935:25:1;;1923:2;1908:18;;1789:177;14954:37:0;;;;;;;;-1:-1:-1;15009:4:0;14805:216;;;;;:::o;15193:442::-;-1:-1:-1;;;;;15315:19:0;;15293:4;15315:19;;;:11;:19;;;;;;;;15335:10;15315:31;;;;;;;;-1:-1:-1;;15315:52:0;15311:257;;-1:-1:-1;;;;;15392:19:0;;;;;;:11;:19;;;;;;;;15412:10;15392:31;;;;;;;;:41;-1:-1:-1;15392:41:0;15384:83;;;;-1:-1:-1;;;15384:83:0;;4735:2:1;15384:83:0;;;4717:21:1;4774:2;4754:18;;;4747:30;4813:31;4793:18;;;4786:59;4862:18;;15384:83:0;;;;;;;;;-1:-1:-1;;;;;15516:19:0;;;;;;:11;:19;;;;;;;;15536:10;15516:31;;;;;;;;:40;;15550:6;;15516:40;:::i;:::-;-1:-1:-1;;;;;15482:19:0;;;;;;:11;:19;;;;;;;;15502:10;15482:31;;;;;;;:74;15311:257;15587:40;15601:6;15609:9;15620:6;15587:13;:40::i;:::-;15580:47;;15193:442;;;;;;:::o;18836:182::-;4333:13;:11;:13::i;:::-;18945:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;18945:65:0;;::::1;::::0;::::1;5330:25:1::0;;;5371:18;;;5364:34;;;-1:-1:-1;;;;;18945:11:0;;::::1;::::0;:35:::1;::::0;5303:18:1;;18945:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18836:182:::0;;:::o;16467:88::-;4333:13;:11;:13::i;:::-;16523:16:::1;:24:::0;;-1:-1:-1;;;;16523:24:0::1;::::0;;16467:88::o;18718:110::-;4333:13;:11;:13::i;:::-;18794:16:::1;:26:::0;18718:110::o;15691:70::-;15726:11;;;;;;;;;-1:-1:-1;;;;;15726:11:0;-1:-1:-1;;;;;15726:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15691:70::o;18356:119::-;4333:13;:11;:13::i;:::-;-1:-1:-1;;;;;18439:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;18439:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18356:119::o;5088:103::-;4333:13;:11;:13::i;:::-;5153:30:::1;5180:1;5153:18;:30::i;:::-;5088:103::o:0;16154:166::-;4333:13;:11;:13::i;:::-;16227:58:::1;::::0;16210:12:::1;::::0;16235:10:::1;::::0;16259:21:::1;::::0;16210:12;16227:58;16210:12;16227:58;16259:21;16235:10;16227:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16209:76;;;16304:7;16296:16;;;::::0;::::1;;16198:122;16154:166::o:0;19026:135::-;4333:13;:11;:13::i;:::-;19115:6:::1;19109:3;:12;19101:21;;;::::0;::::1;;19133:14;:20:::0;19026:135::o;18483:227::-;4333:13;:11;:13::i;:::-;18601:21:::1;:46:::0;;-1:-1:-1;;;;;18601:46:0;;::::1;-1:-1:-1::0;;;;;;18601:46:0;;::::1;;::::0;;;18658:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;18483:227::o;15029:156::-;15109:4;15133:44;15147:10;15159:9;15170:6;15133:13;:44::i;15769:118::-;15838:11;;:41;;-1:-1:-1;;;15838:41:0;;15868:10;15838:41;;;3844:51:1;15811:7:0;;-1:-1:-1;;;;;15838:11:0;;:29;;3817:18:1;;15838:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15831:48;;15769:118;:::o;16563:88::-;4333:13;:11;:13::i;:::-;16619:16:::1;:24:::0;;-1:-1:-1;;;;16619:24:0::1;::::0;;16563:88::o;16328:131::-;4333:13;:11;:13::i;:::-;16407:4:::1;14619:7:::0;14637:18;;;:9;:18;;;;;;16385:66:::1;::::0;16407:4;16414:10:::1;::::0;16385:13:::1;:66::i;16743:885::-:0;4333:13;:11;:13::i;:::-;16908:11:::1;::::0;16954:26:::1;::::0;;-1:-1:-1;;;16954:26:0;;;;16843:15:::1;::::0;-1:-1:-1;;;;;16908:11:0::1;::::0;16843:15;;16908:11;;16954:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;16843:15;16908:11;16954:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16930:50;;17001:46;17018:13;17033;17001:16;:46::i;:::-;17073:6;17068:553;17089:16;17085:1;:20;17068:553;;;17151:23;::::0;-1:-1:-1;;;17151:23:0;;::::1;::::0;::::1;1935:25:1::0;;;17129:19:0::1;::::0;-1:-1:-1;;;;;17151:20:0;::::1;::::0;::::1;::::0;1908:18:1;;17151:23:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17129:45;;17189:15;17207:22;17217:11;-1:-1:-1::0;;;;;14637:18:0;14619:7;14637:18;;;:9;:18;;;;;;;14553:105;17207:22:::1;17189:40:::0;-1:-1:-1;17267:15:0::1;11640:1;17267:2;:15;:::i;:::-;17260:22;::::0;:4:::1;:22;:::i;:::-;17249:7;:33;17246:364;;17306:11;::::0;:42:::1;::::0;-1:-1:-1;;;17306:42:0;;-1:-1:-1;;;;;7812:32:1;;;17306:42:0::1;::::0;::::1;7794:51:1::0;7861:18;;;7854:34;;;17306:11:0;;::::1;::::0;:20:::1;::::0;7767:18:1;;17306:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17302:97;;17392:4;17379:17;;17302:97;17422:10;17419:176;;;17456:11;:21:::0;;-1:-1:-1;;;;;17456:21:0;::::1;-1:-1:-1::0;;;;;;17456:21:0;;::::1;::::0;::::1;::::0;;;17500:18:::1;:37:::0;;;;::::1;::::0;;::::1;::::0;;17456:11:::1;::::0;17567:8:::1;17419:176;17112:509;;17107:3;;;;;:::i;:::-;;;;17068:553;;15942:200:::0;4333:13;:11;:13::i;:::-;16103:30:::1;::::0;-1:-1:-1;;;16103:30:0;;16090:4:::1;16103:30;::::0;::::1;3844:51:1::0;;;16039:12:0;;-1:-1:-1;;;;;16063:18:0;::::1;::::0;::::1;::::0;11483:42:::1;::::0;16063:18;;16103:15:::1;::::0;3817:18:1;;16103:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16063:71;::::0;-1:-1:-1;;;;;;16063:71:0::1;::::0;;;;;;-1:-1:-1;;;;;8297:15:1;;;16063:71:0::1;::::0;::::1;8279:34:1::0;8349:15;;;;8329:18;;;8322:43;8381:18;;;8374:34;8214:18;;16063:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16006:136;15942:200:::0;:::o;16659:76::-;4333:13;:11;:13::i;:::-;16709:10:::1;:18:::0;;-1:-1:-1;;;;16709:18:0::1;::::0;;16659:76::o;5346:201::-;4333:13;:11;:13::i;:::-;-1:-1:-1;;;;;5435:22:0;::::1;5427:73;;;::::0;-1:-1:-1;;;5427:73:0;;8871:2:1;5427:73:0::1;::::0;::::1;8853:21:1::0;8910:2;8890:18;;;8883:30;8949:34;8929:18;;;8922:62;-1:-1:-1;;;9000:18:1;;;8993:36;9046:19;;5427:73:0::1;8669:402:1::0;5427:73:0::1;5511:28;5530:8;5511:18;:28::i;18002:346::-:0;4333:13;:11;:13::i;:::-;-1:-1:-1;;;;;18098:23:0;::::1;18116:4;18098:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;18135:4:0::1;::::0;-1:-1:-1;;;;;18125:14:0;;::::1;18135:4:::0;::::1;18125:14;;18098:41;18090:50;;;::::0;::::1;;-1:-1:-1::0;;;;;18151:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;18151:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18195:146:::1;;18220:11;::::0;:31:::1;::::0;-1:-1:-1;;;18220:31:0;;-1:-1:-1;;;;;7812:32:1;;;18220:31:0::1;::::0;::::1;7794:51:1::0;18220:11:0::1;7861:18:1::0;;;7854:34;18220:11:0;;::::1;::::0;:20:::1;::::0;7767:18:1;;18220:31:0::1;7620:274:1::0;18195:146:0::1;18282:11;::::0;-1:-1:-1;;;;;18311:17:0;;::::1;18282:11;18311:17:::0;;;:9:::1;:17;::::0;;;;;;;18282:47;;-1:-1:-1;;;18282:47:0;;::::1;::::0;::::1;7794:51:1::0;;;;7861:18;;;7854:34;18282:11:0;::::1;::::0;:20:::1;::::0;7767:18:1;;18282:47:0::1;7620:274:1::0;4612:132:0;4493:7;4520:6;-1:-1:-1;;;;;4520:6:0;3743:10;4676:23;4668:68;;;;-1:-1:-1;;;4668:68:0;;9565:2:1;4668:68:0;;;9547:21:1;;;9584:18;;;9577:30;9643:34;9623:18;;;9616:62;9695:18;;4668:68:0;9363:356:1;19220:1417:0;19332:6;;19312:4;;19332:6;;19329:58;;;19348:36;19358:6;19366:9;19377:6;19348:9;:36::i;:::-;19341:43;;;;19329:58;19402:10;;-1:-1:-1;;;19402:10:0;;;;19399:410;;;19428:15;19446:30;19458:6;19466:9;19446:11;:30::i;:::-;19428:48;;19494:10;:30;;;;-1:-1:-1;19508:16:0;;-1:-1:-1;;;19508:16:0;;;;19494:30;19491:80;;;19535:33;19545:6;19553:9;19564:3;19535:9;:33::i;:::-;19528:40;;;;;19491:80;19588:10;:30;;;;-1:-1:-1;19602:16:0;;-1:-1:-1;;;19602:16:0;;;;19588:30;19585:100;;;19678:3;19663:12;;:18;;;;:::i;:::-;19653:6;19630:20;19640:9;-1:-1:-1;;;;;14637:18:0;14619:7;14637:18;;;:9;:18;;;;;;;14553:105;19630:20;:29;;;;:::i;:::-;:51;;19622:60;;;;;;19702:16;:14;:16::i;:::-;19699:35;;;19721:10;:8;:10::i;:::-;19751:20;:18;:20::i;:::-;19748:50;;;19774:21;:19;:21::i;:::-;19413:396;19399:410;-1:-1:-1;;;;;19859:17:0;;;;;;:9;:17;;;;;:27;;;;;;;19967:10;;-1:-1:-1;;;19967:10:0;;;;:47;;;;;19981:33;19996:6;20004:9;19981:14;:33::i;:::-;19964:235;;;20035:17;20075:14;;20064:8;;20055:6;:17;:34;;;;;:::i;:::-;20126:4;20108:24;;;;:9;:24;;;;;:37;;20055:34;;;;20108:37;;;;;20164:19;;;;-1:-1:-1;19964:235:0;-1:-1:-1;;;;;20227:20:0;;;;;;;:9;:20;;;;;;;;:30;;;;;;20285:24;;;;;:16;:24;;;;;;20281:96;;20316:11;;-1:-1:-1;;;;;20345:17:0;;;20316:11;20345:17;;;:9;:17;;;;;;;;20316:47;;-1:-1:-1;;;20316:47:0;;;;;7794:51:1;;;;7861:18;;;7854:34;20316:11:0;;;:20;;7767:18:1;;20316:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20312:63;;-1:-1:-1;;;;;20391:27:0;;;;;;:16;:27;;;;;;;;20387:105;;20425:11;;-1:-1:-1;;;;;20457:20:0;;;20425:11;20457:20;;;:9;:20;;;;;;;;20425:53;;-1:-1:-1;;;20425:53:0;;;;;7794:51:1;;;;7861:18;;;7854:34;20425:11:0;;;:20;;7767:18:1;;20425:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20421:69;;20508:11;;20528:14;;20508:35;;-1:-1:-1;;;;;;20508:35:0;;-1:-1:-1;;;;;20508:11:0;;;;:19;;:35;;;;1935:25:1;;;1923:2;1908:18;;1789:177;20508:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20504:51;20589:9;-1:-1:-1;;;;;20572:35:0;20581:6;-1:-1:-1;;;;;20572:35:0;;20600:6;20572:35;;;;1935:25:1;;1923:2;1908:18;;1789:177;20572:35:0;;;;;;;;-1:-1:-1;20625:4:0;19220:1417;;;;;:::o;5707:191::-;5781:16;5800:6;;-1:-1:-1;;;;;5817:17:0;;;-1:-1:-1;;;;;;5817:17:0;;;;;;5850:40;;5800:6;;;;;;;5850:40;;5781:16;5850:40;5770:128;5707:191;:::o;23688:278::-;23818:13;23833;23794:53;;;;;:::i;:::-;-1:-1:-1;;;;;10438:15:1;;;10420:34;;10490:15;;10485:2;10470:18;;10463:43;10370:2;10355:18;23794:53:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23780:11:0;:67;;-1:-1:-1;;;;;23780:67:0;;;-1:-1:-1;;;;;;23780:67:0;;;;;;;;23858:18;:41;;;;;;;;23910:27;;;;23780:11;23910:27;;;:12;:27;;;;;:48;;;;;;;;-1:-1:-1;23688:278:0:o;23977:532::-;24064:4;-1:-1:-1;;;;;24089:18:0;;24081:68;;;;-1:-1:-1;;;24081:68:0;;10719:2:1;24081:68:0;;;10701:21:1;10758:2;10738:18;;;10731:30;10797:34;10777:18;;;10770:62;-1:-1:-1;;;10848:18:1;;;10841:35;10893:19;;24081:68:0;10517:401:1;24081:68:0;-1:-1:-1;;;;;24168:16:0;;24160:64;;;;-1:-1:-1;;;24160:64:0;;11125:2:1;24160:64:0;;;11107:21:1;11164:2;11144:18;;;11137:30;11203:34;11183:18;;;11176:62;-1:-1:-1;;;11254:18:1;;;11247:33;11297:19;;24160:64:0;10923:399:1;24160:64:0;-1:-1:-1;;;;;24259:15:0;;24237:19;24259:15;;;:9;:15;;;;;;24293:21;;;;24285:72;;;;-1:-1:-1;;;24285:72:0;;11529:2:1;24285:72:0;;;11511:21:1;11568:2;11548:18;;;11541:30;11607:34;11587:18;;;11580:62;-1:-1:-1;;;11658:18:1;;;11651:36;11704:19;;24285:72:0;11327:402:1;24285:72:0;-1:-1:-1;;;;;;;24403:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;24443:13;;;;;;;;:23;;;;;;;-1:-1:-1;;23977:532:0:o;20860:171::-;20959:4;;20930;;-1:-1:-1;;;;;20953:10:0;;;20959:4;;20953:10;;;;:27;;-1:-1:-1;4493:7:0;4520:6;-1:-1:-1;;;;;20967:13:0;;;4520:6;;20967:13;;20953:27;:46;;;;-1:-1:-1;4493:7:0;4520:6;-1:-1:-1;;;;;20984:15:0;;;4520:6;;20984:15;;20953:46;:70;;;;-1:-1:-1;;4493:7:0;4520:6;-1:-1:-1;;;;;4520:6:0;21003:9;:20;;;;-1:-1:-1;;20860:171:0:o;21039:184::-;21126:4;;21088;;-1:-1:-1;;;;;21126:4:0;21112:10;:18;;;;:42;;-1:-1:-1;21148:6:0;;;;21147:7;21112:42;:103;;;;-1:-1:-1;;21199:16:0;;21189:4;21171:24;;;;:9;:24;;;;;;:44;;;21039:184::o;21231:1399::-;12979:6;:13;;-1:-1:-1;;12979:13:0;12988:4;12979:13;;;21341:8:::1;::::0;21326:12:::1;::::0;21307:16:::1;::::0;12979:6;;21353:1:::1;::::0;21341:8;;21307:31:::1;::::0;21326:12;21307:31:::1;:::i;:::-;:42;;;;:::i;:::-;21306:48;;;;:::i;:::-;21280:74;;21365:20;21407:15;21388:16;;:34;;;;:::i;:::-;21459:16;::::0;;21473:1:::1;21459:16:::0;;;;;::::1;::::0;;21365:57;;-1:-1:-1;21435:21:0::1;::::0;21459:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21459:16:0::1;21435:40;;21504:4;21486;21491:1;21486:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21486:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21530:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21530:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21486:7;;21530:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21520:4;21525:1;21520:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21520:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21612:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21612:188:0;;21578:21:::1;::::0;21612:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21684:12;;21554:21:::1;::::0;21727:4;;21754::::1;::::0;21774:15:::1;::::0;21612:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21813:17;21858:13;21833:21;:39;;;;:::i;:::-;21813:59;;21885:19;21933:1;21918:12;;:16;;;;:::i;:::-;21907:8;;:27;;;;:::i;:::-;21885:49;;21947:26;22019:1;22004:11;21989:12;;21977:9;:24;;;;:::i;:::-;:38;;;;:::i;:::-;21976:44;;;;:::i;:::-;21947:73;;22031:27;22089:11;22073:13;;22061:9;:25;;;;:::i;:::-;:39;;;;:::i;:::-;22031:69;;22111:26;22167:11;22152:12;;22140:9;:24;;;;:::i;:::-;:38;;;;:::i;:::-;22111:67;;22195:11;;;;;;;;;-1:-1:-1::0;;;;;22195:11:0::1;-1:-1:-1::0;;;;;22195:19:0::1;;22222;22195:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22191:65:::0;22274:20:::1;::::0;22266:58:::1;::::0;-1:-1:-1;;;;;22274:20:0;;::::1;::::0;22266:58;::::1;;;::::0;22305:18;;22274:20:::1;22266:58:::0;22274:20;22266:58;22305:18;22274:20;22266:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22344:6:0::1;::::0;22498:21:::1;::::0;22344:216:::1;::::0;-1:-1:-1;;;22344:216:0;;22416:4:::1;22344:216;::::0;::::1;13392:34:1::0;13442:18;;;13435:34;;;22344:6:0::1;13485:18:1::0;;;13478:34;;;13528:18;;;13521:34;-1:-1:-1;;;;;22498:21:0;;::::1;13571:19:1::0;;;13564:44;22534:15:0::1;13624:19:1::0;;;13617:35;22344:6:0;::::1;::::0;:22:::1;::::0;22374:18;;13326:19:1;;22344:216:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22578:44:0::1;::::0;;5330:25:1;;;5386:2;5371:18;;5364:34;;;22578:44:0::1;::::0;-1:-1:-1;5303:18:1;22578:44:0::1;;;;;;;-1:-1:-1::0;;12997:6:0;:14;;-1:-1:-1;;12997:14:0;;;-1:-1:-1;;;;;;;21231:1399:0:o;22638:335::-;22729:4;;22691;;-1:-1:-1;;;;;22729:4:0;22715:10;:18;;;;:42;;-1:-1:-1;22751:6:0;;;;22750:7;22715:42;:77;;;;-1:-1:-1;22774:18:0;;-1:-1:-1;;;22774:18:0;;;;22715:77;:155;;;;;22858:12;22832:22;;22809:20;;:45;;;;:::i;:::-;:61;;22715:155;:250;;;;-1:-1:-1;;22948:17:0;;22923:21;:42;;;22638:335::o;22981:320::-;23032:35;23043:17;;11483:42;23032:10;:35::i;:::-;23101:12;23078:20;:35;23150:17;;23124:22;:43;;:22;;:43;;23150:17;;23124:43;:::i;:::-;;;;-1:-1:-1;;23206:14:0;;23181:22;;:39;23178:74;;;23223:18;:26;;-1:-1:-1;;;;23223:26:0;;;23178:74;23267:26;23275:17;;23267:26;;;;1935:25:1;;1923:2;1908:18;;1789:177;23267:26:0;;;;;;;;22981:320::o;20645:203::-;-1:-1:-1;;;;;20753:19:0;;20727:4;20753:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;20776:22:0;;;;;;:11;:22;;;;;;;;20753:45;20751:48;:89;;;;-1:-1:-1;20814:4:0;;-1:-1:-1;;;;;20804:14:0;;;20814:4;;20804:14;;:35;;-1:-1:-1;;20835:4:0;;-1:-1:-1;;;;;20835:4:0;;;20822:17;;;;20645:203;-1:-1:-1;20645:203:0:o;23309:371::-;12979:6;:13;;-1:-1:-1;;12979:13:0;12988:4;12979:13;;;23410:16:::1;::::0;;23424:1:::1;23410:16:::0;;;;;::::1;::::0;;-1:-1:-1;;23410:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;23447:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23447:13:0;;;;23386:40;;-1:-1:-1;;;;;;23447:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;23447:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23437:4;23442:1;23437:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23437:23:0::1;;;-1:-1:-1::0;;;;;23437:23:0::1;;;::::0;::::1;23489:4;23471;23476:1;23471:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23471:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23507:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;23507:165:0;;:6;::::1;::::0;:57:::1;::::0;23572:6;;23507:165:::1;::::0;:6:::1;::::0;23610:4;;23629:2;;23646:15:::1;::::0;23507:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12997:6:0;:14;;-1:-1:-1;;12997:14:0;;;-1:-1:-1;;;;;;23309:371:0:o;-1:-1:-1:-;;;;;;;;:::o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:446;220:6;228;236;244;297:3;285:9;276:7;272:23;268:33;265:53;;;314:1;311;304:12;265:53;353:9;340:23;372:28;394:5;372:28;:::i;:::-;419:5;471:2;456:18;;443:32;;-1:-1:-1;522:2:1;507:18;;494:32;;573:2;558:18;545:32;;-1:-1:-1;137:446:1;-1:-1:-1;;;137:446:1:o;588:548::-;700:4;729:2;758;747:9;740:21;790:6;784:13;833:6;828:2;817:9;813:18;806:34;858:1;868:140;882:6;879:1;876:13;868:140;;;977:14;;;973:23;;967:30;943:17;;;962:2;939:26;932:66;897:10;;868:140;;;872:3;1057:1;1052:2;1043:6;1032:9;1028:22;1024:31;1017:42;1127:2;1120;1116:7;1111:2;1103:6;1099:15;1095:29;1084:9;1080:45;1076:54;1068:62;;;;588:548;;;;:::o;1141:131::-;-1:-1:-1;;;;;1216:31:1;;1206:42;;1196:70;;1262:1;1259;1252:12;1277:315;1345:6;1353;1406:2;1394:9;1385:7;1381:23;1377:32;1374:52;;;1422:1;1419;1412:12;1374:52;1461:9;1448:23;1480:31;1505:5;1480:31;:::i;:::-;1530:5;1582:2;1567:18;;;;1554:32;;-1:-1:-1;;;1277:315:1:o;1971:456::-;2048:6;2056;2064;2117:2;2105:9;2096:7;2092:23;2088:32;2085:52;;;2133:1;2130;2123:12;2085:52;2172:9;2159:23;2191:31;2216:5;2191:31;:::i;:::-;2241:5;-1:-1:-1;2298:2:1;2283:18;;2270:32;2311:33;2270:32;2311:33;:::i;:::-;1971:456;;2363:7;;-1:-1:-1;;;2417:2:1;2402:18;;;;2389:32;;1971:456::o;2432:248::-;2500:6;2508;2561:2;2549:9;2540:7;2536:23;2532:32;2529:52;;;2577:1;2574;2567:12;2529:52;-1:-1:-1;;2600:23:1;;;2670:2;2655:18;;;2642:32;;-1:-1:-1;2432:248:1:o;2874:180::-;2933:6;2986:2;2974:9;2965:7;2961:23;2957:32;2954:52;;;3002:1;2999;2992:12;2954:52;-1:-1:-1;3025:23:1;;2874:180;-1:-1:-1;2874:180:1:o;3059:382::-;3124:6;3132;3185:2;3173:9;3164:7;3160:23;3156:32;3153:52;;;3201:1;3198;3191:12;3153:52;3240:9;3227:23;3259:31;3284:5;3259:31;:::i;:::-;3309:5;-1:-1:-1;3366:2:1;3351:18;;3338:32;3379:30;3338:32;3379:30;:::i;:::-;3428:7;3418:17;;;3059:382;;;;;:::o;3446:247::-;3505:6;3558:2;3546:9;3537:7;3533:23;3529:32;3526:52;;;3574:1;3571;3564:12;3526:52;3613:9;3600:23;3632:31;3657:5;3632:31;:::i;3906:388::-;3974:6;3982;4035:2;4023:9;4014:7;4010:23;4006:32;4003:52;;;4051:1;4048;4041:12;4003:52;4090:9;4077:23;4109:31;4134:5;4109:31;:::i;:::-;4159:5;-1:-1:-1;4216:2:1;4201:18;;4188:32;4229:33;4188:32;4229:33;:::i;4891:127::-;4952:10;4947:3;4943:20;4940:1;4933:31;4983:4;4980:1;4973:15;5007:4;5004:1;4997:15;5023:128;5090:9;;;5111:11;;;5108:37;;;5125:18;;:::i;5619:184::-;5689:6;5742:2;5730:9;5721:7;5717:23;5713:32;5710:52;;;5758:1;5755;5748:12;5710:52;-1:-1:-1;5781:16:1;;5619:184;-1:-1:-1;5619:184:1:o;5808:251::-;5878:6;5931:2;5919:9;5910:7;5906:23;5902:32;5899:52;;;5947:1;5944;5937:12;5899:52;5979:9;5973:16;5998:31;6023:5;5998:31;:::i;6064:422::-;6153:1;6196:5;6153:1;6210:270;6231:7;6221:8;6218:21;6210:270;;;6290:4;6286:1;6282:6;6278:17;6272:4;6269:27;6266:53;;;6299:18;;:::i;:::-;6349:7;6339:8;6335:22;6332:55;;;6369:16;;;;6332:55;6448:22;;;;6408:15;;;;6210:270;;;6214:3;6064:422;;;;;:::o;6491:806::-;6540:5;6570:8;6560:80;;-1:-1:-1;6611:1:1;6625:5;;6560:80;6659:4;6649:76;;-1:-1:-1;6696:1:1;6710:5;;6649:76;6741:4;6759:1;6754:59;;;;6827:1;6822:130;;;;6734:218;;6754:59;6784:1;6775:10;;6798:5;;;6822:130;6859:3;6849:8;6846:17;6843:43;;;6866:18;;:::i;:::-;-1:-1:-1;;6922:1:1;6908:16;;6937:5;;6734:218;;7036:2;7026:8;7023:16;7017:3;7011:4;7008:13;7004:36;6998:2;6988:8;6985:16;6980:2;6974:4;6971:12;6967:35;6964:77;6961:159;;;-1:-1:-1;7073:19:1;;;7105:5;;6961:159;7152:34;7177:8;7171:4;7152:34;:::i;:::-;7222:6;7218:1;7214:6;7210:19;7201:7;7198:32;7195:58;;;7233:18;;:::i;:::-;7271:20;;6491:806;-1:-1:-1;;;6491:806:1:o;7302:140::-;7360:5;7389:47;7430:4;7420:8;7416:19;7410:4;7389:47;:::i;7447:168::-;7520:9;;;7551;;7568:15;;;7562:22;;7548:37;7538:71;;7589:18;;:::i;7899:135::-;7938:3;7959:17;;;7956:43;;7979:18;;:::i;:::-;-1:-1:-1;8026:1:1;8015:13;;7899:135::o;8419:245::-;8486:6;8539:2;8527:9;8518:7;8514:23;8510:32;8507:52;;;8555:1;8552;8545:12;8507:52;8587:9;8581:16;8606:28;8628:5;8606:28;:::i;9724:127::-;9785:10;9780:3;9776:20;9773:1;9766:31;9816:4;9813:1;9806:15;9840:4;9837:1;9830:15;9856:217;9896:1;9922;9912:132;;9966:10;9961:3;9957:20;9954:1;9947:31;10001:4;9998:1;9991:15;10029:4;10026:1;10019:15;9912:132;-1:-1:-1;10058:9:1;;9856:217::o;10078:125::-;10143:9;;;10164:10;;;10161:36;;;10177:18;;:::i;11866:127::-;11927:10;11922:3;11918:20;11915:1;11908:31;11958:4;11955:1;11948:15;11982:4;11979:1;11972:15;11998:461;12051:3;12089:5;12083:12;12116:6;12111:3;12104:19;12142:4;12171:2;12166:3;12162:12;12155:19;;12208:2;12201:5;12197:14;12229:1;12239:195;12253:6;12250:1;12247:13;12239:195;;;12318:13;;-1:-1:-1;;;;;12314:39:1;12302:52;;12374:12;;;;12409:15;;;;12350:1;12268:9;12239:195;;;-1:-1:-1;12450:3:1;;11998:461;-1:-1:-1;;;;;11998:461:1:o;12464:582::-;12763:6;12752:9;12745:25;12806:6;12801:2;12790:9;12786:18;12779:34;12849:3;12844:2;12833:9;12829:18;12822:31;12726:4;12870:57;12922:3;12911:9;12907:19;12899:6;12870:57;:::i;:::-;-1:-1:-1;;;;;12963:32:1;;;;12958:2;12943:18;;12936:60;-1:-1:-1;13027:3:1;13012:19;13005:35;12862:65;12464:582;-1:-1:-1;;;12464:582:1:o;13663:306::-;13751:6;13759;13767;13820:2;13808:9;13799:7;13795:23;13791:32;13788:52;;;13836:1;13833;13826:12;13788:52;13865:9;13859:16;13849:26;;13915:2;13904:9;13900:18;13894:25;13884:35;;13959:2;13948:9;13944:18;13938:25;13928:35;;13663:306;;;;;:::o;13974:510::-;14245:6;14234:9;14227:25;14288:3;14283:2;14272:9;14268:18;14261:31;14208:4;14309:57;14361:3;14350:9;14346:19;14338:6;14309:57;:::i;:::-;-1:-1:-1;;;;;14402:32:1;;;;14397:2;14382:18;;14375:60;-1:-1:-1;14466:2:1;14451:18;14444:34;14301:65;13974:510;-1:-1:-1;;13974:510:1:o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c63430008120033","offset":13021},"2":{"value":"0xa2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033","offset":12968},"3":{"value":"0xa2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033","offset":12968}},"immutableReferences":{},"transformations":[],"transformationValues":{}},"deployment":{"transactionHash":"0xe864916623007886e8959f46f7b3d5f7c4caa5cd7a7b60b2b162ee4459118423","blockNumber":"17708183","transactionIndex":"113","deployer":"0x0F01c945a33652d723994B75F9639B5FBd95120E"},"sources":{"contracts/PewCoin.sol":{"content":"/**\r\n *     __     _______   ________  __       __ \r\n *   _/  |_  /       \\ /        |/  |  _  /  |\r\n *  / $$   \\ $$$$$$$  |$$$$$$$$/ $$ | / \\ $$ |\r\n * /$$$$$$  |$$ |__$$ |$$ |__    $$ |/$  \\$$ |\r\n * $$ \\__$$/ $$    $$/ $$    |   $$ /$$$  $$ |\r\n * $$      \\ $$$$$$$/  $$$$$/    $$ $$/$$ $$ |\r\n *  $$$$$$  |$$ |      $$ |_____ $$$$/  $$$$ |\r\n * /  \\__$$ |$$ |      $$       |$$$/    $$$ |\r\n * $$    $$/ $$/       $$$$$$$$/ $$/      $$/ \r\n *  $$$$$$/                        \r\n *    $$/      https://t.me/Pew_Pew_Coin\r\n *  \r\n *  Tax 5%: \r\n * - 2% reflections to hodler\r\n * - 1% Buyback and burn\r\n * - 1% Marketing\r\n * - 1% add to LP \r\n */\r\n\r\n//SPDX-License-Identifier: MIT\r\npragma solidity ^0.8.0;\r\n\r\ninterface IERC20 {\r\n    // IERC20 metadata\r\n    function decimals() external view returns (uint8);\r\n    function name() external view returns (string memory);\r\n    function symbol() external view returns (string memory);\r\n\r\n    // ERC20 standard\r\n    function totalSupply() external view returns (uint256);\r\n    function balanceOf(address account) external view returns (uint256);\r\n    function transfer(address recipient, uint256 amount) external returns (bool);\r\n    function allowance(address _owner, address spender) external view returns (uint256);\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n}\r\n\r\ninterface IUniswapV2Factory {\r\n    function createPair(address tokenA, address tokenB) external returns (address pair);\r\n}\r\n\r\ninterface IUniswapV2Router02 {\r\n    function factory() external pure returns (address);\r\n    function WETH() external pure returns (address);\r\n\r\n    function addLiquidity(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint amountADesired,\r\n        uint amountBDesired,\r\n        uint amountAMin,\r\n        uint amountBMin,\r\n        address to,\r\n        uint deadline\r\n    ) external returns (uint amountA, uint amountB, uint liquidity);\r\n\r\n    function addLiquidityETH(\r\n        address token,\r\n        uint amountTokenDesired,\r\n        uint amountTokenMin,\r\n        uint amountETHMin,\r\n        address to,\r\n        uint deadline\r\n    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\r\n\r\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;\r\n\r\n    function swapExactETHForTokensSupportingFeeOnTransferTokens(\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external payable;\r\n\r\n    function swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;\r\n}\r\n\r\ninterface IDividendDistributor {\r\n    function claimDividend() external;\r\n    function deposit() external payable;\r\n    function process(uint256 gas) external;\r\n    function shareholderCount() external returns (uint);\r\n    function shareholders(uint256) external returns (address);\r\n    function setShare(address shareholder, uint256 amount) external;\r\n    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;\r\n    function getUnpaidEarnings(address shareholder) external view returns (uint256);\r\n}\r\n\r\nabstract contract Context {\r\n    function _msgSender() internal view virtual returns (address) {\r\n        return msg.sender;\r\n    }\r\n\r\n    function _msgData() internal view virtual returns (bytes calldata) {\r\n        return msg.data;\r\n    }\r\n}\r\n\r\nabstract contract Ownable is Context {\r\n    address private _owner;\r\n\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    /**\r\n     * @dev Initializes the contract setting the deployer as the initial owner.\r\n     */\r\n    constructor() {\r\n        _transferOwnership(_msgSender());\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if called by any account other than the owner.\r\n     */\r\n    modifier onlyOwner() {\r\n        _checkOwner();\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of the current owner.\r\n     */\r\n    function owner() public view virtual returns (address) {\r\n        return _owner;\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if the sender is not the owner.\r\n     */\r\n    function _checkOwner() internal view virtual {\r\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\r\n    }\r\n\r\n    /**\r\n     * @dev Leaves the contract without owner. It will not be possible to call\r\n     * `onlyOwner` functions. Can only be called by the current owner.\r\n     *\r\n     * NOTE: Renouncing ownership will leave the contract without an owner,\r\n     * thereby disabling any functionality that is only available to the owner.\r\n     */\r\n    function renounceOwnership() public virtual onlyOwner {\r\n        _transferOwnership(address(0));\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Can only be called by the current owner.\r\n     */\r\n    function transferOwnership(address newOwner) public virtual onlyOwner {\r\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\r\n        _transferOwnership(newOwner);\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Internal function without access restriction.\r\n     */\r\n    function _transferOwnership(address newOwner) internal virtual {\r\n        address oldOwner = _owner;\r\n        _owner = newOwner;\r\n        emit OwnershipTransferred(oldOwner, newOwner);\r\n    }\r\n}\r\n\r\ncontract DividendDistributor is IDividendDistributor {\r\n    struct Share {\r\n        uint256 amount;\r\n        uint256 totalExcluded;\r\n        uint256 totalRealised;\r\n    }\r\n\r\n    address _initiator;\r\n    IERC20 rewardToken;\r\n    IUniswapV2Router02 router;\r\n\r\n    address[] public shareholders;\r\n    mapping (address => uint256) shareholderClaims;\r\n    mapping (address => uint256) shareholderIndexes;\r\n\r\n    mapping (address => Share) public shares;\r\n\r\n    uint256 public totalShares;\r\n    uint256 public totalDividends;\r\n    uint256 public totalDistributed;\r\n    uint256 public dividendsPerShare;\r\n    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;\r\n\r\n    uint256 public minPeriod = 1 hours;\r\n    uint256 public minDistribution = 1 * (10 ** 18);\r\n\r\n    uint256 currentIndex;\r\n\r\n    modifier onlyInitiator() {\r\n        require(msg.sender == _initiator); _;\r\n    }\r\n\r\n    constructor (address routerAddress, address tokenAddress) {\r\n        _initiator = msg.sender;\r\n        \r\n        rewardToken = IERC20(tokenAddress);\r\n        router = IUniswapV2Router02(routerAddress);\r\n    }\r\n\r\n    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyInitiator {\r\n        minPeriod = _minPeriod;\r\n        minDistribution = _minDistribution;\r\n    }\r\n\r\n    function setShare(address shareholder, uint256 amount) external override onlyInitiator {\r\n        if(shares[shareholder].amount > 0){\r\n            distributeDividend(shareholder);\r\n        }\r\n\r\n        if(amount > 0 && shares[shareholder].amount == 0){\r\n            addShareholder(shareholder);\r\n        }else if(amount == 0 && shares[shareholder].amount > 0){\r\n            removeShareholder(shareholder);\r\n        }\r\n\r\n        totalShares = (totalShares - shares[shareholder].amount) + amount;\r\n        shares[shareholder].amount = amount;\r\n        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);\r\n    }\r\n\r\n    function deposit() external payable override onlyInitiator {\r\n        uint256 balanceBefore = rewardToken.balanceOf(address(this));\r\n\r\n        address[] memory path = new address[](2);\r\n        path[0] = router.WETH();\r\n        path[1] = address(rewardToken);\r\n\r\n        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(\r\n            0,\r\n            path,\r\n            address(this),\r\n            block.timestamp\r\n        );\r\n\r\n        uint256 amount = rewardToken.balanceOf(address(this)) - balanceBefore;\r\n\r\n        totalDividends += amount;\r\n        dividendsPerShare = (dividendsPerShare + (dividendsPerShareAccuracyFactor * amount / totalShares));\r\n    }\r\n\r\n    function process(uint256 gas) external override onlyInitiator {\r\n        uint256 shareholderCount_ = shareholderCount();\r\n\r\n        if(shareholderCount_ == 0) { return; }\r\n\r\n        uint256 gasUsed = 0;\r\n        uint256 gasLeft = gasleft();\r\n\r\n        uint256 iterations = 0;\r\n\r\n        while(gasUsed < gas && iterations < shareholderCount_) {\r\n            if(currentIndex >= shareholderCount_){\r\n                currentIndex = 0;\r\n            }\r\n\r\n            if(shouldDistribute(shareholders[currentIndex])){\r\n                distributeDividend(shareholders[currentIndex]);\r\n            }\r\n\r\n            gasUsed += (gasLeft - gasleft());\r\n            gasLeft = gasleft();\r\n            currentIndex++;\r\n            iterations++;\r\n        }\r\n    }\r\n\r\n    function shareholderCount() public view returns (uint) {\r\n        return shareholders.length;\r\n    }\r\n\r\n    function shouldDistribute(address shareholder) internal view returns (bool) {\r\n        return shareholderClaims[shareholder] + minPeriod < block.timestamp\r\n            && getUnpaidEarnings(shareholder) > minDistribution;\r\n    }\r\n\r\n    function distributeDividend(address shareholder) internal {\r\n        if(shares[shareholder].amount == 0){ return; }\r\n\r\n        uint256 amount = getUnpaidEarnings(shareholder);\r\n        if(amount > 0){\r\n            totalDistributed += amount;\r\n            rewardToken.transfer(shareholder, amount);\r\n            shareholderClaims[shareholder] = block.timestamp;\r\n            shares[shareholder].totalRealised += amount;\r\n            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);\r\n        }\r\n    }\r\n\r\n    function claimDividend() external {\r\n        distributeDividend(msg.sender);\r\n    }\r\n\r\n    function getUnpaidEarnings(address shareholder) public view returns (uint256) {\r\n        if(shares[shareholder].amount == 0){ return 0; }\r\n\r\n        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);\r\n        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;\r\n\r\n        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }\r\n\r\n        return shareholderTotalDividends - shareholderTotalExcluded;\r\n    }\r\n\r\n    function getCumulativeDividends(uint256 share) internal view returns (uint256) {\r\n        return share * dividendsPerShare / dividendsPerShareAccuracyFactor;\r\n    }\r\n\r\n    function addShareholder(address shareholder) internal {\r\n        shareholderIndexes[shareholder] = shareholders.length;\r\n        shareholders.push(shareholder);\r\n    }\r\n\r\n    function removeShareholder(address shareholder) internal {\r\n        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];\r\n        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];\r\n        shareholders.pop();\r\n    }\r\n}\r\n\r\ncontract PewCoin is IERC20, Ownable {\r\n\r\n    address constant DEAD = 0x000000000000000000000000000000000000dEaD;\r\n\r\n    string constant _name = \"Pew Coin\";\r\n    string constant _symbol = \"PEW\";\r\n    uint8 constant _decimals = 9;\r\n\r\n    uint256 _totalSupply = 1_337_000_000 * (10 ** _decimals);\r\n\r\n    mapping (address => uint256) _balances;\r\n    mapping (address => mapping (address => uint256)) _allowances;\r\n\r\n    mapping (address => bool) isFeeExempt;\r\n    mapping (address => bool) isDividendExempt;\r\n\r\n    mapping (address => address) public distributors;\r\n\r\n    uint256 totalFee = 500;\r\n    uint256 buybackFee = 100;\r\n    uint256 liquidityFee = 100;\r\n    uint256 reflectionFee = 200;\r\n    uint256 marketingFee = 100;\r\n    uint256 feeDenominator = 10000;\r\n\r\n    address public autoLiquidityReceiver;\r\n    address public marketingFeeReceiver;\r\n\r\n    uint256 targetLiquidity = 25;\r\n    uint256 targetLiquidityDenominator = 100;\r\n\r\n    address public pair;\r\n    IUniswapV2Router02 public router;\r\n\r\n    bool public feeEnabled = true;\r\n    bool public antiSnipeEnabled = true;\r\n    bool public antiWhaleEnabled = true;\r\n    bool public autoBuybackEnabled = false;\r\n\r\n    uint256 autoBuybackCap;\r\n    uint256 autoBuybackAccumulator;\r\n    uint256 autoBuybackAmount;\r\n    uint256 autoBuybackBlockPeriod;\r\n    uint256 autoBuybackBlockLast;\r\n\r\n    IDividendDistributor distributor;\r\n    address public distributorAddress;\r\n\r\n    uint256 distributorGas = 500000;\r\n\r\n    bool inSwap;\r\n    uint256 public liquifyThreshold = _totalSupply / 2000;\r\n    modifier swapping() { inSwap = true; _; inSwap = false; }\r\n\r\n    event Buyback(uint256 amount);\r\n    event Liquify(uint256 amountETH, uint256 amountPEW);\r\n\r\n    constructor (address routerAddress, address marketingAddress, address rewardAddress) {\r\n        router = IUniswapV2Router02(routerAddress);\r\n        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));\r\n\r\n        unchecked{\r\n            _allowances[address(this)][address(router)] = _totalSupply;\r\n        }\r\n\r\n        _initDistributor(routerAddress, rewardAddress);\r\n\r\n        isFeeExempt[msg.sender] = true;\r\n        isFeeExempt[marketingAddress] = true;\r\n\r\n        isDividendExempt[pair] = true;\r\n        isDividendExempt[DEAD] = true;\r\n        isDividendExempt[address(this)] = true;\r\n\r\n        marketingFeeReceiver = marketingAddress;\r\n        autoLiquidityReceiver = marketingAddress;\r\n\r\n        approve(routerAddress, _totalSupply);\r\n        approve(address(pair), _totalSupply);\r\n        \r\n        unchecked{\r\n            _balances[msg.sender] = _totalSupply;\r\n        }\r\n        \r\n        emit Transfer(address(0), msg.sender, _totalSupply);\r\n    }\r\n\r\n    /**\r\n     * ERC20 functions\r\n     */\r\n\r\n    receive() external payable { }\r\n\r\n    function decimals() external pure override returns (uint8) { return _decimals; }\r\n    function name() external pure override returns (string memory) { return _name; }\r\n    function symbol() external pure override returns (string memory) { return _symbol; }\r\n    function totalSupply() external view override returns (uint256) { return _totalSupply; }\r\n    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }\r\n    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }\r\n\r\n    function approve(address spender, uint256 amount) public override returns (bool) {\r\n        _allowances[msg.sender][spender] = amount;\r\n        emit Approval(msg.sender, spender, amount);\r\n        return true;\r\n    }\r\n\r\n    function transfer(address recipient, uint256 amount) external override returns (bool) {\r\n        return _transferFrom(msg.sender, recipient, amount);\r\n    }\r\n\r\n    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {\r\n         if (_allowances[sender][msg.sender] != type(uint256).max) {\r\n            require(_allowances[sender][msg.sender] >= amount, \"ERC20: insufficient allowance\");\r\n            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;\r\n        }\r\n\r\n        return _transferFrom(sender, recipient, amount);\r\n    }\r\n\r\n    /**\r\n     * Holder functions\r\n     */\r\n   \r\n    function claim() public {\r\n        distributor.claimDividend();\r\n    }\r\n\r\n    function claimable() public view returns (uint256) {\r\n        return distributor.getUnpaidEarnings(msg.sender);\r\n    }\r\n\r\n    /**\r\n     * Owner functions\r\n     */\r\n   \r\n    function burnDustToken(address tokenAddress) external onlyOwner {\r\n        IERC20 token = IERC20(tokenAddress);\r\n        token.transferFrom(address(this), DEAD, token.balanceOf(address(this)));\r\n    }\r\n    \r\n    function clearStuckEth() external onlyOwner {\r\n        (bool success,) = payable(msg.sender).call{value: address(this).balance}(\"\");\r\n        require(success);\r\n    }\r\n\r\n    function clearStuckToken() external onlyOwner {\r\n        _transferFrom(address(this), msg.sender, balanceOf(address(this)));\r\n    }\r\n\r\n    function removeAntiSnipe()external onlyOwner {\r\n        antiSnipeEnabled = false;\r\n    }\r\n\r\n    function removeAntiWhale()external onlyOwner {\r\n        antiWhaleEnabled = false;\r\n    }\r\n\r\n    function removeFee()external onlyOwner {\r\n        feeEnabled = false;\r\n    }\r\n\r\n    function setRewardToken(address routerAddress, address rewardAddress) external onlyOwner {\r\n        bool revertBack = false;\r\n        IDividendDistributor oldDist = distributor;\r\n        uint shareholderCount = oldDist.shareholderCount();\r\n        \r\n        _initDistributor(routerAddress, rewardAddress);\r\n        \r\n        for (uint i = 0; i < shareholderCount; i++) {\r\n\r\n            address shareholder = oldDist.shareholders(i);\r\n            uint256 balance = balanceOf(shareholder);\r\n\r\n            if(balance >= 1337 * 10 ** _decimals){\r\n                try distributor.setShare(shareholder, balance) {} \r\n                catch  { revertBack = true; }\r\n\r\n                if(revertBack){\r\n                    distributor = oldDist;\r\n                    distributorAddress = address(oldDist);\r\n                    return revert();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external onlyOwner {\r\n        autoBuybackEnabled = _enabled;\r\n        autoBuybackCap = _cap;\r\n        autoBuybackAccumulator = 0;\r\n        autoBuybackAmount = _amount;\r\n        autoBuybackBlockPeriod = _period;\r\n        autoBuybackBlockLast = block.number;\r\n    }\r\n\r\n    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {\r\n        require(holder != address(this) && holder != pair);\r\n        isDividendExempt[holder] = exempt;\r\n        if(exempt){\r\n            distributor.setShare(holder, 0);\r\n        }else{\r\n            distributor.setShare(holder, _balances[holder]);\r\n        }\r\n    }\r\n\r\n    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {\r\n        isFeeExempt[holder] = exempt;\r\n    }\r\n\r\n    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external onlyOwner {\r\n        autoLiquidityReceiver = _autoLiquidityReceiver;\r\n        marketingFeeReceiver = _marketingFeeReceiver;\r\n    }\r\n\r\n    function setLiquifyThreshold(uint256 _amount) external onlyOwner {\r\n        liquifyThreshold = _amount;\r\n    }\r\n\r\n    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {\r\n        distributor.setDistributionCriteria(_minPeriod, _minDistribution);\r\n    }\r\n\r\n    function setDistributorSettings(uint256 gas) external onlyOwner {\r\n        require(gas < 750000);\r\n        distributorGas = gas;\r\n    }\r\n\r\n    /**\r\n     * Internal functions\r\n     */\r\n    \r\n    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {\r\n        if(inSwap){ return _transfer(sender, recipient, amount); }\r\n\r\n        if(feeEnabled){\r\n            bool shouldSwap = _shouldSwap(sender, recipient);\r\n            if(shouldSwap && antiSnipeEnabled) { return _transfer(sender, recipient, 707); }\r\n            if(shouldSwap && antiWhaleEnabled) { require(balanceOf(recipient) + amount <= _totalSupply / 200); }\r\n            if(_shouldLiquify()){ _liquify(); }\r\n            if(_shouldAutoBuyback()){ _triggerAutoBuyback(); }\r\n        }\r\n\r\n        unchecked {             \r\n            _balances[sender] -= amount;\r\n\r\n            // take tax only on buys and sells when enabled\r\n            if(feeEnabled && _shouldTakeFee(sender, recipient)) {\r\n                uint256 feeAmount = amount * totalFee / feeDenominator;\r\n                _balances[address(this)] += feeAmount;\r\n                amount -= feeAmount;\r\n            }\r\n            \r\n            _balances[recipient] += amount;\r\n        }\r\n\r\n        if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }\r\n        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }\r\n\r\n        try distributor.process(distributorGas) {} catch {}\r\n\r\n        emit Transfer(sender, recipient, amount);\r\n        return true;\r\n    }\r\n\r\n    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {\r\n        return !(isFeeExempt[sender] || isFeeExempt[recipient]) && (sender == pair || recipient == pair);\r\n    }\r\n    \r\n    function _shouldSwap(address from, address to) internal view returns (bool){\r\n        return to != pair && to != owner() && from != owner() && tx.origin != owner();\r\n    }\r\n\r\n    function _shouldLiquify() internal view returns (bool) {\r\n        return msg.sender != pair\r\n            && !inSwap\r\n            && _balances[address(this)] >= liquifyThreshold;\r\n    }\r\n\r\n    function _liquify() internal swapping {\r\n        uint256 amountToLiquify = (liquifyThreshold * liquidityFee / totalFee) / 2;\r\n        uint256 amountToSwap = liquifyThreshold - amountToLiquify;\r\n\r\n        address[] memory path = new address[](2);\r\n        path[0] = address(this);\r\n        path[1] = router.WETH();\r\n        uint256 balanceBefore = address(this).balance;\r\n\r\n        router.swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n            amountToSwap,\r\n            0,\r\n            path,\r\n            address(this),\r\n            block.timestamp\r\n        );\r\n\r\n        uint256 amountETH = address(this).balance - (balanceBefore);\r\n\r\n        uint256 totalETHFee = totalFee - liquidityFee / 2;\r\n\r\n        uint256 amountETHLiquidity = (amountETH * liquidityFee / totalETHFee) / 2;\r\n        uint256 amountETHReflection = amountETH * reflectionFee / totalETHFee;\r\n        uint256 amountETHMarketing = amountETH * marketingFee / totalETHFee;\r\n\r\n        try distributor.deposit{value: amountETHReflection}() {} catch {}\r\n        payable(marketingFeeReceiver).transfer(amountETHMarketing);\r\n       \r\n        router.addLiquidityETH{value: amountETHLiquidity}(\r\n            address(this),\r\n            amountToLiquify,\r\n            0,\r\n            0,\r\n            autoLiquidityReceiver,\r\n            block.timestamp\r\n        );\r\n\r\n        emit Liquify(amountETHLiquidity, amountToLiquify);\r\n    }\r\n\r\n    function _shouldAutoBuyback() internal view returns (bool) {\r\n        return msg.sender != pair\r\n            && !inSwap\r\n            && autoBuybackEnabled\r\n            && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number // After N blocks from last buyback\r\n            && address(this).balance >= autoBuybackAmount;\r\n    }\r\n\r\n    function _triggerAutoBuyback() internal {\r\n        _buyTokens(autoBuybackAmount, DEAD);\r\n        autoBuybackBlockLast = block.number;\r\n        autoBuybackAccumulator += autoBuybackAmount;\r\n        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }\r\n        emit Buyback(autoBuybackAmount);\r\n    }\r\n\r\n    function _buyTokens(uint256 amount, address to) internal swapping {\r\n        address[] memory path = new address[](2);\r\n        path[0] = router.WETH();\r\n        path[1] = address(this);\r\n\r\n        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(\r\n            0,\r\n            path,\r\n            to,\r\n            block.timestamp\r\n        );\r\n    }\r\n\r\n    function _initDistributor(address routerAddress, address rewardAddress) internal {\r\n        distributor = new DividendDistributor(routerAddress, rewardAddress);\r\n        distributorAddress = address(distributor);\r\n        distributors[rewardAddress] = distributorAddress;\r\n    }\r\n    \r\n   function _transfer(address from, address to, uint256 amount) internal virtual returns (bool) {\r\n        require(from != address(0), \"ERC20: transfer from the zero address\");\r\n        require(to != address(0), \"ERC20: transfer to the zero address\");\r\n\r\n        uint256 fromBalance = _balances[from];\r\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\r\n        \r\n        unchecked {\r\n            _balances[from] -= amount;\r\n            _balances[to] += amount;\r\n        }\r\n\r\n        return true;\r\n    }\r\n}"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.8.18+commit.87f61d96","compilerSettings":{"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"optimizer":{"runs":200,"enabled":true},"evmVersion":"paris","remappings":[]},"name":"PewCoin","fullyQualifiedName":"contracts/PewCoin.sol:PewCoin"},"abi":[{"type":"constructor","inputs":[{"name":"routerAddress","type":"address","internalType":"address"},{"name":"marketingAddress","type":"address","internalType":"address"},{"name":"rewardAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Buyback","type":"event","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Liquify","type":"event","inputs":[{"name":"amountETH","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountPEW","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"OwnershipTransferred","type":"event","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"allowance","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"antiSnipeEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"antiWhaleEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"autoBuybackEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"autoLiquidityReceiver","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"balanceOf","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"burnDustToken","type":"function","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"claim","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimable","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"clearStuckEth","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"clearStuckToken","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"name":"distributorAddress","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"distributors","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"feeEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"liquifyThreshold","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"marketingFeeReceiver","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"pair","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"removeAntiSnipe","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"removeAntiWhale","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"removeFee","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"renounceOwnership","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"router","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IUniswapV2Router02"}],"stateMutability":"view"},{"name":"setAutoBuybackSettings","type":"function","inputs":[{"name":"_enabled","type":"bool","internalType":"bool"},{"name":"_cap","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_period","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setDistributionCriteria","type":"function","inputs":[{"name":"_minPeriod","type":"uint256","internalType":"uint256"},{"name":"_minDistribution","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setDistributorSettings","type":"function","inputs":[{"name":"gas","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setFeeReceivers","type":"function","inputs":[{"name":"_autoLiquidityReceiver","type":"address","internalType":"address"},{"name":"_marketingFeeReceiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setIsDividendExempt","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setIsFeeExempt","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setLiquifyThreshold","type":"function","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setRewardToken","type":"function","inputs":[{"name":"routerAddress","type":"address","internalType":"address"},{"name":"rewardAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transfer","type":"function","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferOwnership","type":"function","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"}],"metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"rewardAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Buyback","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPEW","type":"uint256"}],"name":"Liquify","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":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiWhaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"burnDustToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"distributors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquifyThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeAntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setLiquifyThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"rewardAddress","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"burnDustToken(address)":{"notice":"Owner functions"},"claim()":{"notice":"Holder functions"}},"version":1}},"settings":{"compilationTarget":{"contracts/PewCoin.sol":"PewCoin"},"evmVersion":"paris","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[]},"sources":{"contracts/PewCoin.sol":{"keccak256":"0xb5c6d5b7c8e6ec5be7f0c6cb520cf30af7d8f39ab598f0617bf7a93fc2d9dc7e","license":"MIT","urls":["bzz-raw://b489f4f797a0fc1fb291ae017d0418b83fb720c326d57d12bf3c421667254e80","dweb:/ipfs/QmcEU933V9w4aUJ7UM7VrWkC6NiR6RjYdS1bBBTnxgMrih"]}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"key":"t_address","label":"mapping(address => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_address)":{"key":"t_address","label":"mapping(address => address)","value":"t_address","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"key":"t_address","label":"mapping(address => uint256)","value":"t_uint256","encoding":"mapping","numberOfBytes":"32"},"t_contract(IUniswapV2Router02)190":{"label":"contract IUniswapV2Router02","encoding":"inplace","numberOfBytes":"20"},"t_contract(IDividendDistributor)235":{"label":"contract IDividendDistributor","encoding":"inplace","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"key":"t_address","label":"mapping(address => mapping(address => uint256))","value":"t_mapping(t_address,t_uint256)","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":258,"label":"_owner","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"1","type":"t_uint256","astId":979,"label":"_totalSupply","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"2","type":"t_mapping(t_address,t_uint256)","astId":983,"label":"_balances","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"3","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))","astId":989,"label":"_allowances","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"4","type":"t_mapping(t_address,t_bool)","astId":993,"label":"isFeeExempt","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"5","type":"t_mapping(t_address,t_bool)","astId":997,"label":"isDividendExempt","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"6","type":"t_mapping(t_address,t_address)","astId":1001,"label":"distributors","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"7","type":"t_uint256","astId":1004,"label":"totalFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"8","type":"t_uint256","astId":1007,"label":"buybackFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"9","type":"t_uint256","astId":1010,"label":"liquidityFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"10","type":"t_uint256","astId":1013,"label":"reflectionFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"11","type":"t_uint256","astId":1016,"label":"marketingFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"12","type":"t_uint256","astId":1019,"label":"feeDenominator","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"13","type":"t_address","astId":1021,"label":"autoLiquidityReceiver","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"14","type":"t_address","astId":1023,"label":"marketingFeeReceiver","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"15","type":"t_uint256","astId":1026,"label":"targetLiquidity","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"16","type":"t_uint256","astId":1029,"label":"targetLiquidityDenominator","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"17","type":"t_address","astId":1031,"label":"pair","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_contract(IUniswapV2Router02)190","astId":1034,"label":"router","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1037,"label":"feeEnabled","offset":20,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1040,"label":"antiSnipeEnabled","offset":21,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1043,"label":"antiWhaleEnabled","offset":22,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1046,"label":"autoBuybackEnabled","offset":23,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"19","type":"t_uint256","astId":1048,"label":"autoBuybackCap","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"20","type":"t_uint256","astId":1050,"label":"autoBuybackAccumulator","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"21","type":"t_uint256","astId":1052,"label":"autoBuybackAmount","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"22","type":"t_uint256","astId":1054,"label":"autoBuybackBlockPeriod","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"23","type":"t_uint256","astId":1056,"label":"autoBuybackBlockLast","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"24","type":"t_contract(IDividendDistributor)235","astId":1059,"label":"distributor","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"25","type":"t_address","astId":1061,"label":"distributorAddress","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"26","type":"t_uint256","astId":1064,"label":"distributorGas","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"27","type":"t_bool","astId":1066,"label":"inSwap","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"28","type":"t_uint256","astId":1071,"label":"liquifyThreshold","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"}]},"transientStorageLayout":null,"userdoc":{"kind":"user","methods":{"claim()":{"notice":"Holder functions"},"burnDustToken(address)":{"notice":"Owner functions"}},"version":1},"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"sourceIds":{"contracts/PewCoin.sol":{"id":0}},"additionalInput":null,"stdJsonInput":{"sources":{"contracts/PewCoin.sol":{"content":"/**\r\n *     __     _______   ________  __       __ \r\n *   _/  |_  /       \\ /        |/  |  _  /  |\r\n *  / $$   \\ $$$$$$$  |$$$$$$$$/ $$ | / \\ $$ |\r\n * /$$$$$$  |$$ |__$$ |$$ |__    $$ |/$  \\$$ |\r\n * $$ \\__$$/ $$    $$/ $$    |   $$ /$$$  $$ |\r\n * $$      \\ $$$$$$$/  $$$$$/    $$ $$/$$ $$ |\r\n *  $$$$$$  |$$ |      $$ |_____ $$$$/  $$$$ |\r\n * /  \\__$$ |$$ |      $$       |$$$/    $$$ |\r\n * $$    $$/ $$/       $$$$$$$$/ $$/      $$/ \r\n *  $$$$$$/                        \r\n *    $$/      https://t.me/Pew_Pew_Coin\r\n *  \r\n *  Tax 5%: \r\n * - 2% reflections to hodler\r\n * - 1% Buyback and burn\r\n * - 1% Marketing\r\n * - 1% add to LP \r\n */\r\n\r\n//SPDX-License-Identifier: MIT\r\npragma solidity ^0.8.0;\r\n\r\ninterface IERC20 {\r\n    // IERC20 metadata\r\n    function decimals() external view returns (uint8);\r\n    function name() external view returns (string memory);\r\n    function symbol() external view returns (string memory);\r\n\r\n    // ERC20 standard\r\n    function totalSupply() external view returns (uint256);\r\n    function balanceOf(address account) external view returns (uint256);\r\n    function transfer(address recipient, uint256 amount) external returns (bool);\r\n    function allowance(address _owner, address spender) external view returns (uint256);\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n}\r\n\r\ninterface IUniswapV2Factory {\r\n    function createPair(address tokenA, address tokenB) external returns (address pair);\r\n}\r\n\r\ninterface IUniswapV2Router02 {\r\n    function factory() external pure returns (address);\r\n    function WETH() external pure returns (address);\r\n\r\n    function addLiquidity(\r\n        address tokenA,\r\n        address tokenB,\r\n        uint amountADesired,\r\n        uint amountBDesired,\r\n        uint amountAMin,\r\n        uint amountBMin,\r\n        address to,\r\n        uint deadline\r\n    ) external returns (uint amountA, uint amountB, uint liquidity);\r\n\r\n    function addLiquidityETH(\r\n        address token,\r\n        uint amountTokenDesired,\r\n        uint amountTokenMin,\r\n        uint amountETHMin,\r\n        address to,\r\n        uint deadline\r\n    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\r\n\r\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;\r\n\r\n    function swapExactETHForTokensSupportingFeeOnTransferTokens(\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external payable;\r\n\r\n    function swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n        uint amountIn,\r\n        uint amountOutMin,\r\n        address[] calldata path,\r\n        address to,\r\n        uint deadline\r\n    ) external;\r\n}\r\n\r\ninterface IDividendDistributor {\r\n    function claimDividend() external;\r\n    function deposit() external payable;\r\n    function process(uint256 gas) external;\r\n    function shareholderCount() external returns (uint);\r\n    function shareholders(uint256) external returns (address);\r\n    function setShare(address shareholder, uint256 amount) external;\r\n    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;\r\n    function getUnpaidEarnings(address shareholder) external view returns (uint256);\r\n}\r\n\r\nabstract contract Context {\r\n    function _msgSender() internal view virtual returns (address) {\r\n        return msg.sender;\r\n    }\r\n\r\n    function _msgData() internal view virtual returns (bytes calldata) {\r\n        return msg.data;\r\n    }\r\n}\r\n\r\nabstract contract Ownable is Context {\r\n    address private _owner;\r\n\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    /**\r\n     * @dev Initializes the contract setting the deployer as the initial owner.\r\n     */\r\n    constructor() {\r\n        _transferOwnership(_msgSender());\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if called by any account other than the owner.\r\n     */\r\n    modifier onlyOwner() {\r\n        _checkOwner();\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of the current owner.\r\n     */\r\n    function owner() public view virtual returns (address) {\r\n        return _owner;\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if the sender is not the owner.\r\n     */\r\n    function _checkOwner() internal view virtual {\r\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\r\n    }\r\n\r\n    /**\r\n     * @dev Leaves the contract without owner. It will not be possible to call\r\n     * `onlyOwner` functions. Can only be called by the current owner.\r\n     *\r\n     * NOTE: Renouncing ownership will leave the contract without an owner,\r\n     * thereby disabling any functionality that is only available to the owner.\r\n     */\r\n    function renounceOwnership() public virtual onlyOwner {\r\n        _transferOwnership(address(0));\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Can only be called by the current owner.\r\n     */\r\n    function transferOwnership(address newOwner) public virtual onlyOwner {\r\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\r\n        _transferOwnership(newOwner);\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Internal function without access restriction.\r\n     */\r\n    function _transferOwnership(address newOwner) internal virtual {\r\n        address oldOwner = _owner;\r\n        _owner = newOwner;\r\n        emit OwnershipTransferred(oldOwner, newOwner);\r\n    }\r\n}\r\n\r\ncontract DividendDistributor is IDividendDistributor {\r\n    struct Share {\r\n        uint256 amount;\r\n        uint256 totalExcluded;\r\n        uint256 totalRealised;\r\n    }\r\n\r\n    address _initiator;\r\n    IERC20 rewardToken;\r\n    IUniswapV2Router02 router;\r\n\r\n    address[] public shareholders;\r\n    mapping (address => uint256) shareholderClaims;\r\n    mapping (address => uint256) shareholderIndexes;\r\n\r\n    mapping (address => Share) public shares;\r\n\r\n    uint256 public totalShares;\r\n    uint256 public totalDividends;\r\n    uint256 public totalDistributed;\r\n    uint256 public dividendsPerShare;\r\n    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;\r\n\r\n    uint256 public minPeriod = 1 hours;\r\n    uint256 public minDistribution = 1 * (10 ** 18);\r\n\r\n    uint256 currentIndex;\r\n\r\n    modifier onlyInitiator() {\r\n        require(msg.sender == _initiator); _;\r\n    }\r\n\r\n    constructor (address routerAddress, address tokenAddress) {\r\n        _initiator = msg.sender;\r\n        \r\n        rewardToken = IERC20(tokenAddress);\r\n        router = IUniswapV2Router02(routerAddress);\r\n    }\r\n\r\n    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyInitiator {\r\n        minPeriod = _minPeriod;\r\n        minDistribution = _minDistribution;\r\n    }\r\n\r\n    function setShare(address shareholder, uint256 amount) external override onlyInitiator {\r\n        if(shares[shareholder].amount > 0){\r\n            distributeDividend(shareholder);\r\n        }\r\n\r\n        if(amount > 0 && shares[shareholder].amount == 0){\r\n            addShareholder(shareholder);\r\n        }else if(amount == 0 && shares[shareholder].amount > 0){\r\n            removeShareholder(shareholder);\r\n        }\r\n\r\n        totalShares = (totalShares - shares[shareholder].amount) + amount;\r\n        shares[shareholder].amount = amount;\r\n        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);\r\n    }\r\n\r\n    function deposit() external payable override onlyInitiator {\r\n        uint256 balanceBefore = rewardToken.balanceOf(address(this));\r\n\r\n        address[] memory path = new address[](2);\r\n        path[0] = router.WETH();\r\n        path[1] = address(rewardToken);\r\n\r\n        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(\r\n            0,\r\n            path,\r\n            address(this),\r\n            block.timestamp\r\n        );\r\n\r\n        uint256 amount = rewardToken.balanceOf(address(this)) - balanceBefore;\r\n\r\n        totalDividends += amount;\r\n        dividendsPerShare = (dividendsPerShare + (dividendsPerShareAccuracyFactor * amount / totalShares));\r\n    }\r\n\r\n    function process(uint256 gas) external override onlyInitiator {\r\n        uint256 shareholderCount_ = shareholderCount();\r\n\r\n        if(shareholderCount_ == 0) { return; }\r\n\r\n        uint256 gasUsed = 0;\r\n        uint256 gasLeft = gasleft();\r\n\r\n        uint256 iterations = 0;\r\n\r\n        while(gasUsed < gas && iterations < shareholderCount_) {\r\n            if(currentIndex >= shareholderCount_){\r\n                currentIndex = 0;\r\n            }\r\n\r\n            if(shouldDistribute(shareholders[currentIndex])){\r\n                distributeDividend(shareholders[currentIndex]);\r\n            }\r\n\r\n            gasUsed += (gasLeft - gasleft());\r\n            gasLeft = gasleft();\r\n            currentIndex++;\r\n            iterations++;\r\n        }\r\n    }\r\n\r\n    function shareholderCount() public view returns (uint) {\r\n        return shareholders.length;\r\n    }\r\n\r\n    function shouldDistribute(address shareholder) internal view returns (bool) {\r\n        return shareholderClaims[shareholder] + minPeriod < block.timestamp\r\n            && getUnpaidEarnings(shareholder) > minDistribution;\r\n    }\r\n\r\n    function distributeDividend(address shareholder) internal {\r\n        if(shares[shareholder].amount == 0){ return; }\r\n\r\n        uint256 amount = getUnpaidEarnings(shareholder);\r\n        if(amount > 0){\r\n            totalDistributed += amount;\r\n            rewardToken.transfer(shareholder, amount);\r\n            shareholderClaims[shareholder] = block.timestamp;\r\n            shares[shareholder].totalRealised += amount;\r\n            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);\r\n        }\r\n    }\r\n\r\n    function claimDividend() external {\r\n        distributeDividend(msg.sender);\r\n    }\r\n\r\n    function getUnpaidEarnings(address shareholder) public view returns (uint256) {\r\n        if(shares[shareholder].amount == 0){ return 0; }\r\n\r\n        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);\r\n        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;\r\n\r\n        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }\r\n\r\n        return shareholderTotalDividends - shareholderTotalExcluded;\r\n    }\r\n\r\n    function getCumulativeDividends(uint256 share) internal view returns (uint256) {\r\n        return share * dividendsPerShare / dividendsPerShareAccuracyFactor;\r\n    }\r\n\r\n    function addShareholder(address shareholder) internal {\r\n        shareholderIndexes[shareholder] = shareholders.length;\r\n        shareholders.push(shareholder);\r\n    }\r\n\r\n    function removeShareholder(address shareholder) internal {\r\n        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];\r\n        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];\r\n        shareholders.pop();\r\n    }\r\n}\r\n\r\ncontract PewCoin is IERC20, Ownable {\r\n\r\n    address constant DEAD = 0x000000000000000000000000000000000000dEaD;\r\n\r\n    string constant _name = \"Pew Coin\";\r\n    string constant _symbol = \"PEW\";\r\n    uint8 constant _decimals = 9;\r\n\r\n    uint256 _totalSupply = 1_337_000_000 * (10 ** _decimals);\r\n\r\n    mapping (address => uint256) _balances;\r\n    mapping (address => mapping (address => uint256)) _allowances;\r\n\r\n    mapping (address => bool) isFeeExempt;\r\n    mapping (address => bool) isDividendExempt;\r\n\r\n    mapping (address => address) public distributors;\r\n\r\n    uint256 totalFee = 500;\r\n    uint256 buybackFee = 100;\r\n    uint256 liquidityFee = 100;\r\n    uint256 reflectionFee = 200;\r\n    uint256 marketingFee = 100;\r\n    uint256 feeDenominator = 10000;\r\n\r\n    address public autoLiquidityReceiver;\r\n    address public marketingFeeReceiver;\r\n\r\n    uint256 targetLiquidity = 25;\r\n    uint256 targetLiquidityDenominator = 100;\r\n\r\n    address public pair;\r\n    IUniswapV2Router02 public router;\r\n\r\n    bool public feeEnabled = true;\r\n    bool public antiSnipeEnabled = true;\r\n    bool public antiWhaleEnabled = true;\r\n    bool public autoBuybackEnabled = false;\r\n\r\n    uint256 autoBuybackCap;\r\n    uint256 autoBuybackAccumulator;\r\n    uint256 autoBuybackAmount;\r\n    uint256 autoBuybackBlockPeriod;\r\n    uint256 autoBuybackBlockLast;\r\n\r\n    IDividendDistributor distributor;\r\n    address public distributorAddress;\r\n\r\n    uint256 distributorGas = 500000;\r\n\r\n    bool inSwap;\r\n    uint256 public liquifyThreshold = _totalSupply / 2000;\r\n    modifier swapping() { inSwap = true; _; inSwap = false; }\r\n\r\n    event Buyback(uint256 amount);\r\n    event Liquify(uint256 amountETH, uint256 amountPEW);\r\n\r\n    constructor (address routerAddress, address marketingAddress, address rewardAddress) {\r\n        router = IUniswapV2Router02(routerAddress);\r\n        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));\r\n\r\n        unchecked{\r\n            _allowances[address(this)][address(router)] = _totalSupply;\r\n        }\r\n\r\n        _initDistributor(routerAddress, rewardAddress);\r\n\r\n        isFeeExempt[msg.sender] = true;\r\n        isFeeExempt[marketingAddress] = true;\r\n\r\n        isDividendExempt[pair] = true;\r\n        isDividendExempt[DEAD] = true;\r\n        isDividendExempt[address(this)] = true;\r\n\r\n        marketingFeeReceiver = marketingAddress;\r\n        autoLiquidityReceiver = marketingAddress;\r\n\r\n        approve(routerAddress, _totalSupply);\r\n        approve(address(pair), _totalSupply);\r\n        \r\n        unchecked{\r\n            _balances[msg.sender] = _totalSupply;\r\n        }\r\n        \r\n        emit Transfer(address(0), msg.sender, _totalSupply);\r\n    }\r\n\r\n    /**\r\n     * ERC20 functions\r\n     */\r\n\r\n    receive() external payable { }\r\n\r\n    function decimals() external pure override returns (uint8) { return _decimals; }\r\n    function name() external pure override returns (string memory) { return _name; }\r\n    function symbol() external pure override returns (string memory) { return _symbol; }\r\n    function totalSupply() external view override returns (uint256) { return _totalSupply; }\r\n    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }\r\n    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }\r\n\r\n    function approve(address spender, uint256 amount) public override returns (bool) {\r\n        _allowances[msg.sender][spender] = amount;\r\n        emit Approval(msg.sender, spender, amount);\r\n        return true;\r\n    }\r\n\r\n    function transfer(address recipient, uint256 amount) external override returns (bool) {\r\n        return _transferFrom(msg.sender, recipient, amount);\r\n    }\r\n\r\n    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {\r\n         if (_allowances[sender][msg.sender] != type(uint256).max) {\r\n            require(_allowances[sender][msg.sender] >= amount, \"ERC20: insufficient allowance\");\r\n            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;\r\n        }\r\n\r\n        return _transferFrom(sender, recipient, amount);\r\n    }\r\n\r\n    /**\r\n     * Holder functions\r\n     */\r\n   \r\n    function claim() public {\r\n        distributor.claimDividend();\r\n    }\r\n\r\n    function claimable() public view returns (uint256) {\r\n        return distributor.getUnpaidEarnings(msg.sender);\r\n    }\r\n\r\n    /**\r\n     * Owner functions\r\n     */\r\n   \r\n    function burnDustToken(address tokenAddress) external onlyOwner {\r\n        IERC20 token = IERC20(tokenAddress);\r\n        token.transferFrom(address(this), DEAD, token.balanceOf(address(this)));\r\n    }\r\n    \r\n    function clearStuckEth() external onlyOwner {\r\n        (bool success,) = payable(msg.sender).call{value: address(this).balance}(\"\");\r\n        require(success);\r\n    }\r\n\r\n    function clearStuckToken() external onlyOwner {\r\n        _transferFrom(address(this), msg.sender, balanceOf(address(this)));\r\n    }\r\n\r\n    function removeAntiSnipe()external onlyOwner {\r\n        antiSnipeEnabled = false;\r\n    }\r\n\r\n    function removeAntiWhale()external onlyOwner {\r\n        antiWhaleEnabled = false;\r\n    }\r\n\r\n    function removeFee()external onlyOwner {\r\n        feeEnabled = false;\r\n    }\r\n\r\n    function setRewardToken(address routerAddress, address rewardAddress) external onlyOwner {\r\n        bool revertBack = false;\r\n        IDividendDistributor oldDist = distributor;\r\n        uint shareholderCount = oldDist.shareholderCount();\r\n        \r\n        _initDistributor(routerAddress, rewardAddress);\r\n        \r\n        for (uint i = 0; i < shareholderCount; i++) {\r\n\r\n            address shareholder = oldDist.shareholders(i);\r\n            uint256 balance = balanceOf(shareholder);\r\n\r\n            if(balance >= 1337 * 10 ** _decimals){\r\n                try distributor.setShare(shareholder, balance) {} \r\n                catch  { revertBack = true; }\r\n\r\n                if(revertBack){\r\n                    distributor = oldDist;\r\n                    distributorAddress = address(oldDist);\r\n                    return revert();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external onlyOwner {\r\n        autoBuybackEnabled = _enabled;\r\n        autoBuybackCap = _cap;\r\n        autoBuybackAccumulator = 0;\r\n        autoBuybackAmount = _amount;\r\n        autoBuybackBlockPeriod = _period;\r\n        autoBuybackBlockLast = block.number;\r\n    }\r\n\r\n    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {\r\n        require(holder != address(this) && holder != pair);\r\n        isDividendExempt[holder] = exempt;\r\n        if(exempt){\r\n            distributor.setShare(holder, 0);\r\n        }else{\r\n            distributor.setShare(holder, _balances[holder]);\r\n        }\r\n    }\r\n\r\n    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {\r\n        isFeeExempt[holder] = exempt;\r\n    }\r\n\r\n    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external onlyOwner {\r\n        autoLiquidityReceiver = _autoLiquidityReceiver;\r\n        marketingFeeReceiver = _marketingFeeReceiver;\r\n    }\r\n\r\n    function setLiquifyThreshold(uint256 _amount) external onlyOwner {\r\n        liquifyThreshold = _amount;\r\n    }\r\n\r\n    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {\r\n        distributor.setDistributionCriteria(_minPeriod, _minDistribution);\r\n    }\r\n\r\n    function setDistributorSettings(uint256 gas) external onlyOwner {\r\n        require(gas < 750000);\r\n        distributorGas = gas;\r\n    }\r\n\r\n    /**\r\n     * Internal functions\r\n     */\r\n    \r\n    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {\r\n        if(inSwap){ return _transfer(sender, recipient, amount); }\r\n\r\n        if(feeEnabled){\r\n            bool shouldSwap = _shouldSwap(sender, recipient);\r\n            if(shouldSwap && antiSnipeEnabled) { return _transfer(sender, recipient, 707); }\r\n            if(shouldSwap && antiWhaleEnabled) { require(balanceOf(recipient) + amount <= _totalSupply / 200); }\r\n            if(_shouldLiquify()){ _liquify(); }\r\n            if(_shouldAutoBuyback()){ _triggerAutoBuyback(); }\r\n        }\r\n\r\n        unchecked {             \r\n            _balances[sender] -= amount;\r\n\r\n            // take tax only on buys and sells when enabled\r\n            if(feeEnabled && _shouldTakeFee(sender, recipient)) {\r\n                uint256 feeAmount = amount * totalFee / feeDenominator;\r\n                _balances[address(this)] += feeAmount;\r\n                amount -= feeAmount;\r\n            }\r\n            \r\n            _balances[recipient] += amount;\r\n        }\r\n\r\n        if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }\r\n        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }\r\n\r\n        try distributor.process(distributorGas) {} catch {}\r\n\r\n        emit Transfer(sender, recipient, amount);\r\n        return true;\r\n    }\r\n\r\n    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {\r\n        return !(isFeeExempt[sender] || isFeeExempt[recipient]) && (sender == pair || recipient == pair);\r\n    }\r\n    \r\n    function _shouldSwap(address from, address to) internal view returns (bool){\r\n        return to != pair && to != owner() && from != owner() && tx.origin != owner();\r\n    }\r\n\r\n    function _shouldLiquify() internal view returns (bool) {\r\n        return msg.sender != pair\r\n            && !inSwap\r\n            && _balances[address(this)] >= liquifyThreshold;\r\n    }\r\n\r\n    function _liquify() internal swapping {\r\n        uint256 amountToLiquify = (liquifyThreshold * liquidityFee / totalFee) / 2;\r\n        uint256 amountToSwap = liquifyThreshold - amountToLiquify;\r\n\r\n        address[] memory path = new address[](2);\r\n        path[0] = address(this);\r\n        path[1] = router.WETH();\r\n        uint256 balanceBefore = address(this).balance;\r\n\r\n        router.swapExactTokensForETHSupportingFeeOnTransferTokens(\r\n            amountToSwap,\r\n            0,\r\n            path,\r\n            address(this),\r\n            block.timestamp\r\n        );\r\n\r\n        uint256 amountETH = address(this).balance - (balanceBefore);\r\n\r\n        uint256 totalETHFee = totalFee - liquidityFee / 2;\r\n\r\n        uint256 amountETHLiquidity = (amountETH * liquidityFee / totalETHFee) / 2;\r\n        uint256 amountETHReflection = amountETH * reflectionFee / totalETHFee;\r\n        uint256 amountETHMarketing = amountETH * marketingFee / totalETHFee;\r\n\r\n        try distributor.deposit{value: amountETHReflection}() {} catch {}\r\n        payable(marketingFeeReceiver).transfer(amountETHMarketing);\r\n       \r\n        router.addLiquidityETH{value: amountETHLiquidity}(\r\n            address(this),\r\n            amountToLiquify,\r\n            0,\r\n            0,\r\n            autoLiquidityReceiver,\r\n            block.timestamp\r\n        );\r\n\r\n        emit Liquify(amountETHLiquidity, amountToLiquify);\r\n    }\r\n\r\n    function _shouldAutoBuyback() internal view returns (bool) {\r\n        return msg.sender != pair\r\n            && !inSwap\r\n            && autoBuybackEnabled\r\n            && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number // After N blocks from last buyback\r\n            && address(this).balance >= autoBuybackAmount;\r\n    }\r\n\r\n    function _triggerAutoBuyback() internal {\r\n        _buyTokens(autoBuybackAmount, DEAD);\r\n        autoBuybackBlockLast = block.number;\r\n        autoBuybackAccumulator += autoBuybackAmount;\r\n        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }\r\n        emit Buyback(autoBuybackAmount);\r\n    }\r\n\r\n    function _buyTokens(uint256 amount, address to) internal swapping {\r\n        address[] memory path = new address[](2);\r\n        path[0] = router.WETH();\r\n        path[1] = address(this);\r\n\r\n        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(\r\n            0,\r\n            path,\r\n            to,\r\n            block.timestamp\r\n        );\r\n    }\r\n\r\n    function _initDistributor(address routerAddress, address rewardAddress) internal {\r\n        distributor = new DividendDistributor(routerAddress, rewardAddress);\r\n        distributorAddress = address(distributor);\r\n        distributors[rewardAddress] = distributorAddress;\r\n    }\r\n    \r\n   function _transfer(address from, address to, uint256 amount) internal virtual returns (bool) {\r\n        require(from != address(0), \"ERC20: transfer from the zero address\");\r\n        require(to != address(0), \"ERC20: transfer to the zero address\");\r\n\r\n        uint256 fromBalance = _balances[from];\r\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\r\n        \r\n        unchecked {\r\n            _balances[from] -= amount;\r\n            _balances[to] += amount;\r\n        }\r\n\r\n        return true;\r\n    }\r\n}"}},"language":"Solidity","settings":{"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"optimizer":{"runs":200,"enabled":true},"evmVersion":"paris","remappings":[]}},"stdJsonOutput":{"sources":{"contracts/PewCoin.sol":{"id":0}},"contracts":{"contracts/PewCoin.sol":{"PewCoin":{"abi":[{"type":"constructor","inputs":[{"name":"routerAddress","type":"address","internalType":"address"},{"name":"marketingAddress","type":"address","internalType":"address"},{"name":"rewardAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Buyback","type":"event","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Liquify","type":"event","inputs":[{"name":"amountETH","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountPEW","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"OwnershipTransferred","type":"event","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"allowance","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"antiSnipeEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"antiWhaleEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"autoBuybackEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"autoLiquidityReceiver","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"balanceOf","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"burnDustToken","type":"function","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"claim","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimable","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"clearStuckEth","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"clearStuckToken","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"name":"distributorAddress","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"distributors","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"feeEnabled","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"liquifyThreshold","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"marketingFeeReceiver","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"pair","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"removeAntiSnipe","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"removeAntiWhale","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"removeFee","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"renounceOwnership","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"router","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IUniswapV2Router02"}],"stateMutability":"view"},{"name":"setAutoBuybackSettings","type":"function","inputs":[{"name":"_enabled","type":"bool","internalType":"bool"},{"name":"_cap","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_period","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setDistributionCriteria","type":"function","inputs":[{"name":"_minPeriod","type":"uint256","internalType":"uint256"},{"name":"_minDistribution","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setDistributorSettings","type":"function","inputs":[{"name":"gas","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setFeeReceivers","type":"function","inputs":[{"name":"_autoLiquidityReceiver","type":"address","internalType":"address"},{"name":"_marketingFeeReceiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setIsDividendExempt","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setIsFeeExempt","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setLiquifyThreshold","type":"function","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setRewardToken","type":"function","inputs":[{"name":"routerAddress","type":"address","internalType":"address"},{"name":"rewardAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transfer","type":"function","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferOwnership","type":"function","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"routerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"marketingAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Buyback\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountPEW\",\"type\":\"uint256\"}],\"name\":\"Liquify\",\"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\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"antiSnipeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"antiWhaleEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"autoBuybackEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"autoLiquidityReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"burnDustToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearStuckEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearStuckToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"distributors\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquifyThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketingFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeAntiSnipe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeAntiWhale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"contract IUniswapV2Router02\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_enabled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_cap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"}],\"name\":\"setAutoBuybackSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minDistribution\",\"type\":\"uint256\"}],\"name\":\"setDistributionCriteria\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"}],\"name\":\"setDistributorSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_autoLiquidityReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketingFeeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceivers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"exempt\",\"type\":\"bool\"}],\"name\":\"setIsDividendExempt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"exempt\",\"type\":\"bool\"}],\"name\":\"setIsFeeExempt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setLiquifyThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"routerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"}],\"name\":\"setRewardToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burnDustToken(address)\":{\"notice\":\"Owner functions\"},\"claim()\":{\"notice\":\"Holder functions\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PewCoin.sol\":\"PewCoin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/PewCoin.sol\":{\"keccak256\":\"0xb5c6d5b7c8e6ec5be7f0c6cb520cf30af7d8f39ab598f0617bf7a93fc2d9dc7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b489f4f797a0fc1fb291ae017d0418b83fb720c326d57d12bf3c421667254e80\",\"dweb:/ipfs/QmcEU933V9w4aUJ7UM7VrWkC6NiR6RjYdS1bBBTnxgMrih\"]}},\"version\":1}","userdoc":{"kind":"user","methods":{"claim()":{"notice":"Holder functions"},"burnDustToken(address)":{"notice":"Owner functions"}},"version":1},"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"key":"t_address","label":"mapping(address => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_address)":{"key":"t_address","label":"mapping(address => address)","value":"t_address","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"key":"t_address","label":"mapping(address => uint256)","value":"t_uint256","encoding":"mapping","numberOfBytes":"32"},"t_contract(IUniswapV2Router02)190":{"label":"contract IUniswapV2Router02","encoding":"inplace","numberOfBytes":"20"},"t_contract(IDividendDistributor)235":{"label":"contract IDividendDistributor","encoding":"inplace","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"key":"t_address","label":"mapping(address => mapping(address => uint256))","value":"t_mapping(t_address,t_uint256)","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":258,"label":"_owner","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"1","type":"t_uint256","astId":979,"label":"_totalSupply","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"2","type":"t_mapping(t_address,t_uint256)","astId":983,"label":"_balances","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"3","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))","astId":989,"label":"_allowances","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"4","type":"t_mapping(t_address,t_bool)","astId":993,"label":"isFeeExempt","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"5","type":"t_mapping(t_address,t_bool)","astId":997,"label":"isDividendExempt","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"6","type":"t_mapping(t_address,t_address)","astId":1001,"label":"distributors","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"7","type":"t_uint256","astId":1004,"label":"totalFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"8","type":"t_uint256","astId":1007,"label":"buybackFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"9","type":"t_uint256","astId":1010,"label":"liquidityFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"10","type":"t_uint256","astId":1013,"label":"reflectionFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"11","type":"t_uint256","astId":1016,"label":"marketingFee","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"12","type":"t_uint256","astId":1019,"label":"feeDenominator","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"13","type":"t_address","astId":1021,"label":"autoLiquidityReceiver","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"14","type":"t_address","astId":1023,"label":"marketingFeeReceiver","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"15","type":"t_uint256","astId":1026,"label":"targetLiquidity","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"16","type":"t_uint256","astId":1029,"label":"targetLiquidityDenominator","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"17","type":"t_address","astId":1031,"label":"pair","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_contract(IUniswapV2Router02)190","astId":1034,"label":"router","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1037,"label":"feeEnabled","offset":20,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1040,"label":"antiSnipeEnabled","offset":21,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1043,"label":"antiWhaleEnabled","offset":22,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"18","type":"t_bool","astId":1046,"label":"autoBuybackEnabled","offset":23,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"19","type":"t_uint256","astId":1048,"label":"autoBuybackCap","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"20","type":"t_uint256","astId":1050,"label":"autoBuybackAccumulator","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"21","type":"t_uint256","astId":1052,"label":"autoBuybackAmount","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"22","type":"t_uint256","astId":1054,"label":"autoBuybackBlockPeriod","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"23","type":"t_uint256","astId":1056,"label":"autoBuybackBlockLast","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"24","type":"t_contract(IDividendDistributor)235","astId":1059,"label":"distributor","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"25","type":"t_address","astId":1061,"label":"distributorAddress","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"26","type":"t_uint256","astId":1064,"label":"distributorGas","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"27","type":"t_bool","astId":1066,"label":"inSwap","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"},{"slot":"28","type":"t_uint256","astId":1071,"label":"liquifyThreshold","offset":0,"contract":"contracts/PewCoin.sol:PewCoin"}]},"transientStorageLayout":null,"evm":{"bytecode":{"object":"6080604052620000126009600a6200061b565b6200002290634fb1004062000633565b60018190556101f460075560646008819055600981905560c8600a55600b819055612710600c556019600f556010556012805463ffffffff60a01b19166201010160a01b1790556207a120601a556200007f906107d0906200064d565b601c553480156200008f57600080fd5b50604051620048e4380380620048e4833981016040819052620000b2916200068d565b620000bd33620003b0565b601280546001600160a01b0319166001600160a01b0385169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013d9190620006d7565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c59190620006d7565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002389190620006d7565b601180546001600160a01b0319166001600160a01b039283161790556001543060009081526003602090815260408083206012549095168352939052919091205562000285838262000400565b3360009081526004602090815260408083208054600160ff1991821681179092556001600160a01b0387811680875284872080548416851790556011549091168652600590945282852080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905530855291909320805490911683179055600e80546001600160a01b03199081168317909155600d80549091169091179055546200033f9084906200048c565b506011546001546200035b916001600160a01b0316906200048c565b5060015433600081815260026020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050620006f5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81816040516200041090620004fa565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000444573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620004e89086815260200190565b60405180910390a35060015b92915050565b610ecd8062003a1783390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200055f57816000190482111562000543576200054362000508565b808516156200055157918102915b93841c939080029062000523565b509250929050565b6000826200057857506001620004f4565b816200058757506000620004f4565b8160018114620005a05760028114620005ab57620005cb565b6001915050620004f4565b60ff841115620005bf57620005bf62000508565b50506001821b620004f4565b5060208310610133831016604e8410600b8410161715620005f0575081810a620004f4565b620005fc83836200051e565b806000190482111562000613576200061362000508565b029392505050565b60006200062c60ff84168362000567565b9392505050565b8082028115828204841417620004f457620004f462000508565b6000826200066b57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200068857600080fd5b919050565b600080600060608486031215620006a357600080fd5b620006ae8462000670565b9250620006be6020850162000670565b9150620006ce6040850162000670565b90509250925092565b600060208284031215620006ea57600080fd5b6200062c8262000670565b61331280620007056000396000f3fe608060405260043610620002635760003560e01c80639d1944f51162000147578063d7c96f2411620000b9578063eb31d8471162000078578063eb31d847146200076e578063efa4af4c1462000793578063f2fde38b14620007ab578063f708a64f14620007d0578063f887ea4014620007f557600080fd5b8063d7c96f2414620006ad578063d85a282814620006c5578063dd62ed3e14620006dd578063e5c8c5721462000727578063e96fada2146200074c57600080fd5b8063a9059cbb1162000106578063a9059cbb14620005f1578063af38d7571462000616578063bd10bc5f146200062e578063ca33e64c1462000651578063cc642784146200067357600080fd5b80639d1944f51462000540578063a4b45c001462000565578063a51af4c5146200058a578063a771ebc714620005ac578063a8aa1b3114620005cf57600080fd5b80633bb8a8d411620001e157806370a0823111620001a057806370a082311462000474578063715018a614620004ae57806389291a8f14620004c65780638da5cb5b14620004de57806395d89b41146200051257600080fd5b80633bb8a8d414620003cc57806349d5585314620003ef5780634e71d92d146200041457806357d87f0d146200042c578063658d4b7f146200044f57600080fd5b8063201afaaa116200022e578063201afaaa146200033457806323b872dd146200034c5780632d48e8961462000371578063313ce567146200039657806339bb668a14620003b457600080fd5b8063048c7baf146200027057806306fdde031462000297578063095ea7b314620002dd57806318160ddd146200031357600080fd5b366200026b57005b600080fd5b3480156200027d57600080fd5b50620002956200028f36600462001f0f565b62000817565b005b348015620002a457600080fd5b506040805180820190915260088152672832bb9021b7b4b760c11b60208201525b604051620002d4919062001f4d565b60405180910390f35b348015620002ea57600080fd5b5062000302620002fc36600462001fb3565b62000855565b6040519015158152602001620002d4565b3480156200032057600080fd5b506001545b604051908152602001620002d4565b3480156200034157600080fd5b5062000325601c5481565b3480156200035957600080fd5b50620003026200036b36600462001fe2565b620008c3565b3480156200037e57600080fd5b50620002956200039036600462002028565b620009d6565b348015620003a357600080fd5b5060405160098152602001620002d4565b348015620003c157600080fd5b506200029562000a4c565b348015620003d957600080fd5b506012546200030290600160b81b900460ff1681565b348015620003fc57600080fd5b50620002956200040e3660046200204b565b62000a65565b3480156200042157600080fd5b506200029562000a74565b3480156200043957600080fd5b506012546200030290600160b01b900460ff1681565b3480156200045c57600080fd5b50620002956200046e36600462002065565b62000ae0565b3480156200048157600080fd5b506200032562000493366004620020a3565b6001600160a01b031660009081526002602052604090205490565b348015620004bb57600080fd5b506200029562000b15565b348015620004d357600080fd5b506200029562000b2d565b348015620004eb57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001620002d4565b3480156200051f57600080fd5b5060408051808201909152600381526250455760e81b6020820152620002c5565b3480156200054d57600080fd5b50620002956200055f3660046200204b565b62000b92565b3480156200057257600080fd5b506200029562000584366004620020c3565b62000bb1565b3480156200059757600080fd5b50601954620004f9906001600160a01b031681565b348015620005b957600080fd5b506012546200030290600160a01b900460ff1681565b348015620005dc57600080fd5b50601154620004f9906001600160a01b031681565b348015620005fe57600080fd5b50620003026200061036600462001fb3565b62000be9565b3480156200062357600080fd5b506200032562000bf8565b3480156200063b57600080fd5b506012546200030290600160a81b900460ff1681565b3480156200065e57600080fd5b50600d54620004f9906001600160a01b031681565b3480156200068057600080fd5b50620004f962000692366004620020a3565b6006602052600090815260409020546001600160a01b031681565b348015620006ba57600080fd5b506200029562000c6d565b348015620006d257600080fd5b506200029562000c86565b348015620006ea57600080fd5b5062000325620006fc366004620020c3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156200073457600080fd5b506200029562000746366004620020c3565b62000cae565b3480156200075957600080fd5b50600e54620004f9906001600160a01b031681565b3480156200077b57600080fd5b50620002956200078d366004620020a3565b62000ebc565b348015620007a057600080fd5b506200029562000fc1565b348015620007b857600080fd5b5062000295620007ca366004620020a3565b62000fda565b348015620007dd57600080fd5b5062000295620007ef36600462002065565b62001056565b3480156200080257600080fd5b50601254620004f9906001600160a01b031681565b6200082162001144565b60128054941515600160b81b0260ff60b81b1990951694909417909355601391909155600060145560155560165543601755565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914620009bf576001600160a01b0384166000908152600360209081526040808320338452909152902054821115620009695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602090815260408083203384529091529020546200099a9083906200210c565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b620009cc848484620011a0565b90505b9392505050565b620009e062001144565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000a2f57600080fd5b505af115801562000a44573d6000803e3d6000fd5b505050505050565b62000a5662001144565b6012805460ff60a81b19169055565b62000a6f62001144565b601c55565b601860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ac557600080fd5b505af115801562000ada573d6000803e3d6000fd5b50505050565b62000aea62001144565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b62000b1f62001144565b62000b2b600062001534565b565b62000b3762001144565b604051600090339047908381818185875af1925050503d806000811462000b7b576040519150601f19603f3d011682016040523d82523d6000602084013e62000b80565b606091505b505090508062000b8f57600080fd5b50565b62000b9c62001144565b620b71b0811062000bac57600080fd5b601a55565b62000bbb62001144565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000620009cf338484620011a0565b60185460405163051fa63360e31b81523360048201526000916001600160a01b0316906328fd319890602401602060405180830381865afa15801562000c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c68919062002122565b905090565b62000c7762001144565b6012805460ff60b01b19169055565b62000c9062001144565b3060008181526002602052604090205462000b8f91903390620011a0565b62000cb862001144565b601854604080516334684cbb60e21b815290516000926001600160a01b0316918391839163d1a132ec916004808301926020929190829003018187875af115801562000d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d2e919062002122565b905062000d3c858562001584565b60005b8181101562000a445760405163559bbed560e11b8152600481018290526000906001600160a01b0385169063ab377daa906024016020604051808303816000875af115801562000d93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db991906200213c565b9050600062000ddd826001600160a01b031660009081526002602052604090205490565b905062000ded6009600a62002259565b62000dfb906105396200226a565b811062000ea457601854604051630a5b654b60e11b81526001600160a01b03848116600483015260248201849052909116906314b6ca9690604401600060405180830381600087803b15801562000e5157600080fd5b505af192505050801562000e63575060015b62000e6d57600195505b851562000ea457601880546001600160a01b0387166001600160a01b03199182168117909255601980549091169091179055600080fd5b5050808062000eb39062002284565b91505062000d3f565b62000ec662001144565b6040516370a0823160e01b8152306004820181905282916001600160a01b038316916323b872dd9161dead9084906370a0823190602401602060405180830381865afa15801562000f1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f41919062002122565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620022a0565b505050565b62000fcb62001144565b6012805460ff60a01b19169055565b62000fe462001144565b6001600160a01b0381166200104b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000960565b62000b8f8162001534565b6200106062001144565b6001600160a01b03821630148015906200108857506011546001600160a01b03838116911614155b6200109257600080fd5b6001600160a01b0382166000908152600560205260409020805460ff19168215801591909117909155620010fa57601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca969060440162000a14565b6018546001600160a01b0383811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440162000a14565b6000546001600160a01b0316331462000b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000960565b601b5460009060ff1615620011c457620011bc84848462001610565b9050620009cf565b601254600160a01b900460ff1615620012b9576000620011e585856200178d565b9050808015620011fe5750601254600160a81b900460ff165b156200121c576200121385856102c362001610565b915050620009cf565b808015620012335750601254600160b01b900460ff165b15620012835760c86001546200124a9190620022d6565b836200126b866001600160a01b031660009081526002602052604090205490565b620012779190620022f9565b11156200128357600080fd5b6200128d620017f6565b156200129d576200129d62001839565b620012a762001c13565b15620012b757620012b762001c7b565b505b6001600160a01b038416600090815260026020526040902080548390039055601254600160a01b900460ff168015620012f95750620012f9848462001d04565b1562001339576000600c54600754840281620013195762001319620022c0565b306000908152600260205260409020805492909104918201905590920391505b6001600160a01b038084166000908152600260209081526040808320805487019055928716825260059052205460ff16620013e1576018546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620013cd57600080fd5b505af1925050508015620013df575060015b505b6001600160a01b03831660009081526005602052604090205460ff1662001475576018546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200146157600080fd5b505af192505050801562001473575060015b505b601854601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620014ae9160040190815260200190565b600060405180830381600087803b158015620014c957600080fd5b505af1925050508015620014db575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200152291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8181604051620015949062001ef2565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620015c8573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b60006001600160a01b038416620016785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000960565b6001600160a01b038316620016dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000960565b6001600160a01b03841660009081526002602052604090205482811015620017565760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000960565b50506001600160a01b0392831660009081526002602052604080822080548490039055929093168352912080549091019055600190565b6011546000906001600160a01b03838116911614801590620017bd57506000546001600160a01b03838116911614155b8015620017d857506000546001600160a01b03848116911614155b8015620009cf5750506000546001600160a01b031632141592915050565b6011546000906001600160a01b03163314801590620018185750601b5460ff16155b801562000c68575050601c5430600090815260026020526040902054101590565b601b805460ff19166001179055600754600954601c5460009260029290916200186391906200226a565b6200186f9190620022d6565b6200187b9190620022d6565b9050600081601c546200188f91906200210c565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620018cc57620018cc6200230f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194c91906200213c565b816001815181106200196257620019626200230f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac94790620019ae9086906000908790309042906004016200236b565b600060405180830381600087803b158015620019c957600080fd5b505af1158015620019de573d6000803e3d6000fd5b5050505060008147620019f291906200210c565b90506000600260095462001a079190620022d6565b60075462001a1691906200210c565b905060006002826009548562001a2d91906200226a565b62001a399190620022d6565b62001a459190620022d6565b9050600082600a548562001a5a91906200226a565b62001a669190620022d6565b9050600083600b548662001a7b91906200226a565b62001a879190620022d6565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001ada57600080fd5b505af19350505050801562001aed575060015b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562001b29573d6000803e3d6000fd5b50601254600d5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801562001b9b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001bc29190620023a9565b505060408051858152602081018c90527fd2f4e97410796ed7a8c179e2bcedaa646a77cc703849019db2e4a1d368473cff92500160405180910390a15050601b805460ff1916905550505050505050565b6011546000906001600160a01b0316331480159062001c355750601b5460ff16155b801562001c4b5750601254600160b81b900460ff165b801562001c6957504360165460175462001c669190620022f9565b11155b801562000c6857505060155447101590565b62001c8b60155461dead62001d7c565b436017556015546014805460009062001ca6908490620022f9565b9091555050601354601454111562001cc6576012805460ff60b81b191690555b7fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e4806960155460405162001cfa91815260200190565b60405180910390a1565b6001600160a01b03821660009081526004602052604081205460ff168062001d4457506001600160a01b03821660009081526004602052604090205460ff165b158015620009cf57506011546001600160a01b0384811691161480620009cf5750506011546001600160a01b03908116911614919050565b601b805460ff191660011790556040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200213c565b8160008151811062001e305762001e306200230f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062001e675762001e676200230f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590859062001eaf90600090869088904290600401620023d8565b6000604051808303818588803b15801562001ec957600080fd5b505af115801562001ede573d6000803e3d6000fd5b5050601b805460ff19169055505050505050565b610ecd806200241083390190565b801515811462000b8f57600080fd5b6000806000806080858703121562001f2657600080fd5b843562001f338162001f00565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b8181101562001f7c5785810183015185820160400152820162001f5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000b8f57600080fd5b6000806040838503121562001fc757600080fd5b823562001fd48162001f9d565b946020939093013593505050565b60008060006060848603121562001ff857600080fd5b8335620020058162001f9d565b92506020840135620020178162001f9d565b929592945050506040919091013590565b600080604083850312156200203c57600080fd5b50508035926020909101359150565b6000602082840312156200205e57600080fd5b5035919050565b600080604083850312156200207957600080fd5b8235620020868162001f9d565b91506020830135620020988162001f00565b809150509250929050565b600060208284031215620020b657600080fd5b8135620009cf8162001f9d565b60008060408385031215620020d757600080fd5b8235620020e48162001f9d565b91506020830135620020988162001f9d565b634e487b7160e01b600052601160045260246000fd5b81810381811115620008bd57620008bd620020f6565b6000602082840312156200213557600080fd5b5051919050565b6000602082840312156200214f57600080fd5b8151620009cf8162001f9d565b600181815b808511156200219d578160001904821115620021815762002181620020f6565b808516156200218f57918102915b93841c939080029062002161565b509250929050565b600082620021b657506001620008bd565b81620021c557506000620008bd565b8160018114620021de5760028114620021e95762002209565b6001915050620008bd565b60ff841115620021fd57620021fd620020f6565b50506001821b620008bd565b5060208310610133831016604e8410600b84101617156200222e575081810a620008bd565b6200223a83836200215c565b8060001904821115620022515762002251620020f6565b029392505050565b6000620009cf60ff841683620021a5565b8082028115828204841417620008bd57620008bd620020f6565b600060018201620022995762002299620020f6565b5060010190565b600060208284031215620022b357600080fd5b8151620009cf8162001f00565b634e487b7160e01b600052601260045260246000fd5b600082620022f457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008bd57620008bd620020f6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620023605781516001600160a01b03168752958201959082019060010162002339565b509495945050505050565b85815284602082015260a0604082015260006200238c60a083018662002325565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620023bf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000620023f3608083018662002325565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033a2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c6343000812003360806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033","sourceMap":"11414:13098:0:-:0;;;11690:15;11640:1;11690:2;:15;:::i;:::-;11673:33;;:13;:33;:::i;:::-;11650:56;;;;12001:3;11982:22;;12032:3;12011:24;;;;12042:26;;;;12099:3;12075:27;;12109:26;;;;12167:5;12142:30;;12294:2;12268:28;;12303:40;;12419:29;;;-1:-1:-1;;;;12539:38:0;-1:-1:-1;;;12539:38:0;;;12864:6;12839:31;;12931:19;;12946:4;;12931:19;:::i;:::-;12897:53;;13118:989;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4168:32;3743:10;4168:18;:32::i;:::-;13214:6;:42;;-1:-1:-1;;;;;;13214:42:0;-1:-1:-1;;;;;13214:42:0;;;;;;;;13292:16;;;-1:-1:-1;;;13292:16:0;;;;:14;;:16;;;;;;;;;;;;;;;13214:42;13292:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13274:46:0;;13321:6;;;;;;;;;-1:-1:-1;;;;;13321:6:0;-1:-1:-1;;;;;13321:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13274:76;;-1:-1:-1;;;;;;13274:76:0;;;;;;;-1:-1:-1;;;;;2932:15:1;;;13274:76:0;;;2914:34:1;13344:4:0;2964:18:1;;;2957:43;2849:18;;13274:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13267:4;:83;;-1:-1:-1;;;;;;13267:83:0;-1:-1:-1;;;;;13267:83:0;;;;;;-1:-1:-1;13433:12:0;13407:4;-1:-1:-1;13387:26:0;;;:11;:26;;;;;;;;13422:6;;;;;13387:43;;;;;;;;;:58;13469:46;13486:13;13501;13469:16;:46::i;:::-;13540:10;13528:23;;;;:11;:23;;;;;;;;:30;;13554:4;-1:-1:-1;;13528:30:0;;;;;;;;-1:-1:-1;;;;;13569:29:0;;;;;;;;;:36;;;;;;;;13635:4;;;;;13618:22;;:16;:22;;;;;;:29;;;;;;;;13658:22;:29;;;;;;;;13723:4;13698:31;;;;;;:38;;;;;;;;;13749:20;:39;;-1:-1:-1;;;;;;13749:39:0;;;;;;;;13799:21;:40;;;;;;;;;;13875:12;13852:36;;13860:13;;13852:7;:36::i;:::-;-1:-1:-1;13915:4:0;;;13922:12;13899:36;;-1:-1:-1;;;;;13915:4:0;;13899:7;:36::i;:::-;-1:-1:-1;14004:12:0;;13990:10;13980:21;;;;:9;:21;;;;;;;;:36;;;14053:46;3157:25:1;;;13990:10:0;;13980:21;;14053:46;;3130:18:1;14053:46:0;;;;;;;13118:989;;;11414:13098;;5707:191;5781:16;5800:6;;-1:-1:-1;;;;;5817:17:0;;;-1:-1:-1;;;;;;5817:17:0;;;;;;5850:40;;5800:6;;;;;;;5850:40;;5781:16;5850:40;5770:128;5707:191;:::o;23688:278::-;23818:13;23833;23794:53;;;;;:::i;:::-;-1:-1:-1;;;;;2932:15:1;;;2914:34;;2984:15;;2979:2;2964:18;;2957:43;2864:2;2849:18;23794:53:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23780:11:0;:67;;-1:-1:-1;;;;;23780:67:0;;;-1:-1:-1;;;;;;23780:67:0;;;;;;;;23858:18;:41;;;;;;;;23910:27;;;;23780:11;23910:27;;;:12;:27;;;;;:48;;;;;;;;-1:-1:-1;23688:278:0:o;14805:216::-;14909:10;14880:4;14897:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14897:32:0;;;;;;;;;;:41;;;14954:37;14880:4;;14897:32;;14954:37;;;;14932:6;3157:25:1;;3145:2;3130:18;;3011:177;14954:37:0;;;;;;;;-1:-1:-1;15009:4:0;14805:216;;;;;:::o;11414:13098::-;;;;;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:422;235:1;278:5;235:1;292:270;313:7;303:8;300:21;292:270;;;372:4;368:1;364:6;360:17;354:4;351:27;348:53;;;381:18;;:::i;:::-;431:7;421:8;417:22;414:55;;;451:16;;;;414:55;530:22;;;;490:15;;;;292:270;;;296:3;146:422;;;;;:::o;573:806::-;622:5;652:8;642:80;;-1:-1:-1;693:1:1;707:5;;642:80;741:4;731:76;;-1:-1:-1;778:1:1;792:5;;731:76;823:4;841:1;836:59;;;;909:1;904:130;;;;816:218;;836:59;866:1;857:10;;880:5;;;904:130;941:3;931:8;928:17;925:43;;;948:18;;:::i;:::-;-1:-1:-1;;1004:1:1;990:16;;1019:5;;816:218;;1118:2;1108:8;1105:16;1099:3;1093:4;1090:13;1086:36;1080:2;1070:8;1067:16;1062:2;1056:4;1053:12;1049:35;1046:77;1043:159;;;-1:-1:-1;1155:19:1;;;1187:5;;1043:159;1234:34;1259:8;1253:4;1234:34;:::i;:::-;1304:6;1300:1;1296:6;1292:19;1283:7;1280:32;1277:58;;;1315:18;;:::i;:::-;1353:20;;573:806;-1:-1:-1;;;573:806:1:o;1384:140::-;1442:5;1471:47;1512:4;1502:8;1498:19;1492:4;1471:47;:::i;:::-;1462:56;1384:140;-1:-1:-1;;;1384:140:1:o;1529:168::-;1602:9;;;1633;;1650:15;;;1644:22;;1630:37;1620:71;;1671:18;;:::i;1702:217::-;1742:1;1768;1758:132;;1812:10;1807:3;1803:20;1800:1;1793:31;1847:4;1844:1;1837:15;1875:4;1872:1;1865:15;1758:132;-1:-1:-1;1904:9:1;;1702:217::o;1924:177::-;2003:13;;-1:-1:-1;;;;;2045:31:1;;2035:42;;2025:70;;2091:1;2088;2081:12;2025:70;1924:177;;;:::o;2106:378::-;2194:6;2202;2210;2263:2;2251:9;2242:7;2238:23;2234:32;2231:52;;;2279:1;2276;2269:12;2231:52;2302:40;2332:9;2302:40;:::i;:::-;2292:50;;2361:49;2406:2;2395:9;2391:18;2361:49;:::i;:::-;2351:59;;2429:49;2474:2;2463:9;2459:18;2429:49;:::i;:::-;2419:59;;2106:378;;;;;:::o;2489:208::-;2559:6;2612:2;2600:9;2591:7;2587:23;2583:32;2580:52;;;2628:1;2625;2618:12;2580:52;2651:40;2681:9;2651:40;:::i;3011:177::-;11414:13098:0;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405260043610620002635760003560e01c80639d1944f51162000147578063d7c96f2411620000b9578063eb31d8471162000078578063eb31d847146200076e578063efa4af4c1462000793578063f2fde38b14620007ab578063f708a64f14620007d0578063f887ea4014620007f557600080fd5b8063d7c96f2414620006ad578063d85a282814620006c5578063dd62ed3e14620006dd578063e5c8c5721462000727578063e96fada2146200074c57600080fd5b8063a9059cbb1162000106578063a9059cbb14620005f1578063af38d7571462000616578063bd10bc5f146200062e578063ca33e64c1462000651578063cc642784146200067357600080fd5b80639d1944f51462000540578063a4b45c001462000565578063a51af4c5146200058a578063a771ebc714620005ac578063a8aa1b3114620005cf57600080fd5b80633bb8a8d411620001e157806370a0823111620001a057806370a082311462000474578063715018a614620004ae57806389291a8f14620004c65780638da5cb5b14620004de57806395d89b41146200051257600080fd5b80633bb8a8d414620003cc57806349d5585314620003ef5780634e71d92d146200041457806357d87f0d146200042c578063658d4b7f146200044f57600080fd5b8063201afaaa116200022e578063201afaaa146200033457806323b872dd146200034c5780632d48e8961462000371578063313ce567146200039657806339bb668a14620003b457600080fd5b8063048c7baf146200027057806306fdde031462000297578063095ea7b314620002dd57806318160ddd146200031357600080fd5b366200026b57005b600080fd5b3480156200027d57600080fd5b50620002956200028f36600462001f0f565b62000817565b005b348015620002a457600080fd5b506040805180820190915260088152672832bb9021b7b4b760c11b60208201525b604051620002d4919062001f4d565b60405180910390f35b348015620002ea57600080fd5b5062000302620002fc36600462001fb3565b62000855565b6040519015158152602001620002d4565b3480156200032057600080fd5b506001545b604051908152602001620002d4565b3480156200034157600080fd5b5062000325601c5481565b3480156200035957600080fd5b50620003026200036b36600462001fe2565b620008c3565b3480156200037e57600080fd5b50620002956200039036600462002028565b620009d6565b348015620003a357600080fd5b5060405160098152602001620002d4565b348015620003c157600080fd5b506200029562000a4c565b348015620003d957600080fd5b506012546200030290600160b81b900460ff1681565b348015620003fc57600080fd5b50620002956200040e3660046200204b565b62000a65565b3480156200042157600080fd5b506200029562000a74565b3480156200043957600080fd5b506012546200030290600160b01b900460ff1681565b3480156200045c57600080fd5b50620002956200046e36600462002065565b62000ae0565b3480156200048157600080fd5b506200032562000493366004620020a3565b6001600160a01b031660009081526002602052604090205490565b348015620004bb57600080fd5b506200029562000b15565b348015620004d357600080fd5b506200029562000b2d565b348015620004eb57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001620002d4565b3480156200051f57600080fd5b5060408051808201909152600381526250455760e81b6020820152620002c5565b3480156200054d57600080fd5b50620002956200055f3660046200204b565b62000b92565b3480156200057257600080fd5b506200029562000584366004620020c3565b62000bb1565b3480156200059757600080fd5b50601954620004f9906001600160a01b031681565b348015620005b957600080fd5b506012546200030290600160a01b900460ff1681565b348015620005dc57600080fd5b50601154620004f9906001600160a01b031681565b348015620005fe57600080fd5b50620003026200061036600462001fb3565b62000be9565b3480156200062357600080fd5b506200032562000bf8565b3480156200063b57600080fd5b506012546200030290600160a81b900460ff1681565b3480156200065e57600080fd5b50600d54620004f9906001600160a01b031681565b3480156200068057600080fd5b50620004f962000692366004620020a3565b6006602052600090815260409020546001600160a01b031681565b348015620006ba57600080fd5b506200029562000c6d565b348015620006d257600080fd5b506200029562000c86565b348015620006ea57600080fd5b5062000325620006fc366004620020c3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156200073457600080fd5b506200029562000746366004620020c3565b62000cae565b3480156200075957600080fd5b50600e54620004f9906001600160a01b031681565b3480156200077b57600080fd5b50620002956200078d366004620020a3565b62000ebc565b348015620007a057600080fd5b506200029562000fc1565b348015620007b857600080fd5b5062000295620007ca366004620020a3565b62000fda565b348015620007dd57600080fd5b5062000295620007ef36600462002065565b62001056565b3480156200080257600080fd5b50601254620004f9906001600160a01b031681565b6200082162001144565b60128054941515600160b81b0260ff60b81b1990951694909417909355601391909155600060145560155560165543601755565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914620009bf576001600160a01b0384166000908152600360209081526040808320338452909152902054821115620009695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602090815260408083203384529091529020546200099a9083906200210c565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b620009cc848484620011a0565b90505b9392505050565b620009e062001144565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000a2f57600080fd5b505af115801562000a44573d6000803e3d6000fd5b505050505050565b62000a5662001144565b6012805460ff60a81b19169055565b62000a6f62001144565b601c55565b601860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ac557600080fd5b505af115801562000ada573d6000803e3d6000fd5b50505050565b62000aea62001144565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b62000b1f62001144565b62000b2b600062001534565b565b62000b3762001144565b604051600090339047908381818185875af1925050503d806000811462000b7b576040519150601f19603f3d011682016040523d82523d6000602084013e62000b80565b606091505b505090508062000b8f57600080fd5b50565b62000b9c62001144565b620b71b0811062000bac57600080fd5b601a55565b62000bbb62001144565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000620009cf338484620011a0565b60185460405163051fa63360e31b81523360048201526000916001600160a01b0316906328fd319890602401602060405180830381865afa15801562000c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c68919062002122565b905090565b62000c7762001144565b6012805460ff60b01b19169055565b62000c9062001144565b3060008181526002602052604090205462000b8f91903390620011a0565b62000cb862001144565b601854604080516334684cbb60e21b815290516000926001600160a01b0316918391839163d1a132ec916004808301926020929190829003018187875af115801562000d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d2e919062002122565b905062000d3c858562001584565b60005b8181101562000a445760405163559bbed560e11b8152600481018290526000906001600160a01b0385169063ab377daa906024016020604051808303816000875af115801562000d93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db991906200213c565b9050600062000ddd826001600160a01b031660009081526002602052604090205490565b905062000ded6009600a62002259565b62000dfb906105396200226a565b811062000ea457601854604051630a5b654b60e11b81526001600160a01b03848116600483015260248201849052909116906314b6ca9690604401600060405180830381600087803b15801562000e5157600080fd5b505af192505050801562000e63575060015b62000e6d57600195505b851562000ea457601880546001600160a01b0387166001600160a01b03199182168117909255601980549091169091179055600080fd5b5050808062000eb39062002284565b91505062000d3f565b62000ec662001144565b6040516370a0823160e01b8152306004820181905282916001600160a01b038316916323b872dd9161dead9084906370a0823190602401602060405180830381865afa15801562000f1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f41919062002122565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620022a0565b505050565b62000fcb62001144565b6012805460ff60a01b19169055565b62000fe462001144565b6001600160a01b0381166200104b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000960565b62000b8f8162001534565b6200106062001144565b6001600160a01b03821630148015906200108857506011546001600160a01b03838116911614155b6200109257600080fd5b6001600160a01b0382166000908152600560205260409020805460ff19168215801591909117909155620010fa57601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca969060440162000a14565b6018546001600160a01b0383811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca969060440162000a14565b6000546001600160a01b0316331462000b2b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000960565b601b5460009060ff1615620011c457620011bc84848462001610565b9050620009cf565b601254600160a01b900460ff1615620012b9576000620011e585856200178d565b9050808015620011fe5750601254600160a81b900460ff165b156200121c576200121385856102c362001610565b915050620009cf565b808015620012335750601254600160b01b900460ff165b15620012835760c86001546200124a9190620022d6565b836200126b866001600160a01b031660009081526002602052604090205490565b620012779190620022f9565b11156200128357600080fd5b6200128d620017f6565b156200129d576200129d62001839565b620012a762001c13565b15620012b757620012b762001c7b565b505b6001600160a01b038416600090815260026020526040902080548390039055601254600160a01b900460ff168015620012f95750620012f9848462001d04565b1562001339576000600c54600754840281620013195762001319620022c0565b306000908152600260205260409020805492909104918201905590920391505b6001600160a01b038084166000908152600260209081526040808320805487019055928716825260059052205460ff16620013e1576018546001600160a01b0385811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620013cd57600080fd5b505af1925050508015620013df575060015b505b6001600160a01b03831660009081526005602052604090205460ff1662001475576018546001600160a01b0384811660008181526002602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200146157600080fd5b505af192505050801562001473575060015b505b601854601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620014ae9160040190815260200190565b600060405180830381600087803b158015620014c957600080fd5b505af1925050508015620014db575060015b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200152291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8181604051620015949062001ef2565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620015c8573d6000803e3d6000fd5b50601880546001600160a01b039283166001600160a01b0319918216811790925560198054821683179055929091166000908152600660205260409020805490921617905550565b60006001600160a01b038416620016785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000960565b6001600160a01b038316620016dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000960565b6001600160a01b03841660009081526002602052604090205482811015620017565760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000960565b50506001600160a01b0392831660009081526002602052604080822080548490039055929093168352912080549091019055600190565b6011546000906001600160a01b03838116911614801590620017bd57506000546001600160a01b03838116911614155b8015620017d857506000546001600160a01b03848116911614155b8015620009cf5750506000546001600160a01b031632141592915050565b6011546000906001600160a01b03163314801590620018185750601b5460ff16155b801562000c68575050601c5430600090815260026020526040902054101590565b601b805460ff19166001179055600754600954601c5460009260029290916200186391906200226a565b6200186f9190620022d6565b6200187b9190620022d6565b9050600081601c546200188f91906200210c565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620018cc57620018cc6200230f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562001926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194c91906200213c565b816001815181106200196257620019626200230f565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac94790620019ae9086906000908790309042906004016200236b565b600060405180830381600087803b158015620019c957600080fd5b505af1158015620019de573d6000803e3d6000fd5b5050505060008147620019f291906200210c565b90506000600260095462001a079190620022d6565b60075462001a1691906200210c565b905060006002826009548562001a2d91906200226a565b62001a399190620022d6565b62001a459190620022d6565b9050600082600a548562001a5a91906200226a565b62001a669190620022d6565b9050600083600b548662001a7b91906200226a565b62001a879190620022d6565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562001ada57600080fd5b505af19350505050801562001aed575060015b50600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562001b29573d6000803e3d6000fd5b50601254600d5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801562001b9b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001bc29190620023a9565b505060408051858152602081018c90527fd2f4e97410796ed7a8c179e2bcedaa646a77cc703849019db2e4a1d368473cff92500160405180910390a15050601b805460ff1916905550505050505050565b6011546000906001600160a01b0316331480159062001c355750601b5460ff16155b801562001c4b5750601254600160b81b900460ff165b801562001c6957504360165460175462001c669190620022f9565b11155b801562000c6857505060155447101590565b62001c8b60155461dead62001d7c565b436017556015546014805460009062001ca6908490620022f9565b9091555050601354601454111562001cc6576012805460ff60b81b191690555b7fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e4806960155460405162001cfa91815260200190565b60405180910390a1565b6001600160a01b03821660009081526004602052604081205460ff168062001d4457506001600160a01b03821660009081526004602052604090205460ff165b158015620009cf57506011546001600160a01b0384811691161480620009cf5750506011546001600160a01b03908116911614919050565b601b805460ff191660011790556040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200213c565b8160008151811062001e305762001e306200230f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062001e675762001e676200230f565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590859062001eaf90600090869088904290600401620023d8565b6000604051808303818588803b15801562001ec957600080fd5b505af115801562001ede573d6000803e3d6000fd5b5050601b805460ff19169055505050505050565b610ecd806200241083390190565b801515811462000b8f57600080fd5b6000806000806080858703121562001f2657600080fd5b843562001f338162001f00565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b8181101562001f7c5785810183015185820160400152820162001f5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462000b8f57600080fd5b6000806040838503121562001fc757600080fd5b823562001fd48162001f9d565b946020939093013593505050565b60008060006060848603121562001ff857600080fd5b8335620020058162001f9d565b92506020840135620020178162001f9d565b929592945050506040919091013590565b600080604083850312156200203c57600080fd5b50508035926020909101359150565b6000602082840312156200205e57600080fd5b5035919050565b600080604083850312156200207957600080fd5b8235620020868162001f9d565b91506020830135620020988162001f00565b809150509250929050565b600060208284031215620020b657600080fd5b8135620009cf8162001f9d565b60008060408385031215620020d757600080fd5b8235620020e48162001f9d565b91506020830135620020988162001f9d565b634e487b7160e01b600052601160045260246000fd5b81810381811115620008bd57620008bd620020f6565b6000602082840312156200213557600080fd5b5051919050565b6000602082840312156200214f57600080fd5b8151620009cf8162001f9d565b600181815b808511156200219d578160001904821115620021815762002181620020f6565b808516156200218f57918102915b93841c939080029062002161565b509250929050565b600082620021b657506001620008bd565b81620021c557506000620008bd565b8160018114620021de5760028114620021e95762002209565b6001915050620008bd565b60ff841115620021fd57620021fd620020f6565b50506001821b620008bd565b5060208310610133831016604e8410600b84101617156200222e575081810a620008bd565b6200223a83836200215c565b8060001904821115620022515762002251620020f6565b029392505050565b6000620009cf60ff841683620021a5565b8082028115828204841417620008bd57620008bd620020f6565b600060018201620022995762002299620020f6565b5060010190565b600060208284031215620022b357600080fd5b8151620009cf8162001f00565b634e487b7160e01b600052601260045260246000fd5b600082620022f457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008bd57620008bd620020f6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620023605781516001600160a01b03168752958201959082019060010162002339565b509495945050505050565b85815284602082015260a0604082015260006200238c60a083018662002325565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620023bf57600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000620023f3608083018662002325565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ecd380380610ecd833981016040819052610054916100af565b600080546001600160a01b03199081163317909155600180546001600160a01b03938416908316179055600280549390921692169190911790556100e2565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080604083850312156100c257600080fd5b6100cb83610093565b91506100d960208401610093565b90509250929050565b610ddc806100f16000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed14610287578063f0fc6bca1461029d578063ffb2c479146102b2578063ffd49c84146102d257600080fd5b8063ce7c2ac2146101fd578063d0e30db014610254578063d1a132ec1461025c578063e2d2e2191461027157600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae814610199578063997664d7146101af578063ab377daa146101c557600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600b5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610b9f565b6102e8565b005b34801561014f57600080fd5b5061010e61015e366004610bcb565b610460565b34801561016f57600080fd5b5061014161017e366004610bef565b6104eb565b34801561018f57600080fd5b5061010e60075481565b3480156101a557600080fd5b5061010e600d5481565b3480156101bb57600080fd5b5061010e60085481565b3480156101d157600080fd5b506101e56101e0366004610c11565b61050d565b6040516001600160a01b039091168152602001610118565b34801561020957600080fd5b50610239610218366004610bcb565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610537565b34801561026857600080fd5b5060035461010e565b34801561027d57600080fd5b5061010e600a5481565b34801561029357600080fd5b5061010e60095481565b3480156102a957600080fd5b506101416107cd565b3480156102be57600080fd5b506101416102cd366004610c11565b6107d8565b3480156102de57600080fd5b5061010e600c5481565b6000546001600160a01b031633146102ff57600080fd5b6001600160a01b0382166000908152600660205260409020541561032657610326826108e6565b60008111801561034c57506001600160a01b038216600090815260066020526040902054155b156103b257600380546001600160a01b0384166000818152600560205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103e5565b801580156103d757506001600160a01b03821660009081526006602052604090205415155b156103e5576103e582610a0d565b6001600160a01b038216600090815260066020526040902054600754829161040c91610c40565b6104169190610c53565b6007556001600160a01b038216600090815260066020526040902081905561043d81610b22565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361048757506000919050565b6001600160a01b0382166000908152600660205260408120546104a990610b22565b6001600160a01b0384166000908152600660205260409020600101549091508082116104d9575060009392505050565b6104e38183610c40565b949350505050565b6000546001600160a01b0316331461050257600080fd5b600c91909155600d55565b6003818154811061051d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461054e57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610c66565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610c7f565b8160008151811061066157610661610c9c565b6001600160a01b039283166020918202929092010152600180548351921691839190811061069157610691610c9c565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906106d790600090869030904290600401610cb2565b6000604051808303818588803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610c66565b6107849190610c40565b905080600860008282546107989190610c53565b9091555050600754600b546107ae908390610d1c565b6107b89190610d33565b600a546107c59190610c53565b600a55505050565b6107d6336108e6565b565b6000546001600160a01b031633146107ef57600080fd5b60006107fa60035490565b905080600003610808575050565b6000805a905060005b848310801561081f57508381105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c9c565b6000918252602090912001546001600160a01b0316610b45565b1561089c5761089c6003600e548154811061088257610882610c9c565b6000918252602090912001546001600160a01b03166108e6565b5a6108a79083610c40565b6108b19084610c53565b92505a600e805491935060006108c683610d55565b919050555080806108d690610d55565b915050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610460565b90508015610a0957806009600082825461092d9190610c53565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a99190610d6e565b506001600160a01b03821660009081526004602090815260408083204290556006909152812060020180548392906109e2908490610c53565b90915550506001600160a01b03821660009081526006602052604090205461043d90610b22565b5050565b60038054610a1d90600190610c40565b81548110610a2d57610a2d610c9c565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600380549290931692918110610a6b57610a6b610c9c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546003805491939291610ab790600190610c40565b81548110610ac757610ac7610c9c565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610afd57610afd610d90565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600b54600a5483610b359190610d1c565b610b3f9190610d33565b92915050565b600c546001600160a01b03821660009081526004602052604081205490914291610b6f9190610c53565b108015610b3f5750600d54610b8383610460565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610bb257600080fd5b8235610bbd81610b8a565b946020939093013593505050565b600060208284031215610bdd57600080fd5b8135610be881610b8a565b9392505050565b60008060408385031215610c0257600080fd5b50508035926020909101359150565b600060208284031215610c2357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3f57610b3f610c2a565b80820180821115610b3f57610b3f610c2a565b600060208284031215610c7857600080fd5b5051919050565b600060208284031215610c9157600080fd5b8151610be881610b8a565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610cfc5784516001600160a01b031683529383019391830191600101610cd7565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610b3f57610b3f610c2a565b600082610d5057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201610d6757610d67610c2a565b5060010190565b600060208284031215610d8057600080fd5b81518015158114610be857600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b95ab7a4f2a93272fc696837cefb0433936df39930259836000c80dd1cd91bc464736f6c63430008120033a2646970667358221220c8136edebef83ca6c4ff67100098855150df95a905a4a38b120123b41675615c64736f6c63430008120033","sourceMap":"11414:13098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17636:358;;;;;;;;;;-1:-1:-1;17636:358:0;;;;;:::i;:::-;;:::i;:::-;;14283:80;;;;;;;;;;-1:-1:-1;14355:5:0;;;;;;;;;;;;-1:-1:-1;;;14355:5:0;;;;14283:80;;;;;;;:::i;:::-;;;;;;;;14805:216;;;;;;;;;;-1:-1:-1;14805:216:0;;;;;:::i;:::-;;:::i;:::-;;;1762:14:1;;1755:22;1737:41;;1725:2;1710:18;14805:216:0;1597:187:1;14459:88:0;;;;;;;;;;-1:-1:-1;14532:12:0;;14459:88;;;1935:25:1;;;1923:2;1908:18;14459:88:0;1789:177:1;12897:53:0;;;;;;;;;;;;;;;;15193:442;;;;;;;;;;-1:-1:-1;15193:442:0;;;;;:::i;:::-;;:::i;18836:182::-;;;;;;;;;;-1:-1:-1;18836:182:0;;;;;:::i;:::-;;:::i;14197:80::-;;;;;;;;;;-1:-1:-1;14197:80:0;;11640:1;2827:36:1;;2815:2;2800:18;14197:80:0;2685:184:1;16467:88:0;;;;;;;;;;;;;:::i;12539:38::-;;;;;;;;;;-1:-1:-1;12539:38:0;;;;-1:-1:-1;;;12539:38:0;;;;;;18718:110;;;;;;;;;;-1:-1:-1;18718:110:0;;;;;:::i;:::-;;:::i;15691:70::-;;;;;;;;;;;;;:::i;12497:35::-;;;;;;;;;;-1:-1:-1;12497:35:0;;;;-1:-1:-1;;;12497:35:0;;;;;;18356:119;;;;;;;;;;-1:-1:-1;18356:119:0;;;;;:::i;:::-;;:::i;14553:105::-;;;;;;;;;;-1:-1:-1;14553:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;14637:18:0;14619:7;14637:18;;;:9;:18;;;;;;;14553:105;5088:103;;;;;;;;;;;;;:::i;16154:166::-;;;;;;;;;;;;;:::i;4447:87::-;;;;;;;;;;-1:-1:-1;4493:7:0;4520:6;-1:-1:-1;;;;;4520:6:0;4447:87;;;-1:-1:-1;;;;;3862:32:1;;;3844:51;;3832:2;3817:18;4447:87:0;3698:203:1;14369:84:0;;;;;;;;;;-1:-1:-1;14443:7:0;;;;;;;;;;;;-1:-1:-1;;;14443:7:0;;;;14369:84;;19026:135;;;;;;;;;;-1:-1:-1;19026:135:0;;;;;:::i;:::-;;:::i;18483:227::-;;;;;;;;;;-1:-1:-1;18483:227:0;;;;;:::i;:::-;;:::i;12797:33::-;;;;;;;;;;-1:-1:-1;12797:33:0;;;;-1:-1:-1;;;;;12797:33:0;;;12419:29;;;;;;;;;;-1:-1:-1;12419:29:0;;;;-1:-1:-1;;;12419:29:0;;;;;;12352:19;;;;;;;;;;-1:-1:-1;12352:19:0;;;;-1:-1:-1;;;;;12352:19:0;;;15029:156;;;;;;;;;;-1:-1:-1;15029:156:0;;;;;:::i;:::-;;:::i;15769:118::-;;;;;;;;;;;;;:::i;12455:35::-;;;;;;;;;;-1:-1:-1;12455:35:0;;;;-1:-1:-1;;;12455:35:0;;;;;;12181:36;;;;;;;;;;-1:-1:-1;12181:36:0;;;;-1:-1:-1;;;;;12181:36:0;;;11925:48;;;;;;;;;;-1:-1:-1;11925:48:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;11925:48:0;;;16563:88;;;;;;;;;;;;;:::i;16328:131::-;;;;;;;;;;;;;:::i;14664:133::-;;;;;;;;;;-1:-1:-1;14664:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14766:19:0;;;14748:7;14766:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14664:133;16743:885;;;;;;;;;;-1:-1:-1;16743:885:0;;;;;:::i;:::-;;:::i;12224:35::-;;;;;;;;;;-1:-1:-1;12224:35:0;;;;-1:-1:-1;;;;;12224:35:0;;;15942:200;;;;;;;;;;-1:-1:-1;15942:200:0;;;;;:::i;:::-;;:::i;16659:76::-;;;;;;;;;;;;;:::i;5346:201::-;;;;;;;;;;-1:-1:-1;5346:201:0;;;;;:::i;:::-;;:::i;18002:346::-;;;;;;;;;;-1:-1:-1;18002:346:0;;;;;:::i;:::-;;:::i;12378:32::-;;;;;;;;;;-1:-1:-1;12378:32:0;;;;-1:-1:-1;;;;;12378:32:0;;;17636:358;4333:13;:11;:13::i;:::-;17761:18:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;17761:29:0::1;-1:-1:-1::0;;;;17761:29:0;;::::1;::::0;;;::::1;::::0;;;17801:14:::1;:21:::0;;;;-1:-1:-1;17833:22:0::1;:26:::0;17870:17:::1;:27:::0;17908:22:::1;:32:::0;17974:12:::1;17761:18;17951:35:::0;17636:358::o;14805:216::-;14909:10;14880:4;14897:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14897:32:0;;;;;;;;;;:41;;;14954:37;14880:4;;14897:32;;14954:37;;;;14932:6;1935:25:1;;1923:2;1908:18;;1789:177;14954:37:0;;;;;;;;-1:-1:-1;15009:4:0;14805:216;;;;;:::o;15193:442::-;-1:-1:-1;;;;;15315:19:0;;15293:4;15315:19;;;:11;:19;;;;;;;;15335:10;15315:31;;;;;;;;-1:-1:-1;;15315:52:0;15311:257;;-1:-1:-1;;;;;15392:19:0;;;;;;:11;:19;;;;;;;;15412:10;15392:31;;;;;;;;:41;-1:-1:-1;15392:41:0;15384:83;;;;-1:-1:-1;;;15384:83:0;;4735:2:1;15384:83:0;;;4717:21:1;4774:2;4754:18;;;4747:30;4813:31;4793:18;;;4786:59;4862:18;;15384:83:0;;;;;;;;;-1:-1:-1;;;;;15516:19:0;;;;;;:11;:19;;;;;;;;15536:10;15516:31;;;;;;;;:40;;15550:6;;15516:40;:::i;:::-;-1:-1:-1;;;;;15482:19:0;;;;;;:11;:19;;;;;;;;15502:10;15482:31;;;;;;;:74;15311:257;15587:40;15601:6;15609:9;15620:6;15587:13;:40::i;:::-;15580:47;;15193:442;;;;;;:::o;18836:182::-;4333:13;:11;:13::i;:::-;18945:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;18945:65:0;;::::1;::::0;::::1;5330:25:1::0;;;5371:18;;;5364:34;;;-1:-1:-1;;;;;18945:11:0;;::::1;::::0;:35:::1;::::0;5303:18:1;;18945:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18836:182:::0;;:::o;16467:88::-;4333:13;:11;:13::i;:::-;16523:16:::1;:24:::0;;-1:-1:-1;;;;16523:24:0::1;::::0;;16467:88::o;18718:110::-;4333:13;:11;:13::i;:::-;18794:16:::1;:26:::0;18718:110::o;15691:70::-;15726:11;;;;;;;;;-1:-1:-1;;;;;15726:11:0;-1:-1:-1;;;;;15726:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15691:70::o;18356:119::-;4333:13;:11;:13::i;:::-;-1:-1:-1;;;;;18439:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;18439:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18356:119::o;5088:103::-;4333:13;:11;:13::i;:::-;5153:30:::1;5180:1;5153:18;:30::i;:::-;5088:103::o:0;16154:166::-;4333:13;:11;:13::i;:::-;16227:58:::1;::::0;16210:12:::1;::::0;16235:10:::1;::::0;16259:21:::1;::::0;16210:12;16227:58;16210:12;16227:58;16259:21;16235:10;16227:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16209:76;;;16304:7;16296:16;;;::::0;::::1;;16198:122;16154:166::o:0;19026:135::-;4333:13;:11;:13::i;:::-;19115:6:::1;19109:3;:12;19101:21;;;::::0;::::1;;19133:14;:20:::0;19026:135::o;18483:227::-;4333:13;:11;:13::i;:::-;18601:21:::1;:46:::0;;-1:-1:-1;;;;;18601:46:0;;::::1;-1:-1:-1::0;;;;;;18601:46:0;;::::1;;::::0;;;18658:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;18483:227::o;15029:156::-;15109:4;15133:44;15147:10;15159:9;15170:6;15133:13;:44::i;15769:118::-;15838:11;;:41;;-1:-1:-1;;;15838:41:0;;15868:10;15838:41;;;3844:51:1;15811:7:0;;-1:-1:-1;;;;;15838:11:0;;:29;;3817:18:1;;15838:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15831:48;;15769:118;:::o;16563:88::-;4333:13;:11;:13::i;:::-;16619:16:::1;:24:::0;;-1:-1:-1;;;;16619:24:0::1;::::0;;16563:88::o;16328:131::-;4333:13;:11;:13::i;:::-;16407:4:::1;14619:7:::0;14637:18;;;:9;:18;;;;;;16385:66:::1;::::0;16407:4;16414:10:::1;::::0;16385:13:::1;:66::i;16743:885::-:0;4333:13;:11;:13::i;:::-;16908:11:::1;::::0;16954:26:::1;::::0;;-1:-1:-1;;;16954:26:0;;;;16843:15:::1;::::0;-1:-1:-1;;;;;16908:11:0::1;::::0;16843:15;;16908:11;;16954:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;16843:15;16908:11;16954:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16930:50;;17001:46;17018:13;17033;17001:16;:46::i;:::-;17073:6;17068:553;17089:16;17085:1;:20;17068:553;;;17151:23;::::0;-1:-1:-1;;;17151:23:0;;::::1;::::0;::::1;1935:25:1::0;;;17129:19:0::1;::::0;-1:-1:-1;;;;;17151:20:0;::::1;::::0;::::1;::::0;1908:18:1;;17151:23:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17129:45;;17189:15;17207:22;17217:11;-1:-1:-1::0;;;;;14637:18:0;14619:7;14637:18;;;:9;:18;;;;;;;14553:105;17207:22:::1;17189:40:::0;-1:-1:-1;17267:15:0::1;11640:1;17267:2;:15;:::i;:::-;17260:22;::::0;:4:::1;:22;:::i;:::-;17249:7;:33;17246:364;;17306:11;::::0;:42:::1;::::0;-1:-1:-1;;;17306:42:0;;-1:-1:-1;;;;;7812:32:1;;;17306:42:0::1;::::0;::::1;7794:51:1::0;7861:18;;;7854:34;;;17306:11:0;;::::1;::::0;:20:::1;::::0;7767:18:1;;17306:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17302:97;;17392:4;17379:17;;17302:97;17422:10;17419:176;;;17456:11;:21:::0;;-1:-1:-1;;;;;17456:21:0;::::1;-1:-1:-1::0;;;;;;17456:21:0;;::::1;::::0;::::1;::::0;;;17500:18:::1;:37:::0;;;;::::1;::::0;;::::1;::::0;;17456:11:::1;::::0;17567:8:::1;17419:176;17112:509;;17107:3;;;;;:::i;:::-;;;;17068:553;;15942:200:::0;4333:13;:11;:13::i;:::-;16103:30:::1;::::0;-1:-1:-1;;;16103:30:0;;16090:4:::1;16103:30;::::0;::::1;3844:51:1::0;;;16039:12:0;;-1:-1:-1;;;;;16063:18:0;::::1;::::0;::::1;::::0;11483:42:::1;::::0;16063:18;;16103:15:::1;::::0;3817:18:1;;16103:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16063:71;::::0;-1:-1:-1;;;;;;16063:71:0::1;::::0;;;;;;-1:-1:-1;;;;;8297:15:1;;;16063:71:0::1;::::0;::::1;8279:34:1::0;8349:15;;;;8329:18;;;8322:43;8381:18;;;8374:34;8214:18;;16063:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16006:136;15942:200:::0;:::o;16659:76::-;4333:13;:11;:13::i;:::-;16709:10:::1;:18:::0;;-1:-1:-1;;;;16709:18:0::1;::::0;;16659:76::o;5346:201::-;4333:13;:11;:13::i;:::-;-1:-1:-1;;;;;5435:22:0;::::1;5427:73;;;::::0;-1:-1:-1;;;5427:73:0;;8871:2:1;5427:73:0::1;::::0;::::1;8853:21:1::0;8910:2;8890:18;;;8883:30;8949:34;8929:18;;;8922:62;-1:-1:-1;;;9000:18:1;;;8993:36;9046:19;;5427:73:0::1;8669:402:1::0;5427:73:0::1;5511:28;5530:8;5511:18;:28::i;18002:346::-:0;4333:13;:11;:13::i;:::-;-1:-1:-1;;;;;18098:23:0;::::1;18116:4;18098:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;18135:4:0::1;::::0;-1:-1:-1;;;;;18125:14:0;;::::1;18135:4:::0;::::1;18125:14;;18098:41;18090:50;;;::::0;::::1;;-1:-1:-1::0;;;;;18151:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;18151:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18195:146:::1;;18220:11;::::0;:31:::1;::::0;-1:-1:-1;;;18220:31:0;;-1:-1:-1;;;;;7812:32:1;;;18220:31:0::1;::::0;::::1;7794:51:1::0;18220:11:0::1;7861:18:1::0;;;7854:34;18220:11:0;;::::1;::::0;:20:::1;::::0;7767:18:1;;18220:31:0::1;7620:274:1::0;18195:146:0::1;18282:11;::::0;-1:-1:-1;;;;;18311:17:0;;::::1;18282:11;18311:17:::0;;;:9:::1;:17;::::0;;;;;;;18282:47;;-1:-1:-1;;;18282:47:0;;::::1;::::0;::::1;7794:51:1::0;;;;7861:18;;;7854:34;18282:11:0;::::1;::::0;:20:::1;::::0;7767:18:1;;18282:47:0::1;7620:274:1::0;4612:132:0;4493:7;4520:6;-1:-1:-1;;;;;4520:6:0;3743:10;4676:23;4668:68;;;;-1:-1:-1;;;4668:68:0;;9565:2:1;4668:68:0;;;9547:21:1;;;9584:18;;;9577:30;9643:34;9623:18;;;9616:62;9695:18;;4668:68:0;9363:356:1;19220:1417:0;19332:6;;19312:4;;19332:6;;19329:58;;;19348:36;19358:6;19366:9;19377:6;19348:9;:36::i;:::-;19341:43;;;;19329:58;19402:10;;-1:-1:-1;;;19402:10:0;;;;19399:410;;;19428:15;19446:30;19458:6;19466:9;19446:11;:30::i;:::-;19428:48;;19494:10;:30;;;;-1:-1:-1;19508:16:0;;-1:-1:-1;;;19508:16:0;;;;19494:30;19491:80;;;19535:33;19545:6;19553:9;19564:3;19535:9;:33::i;:::-;19528:40;;;;;19491:80;19588:10;:30;;;;-1:-1:-1;19602:16:0;;-1:-1:-1;;;19602:16:0;;;;19588:30;19585:100;;;19678:3;19663:12;;:18;;;;:::i;:::-;19653:6;19630:20;19640:9;-1:-1:-1;;;;;14637:18:0;14619:7;14637:18;;;:9;:18;;;;;;;14553:105;19630:20;:29;;;;:::i;:::-;:51;;19622:60;;;;;;19702:16;:14;:16::i;:::-;19699:35;;;19721:10;:8;:10::i;:::-;19751:20;:18;:20::i;:::-;19748:50;;;19774:21;:19;:21::i;:::-;19413:396;19399:410;-1:-1:-1;;;;;19859:17:0;;;;;;:9;:17;;;;;:27;;;;;;;19967:10;;-1:-1:-1;;;19967:10:0;;;;:47;;;;;19981:33;19996:6;20004:9;19981:14;:33::i;:::-;19964:235;;;20035:17;20075:14;;20064:8;;20055:6;:17;:34;;;;;:::i;:::-;20126:4;20108:24;;;;:9;:24;;;;;:37;;20055:34;;;;20108:37;;;;;20164:19;;;;-1:-1:-1;19964:235:0;-1:-1:-1;;;;;20227:20:0;;;;;;;:9;:20;;;;;;;;:30;;;;;;20285:24;;;;;:16;:24;;;;;;20281:96;;20316:11;;-1:-1:-1;;;;;20345:17:0;;;20316:11;20345:17;;;:9;:17;;;;;;;;20316:47;;-1:-1:-1;;;20316:47:0;;;;;7794:51:1;;;;7861:18;;;7854:34;20316:11:0;;;:20;;7767:18:1;;20316:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20312:63;;-1:-1:-1;;;;;20391:27:0;;;;;;:16;:27;;;;;;;;20387:105;;20425:11;;-1:-1:-1;;;;;20457:20:0;;;20425:11;20457:20;;;:9;:20;;;;;;;;20425:53;;-1:-1:-1;;;20425:53:0;;;;;7794:51:1;;;;7861:18;;;7854:34;20425:11:0;;;:20;;7767:18:1;;20425:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20421:69;;20508:11;;20528:14;;20508:35;;-1:-1:-1;;;;;;20508:35:0;;-1:-1:-1;;;;;20508:11:0;;;;:19;;:35;;;;1935:25:1;;;1923:2;1908:18;;1789:177;20508:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20504:51;20589:9;-1:-1:-1;;;;;20572:35:0;20581:6;-1:-1:-1;;;;;20572:35:0;;20600:6;20572:35;;;;1935:25:1;;1923:2;1908:18;;1789:177;20572:35:0;;;;;;;;-1:-1:-1;20625:4:0;19220:1417;;;;;:::o;5707:191::-;5781:16;5800:6;;-1:-1:-1;;;;;5817:17:0;;;-1:-1:-1;;;;;;5817:17:0;;;;;;5850:40;;5800:6;;;;;;;5850:40;;5781:16;5850:40;5770:128;5707:191;:::o;23688:278::-;23818:13;23833;23794:53;;;;;:::i;:::-;-1:-1:-1;;;;;10438:15:1;;;10420:34;;10490:15;;10485:2;10470:18;;10463:43;10370:2;10355:18;23794:53:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23780:11:0;:67;;-1:-1:-1;;;;;23780:67:0;;;-1:-1:-1;;;;;;23780:67:0;;;;;;;;23858:18;:41;;;;;;;;23910:27;;;;23780:11;23910:27;;;:12;:27;;;;;:48;;;;;;;;-1:-1:-1;23688:278:0:o;23977:532::-;24064:4;-1:-1:-1;;;;;24089:18:0;;24081:68;;;;-1:-1:-1;;;24081:68:0;;10719:2:1;24081:68:0;;;10701:21:1;10758:2;10738:18;;;10731:30;10797:34;10777:18;;;10770:62;-1:-1:-1;;;10848:18:1;;;10841:35;10893:19;;24081:68:0;10517:401:1;24081:68:0;-1:-1:-1;;;;;24168:16:0;;24160:64;;;;-1:-1:-1;;;24160:64:0;;11125:2:1;24160:64:0;;;11107:21:1;11164:2;11144:18;;;11137:30;11203:34;11183:18;;;11176:62;-1:-1:-1;;;11254:18:1;;;11247:33;11297:19;;24160:64:0;10923:399:1;24160:64:0;-1:-1:-1;;;;;24259:15:0;;24237:19;24259:15;;;:9;:15;;;;;;24293:21;;;;24285:72;;;;-1:-1:-1;;;24285:72:0;;11529:2:1;24285:72:0;;;11511:21:1;11568:2;11548:18;;;11541:30;11607:34;11587:18;;;11580:62;-1:-1:-1;;;11658:18:1;;;11651:36;11704:19;;24285:72:0;11327:402:1;24285:72:0;-1:-1:-1;;;;;;;24403:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;24443:13;;;;;;;;:23;;;;;;;-1:-1:-1;;23977:532:0:o;20860:171::-;20959:4;;20930;;-1:-1:-1;;;;;20953:10:0;;;20959:4;;20953:10;;;;:27;;-1:-1:-1;4493:7:0;4520:6;-1:-1:-1;;;;;20967:13:0;;;4520:6;;20967:13;;20953:27;:46;;;;-1:-1:-1;4493:7:0;4520:6;-1:-1:-1;;;;;20984:15:0;;;4520:6;;20984:15;;20953:46;:70;;;;-1:-1:-1;;4493:7:0;4520:6;-1:-1:-1;;;;;4520:6:0;21003:9;:20;;;;-1:-1:-1;;20860:171:0:o;21039:184::-;21126:4;;21088;;-1:-1:-1;;;;;21126:4:0;21112:10;:18;;;;:42;;-1:-1:-1;21148:6:0;;;;21147:7;21112:42;:103;;;;-1:-1:-1;;21199:16:0;;21189:4;21171:24;;;;:9;:24;;;;;;:44;;;21039:184::o;21231:1399::-;12979:6;:13;;-1:-1:-1;;12979:13:0;12988:4;12979:13;;;21341:8:::1;::::0;21326:12:::1;::::0;21307:16:::1;::::0;12979:6;;21353:1:::1;::::0;21341:8;;21307:31:::1;::::0;21326:12;21307:31:::1;:::i;:::-;:42;;;;:::i;:::-;21306:48;;;;:::i;:::-;21280:74;;21365:20;21407:15;21388:16;;:34;;;;:::i;:::-;21459:16;::::0;;21473:1:::1;21459:16:::0;;;;;::::1;::::0;;21365:57;;-1:-1:-1;21435:21:0::1;::::0;21459:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21459:16:0::1;21435:40;;21504:4;21486;21491:1;21486:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21486:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21530:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21530:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21486:7;;21530:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21520:4;21525:1;21520:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21520:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21612:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21612:188:0;;21578:21:::1;::::0;21612:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21684:12;;21554:21:::1;::::0;21727:4;;21754::::1;::::0;21774:15:::1;::::0;21612:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21813:17;21858:13;21833:21;:39;;;;:::i;:::-;21813:59;;21885:19;21933:1;21918:12;;:16;;;;:::i;:::-;21907:8;;:27;;;;:::i;:::-;21885:49;;21947:26;22019:1;22004:11;21989:12;;21977:9;:24;;;;:::i;:::-;:38;;;;:::i;:::-;21976:44;;;;:::i;:::-;21947:73;;22031:27;22089:11;22073:13;;22061:9;:25;;;;:::i;:::-;:39;;;;:::i;:::-;22031:69;;22111:26;22167:11;22152:12;;22140:9;:24;;;;:::i;:::-;:38;;;;:::i;:::-;22111:67;;22195:11;;;;;;;;;-1:-1:-1::0;;;;;22195:11:0::1;-1:-1:-1::0;;;;;22195:19:0::1;;22222;22195:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22191:65:::0;22274:20:::1;::::0;22266:58:::1;::::0;-1:-1:-1;;;;;22274:20:0;;::::1;::::0;22266:58;::::1;;;::::0;22305:18;;22274:20:::1;22266:58:::0;22274:20;22266:58;22305:18;22274:20;22266:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22344:6:0::1;::::0;22498:21:::1;::::0;22344:216:::1;::::0;-1:-1:-1;;;22344:216:0;;22416:4:::1;22344:216;::::0;::::1;13392:34:1::0;13442:18;;;13435:34;;;22344:6:0::1;13485:18:1::0;;;13478:34;;;13528:18;;;13521:34;-1:-1:-1;;;;;22498:21:0;;::::1;13571:19:1::0;;;13564:44;22534:15:0::1;13624:19:1::0;;;13617:35;22344:6:0;::::1;::::0;:22:::1;::::0;22374:18;;13326:19:1;;22344:216:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22578:44:0::1;::::0;;5330:25:1;;;5386:2;5371:18;;5364:34;;;22578:44:0::1;::::0;-1:-1:-1;5303:18:1;22578:44:0::1;;;;;;;-1:-1:-1::0;;12997:6:0;:14;;-1:-1:-1;;12997:14:0;;;-1:-1:-1;;;;;;;21231:1399:0:o;22638:335::-;22729:4;;22691;;-1:-1:-1;;;;;22729:4:0;22715:10;:18;;;;:42;;-1:-1:-1;22751:6:0;;;;22750:7;22715:42;:77;;;;-1:-1:-1;22774:18:0;;-1:-1:-1;;;22774:18:0;;;;22715:77;:155;;;;;22858:12;22832:22;;22809:20;;:45;;;;:::i;:::-;:61;;22715:155;:250;;;;-1:-1:-1;;22948:17:0;;22923:21;:42;;;22638:335::o;22981:320::-;23032:35;23043:17;;11483:42;23032:10;:35::i;:::-;23101:12;23078:20;:35;23150:17;;23124:22;:43;;:22;;:43;;23150:17;;23124:43;:::i;:::-;;;;-1:-1:-1;;23206:14:0;;23181:22;;:39;23178:74;;;23223:18;:26;;-1:-1:-1;;;;23223:26:0;;;23178:74;23267:26;23275:17;;23267:26;;;;1935:25:1;;1923:2;1908:18;;1789:177;23267:26:0;;;;;;;;22981:320::o;20645:203::-;-1:-1:-1;;;;;20753:19:0;;20727:4;20753:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;20776:22:0;;;;;;:11;:22;;;;;;;;20753:45;20751:48;:89;;;;-1:-1:-1;20814:4:0;;-1:-1:-1;;;;;20804:14:0;;;20814:4;;20804:14;;:35;;-1:-1:-1;;20835:4:0;;-1:-1:-1;;;;;20835:4:0;;;20822:17;;;;20645:203;-1:-1:-1;20645:203:0:o;23309:371::-;12979:6;:13;;-1:-1:-1;;12979:13:0;12988:4;12979:13;;;23410:16:::1;::::0;;23424:1:::1;23410:16:::0;;;;;::::1;::::0;;-1:-1:-1;;23410:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;23447:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23447:13:0;;;;23386:40;;-1:-1:-1;;;;;;23447:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;23447:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23437:4;23442:1;23437:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23437:23:0::1;;;-1:-1:-1::0;;;;;23437:23:0::1;;;::::0;::::1;23489:4;23471;23476:1;23471:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23471:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23507:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;23507:165:0;;:6;::::1;::::0;:57:::1;::::0;23572:6;;23507:165:::1;::::0;:6:::1;::::0;23610:4;;23629:2;;23646:15:::1;::::0;23507:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12997:6:0;:14;;-1:-1:-1;;12997:14:0;;;-1:-1:-1;;;;;;23309:371:0:o;-1:-1:-1:-;;;;;;;;:::o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:446;220:6;228;236;244;297:3;285:9;276:7;272:23;268:33;265:53;;;314:1;311;304:12;265:53;353:9;340:23;372:28;394:5;372:28;:::i;:::-;419:5;471:2;456:18;;443:32;;-1:-1:-1;522:2:1;507:18;;494:32;;573:2;558:18;545:32;;-1:-1:-1;137:446:1;-1:-1:-1;;;137:446:1:o;588:548::-;700:4;729:2;758;747:9;740:21;790:6;784:13;833:6;828:2;817:9;813:18;806:34;858:1;868:140;882:6;879:1;876:13;868:140;;;977:14;;;973:23;;967:30;943:17;;;962:2;939:26;932:66;897:10;;868:140;;;872:3;1057:1;1052:2;1043:6;1032:9;1028:22;1024:31;1017:42;1127:2;1120;1116:7;1111:2;1103:6;1099:15;1095:29;1084:9;1080:45;1076:54;1068:62;;;;588:548;;;;:::o;1141:131::-;-1:-1:-1;;;;;1216:31:1;;1206:42;;1196:70;;1262:1;1259;1252:12;1277:315;1345:6;1353;1406:2;1394:9;1385:7;1381:23;1377:32;1374:52;;;1422:1;1419;1412:12;1374:52;1461:9;1448:23;1480:31;1505:5;1480:31;:::i;:::-;1530:5;1582:2;1567:18;;;;1554:32;;-1:-1:-1;;;1277:315:1:o;1971:456::-;2048:6;2056;2064;2117:2;2105:9;2096:7;2092:23;2088:32;2085:52;;;2133:1;2130;2123:12;2085:52;2172:9;2159:23;2191:31;2216:5;2191:31;:::i;:::-;2241:5;-1:-1:-1;2298:2:1;2283:18;;2270:32;2311:33;2270:32;2311:33;:::i;:::-;1971:456;;2363:7;;-1:-1:-1;;;2417:2:1;2402:18;;;;2389:32;;1971:456::o;2432:248::-;2500:6;2508;2561:2;2549:9;2540:7;2536:23;2532:32;2529:52;;;2577:1;2574;2567:12;2529:52;-1:-1:-1;;2600:23:1;;;2670:2;2655:18;;;2642:32;;-1:-1:-1;2432:248:1:o;2874:180::-;2933:6;2986:2;2974:9;2965:7;2961:23;2957:32;2954:52;;;3002:1;2999;2992:12;2954:52;-1:-1:-1;3025:23:1;;2874:180;-1:-1:-1;2874:180:1:o;3059:382::-;3124:6;3132;3185:2;3173:9;3164:7;3160:23;3156:32;3153:52;;;3201:1;3198;3191:12;3153:52;3240:9;3227:23;3259:31;3284:5;3259:31;:::i;:::-;3309:5;-1:-1:-1;3366:2:1;3351:18;;3338:32;3379:30;3338:32;3379:30;:::i;:::-;3428:7;3418:17;;;3059:382;;;;;:::o;3446:247::-;3505:6;3558:2;3546:9;3537:7;3533:23;3529:32;3526:52;;;3574:1;3571;3564:12;3526:52;3613:9;3600:23;3632:31;3657:5;3632:31;:::i;3906:388::-;3974:6;3982;4035:2;4023:9;4014:7;4010:23;4006:32;4003:52;;;4051:1;4048;4041:12;4003:52;4090:9;4077:23;4109:31;4134:5;4109:31;:::i;:::-;4159:5;-1:-1:-1;4216:2:1;4201:18;;4188:32;4229:33;4188:32;4229:33;:::i;4891:127::-;4952:10;4947:3;4943:20;4940:1;4933:31;4983:4;4980:1;4973:15;5007:4;5004:1;4997:15;5023:128;5090:9;;;5111:11;;;5108:37;;;5125:18;;:::i;5619:184::-;5689:6;5742:2;5730:9;5721:7;5717:23;5713:32;5710:52;;;5758:1;5755;5748:12;5710:52;-1:-1:-1;5781:16:1;;5619:184;-1:-1:-1;5619:184:1:o;5808:251::-;5878:6;5931:2;5919:9;5910:7;5906:23;5902:32;5899:52;;;5947:1;5944;5937:12;5899:52;5979:9;5973:16;5998:31;6023:5;5998:31;:::i;6064:422::-;6153:1;6196:5;6153:1;6210:270;6231:7;6221:8;6218:21;6210:270;;;6290:4;6286:1;6282:6;6278:17;6272:4;6269:27;6266:53;;;6299:18;;:::i;:::-;6349:7;6339:8;6335:22;6332:55;;;6369:16;;;;6332:55;6448:22;;;;6408:15;;;;6210:270;;;6214:3;6064:422;;;;;:::o;6491:806::-;6540:5;6570:8;6560:80;;-1:-1:-1;6611:1:1;6625:5;;6560:80;6659:4;6649:76;;-1:-1:-1;6696:1:1;6710:5;;6649:76;6741:4;6759:1;6754:59;;;;6827:1;6822:130;;;;6734:218;;6754:59;6784:1;6775:10;;6798:5;;;6822:130;6859:3;6849:8;6846:17;6843:43;;;6866:18;;:::i;:::-;-1:-1:-1;;6922:1:1;6908:16;;6937:5;;6734:218;;7036:2;7026:8;7023:16;7017:3;7011:4;7008:13;7004:36;6998:2;6988:8;6985:16;6980:2;6974:4;6971:12;6967:35;6964:77;6961:159;;;-1:-1:-1;7073:19:1;;;7105:5;;6961:159;7152:34;7177:8;7171:4;7152:34;:::i;:::-;7222:6;7218:1;7214:6;7210:19;7201:7;7198:32;7195:58;;;7233:18;;:::i;:::-;7271:20;;6491:806;-1:-1:-1;;;6491:806:1:o;7302:140::-;7360:5;7389:47;7430:4;7420:8;7416:19;7410:4;7389:47;:::i;7447:168::-;7520:9;;;7551;;7568:15;;;7562:22;;7548:37;7538:71;;7589:18;;:::i;7899:135::-;7938:3;7959:17;;;7956:43;;7979:18;;:::i;:::-;-1:-1:-1;8026:1:1;8015:13;;7899:135::o;8419:245::-;8486:6;8539:2;8527:9;8518:7;8514:23;8510:32;8507:52;;;8555:1;8552;8545:12;8507:52;8587:9;8581:16;8606:28;8628:5;8606:28;:::i;9724:127::-;9785:10;9780:3;9776:20;9773:1;9766:31;9816:4;9813:1;9806:15;9840:4;9837:1;9830:15;9856:217;9896:1;9922;9912:132;;9966:10;9961:3;9957:20;9954:1;9947:31;10001:4;9998:1;9991:15;10029:4;10026:1;10019:15;9912:132;-1:-1:-1;10058:9:1;;9856:217::o;10078:125::-;10143:9;;;10164:10;;;10161:36;;;10177:18;;:::i;11866:127::-;11927:10;11922:3;11918:20;11915:1;11908:31;11958:4;11955:1;11948:15;11982:4;11979:1;11972:15;11998:461;12051:3;12089:5;12083:12;12116:6;12111:3;12104:19;12142:4;12171:2;12166:3;12162:12;12155:19;;12208:2;12201:5;12197:14;12229:1;12239:195;12253:6;12250:1;12247:13;12239:195;;;12318:13;;-1:-1:-1;;;;;12314:39:1;12302:52;;12374:12;;;;12409:15;;;;12350:1;12268:9;12239:195;;;-1:-1:-1;12450:3:1;;11998:461;-1:-1:-1;;;;;11998:461:1:o;12464:582::-;12763:6;12752:9;12745:25;12806:6;12801:2;12790:9;12786:18;12779:34;12849:3;12844:2;12833:9;12829:18;12822:31;12726:4;12870:57;12922:3;12911:9;12907:19;12899:6;12870:57;:::i;:::-;-1:-1:-1;;;;;12963:32:1;;;;12958:2;12943:18;;12936:60;-1:-1:-1;13027:3:1;13012:19;13005:35;12862:65;12464:582;-1:-1:-1;;;12464:582:1:o;13663:306::-;13751:6;13759;13767;13820:2;13808:9;13799:7;13795:23;13791:32;13788:52;;;13836:1;13833;13826:12;13788:52;13865:9;13859:16;13849:26;;13915:2;13904:9;13900:18;13894:25;13884:35;;13959:2;13948:9;13944:18;13938:25;13928:35;;13663:306;;;;;:::o;13974:510::-;14245:6;14234:9;14227:25;14288:3;14283:2;14272:9;14268:18;14261:31;14208:4;14309:57;14361:3;14350:9;14346:19;14338:6;14309:57;:::i;:::-;-1:-1:-1;;;;;14402:32:1;;;;14397:2;14382:18;;14375:60;-1:-1:-1;14466:2:1;14451:18;14444:34;14301:65;13974:510;-1:-1:-1;;13974:510:1:o","linkReferences":{},"immutableReferences":{}}}}}}},"signatures":{"function":[{"signature":"allowance(address,address)","signatureHash4":"0xdd62ed3e","signatureHash32":"0xdd62ed3e90e97b3d417db9c0c7522647811bafca5afc6694f143588d255fdfb4"},{"signature":"antiSnipeEnabled()","signatureHash4":"0xbd10bc5f","signatureHash32":"0xbd10bc5f4eff6b94136a9670f1e13dc823a5e8d62ce056a78f88dcf154d4eab1"},{"signature":"antiWhaleEnabled()","signatureHash4":"0x57d87f0d","signatureHash32":"0x57d87f0dde6a39c5b394c4ee403c276d25244be1a43e6cfbc0040b36c9de8225"},{"signature":"approve(address,uint256)","signatureHash4":"0x095ea7b3","signatureHash32":"0x095ea7b334ae44009aa867bfb386f5c3b4b443ac6f0ee573fa91c4608fbadfba"},{"signature":"autoBuybackEnabled()","signatureHash4":"0x3bb8a8d4","signatureHash32":"0x3bb8a8d4a60e2f77a4655bcadccbb943b62d4ea54ee82874f2df110639547ba0"},{"signature":"autoLiquidityReceiver()","signatureHash4":"0xca33e64c","signatureHash32":"0xca33e64c7fc4c26321916cc16cfb17ea12c34e3cf066085625f9e4b712df764a"},{"signature":"balanceOf(address)","signatureHash4":"0x70a08231","signatureHash32":"0x70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be"},{"signature":"burnDustToken(address)","signatureHash4":"0xeb31d847","signatureHash32":"0xeb31d847395a2a899ef63f708d9d4deb94ad00a6c4adedc8229e582b0b1fe810"},{"signature":"claim()","signatureHash4":"0x4e71d92d","signatureHash32":"0x4e71d92d1cab44b435a6dcbe7dcfe75cf72953916cfa3842f5057ce194aa60e2"},{"signature":"claimable()","signatureHash4":"0xaf38d757","signatureHash32":"0xaf38d7576181474f05fdc68ef8a72cc2c45fdebc03b127b7e1ed3ae0e57ce844"},{"signature":"clearStuckEth()","signatureHash4":"0x89291a8f","signatureHash32":"0x89291a8fc4b6d4038e30ce49f864ed6f4ff392636b5fb66f140cdb5aca92b987"},{"signature":"clearStuckToken()","signatureHash4":"0xd85a2828","signatureHash32":"0xd85a2828bc4fef8a6a38bbda274c1b5b660f37ce3fe09eafd8d0beeb41dd899a"},{"signature":"decimals()","signatureHash4":"0x313ce567","signatureHash32":"0x313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9"},{"signature":"distributorAddress()","signatureHash4":"0xa51af4c5","signatureHash32":"0xa51af4c544f04bba39445786f398c72a42d4f634ac5d1275f246e26edd69f6e1"},{"signature":"distributors(address)","signatureHash4":"0xcc642784","signatureHash32":"0xcc6427849a7605cd43eb2d975f3d3fb5795d6f677e90887aadbad5228333b491"},{"signature":"feeEnabled()","signatureHash4":"0xa771ebc7","signatureHash32":"0xa771ebc761719a85da131309b16d980452b76c8c3744bbe62a3dd38dd3aa1535"},{"signature":"liquifyThreshold()","signatureHash4":"0x201afaaa","signatureHash32":"0x201afaaa63256c22dd4627cf5cf70fd065c38dbdc963a36bff649736cde1d133"},{"signature":"marketingFeeReceiver()","signatureHash4":"0xe96fada2","signatureHash32":"0xe96fada22ca71cabb57d7acf24a3efc29374fb1fd577792a99dd987f48090e90"},{"signature":"name()","signatureHash4":"0x06fdde03","signatureHash32":"0x06fdde0383f15d582d1a74511486c9ddf862a882fb7904b3d9fe9b8b8e58a796"},{"signature":"owner()","signatureHash4":"0x8da5cb5b","signatureHash32":"0x8da5cb5b36e7f68c1d2e56001220cdbdd3ba2616072f718acfda4a06441a807d"},{"signature":"pair()","signatureHash4":"0xa8aa1b31","signatureHash32":"0xa8aa1b315aa29b719412e2735afba71f3a9420a95038b81fdeea9441e35713b3"},{"signature":"removeAntiSnipe()","signatureHash4":"0x39bb668a","signatureHash32":"0x39bb668aff43a99b439e2f5fbf92bf97eb1d2326c057595dac9995c6a1d1405f"},{"signature":"removeAntiWhale()","signatureHash4":"0xd7c96f24","signatureHash32":"0xd7c96f240415dcf6685535eb77ea1c16064eb753c5dd10536f0ed55a36442cfb"},{"signature":"removeFee()","signatureHash4":"0xefa4af4c","signatureHash32":"0xefa4af4c81147a7b82518db0037e77e9a9b180eb35456e717492ac99b9a8bbf6"},{"signature":"renounceOwnership()","signatureHash4":"0x715018a6","signatureHash32":"0x715018a616b5f2044428f6fadb7deef4ce9ca76ef60ea57978964ad137bbe7ae"},{"signature":"router()","signatureHash4":"0xf887ea40","signatureHash32":"0xf887ea40b0ec521bf9b9fd5dde9be0e9c958a97ca6282a11731f3c99d108c1d4"},{"signature":"setAutoBuybackSettings(bool,uint256,uint256,uint256)","signatureHash4":"0x048c7baf","signatureHash32":"0x048c7baf25e776d9d0ba19fbfab2a5b0c854622f36f2613071ed4d1d095c8243"},{"signature":"setDistributionCriteria(uint256,uint256)","signatureHash4":"0x2d48e896","signatureHash32":"0x2d48e896e58c64152330cff655f8e73acfbc46005c0a644b9f5bfd1d28eaf65d"},{"signature":"setDistributorSettings(uint256)","signatureHash4":"0x9d1944f5","signatureHash32":"0x9d1944f572a479a4ffa30db2fd1bbd041cc2b8b9cf446fd38518045cd875d625"},{"signature":"setFeeReceivers(address,address)","signatureHash4":"0xa4b45c00","signatureHash32":"0xa4b45c00f2cf01e045ce54f88a2de4f557858c568734031ebc269353d2e53a59"},{"signature":"setIsDividendExempt(address,bool)","signatureHash4":"0xf708a64f","signatureHash32":"0xf708a64f144a495aae0e14a84eb9ec88dd46260afde970015addb6c96a89e67a"},{"signature":"setIsFeeExempt(address,bool)","signatureHash4":"0x658d4b7f","signatureHash32":"0x658d4b7fecaf2f3228a126a6f5f5257ec5483f03a7869c57e3f4c8eb5b167b97"},{"signature":"setLiquifyThreshold(uint256)","signatureHash4":"0x49d55853","signatureHash32":"0x49d5585326aefc429528b7900b6e64b860fac5d3f601fcf52be5f56e4fbe5989"},{"signature":"setRewardToken(address,address)","signatureHash4":"0xe5c8c572","signatureHash32":"0xe5c8c57265fe4f376976a060a312ab968d2439a8a6a610303e1918dd8335bd73"},{"signature":"symbol()","signatureHash4":"0x95d89b41","signatureHash32":"0x95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec"},{"signature":"totalSupply()","signatureHash4":"0x18160ddd","signatureHash32":"0x18160ddd7f15c72528c2f94fd8dfe3c8d5aa26e2c50c7d81f4bc7bee8d4b7932"},{"signature":"transfer(address,uint256)","signatureHash4":"0xa9059cbb","signatureHash32":"0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b"},{"signature":"transferFrom(address,address,uint256)","signatureHash4":"0x23b872dd","signatureHash32":"0x23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b"},{"signature":"transferOwnership(address)","signatureHash4":"0xf2fde38b","signatureHash32":"0xf2fde38b092330466c661fc723d5289b90272a3e580e3187d1d7ef788506c557"}],"event":[{"signature":"Approval(address,address,uint256)","signatureHash4":"0x8c5be1e5","signatureHash32":"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"},{"signature":"Buyback(uint256)","signatureHash4":"0xd3307567","signatureHash32":"0xd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e48069"},{"signature":"Liquify(uint256,uint256)","signatureHash4":"0xd2f4e974","signatureHash32":"0xd2f4e97410796ed7a8c179e2bcedaa646a77cc703849019db2e4a1d368473cff"},{"signature":"OwnershipTransferred(address,address)","signatureHash4":"0x8be0079c","signatureHash32":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"},{"signature":"Transfer(address,address,uint256)","signatureHash4":"0xddf252ad","signatureHash32":"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"}],"error":[]},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"match":"exact_match","chainId":"1","address":"0x93205bf18B125F520f4e662BDa8Ff1b4F35364AC"}