ETH Price: $2,428.54 (+0.03%)

Transaction Decoder

Block:
18055271 at Sep-03-2023 10:07:11 AM +UTC
Transaction Fee:
0.03671340415650978 ETH $89.16
Gas Used:
3,057,810 Gas / 12.006437338 Gwei

Account State Difference:

  Address   Before After State Difference Code
(Faith Builder)
1.926159263327890118 Eth1.927076606327890118 Eth0.000917343
0xD13f87FA...5F8EB396b
2.563154015130662548 Eth
Nonce: 0
2.526440610974152768 Eth
Nonce: 1
0.03671340415650978
0xfd446078...D93A012d0
0 Eth
Nonce: 0
0 Eth
Nonce: 1
From: 0 To: 42480889980790579834778058037436589954623476948903193794469393279366576579249753391479744790091626667334207039352696925466546277605251916447800695671172410980327711834333929071459294991736094342278136593235451266872000678736803324831928325451566271089384283233644731510600618795341792271713089955582965906006726710618618039366603579870530340791459235156130802685300722520584487875156026504107443981271712539329588394392537362245973668799585585819653978116535029781079660801690685466625102057976422956952347030805428526872661415265337303436677694450958488784733425045335651566622601186737111900707839537230369391430249455170481884313508175357269250741374507915656002211387031035561053355818864902585996017793472716344434944844916285206606203830592484511998703214141769579907693547077210465435936677160243130349875125840296746360383600451923915166444318820329406613039187154713981094790422114001392603911258246030273481206406268473450858146651880817386779478475050079459290398079455268543080791651277884490778139890899059088086873510668969232515172183606358891345215687016081874409757097388877362537009564679389521620773625182557546873646156049310077560056391481498098668292945350629355421586691333407139566405824722535322067300117491096154474282697818264209620081077788882123823672890500929231347184687518894723076935382092059014677159158465683075265238389902015303380156597263400958309169150426752095036159761852564650730804716622577823858826739661290357089612130178962747317638875505966751580077527385819265166070330831252674400517381376812934163088218935124468353557179339004455906373893365297176052623919197586992218630154927505103415954535505625348752617781572801541167672439973766252007931392439144322766414158668726756705638696958590800978553959091313762755679112729378145217536808070059989774238419841521880041418276433938578954794337399100993106060436758068265701820814680111136883725367152047018759296738036719892075322377594772573086472417621050623978033748053713415645044855426307843048749034499342424118570102770757164822803800616150029222578851136885038219578500875925418465297369584324846438379077153671580761056718739991391146362423895300062736667266883417081126674542682763041965699140418437481605394383330224553909628175621648762665076632499421396455330309948601810570607093417995735504187721133702824309570205309905729874555951531946243567012638775482209486342352004729732918956469366969100659686749323604959561048178516695397129454224090338712357181016403406205470376136671381378259790363745324283980975552924361633784333006391327501489941894878888915228490427192521198989674627894341987628495885345887784744115876555540593099018421950963069042685180841100709067856669119204724436714026353264856541200003127392925362672031941116681226449858069770481549959804074442675961904506822904409674535804702853243069385536557656451282507380941287449953334416540519077458775603156556741140335757620639730901514632840914365064484698366434654525557060857181799679242362603007140088435299298593112097785795476481343764435706950913064398743175409339067267514148335745697753397962125539699631677307407994297969844657500482282775926295198716432509878170001057757626255511613115995938826177192728763657273735776639736434027478650896091605593941973203481152640498415819257978678577326660643229517594699031297254791452786140985881865762168960756524624604601232480776662682335519938131689129141182364346261406045296041262916746933977101162688722236578429456786718087568503519745586219668277736635103383249868246475285947459100476240315516739530136537401208158327547384793167746553417511912034831838675623995004940377819304151359963927691305674159952538819574779951378599232156320806356538006558591859015429323438896559178880435116377202461985233037098771977064541117799664371883617202023686595128445956996897357017418230252238867832800501216660740667072467828529873422782375624401320200034737903430878579146539647309992523628538140175365391448074324973283330417016884272024080534417537493024885334653657820144310131542132224605914545931298110590713645919441772818973853846216474847016753188351127154735113290303759548399301235167672754740727794880951181952246645118456531992407289622361104804279108501301461874845356146603699350595482151445287333673265592073677267863242607532056204824104182342044173164429466274998683420826410339047240140059191021960468691151086380374842039912493225331244938889817360708873064657236537041365168682761859462828208730958043661878214037572526090647901859727472058632144500832546705893383271093543950837496707661307001044857983062719624830250237410984520912654089991700210465058663992290317202441702162760231748224770134461628967496275170213280567950558538554283628132107406697848321826219027686391161561477775489648700911563199661033024609442253736704684015454218389576606994233353694905495224521052844851737554539648500273731198413130171760610769618130991439436988430658734552269396377851379283030271499227976738411628724843213246675522543528448132524368634664488037101402457529971023803598125775381048607670611754138655523269456443376228210004210625658917442954301459853211269521665300972237277571833642985071661576973602369222293519172107758219060140988303715646899320128477226667470831796356899653002011285973688524895946541904478134874746400535554259600741485494344437134442179146928042992113633077465388220955411408345818286060496482050145803047631926388239441738950149773539012914982482836435343128942483981215270575803607197231809327523232339420753266695012040475270338663772464243096415987733401266068887689139336264344237499950472808177686197213188005933704503771453272477337748293862841319272619736626583963735155393615207923517546838053507053769938008468767147875439352038170574036805013363860122490263049643927029764299574460465653347784892235213096415072492040203657515478369424194756066792872940740756743963837973236538863453619445285811158482071663723517706025780362232071952334356996233850786336117137903708303460055102995161352173674083950338648162894766098047129816158220216652238248928229313508704867020786048887709226738022147694275631393202345617629280143557391611329441976857398833052638399860699037494302469113610983091828589584123133925290858660044752439332487091162041845935138802985065811059879367478511041954445498764209865882787474867908167017649431726988599686399935307143591914356513249193821358397331017595006174197337168504345116596566825721313793851629987191594398308624564246161722011020735754975283397414000630813721484051025832836619295736558073628693411978362337400915093743298149957417569477978980677289170853524750357537309319880285777101438688347937672973966670815261032241931620617599470304180528372617823775174538163640231460259815095056813544910800267486034149309931995704367467263330006959656258998589237386620496267335021754230122470387662799325040525726550563400162234962594988604546590538514274744405461735607817679309162625670827031252795745627327363394558578659227447788292121949036207341720853475812841374273088587187700711377355822283720445638893791450158218862732307255519237760338478749238748761655272599712639500689336506377628642900637735899318153992551414565488552942355983310269797740443699755065483177587518225907911653571560536872105420250192152385376743925899188400174374570863098477493298397588847456292269060041770458678575741789216450574632879174862009553266480610042044795960420026571310438293662159077443634835721614903794491608602026906638031329302810810477069024743519163353293094278877901759165405791199408641790867046445709585100204557307106867924515430154502075718882699255486011349870751416492198335691644050736989122894211145969896808881655908401403789991821379290779313808090410690398644453939038824781964104984384337772984527683613630923482195148368282590841717694696611395659989504798807208535030487881122300326968520249676022002919634590734025097692471524770913346753078456938824297677552364281646944075545568200982049697177083810844994806060127042096943084337405989278805708601919612781976194915681700408615084865613833551027552331657091746208573261999825599445090447285194391834549919086036637466956071847604733019573519426824527171738971988081508778675528229112350405748659888335390314519684154769067153008096218330469058716068400734939807257026538274122634921088987005072690266713228816599771473490388468571069273025204342495324471252962527362897039945716993286141598258665264479062539137945466448002644708299980507024833223994415123157943306716417251695591100834550841885369774148212613378454047978188741549861087641934227404756307871908984742711787334400860086057899534267765034056628335331865973579108587842717066036872328310855156242351473920971722208113194655178423602139098434760372090930662142646292531837044533958017764871052214313604259470078264485007702184578338151262886469114571778486937233882636748765562059621809272111695364384118029558227181403635028659715400825530049277505526431594355104729331806822693247173784631053809275140505712761139996030557987960217895689313978400611819476428798875548276596441378918557460439217363496225228861518646123721699629665898242078147890656300118929577166668013559035248755903049241803513673579402656448620414984099467410829993895581256600585330959463840164892413854057276950687487555815443141186548628872447153735949569098230536718502331105387501731706091383590762740844766254085778988308788563971242980170828644297916407493237226050225888619948984323427734561802360585666950555986955010946212467199846479228626539745328481532044687189075581364968503536552843849697987976430927003150740141718790816683892719795461886652444446262720092638849425710824356200135568996658266980097562768203632440782828986199863281686111652818373166908608899043510340885384497951380945150060854580641055213051917234647311811486156544091830416810408515285854039803531789078207597198197295645630316583221064502786592658799021948188593350998008073654365313048108750177684476112315119279465574912050279000741805467449845242243008093469089963379150556631042072747089757071623189882508074199513208629906970707652385618096509039783459845392536096445587930677357499290499860020785356240686031847960747857980360552755603018267912090713198747876598418255355385452275277136782679067472628908034000745957235814922370390222724007317568965026497038503685265525899029157622065234941924214949219290160020825891346733673869704010324189798015840690368910421519726801713560451078296057118228138903587494098604437056130893465625950618147879036597586782393363385168827169888135415269604233356713726681167829676842821680041579106334097956436466976421795985570102412206479728836483452429500708107833249530982704812822497458432680737192232345124028687665376229764655149414807815649890293639153723564009464444860251665088026970144643784986563831965752976200798708775620654974957842927342011409083642026139438282727759319491498819925189545750409063543325806702661800400040676892147736694292027577664209513575774514103469348227707395628943751292664177310209158173063196025411336287241991980145393346037996236749263776589497101295475717758846973254927277824964056667128097348180037708517819931132132730343719578242685567065367579187132167863839765984771078621100743215460839316682501469598759427385404396965191790289605825777102707165455323818370274603115797718384173732033196037665380844758954622723963239155699102635708320734922275708381201473076096880970272140809480187324864781383058645053688320712447310165759290595830092252287771032634149719568904174424585305000402086903498415239410282251082156190633068898512895460204371387444108785927132019014048727248276590061722458826212636126107531067888976289645540829414015003247359532061916873067184262539010199206908839664199193063708135627179761310081147317770182245348620301899860889085719830331618776478877342000928540025442855606902339010855616260876799866231049516268027527415138551258076017279573504677833259039937466538536665216040845186584539940656228580837941711813216652590972374492780630295816983406181195528134910110703942356482537529019960260435179514415790555833740601823279301619966543003053906830815455642347581250040728314720180634627148021806462870699495162219278129747813918066862305595228489462940724174042942292747237259701501809223085060098657247071947546875814331364071916409739811116028919344289044001123882511531646497540118893267845963364140845046651345658137288954081538917559611831328371694220271468435618295256412875408441047389571803334578670487680228606927578449570599569619465055783139996479846921924465438299623911549693242109113791393270041110380890761760278646044932869041631537266800905923389979291496248690626732674119482853134446573917744219345925996733722243176951329167509860254384641751431730804765554779722902294946884152730894219666530441241079250268621665078951887090249440073227058104809566846739786888227323320239789266810959437270894021725735611268211917275777732411891187733291187340338812051567580548029486917954592163772084334953145333274127884173648966743268100670188410932218174598488355304748121890846388031383660267164546168974001097807297468285862098764589685681594860356537398462926159782573721417983337755577978517244732930635124809114115705725255458079059564505165868778468643973880690916681269034881274522694527222987887012605219072786205048587795749509644114573676607182835322896093578955973229968993707421207459572184228816239663760424133766409220286834960508665715189186433571689847066170385611829911503812594204059341223811125627351005362824402403594817947100164157561437610662187105697959259682969874497802480044098688349014653755905791984427943040001913129417656485670939897085873245915584400045619452427775994139387928619612365012558050007164131458860895967534463635607705141290805019094051027042449559551119322522474563155444535753257778940033698967802497656273802539488190043418117614714091823034447705283643662658915838398140473263633626095537792740195163996950198361382698649382091313578485841512037201988168020185791110381521082379111667952979032512781895691792744549558951426450901158232122754493408628647942636694057897020212634051311038764206331881093878954225209366140769240515193568364230384725993667453442398597026558119427777262421863332576689048349165976907359503676906289314588233486714141008297252322157094032472060218202464500815071002988467276537664589511988225378627012379982167087285246567089145923598901300022508678580506615727139851218375365546415068915417532569004982081658729514401161990733800810898231164139067406710525569399438151033914545844635276816406529122253497293300134271271426379948812962502456538265332156727485237656482430447961183719530705957420450715396492096828435292475711531303726816712520345731805111665139133767645009622266570624054411318048030744642305000536662684611974796125334440964156151914197401974074475153727756732278440241985634817015154889625628368493982801865884427135349110928995642896348923873735112693445016122018730616306909032463679236640944605739826002506199847501756835803654130848330092149880668514380348977880424326980336751877877864248730757092935670410510839873876727321222855931790763996597227003140930286126924915538748706096129127528014343546593636299403424394160261890398117566878081385363165521946686403593965173147462835949530718876197112231625758567939602609304580940366976196111186566042993440117945211039565624901715270548890886276047500732059972884744225551413337156629557408777420590030141191274004910347121990245114291109846590190200848004552659498685220484707230711768290785843434328109323845789441912521104633666272071661717751369897186100937224485024240983645272767719078806920970003347421840355448697232113690209781015350033058688163753586234211087229786498620954871894798414776569545145380024669219503587528104697828083280655410683164079327010169127928207470752050567790405789352560727207647353985793143360659651543352786177391651235107217244721700954888405801171395825482117395457089425787818983545886231715420636717021325292832630609858915876332974392467387707642838487870067747721034758387227350254560129209868079959057404412465819264656672434729123077573857215241979403663688183139540617519674276523054346645669120436437066084263806505532961351207977018629257323799693294241393057303981232960365131726631064341415265508478609445859322714950269999280942670707353731172832313461354762078202528634026054740650216918737227748525504305780557596281473262331901947775653026649487895558530853461780941870408476304036695164814676032431752788998147048905119155560507386817381771400047747725991450256954809900103041053829749994940631747639591044894009419038306877849408515930056678706680805144035838418329355760309750411009605114272263851820903274898518312060586174250469526745735867291762855455939666400157479371661784398230709709064198816964307487268138080946263716248774528059666525538088661251572481387359395517016370460480462113038963894494616918760591414735870273587788918871699035138051400099568667695216554895806198564512320498139474287915615027356207021088665881044651322339376202877739663824271838235979750411422143343692617140735542425358318083983318481772629889009349090080582226877186310370181485098704422221606790974374842743342826026554753200801502156028588488563910620176384042477801072491706902713317030629836504010683145726507286421218883365095941705125067945156726775528240955000323716288908591126627185177756705323944583390807304876386390756553888649401874694357670274746891853881893268896811580938521355245465293206134941709477956379058434856632955667496142491765301499050319107186369548657148719440735979323715405692076370635743996519892141486657357796802814433584228447793190054618963729021227381194386977603928986952817748069885721338828755619414369234749600797558091479252808464299776176123949207071671426402995627928965889446687602749533983444741185260099110665102731122641218953249377344494464224667486299659661608368166617167611691154936141278995864194617012845868432902693028470117731765974404268065514598813396621244822517036333024131978762932656320440060532038683195286481010960417962693173681084988567928000139601942328407741218618257630309350953352513640842125425588700134854903637079084820336804521033572353983742909968442741866619446199106753493026736374994617464486343597703639429015603475327445509835473825985538268941542801267349860872434418634090056158350339833173800522691376934637525382064756381345291300988212471869840326489661162557744627896719649245058002638332584906049636515974412327106354155808234682456021107729075734606539593224869307367077895035729809387465325972652288107909244466898548606425819604042779879546946484610303941838899422545897182399380655465464277375361088367188650149382885195404161444198872532867558398322781925231453359108251099813471904024280780368062372666214214366425646464923359825465986534283318532199325595715889599415660155467586262121239036397900738665689210888714906672415345510231770115632029434201499251049653223463402207764342008636283839987252992331062789081494207210796964208744109998782154316432761612027621789478440984489430151364224285504200514879510337461334057312707348500747463813383392303002581579611332219399158426294654433908872951640115131335798889627996447812682926361279957405515713115212318379514780152971859651558158947465622775297930688276545504630294913621503498043958980044565104426685701831926560375694816857009494454303430096192520215156012144457292444313028000294672982989258737457699952457263103896117239905461507847422597337043972248623572749970986063705737437846948962426933332891243301831491275036997310175332186269918381589707447368085922401761263315469938762494185937776433650863772355456484368877336594847040350123498357899265934907054562620264629777387286189258532230428853044583688600702740614842297722554001109338624897899056040526417711246783090161598849512038718330883120709049733222313668315581893306060280775155895076333310637440523781159114456502830216581199201710288300534804843130765942165076235827736734082315164700031962966499496624736746459166682662793703472290609968658914778072119354075565927175093918907936911544433990869519042945797840687953724040579537806770702622077044736691414383921796749531695625295527493198569748728701365989841944678293389810095200689728673028658650697947488113158603564787137020714462820054608581841880511874686132912598244784043374013969623508975518319392509424136081868567649414445264282767700855063689255444613097574481111804612890061813737093775902090825354035151891765748864557828342464909822042251660279834141990692542131423569026129321733151972633191513206822425259529263274222867170913143955879059964173603694346228665784029690379049193058007996583416073112553135875726644801640839826677388339935064558450318257025285672778747800254944055958037063922550642098559564991714077770176866609555965455225261882914689990820276233142609632767810563423715657693309920356017111901411553234092647837411539254677231846312874798143053533655262249301145313981926389100106526057791138271970760055235648767304289760842826739883062682875312422413291872071217556223337952930234021909892915019994671507592281211454168497971770309056353111865730308921527399034042161664940859732224714675359765291756757164207740864073847673702004815723929794053646816623483516550939404262843086728229678734866401787903288641241809791482047395612876774290273193910398364223650334749576820499145154061800708982986160262655230994975107675077574918186422942456770564859280484952352551311226468882473679491952933559263958637068086311941898891738800891382102392919284959753181907832319839060197476946888476877909283663917339057330096142063128283056030341844453523010288632960845866922269492193368034646803245120996626486823508064433459105696199263250148121839646411514501474864910705030167127599861175039051498649524001837031617439858888471106627414993702702677215026306520265158328667170365352373554267145369789004660118360587625489061929080705216273048050594578091755670753266455731699224024202121630630940517909094988391392053977337329857674216941894021729566973184128363858096347959185263374241979081950056345005726819617715098516368263452914908070763724098133384504786354214670284608058829903418883505644143550579364752662893174931724541792149487282893887306594548359092128147234001893820413344788498924740107852750610283920549747751889712913522787193952538900857181915160242265859385980009416632046955186401270056837949664028322820109652099378372936925735898013834818531660399188776429502445579409455305342999310841134598812857537734262331457697471661653388189192489153908417340400465774417753976252669646973941596511163206776149550931492127217920939568383440582335422005140423660884919346258038353163500536284589427429981125044720689371029743834449622790439875283186471709555623674238759350928954378156962320402854803411683186055121346635617798144907388575634917959848278627551967843422749557886605555659118749751124899454066165976260235642170755473832147244107336934823311489042180830023744103526675044193436216933059669494383051522585871155309758268918825038549392398924809108890774690493647347665366078732874183190895023237777260811338934986580567003653580700162687981659054728744516941523704264625511381828322749842229731111683821982917562178050522625818600774372379318951792674493171078312431348066329719652218893142072139342364265922519243321061459747843110256648407263022370327205335496411283037759787286231926514012192638707831755820605935552911768050353118022072686969560723009525450182769576670294049975675327651613726638468991117691692450810124717018235764442369172147815961815124132210681973069436241402950271525379427604292376675239622159385439267600290015444284605774704856571796614465958084522615797317084835219483920757092939320713009617938212374325645857611279793252829152470506449412681741958719871722415864208447334085401379476300339636775974000719818018477926629241315670452038706150941917606326473310982187815240689611496428276571436795225926374428250879327884186037341678911296805345459211095231009276808828117982489179298296694713516418633156211107046519718125375655130598926764860224652694310341329123151084174425403097798633979046932128811624080380350951303571602214836294384198415474205705989511717034944962635133520370800958390254717017409388831086809999571907129012270543646689400205156494510669731468917756310358621037478678261288851635898082826273278133251448037850127768638299397026704914282661273018520962189864157371994722035516300339521470328707258894523222581832775173762188029590153982496389333278081351278653124528787149683637869922733076029107736800855618798407191066748233834152398225246681916622210346234124564849320939355770375082137144410185355529746936411704856976740793010595762811415878523783469928440240721855150182738068471123457853940175816045262773357305317822649717088208001713122214817858477472897020834937726128957931488298411009172671082606231201341478851785136006868808154664766643774000945584125305217575648909582352754126311576418277608207778320393324779680608832321166297565828645598706655482352974927924978777348594698809465999856593972340824612242904015406947616706057871911432110524865576521387923398290738077073818013915129741554764813111021948237528430549762888025891064993639390881290890783829889664319580452490770166306940529610988718495509637171223665087665464781453864536953873002320276866632741910722583229309642718566582004730827003692995991361582542873942625545514858085073563470518339295162396324439428393288948219440688372112618162931952870250409514105870015086684227415994037519476712249007691694992042078004459792204854976672788769400197178676297680835241565466670241839220395804568536459116363254513985163275529656490519071080227374464405941281635259635899478966221269088348914244091952611207779557790880687432627286622998034239806427399835571894009780758919915658085557702997584469310902373736893502639540480500307532302130438123170272884932539314175090091431190276709971601377025955785682634773192817176473949212332984249731202302508804186318226701934142144930954914035348977894364031774168898781897877298629860955942160784983769419255392927000139539480067239609660001748295649766854336431181214254676880214238283758496981903291365079610547454665288580302684087461020449395876068904249157561228510754202634363829186251723034891121043981258323982519240082352186044723426547911554408198477253780180440681399646308477351531673488701456366384258133412937003853303817301601156794475403845810335467874653297504598543347628058091197759019982892324847240501173906328107253038741597012619849594785395744992453859951866030341742766655923465134633920248320025849506246218056294221535428585230274776681763728735243287199514620370924507576240954205024014402891610596894433642291987345344635460486744578824187142730901538936448892373794896256154143946465563248129902391145942095761396068880216561297320320351239415615723158178782124104026164055527372850385839329160593035304091315097881378077084970700065854898411866332801373190075437150782575768280514090499873358079427501782832632924839674901830269266314776493239270271875708153685794164073577979579653229417923046470513969171119047128356542969475596127205027798287980077853885231308478395240733514831747473755540800810357098618493789656031572172026946858289329361155848673602210361618918455858201681724449504129326508417564029415985230613520042858955002590179684228206962843933200154513592104384815821884095738225655655054481445954280959579166707129479575602920810310769166799547716395402379735952832143598970350756486174147118140169226704441564060912688783311936978258779385178412833181790579194438289756296934836303529273975236059813267128676649058418426749810821157195196700853044078038077502720066029384431532981941530550977150385829614993099577570425841627471031409350109195241448795270380179447510893171813090034051533145812122054330544050579861368013393809300962360836562389482159058422775127362488157827255667272164090121246166692090218058778994813128442953575672531493108014573896856730290041107398312876458284231375160220624605854225677594805241467250461559238812984841332661820046699937107978692837111606717788662055987730097556091040065503496161411719954563186534966641056271825823327321942548355269134013181505839054070067092428732289196537612079341616337312313736177655607660958377385585696685195315852224737718410748693153927521317276051520442075406033392693489856392490293230032865982455014153861712785055786423405971461496924405713251841933986085036557463948004901461823990689222443696917965984218486290043771754001271777005940250295341741648561945399550899225028135081119234600374049427689333636859554178218161125504814757779580806538625768233968206681991514703417153218300376213172338317801527553655509112052590685901165125582248961251220404284234454079314946965231922010090013642884035644520323331642399952957842262533940620454640824887413014491757511825416875559047925624894147931807692863329021036141358967080207866167227547170529551631721500401431239192839753298711587916790517918521754441393563769429000596177877697118327893035174938544821223243008792530238680857525325977985108648112481681891605509039781730181825437309908252307811886581347344988399233617611710124333656053149373449760260430291247626260573476323852339

Execution Trace

EOG.60806040( )
/**
 *Submitted for verification at Etherscan.io on 2023-09-3
*/

// SPDX-License-Identifier: MIT


/** 
Telegram: https://t.me/ethog_portal
Twitter: https://twitter.com/EOG_eth

**/


pragma solidity 0.8.20;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract EOG is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=1;
    uint256 private _finalSellTax=1;
    uint256 private _reduceBuyTaxAt=30;
    uint256 private _reduceSellTaxAt=30;
    uint256 private _preventSwapBefore=15;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Ethereum OG";
    string private constant _symbol = unicode"EOG";
    uint256 public _maxTxAmount = 2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 300000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1500000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 50000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }


    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}