ETH Price: $3,785.98 (+0.65%)

Transaction Decoder

Block:
12376680 at May-05-2021 09:30:24 PM +UTC
Transaction Fee:
0.321775965 ETH $1,218.24
Gas Used:
5,107,555 Gas / 63 Gwei

Emitted Events:

51 UniswapV3Factory.PoolCreated( token0=PENDLE, token1=0xC02aaA39...83C756Cc2, fee=500, tickSpacing=10, pool=0x54514ee06c8c10029f631eafb0964573e554e319 )
52 0x54514ee06c8c10029f631eafb0964573e554e319.0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95( 0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95, 00000000000000000000000000000000000000000604646edb2967fa962fcf6e, fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedaf9 )
53 PENDLE.Transfer( from=[Sender] 0x26313b3c868b59e026e0fe71e3471428bef6a3e4, to=0x54514ee06c8c10029f631eafb0964573e554e319, value=2169214599653705944473 )
54 PENDLE.Approval( owner=[Sender] 0x26313b3c868b59e026e0fe71e3471428bef6a3e4, spender=[Receiver] NonfungiblePositionManager, value=115792089237316195423570985008687907853269984665640564037288369408259423695462 )
55 0x54514ee06c8c10029f631eafb0964573e554e319.0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde( 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde, 0x000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6, 0x0000000000000000000000000000000000000000000000000000000000000000, 000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88, 000000000000000000000000000000000000000000039683af7dc885c6e5649e, 00000000000000000000000000000000000000000000007597e66164be548d99, 0000000000000000000000000000000000000000000000000000000000000000 )
56 NonfungiblePositionManager.Transfer( from=0x00000000...000000000, to=[Sender] 0x26313b3c868b59e026e0fe71e3471428bef6a3e4, tokenId=924 )
57 NonfungiblePositionManager.IncreaseLiquidity( tokenId=924, liquidity=4337561600231795876783262, amount0=2169214599653705944473, amount1=0 )

Account State Difference:

  Address   Before After State Difference Code
0x1F98431c...6ea31F984
(Uniswap V3: Factory)
0x26313B3C...8BEF6a3E4
1.201019114933321165 Eth
Nonce: 51
0.879243149933321165 Eth
Nonce: 52
0.321775965
(Nanopool)
2,902.118487162115006427 Eth2,902.440263127115006427 Eth0.321775965
0x54514Ee0...3e554e319
(Uniswap V3: PENDLE 2)
0 Eth
Nonce: 0
0 Eth
Nonce: 1
From: 0 To: 6692769878913858360560467823136102592012463784489264575165570280760558589126574461378858350568451319647664459410923079077208564598397738178767494828922655422985869175102859725537196242972414784706438735329959665227091212277765693404041971087893612236043347323240060478964483956693911474821384058392838194122726790651962717286942512088523889466401580032392404789536524550795353180365095195946593505509549267656483324692053427713814726065385590418307094139581460834648951477897564190771549770751450950857043043975214731275817219849561974320314961921266148987538497027340032536796633437552119511710836141398918885658149281095633642957399063327457725457040322184611500822749186563244937423985982732164535998148403077636737868247390839700662423723320223630648745886782228512826821156264249531282164650917950956242201307776996033989278981277468170373814974921444211953647000082086564597589311687267144141511610718414935843293853161491853181548233349219125986947626496599257930389934859901158433353888133101131189818946391132614738787699199197976609563801135793612477045400427238611629900626292300440789185195550993177696414149787731293094130351751823152165519763851634562513246594410654112766781899566555613085551830352624688229030153203409000655945973681299572924878758423456723817199123096022724170900454415146571650803159092520072467234381270152820522803421530271383390910252389487362886724650111789493611238291911981801020017855095957541092795791558908932283088571803690419222561175088092725277584506516854812438742381115447619881426046569873556305470198502343594522767805643940663294198245797271942010256224062309339018821833383735863402475244469012284566335519895007700141807803476556053766195261412847278290444298790892503177633568153722085579659594384955662841172728749229385503385278425932488297732018192263633140132378823267058375474766638989605796051098466360039862833827754430424198487427941601279925207491456721301383487920561858998495091568795923030602400599791929938000009706801981118091297454089378879689593937331213634673787113662750009913642433950968177624636013606336759678093546004438098854378856508790537221501485003021411980408364950523037747885801821182414014271540801510224310772465253285834204088800867361830912162115831618622288576373042395738042548620340930964669730257237179772884777946980829312459808129327872835860158168902501515030954924938400912668902907653968262405360054662762311384330569784561861320858525101223801788556391429373077238105293426870622255088037150028916597569602828497758401322678223988625411904832883132608881012933505110797906042793188291230134211922271478911076662352159920866476398317254189037531358304890193924571938427939050097405507300997148603142416701923678553490479322434483830694631844668880625306702597320422131073854014631184712227354625136108545204540133878014667850959950104246928118713377276193082758425545509735815597437121523258499463982626287139213447859582749507327951444730596196666711632307506388935820104080419991029515906472299419802206570875029288883512324542393448898865120499458006982734447995311270006919448532678941348564542472207640209934666108401832649835432424162339447108827632112769848629365577099638003600845210881094496699368521787762813020162680590882019060130175589350259374008088265944161309444712932339730114965680503769453337540913144874918225255456240177825218517238118896050100283416311191296187146249843379660697990799628078954160414744499344639637552058222635184855218626161856301714031829076776557459967916835527368814244734603821502464511530202655730573752117041938361099623994948969096524981636734988341059327122206654264543154267210909389728809438365081247282861373202021397370421840765168111220206303063581034258592897403142338565477840642393704127224716882227207622915178420925443630882347779079082672397219361099187795756734963068573460326891075839526487418136554984387639799977635879610913812418205299841088975222464369512193252721744257357762806394989641035468933932235183149627604181069361362118695653994605385626077737792494551347887918034791978634862446683122767532343566424673435829898928922984906885395418974207108940723160310194820658893375420557758896628527937801264586929398804928068169656944298256071127231803138614094573623181793156538974162364998124298884039136830614959844093391241767199381732892221114953379006455393578180978391635328325518025078574224598240376056703375073766290125537667919828579863169625857964814168683833808835602385299678826235499663660494718261785824483426453093714884945082354332596299192396748499645939284800177828543844534953744632239730635684891890984359935172968972685187900954923218632899248057645880038505882486031330853618147964820354182658165648163543089313026140586414480304279341825927995019227862437653058661267021112933229464600364754856734132169299226380768358364840421709073833297074186975706702354988873557551440718570177897635799043067971111357999630908404093125649531658169869109013098903242517013144682711728489058613477906402830537554996154328330289836414168351290253879080033412965473976306304598424611939845068459075048690182820840574692132707083488980617313300042947052349562671582261127462412249051519183578713237923741985544095261085631068819606329271394452016417920520291909342822799809949239185611982718739363836076184058664227507245745901853029675108028554845659384919617482248136987020998240802122550492990167248595303672091755775987253090680300790515394739945697315919694600077949722340737647978334948250433989149964595726340607940124339764140260577908289893559202385950237739503036670223833917707479064610056015285208384291172824781382974851833756563052627084146648747517232817008951853995774221613264351354858554590445944241617197764043193941561793610751163630302713773347316974845768752738973964730837370068558277975734705168447485420505776100154522163414959623421621438160835534634961034904874375115570503563367796702734147142924060306690027448227403302883909775376430244075171148213228685307077285462964962102315369310111209079940735615132946710201057009398472890370397886352960270831313375294885184363245184174210887364774507127418836980173824760243583106297513021480126535686540963009893202243116764258759206605371081729902787806794779845910544143086286415696726278092281879422207867720791335039534845023866659925903752539262890472161073331276923853317515737011989081790143779403407733623967070678707830098194013498248643649752800493805421209020899721346949469499801021332805763342622632118683185793767976941997729809725322983100396543327508398644238783802395345143585611260592907380080293901932070881683960622483709500997800434103535815037892189305911517496594396178467643302564366866920175909527100117515685004918010965449797879763986390739824445786879029658199360392553331951012712521669535982440303829162872472171986248369819391322806317218692845861110895701058385792431596043186323280444302253311880133340998549370978581551977807400761848007124343621040276971998455806165681901271092556883624784217978436859245797326489734296828106326623325581602102980896067005471732171383188324638980538777575837080595666970596297020500038654868405708204526773744580317378922232929661703915949090603451362946667417525203814975472259975023711225749949169112769142602169513372335517795020516630583365749725871520436218210723770821877337469686276541512272205260272320181324042486953959389374657129185517380943490961682209388590380067770455560350501351752135385346275130520316439835265254049038292084640762271674859646966491607341805470218573443225937866823901439086989156074959130631310998387676202772210266692984887464395592913065787796023864619685260147637419766084697079446431372789314259611403827037694938363162274893031030963212735994087524693033999396598540242552152990255372552122261815304617214132819704385658989351308576057189885664918627415737271200305896071933905588180191594017861967053267269865502743817322638675952283654133192479515578396521460775049037723197857681002318070086005253786725435452329711953470715679341024385267853262094940790799201663000777058308251040991101299856279979650651830855871662092284200048446623569066108974587994373289338944151708917669398043371362471909566528725211048363575698180644926549466481690055620108656571977177622212475509830732999486935829171325544869158896093309741585515654039030362293690443415889701825326303203241067298694049500386245592562223707418753551660954010230078358491535858910200110918332674611910971232905702227320025308626024587409905189261555270631347240638912381423248438074815549734888329081569160014953484199790562842329116760353671113141595270448352867313107081858990154704394764356481746217137422737712278096181518318719828490929374812820376308060240668668088621691016580948163167469292678548597333939243940842047671086082093787651645669072288681789071839777302666356307976243153411322983103082648775707778687748309172381292948580146900583350469041107178724197944744147554303116241729559378135641157139761949301289592081438195152292673524480177931444522215442076008322896710240985864920708596105828169629079081148128989124269870737603717705362363530062685205745677084420738510620925684893881700025660717868127510104163948532586371017580663372866442078458409988967170686783219787290635054587454502184718332788229195587720490701296379380172341180958928766873303549549539579482144862101244550345564465336742195533280861188665946165749637109527817497534385383251617640706142916655159272992192689781694910840838067339680764105526871894316776085578914456010410795723132969123401267869976553144621285989075490308060136264139648294358989522249562081022765688710902474293431759509247133971716779374780285537033728978457402507967907187617130046157452124045392316129807090835209093002992853784211585347927723768517511850934880197231168850254961131893261352253603897281237125023725361154263827023060391241552205349887910100574120223507082508527134614273803531142062076715567257120420974438604443223356933075217683679047897419702684864514259429285867981796343682251819291525355159943411696438888389610441408666364939161273151811039742037865195858945149030012558190643224828078740415750683506388775001921802416853659334423004794342094135744161219087923693430868031910736428000246570950982607586750332774618013852856383612960115135528177814769556955692271397858485252376573186336257538726224510223602601562398914264345887389712580166711162435491559549347488139959306851915527463738786310159761918189445135877647970341724650554520002255970158768595837910848741239250990460200333206541272375545295513080387177513075293370176483888355878870393010248361008612877645013011737561640681761423785786134740694073895821409771161969221109239820594267534691124974285390108363103865065235214480999753044382197064193842000993918315937178193162890320390357174055608203855406796849190494069823209679585850514141463349681823124915620049606440130883320995651025247081350108755075045829196990685882415096912021709549018495290123133839414571508258849114034540759988640421315577527287032463156260532592048528416111613003793197221977250782992383656605992546324928973611861236656288794908309964434004381081178230857417010536156656604859601021165333714684943056997158211155820181475794832717087559889193966278930393836996269750749219751279580934158392784676450082502951165473092227226818022879789237954674366332149936583674635511275311521096523955766733206428088681339860281501328206883386924196627320013669948507914674541861107918875323932893386644690429303164806895220997745531897040002460587501113791076993322396009395442389523489041510418666436975539386579108125548368593594504868217170971392535713937547576392357395318835297664854532227360721885387557738226250321364513238315707825554169962787520689071360564489489555124029760357041582648875671456161388908703088566858434476543869254777200411416461242300330325417244468657962634240559127820439243089836737985288424619464667336267705146152075789525524563978956045059444593690287178347659176303044538392163889420035782694183792452194041372861305222002245090711445171138996287488305192703988378249073666756370190109045242796963326774174708330607319961733263320554161567187283991415357082836680813228317027909539411402360208138491133964215784435062901031649060532678694037833074165370825434265636722431634010331794279159449684971920138921555857037394751759620699292252913244729165395960827415210972876660066789915218445567740678254217050359371029091044231412388732404398999729016101136043229645168027020129772024682681448255949875846628905007598252261781232326278538382775850664884057920850046532723323006892299884298359022822546682489982890313982210748773490774423387444479897464858312250999918654960682181692805172375874819285429047080746998592515169545771345483861448259265753334396271691544175697038176785732637892458688157852402558024256332520761601512366081081401132581020031998835812317797011554050665994605361127009065509349057051331962669883754212702672814311831656284142542113536769483465164536845759517025768372130137979890718883366042345025185933354397119400211023648888967112030578834730658988573406387293269688923276613520725677875540283711031460290474276213614392650160853231988617650980384175962879489977656747888241793266647864757223600291214125950404871448130400835816000030390050236412690531681411542672986337478461475643109491276745725560842845681833822128850314682553234513097446961569517230989495244037686447976018738999278178055797632571025623699341430591954785757909752031290149162617554408407908119426119561936617949104881997403690824308045861422226429524023157368894044166827413836721066181901277907633723597450924751570090440147006592219601886070784578853524134588335098969041467711864669078743262656326400690904569323987957978499441078262223603745906060844143472649316771835951451495111785115845506592110797388919524986992182742807999914051634682899146669571947751183897437639189789023847872190006630372259831419912570899466436931131240275583655886629439541835863498250518651159549561599235497670986503873409532712904689856388246817018792260673958791580935540548757228748493962023238221522308948920522710959862811597707289370209890890397510104709709475425940422566692278792698430734981500502797091495746619938780963832912456158729499036428433946877982823466789920519986202309270919812860312043848869708435130621923617014442505803283561319921517231649625069120485739050082082495197139029573519284277637637756824233535952383830976375122233225154428898635615357476130401149355458385304227597098441867474101347473273508792455294258838693682814686441799403767664567931021850679693937130425942614218917439759178206322249592645165302948985687785158873587056303430188275563847791626895257419417334448234060416317776405093774000535490247602473228457055820514137570580428170369140710855385186824924590018996813383980913020241317622494044380155339683423008097561920766356187168968239966599130787488076688319435053150875848274655401492412366168278817064847504364055917261784194336122934342607951038807944951128682970645012490777539480880020411792326841399880242398137532278344261246485617852994371399545807570830836177795219093810438778236615908166950986010932682411115479362669101583728212656990568465045617274597060872316428959149792059835853947509826836319334939067949528183722463225267842896535748794028452845319057794068211533009485764228744471941965240775328424240060796724736255218085350726317805139147853684642498113026897507737712276238949076801368966631214695108264921469250035267252088268506397102852376976359968761207413449156195975973200411127789216009882414790540975073551498522441788503790287800774379544367042554485753715689646107761211500761614912613174646899138365047139178039904064081917756129474324198405749481939531651877221727971234573475704260989327235215576143223848917632005935960426137209340992590757552049254636574315621586950449773823726100981789266264091869214532861848301833873277682540035456370046158371275723739190747774033041028879551175239930948732130494386221393089058937680434743368399111486475272425608578515010858193358628818983574426983406080676794945655285507391612773717075885819720550198575719698923929883003621272425545478532722194761199391806462611830588537766842669598467891394110056459266926524165433699449665020943658839835950155175819083313027292836183089255040538542350604396087269221155729111531735944180638309509654826895419455169656802469536238289908770547977060659550490581695741884543436692043987591131113236796636773835058504544197625245244391533592255515830611918675534478606448466344707881491121642728086660217057009706430494690702655521016342040256345105188938196470312437387591456996887382289499340425117744479937840803217325397397762562477237762736709681334119975607772257165318553929837155193440406766192244897267510856013368955432686743587739743756143824302430219681070359370196600021180622978394604741670444050312054618244864108070798891684105230480717047517864373460084624035697939373875985899798276485014201984340426920679088170469178413605339688170707992785769951055317604923000921338243341491302047948926688040929571842894309265391708358297715826233307797227772117734266017999946855338777374660937396827841039708265888725951667231832349787684153447640875623018709771726039593994872097925928665995997601413874256536715090892157478203497419041282735919926527211974439460756463151114053940174963107106524908821094936059434680323199639359641651243881411580049587535626913210080139497958947593380662351828367798732851354094203160703444087950194625941555808780640598368387464069720483668069231929154996935287961601575662765182415037313813771145398296447864214550222307415456507646181798920839920588092542996626501563560090805705058373611635900194066659446114903937391844834419214667009785919865398742040732539068547038266147326381846353714984479663818167729376902615492614148578186005057074474454405197455441776628171776688442551938065383510973128358823851193501243840376058656460262159218518017639329572841494397914102182466640456689399089714086146729387266542543547440436825224973450899566724133090867996850880155870158433370210215002658708794935026807021012613357211421456029222493742721788033184916302309849170293170143182986171300719283717882192065370149579348804511563269703206509851745777266193374983198867630957871818626085905770523374994470117821836381224288218692608922767692017868107531103122695854127851905654728163389457676949280092379982217821771299322746317894258629395573650903324430192568605730636015977059140423903027336580360506597540789442998368315219842578934272691905748919194895684361092046460070772634939795996947952474399313050297763399982577429293835160512337595554457506485857508932237663522690827197376976445088066585439596449715624491145454865270947029638531332997663112381109607394464600795812883480992107867556923767154925217727591621554739336444012476289116832729776690510257315076474074595353958506690544904208706359458552926157995497305602065949114582140112656505914696387503599368332541918266135151614726045859800923241154153264170207188718131918135204965618891095591456838314094705844341808279961493301079131715391609134881960078435297281086329868574394838281217713275384510455613437004622040474818677088370091400098477295124216561072341777832027792928834879516016785203710483743708577697593381604901472482668195888219912783834352890472984387501330715187652405687684943725190143194335298191435916970808047100723171454367288556614414491472981642554277516857004513679826304337890759309326870561026549946786375364479742669385251987516678138503749950096217648591270774241015267499535692268681958812754302682997788205470320972546871649568060355701991491401419230154276009868472916939673955264667204541584723468678493247795212730761450608494961820050781189383952306141554419412756602453254270708902814403719840561667094455722054225059029010950928916293095684429631014099908295425936380141173344887213711320359265752098650432743484134363425652213062525456401804352189886268786142599082103321334707914184134193257915451740509780181120421729617773194335247677455092622142557321380440473800555888073028045933865252612278731802757992587487446615903475912118268273847958642257052795844392374318637554397614383006235658081489299943578802760190313532904223966318007564633371218109075354355022111276757661235829439940546102156404162494479254358543840215340318735024753114692045242560065873963484115143116391749073558947128310086829058516517305085650017334409688261232353822977787653215631806535065003732488069824502151684481134043089035968808530213001622478234865561052669171834373190089225724734240614549974597707811272994461597910068396996260806413806790575467532808469429056399627611275142932847826211831087516935140150980746302136518766812487577484999798574161878980990331178361605974744143483910920806463997631874814011592661830737255394150376337921797248032978522145434953515785214586012085306549762543272927947885112921095754480399487580817763284014977208619969473609097711488590813846068017753234359062827313515659873408539109770145088971817117262146780650155726295360083050132874932788778221246208163659182563718666535236211395764067498734698032004250813473641671669951905653618175857586483401117109789360049583017791451591325559883804223758147338985791478300288484809310751048165634936163344226189171977011123200171180863821037752778695064678454970220187101161223030793181836103884362299635438434356355467861613406847974805462374799584202514517459237577443676434259174854095846486712569522094526857808871316178193550894931554688871355154285616181909185371759632306328148813601791881524757786630358664142459949014059982678536117191613287600016759307025939026629920923783989138009107296218201935861593444005232204920362895261293611175855679525401121703954123983729170415437497850582608929112520828059994380374291724601175621979424742536629071844960869314245295781635692054592604596410491718571085159385423050783107976297239950126463674944122111191303455341802987001783097638350128452062531279995995511245477308955739167185903222484847197143436757607254496730445466134215642104164359228514476773914457961856274361897368117720929015102915843766190981986486393025984874452366301272095746405274061105682408223772175908261333615055656758612251150380422107701262875274333571701085519295819184887882949217619622712077546877361717131207468508189544433130230982902658128528057020719577416139825872670566303053818591467907367445464955388374351025320651487791958062264615924482858381470950467366876203969683157708105245133502207815775773300761351123511058045161186003234559469999725907124109325061459107566294485839657036577265752413624582610303508313231088913703044628083966871327490644622114661174659767278976194311968437266385516135236233957392155748459607900386015131829331901936845357744384894513818424434649289917736160469897878652915486199707882451298618077561375914330874927940190913908390185061426352732287191720227729387341624886341414149465161269835167471470355844796198320186215189192585318741207264481723683634394143979614028656529030480117149155101830438965572442704088161289171082969010679226590067676496272513225056084411457444806539234726482606945918972603293636277293968514543023382419324587491476401462006970451314786031626680670106713396839365820854797293392429944531929558820603228753015397281917366009389369247816403661498218456045884549516301329341472836357696583168344292775028771668546850123430959963552361433502361124061446414919269179075367376607282514790825785801286313718456236831713435555283415871717964318137712026003125836861903482123551790669926564371438717033797492144319707624227614453930733785531654101108877206533213609748705356471136228609330925915384324662476779165484116015594676585267353985599217297623512545727388958695166865512388954034204667363824230955544975139454415441371425735813440457671060905848352805941294927967489309105589792190838895935742211042072705494973522925177459573995133126621513393806940364432763190782801550975891556434239792688255175772792954029316288755669162756417485764666686134611745872369430754097362037006696588935269057171572147496996038928729350027429441998698383308921094279076955514727229258754688454856206214861997646653356882089225998613529594900103242410012188731801265218232085763209248624494183169167936998694215477069255525962471670701737803170634321801068183006422288926086794054871907625482051058470494811973063359955896972944331471160008811802807574233504055542425423074425249542812369273501622872001327858680143459870889615347186798272759190133179525680083027437144764050795894092934219992692581186710159771531067449219543950884674321663615716725702662111318315450747577393773025940905322568348791326366565994289179425210392543442001907031167525924326205505300790322123371725616937838694781911583666922599127302856500389818035440395925480823805436655767282986823570150380263678695990459289526128321458550705192733303175450881409963574567632894306477373387544227104861610695954487900418193195757800207349371976389814129460714505996818956497365938156849583008010243294475524763854276704095564350889539680918892286196326047293365348627622205326172835668151550778059241186377033637915611953683527808803879700433260568567487534010291756271053047295293148688715715747872215188919276434674246807665100163647367484731696773632387399368259185157910715811317566440532003378859758582981436875776789772775366977596785639605387919589611418149723631442466063303128590669954576920635175562348700660169749326353999723632618716061873365673954938153835117859016840830586142039065430958079824473710803775124262964660622458002728892203293495221999602993167548222487585798907828348318130708000004891081206426402231735997092627353120916272382924434102929714468994157401835932458387512644740904862172661038480185110115990548493551919322051297902597247417914412975882867607961541611084130700083075105127301885871813261563642047207739405044134622736501465523238920438342648269786729156432961478733362988483367752666757768012688346776538507650987476446258188882438088409499489045418402379204120699170293311569960285373541538771120004172056603084048342213969411265597275739574022437870863860255057922443173974923413184238021981145036217590128952414061804387802165274145797976809421361371582732285493550410909873671798551095158859153048823631434324454394249447187141286997741029461833316899037284388962920699257548403906745296052015777819466826209088965089519921959634085951414688286238079397678415937558435527279570571691118191326258652846500880808999916660062212245195922492028476841645772249403467281917849484256479467233763736862544926693287005343367534892439574708407351579492206857185736843444299879052060806595326999903163408622442557441477755401872135666311360681090123439480509700109310054912858425827132753739872186918197503761611077034948625212484133338816687873920460193817841848497844833497961430772564528958474520985219895226522906555588487411247287551713856101407430916546365668795908414508075148319281067275486531269406022691062011483124955593455065345387950678172183799379979885675685329851345827615732422027225875095272813730077568798068962418504526400716626571756361347521581532639614322618328745006034181112099251908220618911125808901308145270279188453975927433261020835569807005111075338798577245286723136405457061158259782863833193875190996806676670932010597999023095683458371448031431794708828842255130228133873780281917118565276216349710686725314822367473104775808607781262188907700392422851323255377984497217046078786729253630042991971784205230945139156624990799723844178810986165560045347374264514311370611147499725549698327535247872704458810521577441007096691298517625669649578129871006529204865637703925086307385265042530865845143368227084522578881425388773650855935117492174297147413004001868453852037144692864545601879229884017294351460882159908200937634310076699188290458727503974196606305535998835645636804318067707364104296120034649354476692562866692188866175361581452618629096475221406557182295244735044403332869637724677443270165306670048388898629930685880321997043180848716988462815023191333108130471133744570094055815799364340558404268081790980741866241218810219288839576164184900538873549774153949514237548403983783778568803796913982935419783447107998236470114658456282436525496834365737350554212388463070196001867306747592114534085837302407126693374567716263032303954326667871635501339635863566814392163342182995047843490801600234079811091208166948685537538332154279063707566157453131432615626867561716507945481326612344711468082144644689616611547857338885541218557957853921595880497297580508684448043959553237624504777139594245635982414312505637304150129280389476524786304096413094310687465938505035705306384977317914426690523185946880568426112457162715275909445337096348403927944305773368980035624070300139903195533498435590808128213674377011690245056671465144477847951658944161667399887136312415582487849297191175756686428645619740956725092872692275868165175100950173439087211265872177374960684732399688134474437016049448026429432391342947158252153009956412007808446970042196757809046510251458637781040048889139953343333694021751886660203208165102139355453606830862897323603518532390719248999061668648569072454293574178740660801734613347103557208206636378240965328749464283414953400462643468409249893361489131955039967730262683398734784839441211798168214280243267232955923115644051106199360773195309724959668961754200526977824577692087525690202037438820219947719583540105008113733049057327604076283471055846627544065119788817714805067345234931062166940657678482863558725130838378602817372431408285335037174054849174843294316739980788899254704389998609200521409339300146366584444614954256462542506046262955289811924686960308261724396413068274186947587818503818706510310268487579415189877349818606840279279359923249159654432487745488185654885539948615556469817420923885360817204048530516346464939953720770648468638855437438143060885775805027385058965441087568222683903962329203750617204673344403710796915314810619637745448637616349435807032192980139239376856608734404299165819793633608012374055093538393683964767209541476288479239724172922493790355569741775834754629836018870816143311592937052003258252380722671782914593456995323283941665152371093845018563443538196581194551239993705060867966166824022588064670808820116474863676806301475917403361195894288527435218354276868401935268246805110166959342359170953425802596156535879370947468560910774582270022420375250410661449154946712093045783507059653356242273738360614677233230202152095355785342828762635843815625808321498740487322154534902618788613562591803954239481334108207509351356893820795655147155900964659700627744934346523188885083270936324931998789365916641200010547710812845958209061359219124806302870081983162833719658386311165392204660494815224852840448377376419499674122581045954790588631665791937466597910642752816977200337320024892377804477123354454873867719594981638823878533583945148079927577932707845754158197031138346354472840864077033165384420079748172534185122552729659058166802383396048191901978907335799272151733028429249421858323333767460229254407116466215181477888679679356007071107853118108984145164824970767657157982194037566219860083490577980475099668486555569806887462539384268160604903406946145532405147995956605273828124513722878088275510118120565861779986027414480729148814750811491096183255728436180052287627836211707393619325232346987064398161679479179954743949513015410963951486929965552170422737838817258609615685439389738467534116556450904212089320143030453789610806706796065815606496221825290622055829776649978545218192232515357588973291638122288472394309139168124419831240745042236800641012138806371651965204594775085687571104171866170206692541514541510201022709352942821934573366172848207640761613105859079800966485076327159395517505650447633804088147490680639869557556432517795917763137971628687442286751486739379073811303548804698865095392314248844475696924701124183600493566523258303103067293446982855011418297996732759913348086777600756175302545287382027558888772576947249838900315955639541846420493652050047829283261899498842073039532027515737897387655858853780640366971707461714839952025245787332460942485571202715208629562615967729668326323702992749245941684436214061659037226486440693931202587911646749985594343967782849577659470316888774371357120003931672659828968644219060714224146053444021429094712612179766712410509351919634580897968703070786207831364131017605552373910715966528906573664188436750417708902773527186334115947069833093531912405080561449157238878772905775734180364570531728636379961897939706649264744732957341525154970508903488268351413875153114275169883022986456497913187524454297591054794143977696060610772915623314353357708629098145446401815529261668783841419931768811689860751436032822283124990398590434471300600277083570825090344718792084723911859561217560794829393982194243532723223049345166749805169020972963095851362818500919484771463728664747149896656585017248231139572094514684343449448106599191735206330013329028686098736365679102535596679752353542956519057854861031262469018565396728355337431106668517683415611301897214429390937977187331013838230693280627612022223496020135215319460998226118191592075101307793684213460261250352498752880355086913720791523936778580699904656621259248587822829808937536220031296721091758660530594477488336178317229154754545789876642011223631477053857038487357973803449843862324955506228982752048990278834944981214296793940115321573745627643824738315188192416700065978751479715127028861804510548997405611803705359352562573194699568949895950839833035456924767829104220680091542679753128137349725541876560197168913780105104923774724912157996614998712672380528331383084801809277753055886914078654770368620198697708049356308566710118584802788561328181357642953709117967779580006994039815627627467537389029693262940294942791279340987628341670762126133429084654959159793714155110970197413609669883523472862801913233601087029422811472471375987705778116399752800225931608324491499106835826772795896412812505261868309937302959625528619126483469805412808599520114604593223204838852625321678698974801549020905706723285999800720882497998845403564645359882178346220585490499628285181841407173808447124441099982179092581281659754566956665320441088941538619252747287820544328591408423722985018905562940668682762745297891419238968964618989262972721180434264691381392622549785671470108116703279752177369440253278781534439535870658767162391849417654091659013672707205318544963047704238389181998717845568580443210739101849232675491098979805571690438948984339610324438520491790225118070719235463511650259802668833845124012596964399074810595825248932598424635266131925984584300420414304501506165064669060816336195199502538578083049894458291542637388351615008175822935900360226993893796987017314124567099485403121627849129204146801682439926596275754318086642353288334989377966961633995048058776333037836376155648954597112168159024022958939987088920606811563256163020803494028865374408497697549324736819885542055693536387462831581492198752301969617025306004307355442320386822497140551807009907483861548507744026913702886230905865341911762476441538492485097415424824462323960077989460163611880024979671814158960533609468805342402020392162762486930742161175952842578825596962143459052924218829418251125159316382895760858194128638910099509664981082741763936038881703596576798137059602250446887346057917117008875961286377118892727009180487569272322732763943810158973520847696446545965190997894092627044721198047641039686591513278050390329709376812510838795306681390327402738659759525336661093401324818929667744435933412761840643609567897686132932484124433485829961270684437459721921811267752795266925757898490943577042807394692139762243367022510388246226412973181192926316301254579739985432986257032537490432639360953181813544732632849966570785833242522567197090026720792527808213285710435808832689504184075572287850743217162006850007671993344695098892964154507215511699525567896435616899282006667975946700633720812301299360455969654594836649077333505192963697739258781904321860533955529657616017474571615352833192067556353499502344171542430071216219095029711660325748339653385977871462424603313323460805664174133446683593514411865516357251764329246635937848060909823680070963659143664718330279811065839678405151876922320752291230890502879722855608175018173007054688169230394830808972841610586869605109106339264892872288849062065458268494329287807895430982025172446751190123254193902625031873138029381721594788081889879060948083868212197114464427778383118107947626393310872034795753648247861427354823668289433521083722782265349290975208456366424317207792748372510731248510551256714580625570147845213031288269693095881984616210961527395077961877135613408203139143847701045382559089551820449356222760424458842925945445546808443931254043568460105262596765954167095080897033289419538368806132319724625413675690098541638713998919864286851489566564602378526832551230253954133795311976210662390715439872934754843086127244210934024281239244845007617478200552207865906793209661696117021183012507466193796801813822985192673101573185129990017870280296873753957884035812475998244285207046104688187220175463110518436712531386171476500987798799132516758540015065788230196045902716905987720629951251913606412552049108792399986180342239436356260203279507543689793675211176458248836086208504796881097541031792691079256094097202811162510784915566764514625326035350390871228963712305813284924956471794752695275271676379428066354326128378885123155614093436611689180388430026324380744885621340835310825994341843706306190028661043084298420118978866308523759630712290669641759086280755361346546387148366614154191819243346530033300064299866403169873301468840730411408033788265083659302857407925914527317922394747302981141033591761772355918574719671262557230303044729835376062033229601637489820567630820960580290621813605897434291083530894581452376064841704059272956065112964544906454986037495701485347083429616259088147504831614571640718334674666697639232037243798217359391423718603852630831841449143257568145033851819721673548554321698664938942037742123022479939227673805476814246207646619747243283088149849947442217563731044444956224672148386595235267673749535251661463376013281391534633146988253679477358233363811651874118170321416003511702833755756520072018347925199397107379335029779434221615207749918994258725480819850729524258805895211178698801800133929415846983064330094670054653259099750776898730676368270052073645667425954100512975225781295370963864486723595986999119104491109842340847107116422723726209744196940369144701299570274849701069637181122828976646893928392452780057768203462103682286336636077806955888543814783570251762580485543382004960078690835489683068317265058562303550998176307155335698526261474608829579419063021948087167632113964140923687930522152073910282984470415699598646392668849401117235329131702061517750098856088539861529747870651762840518872963932099942969152555285264925154814332509774845468513625982596170997416530210203531789281871514532521492893367515835727670182895170153081226769457225850400299318130967427640614918206313821675349413925552868390855200738606868731249689670830503382252806308995117522942087171118952672889908173408162328796578944554491472619997699614776232912996728102564431495259550771563440307428668997693954016733056249027047385432300787726686551521404823859521925263355123375998542755803920594755472296700874349887053886824797360556466035879521961925765934303112498828293863535123978487172880975552773946369897122637081456711736773624361517029208167335386436511790131893963025154823312438175909733298452612989457227930326165883559221398131850485232182082691972546634434897690323663238016633940189200556617192836412926975499789969003204401614108009938828888011203101695629523326619438621818433242909847263803817571559732734504431795894773458672404852634286566432146681435450816741773607976220352512265096247177735014128213763942120779113064245307841305030775775549036902276628284033811142883526683956112025443954303476262826030364801112343924387317557960834453416071943930206197227577687939014179791012754983308244198746378923884257547065859490351257108787430585625626530783828116108442736412063291726335904419868943280761342032834854034014307477203328595840147882685564138840755389286598023337647162804078708133828039938450213700745962238409215437943267303672822409154301701244438328449280484332440361174199400968603760100876040657281745247743845530857829241231840380953212870297250236799086802974849436745154006903752171883712503008333839671809790288424539728833725194235878203148013419286224241404413220965045120931901165788945899913264012208689707140087124127007624449905446962227955565612488139517342467273578350635597579172698018052413213059975632083333390146002266032141885620794398563227887656325028823489987324612115051800030593535810915491644740947965806227635222813334403872552917381080585444356113897688555674438616456327245149558860244014925522575917555588192979844737513666408179036065655692034733314368935891225175275888350125079677568251474378342042680860691982213164794397463713276328962333820979690892507863442379482000575361207013624437636455489331919272860249051521624002494921960648131564275379776562041367965081223206891625344369258525145281013493947484335231975668285347022693959170635108180407531254820343372187155054264579516640933787013053587263377263506429080791274736697717526931238755341377421799873924225699186963025380540928074240027922252142875410625338901934769133789139061778561349533320325100574335571960752225096591625994781727785688688126706545990145775940741966292316762750039278448396570930306386104514852807117614592567979571907378382024318933320042461269162703372115466629579349104555590732170356490157695753625517726299393547123307745998235849886804857436225561175563656845995365312896431954944631997531394661427317779432580066397998303489306915685373700435846494583916885530655058336867091426663887702944237698740590899343933707989611988615548819381172318298949268054002902396918680545415541140715842484970026685685757489080826260582630376577136531031540183697478449853803806991309522934852822313867922888693065066619054769319949838214237724480744137419171483918544576621822160156833673540442470191090867666743044273195247694142013073842143281819812765349348762696807528338791062109317885001418254325570156616196095566212275538111725277447102413143966109268488118688027700214515829515694066393876255242691328939082957775443099886916605821401715827940967696389325584459249618704298925154115723157400072402977258227607612057791739309404196178510426651070667692386710033108918402911993296455963388611813496254748792715019177096628486053032880974005703043779381979650570459321611350783932138393201255246426386921985614523382737627724810431549812942599608326420435916420963861887590993608932513194443726980048100056110443392622229604030294876596790162975984908116163914595998078937656578834690228523196294592353754506864870794334467491112955504490392546218571529245275540143674939422615852424613786741896523003614441280075998548574187152758900871023839913631881986300350253768508809455047094583320913805474655534716391007961940603154279761690232274358202719613974477490703402263410587472541520674303363996063317837699793676801415885324580881136916523841569730760063083865169682386655346343888565217259179496361959686889541662925685458544263101473318820278843312959526910356341277519485920624115707456913615820114601869541367769973832956401432007377273859241191579638847220538574813344601787873639662857911967273745273540357371476635492456656843952560457598192466349261956704709345907415500691052428166834044796702723271464857014563982686983445927369151332141534137533234042370554387728514815128424385995896970111070949465736867906521282063986992532377123386946899978408443895248938810739347798082487298185720802339055116753322814260628879341518381561825379403372423507733849330865831091473662884069162478165920967722271369678537754537076137363292130580630311983910820882639901382296054594862714463672010093501478371173219303488014804963564259080741871453869457735801364360854104323539608775499921065803235349641480398667595931193107805633261424076624483245630541125208181751881309131670035383232686878695869260949571531055207814260952094807684748826158252504349592208694740013882347052655108658466734573999054370591580553156051440698362020149355583288509599605282361021204051231418752405736007385329010601465535311235694085402120233320039234761086241007700324922327665154563001134234886788302841921123041364857963734897964736404041174613863206629848949375896309287435401236657217280879510903781011587800028462982490673340164944492579898930548376128095683133018127943903589702528341762352064442241045760518475143328909090390189063596167548342391376720229107331442388298385686633354958403574192266630569060699802177778139966102313361631237797605995208372036688074977646200710481428125794409977285296631603428559237250288755261321480770713537937640053109002829769808244564313437155823374566092098304072192842535311538848650515520337786607204958785543420877647791851021877655227604439204177559822639342981436918789180347493211588101169202115513211120674396903497686992802411565412556896505647363671597222502274735960373894032027268972174234350928118182755428281130161198364448362978316820424153607735605629528795669231534381071439385166744348294194098629385327704820329236526488801839337034908433420983842613080321164754694182107628002695982704576915980723960087529164430278709407460143528095681140751669451884513077572785467423112362939960978347695960093038858794901482077368043082844131010240197249584466124236615034486410776132485603859478436545348476872106161222068709314175626836206198734785881539853713924216281530019804760412763127963911220233398303760778756157416327715194996327936507981792948762502199802748112870405864133877878353222204029931329303596304013826385180927675125586732566518364298582975561732156318661047195773887901432192698714144254657509106937077409307326880661251607423785429666129155073150716473653723916812931272287754624472701372594741010595456662253416476231150618241611438899077251002186720196583924704215026984582228554757679932264455213196708138064490735407006162322252068969436710157679501478943936560592874234558762558790145011700978439915677769123598027962435161996036448105378769670432231147055565478812048389828787082730243915402174853553591726797292334762313865054777910716259582881337139940023883639739336282836439104418904901010279031766199132396210375521740267396479814219509577018674673091405881527698076197755481631527630962994570404714632405704740332950128751848443572632760139848739918858062010937954596627945412438458273614513899784255559923144656161554547182497686116458877017865023384473581894938509558643793654386929187073287102615163898687367365747156502341408471496368224458886077466206346772091955128149144194030772456597536878496866875559363717001748798201216804840606013888754287550113345637439263101244798961306783029270713465070100733990597052510674743644173118719718464178712480624392266488526668833374194742464030075137513327934250571422991578251406957564677427885517905189941957190997261509546258080608148125833663479141940435774093007282023790784746934345333460019172365605270540060483792813577516506356227513725809521209338174578217734351620765381468911400438831221896327921125051210728201958093030568246830740119093873237496330165780436082635818536188700473139651666202241110973214927635877555309496133773349331283763488429030229885105630358683507173074226780421434876737684073986703111466192904822911522281699950326322137459088364101067935779329389155321464126837315862131644258557572780968203007155036314443697604644028049103003281915726164594574398692144055243655663663877610129881988503127506685741101927217373194506826096209524133088523241881512763032746917608714914639061380228362152783725170283105686381657413532868958728394709180059740317892597778661486086738242518842986455746598815473789303779076930421567497741343595116543283557162491930612022443261831309672241765819263795173049140672753904180261611005438689063499629740235293228031655043989861873932160973685876134298182561219534713058327771469648950341667170243456222640612791246035349559662327193883197030950212366394142343436461424084611812378634023632077609711033416319668396318490574695086248714998151608249784982140956276980720713847964960117312531273315319355087415556857881623397176480657202598925811290953730105603192997680072584343929196168628061758076810450145873905226582000538496842414889425659721029244393291570131484480919146717315069835395935130200574122914836230635946370011134757850097392732628956680485633380460284143131726095987177029334208218897128414202069884913701493757856488160406038827312677371117011141480911964704913064352916401441605961921642845089658298703748281786174789399595970248974355776624452972873117914051335145713545802284748935469009829950989107719224812522279527017273954692214693972249455703882225857889467999073734803513424896247511956016113112980300023747783135658405266116170350279009600188042480265095337750247091165639335878478307763054908338286026909682188573923202024301744210025346593844340834638601267828012322816041595064347336561295640721576428889142405845634276986831584035604272351583389637540353615352138059197034673038131780044775763660624379145878051994228036779038425108824290847294643067889347182748076729739648892899310735934514095381132125680714956407844420590212748682918414536510050336549137588637222339045020443673913038059655946287909302235328938464647451632988039397857263426754566067506526310443237319984363149147719305711792384576285902482593157922053794840485281515481385780054865362082991794686702857746114438848994854574138914756623564139310543630385541381326096983089077887513782721360163869576119232229878368372859207205134183757203216551886555296464552195485438594209867129493182568702207616094113835714401641423910082805415244212696919120347526190161290299704478223867919159800740047757152738261978412546288386589719403326674532990460551982454875664599269291890085536687359261542555361146441943792108725928100007597368109235928658526426844185340683082864819586105384645899516190471979426318080932516377921925676954551721386667067371789422041909927831640108757977155045874969853105093173930002484269291307266085475069532875536893323409038521482678594786080405785418116151924603237778329229096417840138120956083739991747492793915547301633661554191865616269848674220301520949106772202038206811102073135969766561515426884285858531497005815539581588083643771354478365107418635217320228418857035457964871994492623047736709306620174053561610207248519294025819918683890820290465756491248074323876651280673183813305916602713339475242456999863654782130193553272043015378761281708080758919676592287549136782533528228125015533102986731433742926801604115000291358150186243990074356121263077133806019749614395508327436777317505697653280665329860893852772509262074844716384888240169355219707240822995371213085172766912558374928825510317047614175011355239895427239789697223509249079865868401918145634984084538168422152556875088978485806891379660749559402548463939834207119490954023571559709662904025422817025981969650215662855576479781167784018671457864270142731666363492272548903762728491323637135914647421799161253120213907301039022034761564342836817662724119592429946573364038737672425499817945117875435679893502118269614930173152222582882644383012799418110764876408108292508794923891977949822884560313728666213118851988314255995294600364070093168222551330628189495527619858882312305080735959894086682423024249802611936796866674905600603762633578686998581915435343737585142220711229530589190563407733470180068286111185397081153211751959479358545084028339026652567426945773794909032138379114374573958086058397393272541634827616935100597278122469244741444931042762682742423551264824505206739203323587174662115659024075144811085848684505843310876439421719910942986917290623568376091323488820411608194760241590063262996211266702869170819708574316566144142252138156736928534707394472498424658474567838457389909390799631044714721929182563635342204021599535244607915138156692131145679127587887306322257803070646776538879230747559739403458524516605516066653154982096852144829993599190396823137717419820572854096132743650308836179082256618328171604044289271163813308059531874470803648606632842735562688947070912422461348061225785766237420333065454171721637737444667772357460296550314302452012290913261325879411865124919880398158438826192048619687627711373141418225529701001471263702683108513626998476991137694815482582685807750310990564948018613674978193343230736749652249984145849421381786526783437568825041474535109287314381535039487888915147020938189272220922719814274543111100081070805196400530986487537127796465358042449323941726196405310792045157692536449210216683567039253662570172191346951022669488765839338096706160938430158343697516787835079536220063618377042407137914882693349847588192763024716075179317949821544347491265457449889791517691050732528576277475530505238444840647919706299825191629831738941591368718172335977956237318417734744168012305519767487310755295330042351877437649001176930064778957031987646782385199581115280924477545069295288860826929491404827937108651054426239161377397628338186
0x80850712...61B8da827
0xC36442b4...7Ab11FE88

Execution Trace

NonfungiblePositionManager.multicall( data=[E+rVYgAAAAAAAAAAAAAAAICFBxIbgMAjiPrRRyZILgYbjagnAAAAAAAAAAAAAAAAwCqqObIj/o0KDlxPJ+rZCDx1bMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAABgRkbtspZ/qWL89u, iDFkVgAAAAAAAAAAAAAAAICFBxIbgMAjiPrRRyZILgYbjagnAAAAAAAAAAAAAAAAwCqqObIj/o0KDlxPJ+rZCDx1bMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9P/////////////////////////////////////////2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHWX5mFkvlSNmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByEMht1OvSBDoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYxOzyGi1ngJuD+ceNHFCi+9qPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTEik=] ) => ( results=[AAAAAAAAAAAAAAAAVFFO4GyMEAKfYx6vsJZFc+VU4xk=, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5wAAAAAAAAAAAAAAAAAAAAAAAAAAAADloOvfciFxuVkngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdZfmYWS+VI2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=] )
  • NonfungiblePositionManager.createAndInitializePoolIfNecessary( token0=0x808507121B80c02388fAd14726482e061B8da827, token1=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, fee=500, sqrtPriceX96=1862220043788931895930113902 ) => ( pool=0x54514Ee06c8C10029f631eAFb0964573e554e319 )
    • UniswapV3Factory.getPool( 0x808507121B80c02388fAd14726482e061B8da827, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, 500 ) => ( 0x0000000000000000000000000000000000000000 )
    • UniswapV3Factory.createPool( tokenA=0x808507121B80c02388fAd14726482e061B8da827, tokenB=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, fee=500 ) => ( pool=0x54514Ee06c8C10029f631eAFb0964573e554e319 )
      • Uniswap V3: PENDLE 2.61016060( )
        • UniswapV3Factory.STATICCALL( )
        • Uniswap V3: PENDLE 2.f637731d( )
        • NonfungiblePositionManager.mint( params=[{name:token0, type:address, order:1, indexed:false, value:0x808507121B80c02388fAd14726482e061B8da827, valueString:0x808507121B80c02388fAd14726482e061B8da827}, {name:token1, type:address, order:2, indexed:false, value:0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, valueString:0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2}, {name:fee, type:uint24, order:3, indexed:false, value:500, valueString:500}, {name:tickLower, type:int24, order:4, indexed:false, value:-10, valueString:-10}, {name:tickUpper, type:int24, order:5, indexed:false, value:0, valueString:0}, {name:amount0Desired, type:uint256, order:6, indexed:false, value:2169214599653705944473, valueString:2169214599653705944473}, {name:amount1Desired, type:uint256, order:7, indexed:false, value:0, valueString:0}, {name:amount0Min, type:uint256, order:8, indexed:false, value:2104138161664094766138, valueString:2104138161664094766138}, {name:amount1Min, type:uint256, order:9, indexed:false, value:0, valueString:0}, {name:recipient, type:address, order:10, indexed:false, value:0x26313B3C868B59e026e0fe71E3471428BEF6a3E4, valueString:0x26313B3C868B59e026e0fe71E3471428BEF6a3E4}, {name:deadline, type:uint256, order:11, indexed:false, value:1620251177, valueString:1620251177}] ) => ( tokenId=924, liquidity=4337561600231795876783262, amount0=2169214599653705944473, amount1=0 )
          • Uniswap V3: PENDLE 2.STATICCALL( )
          • Uniswap V3: PENDLE 2.3c8a7d8d( )
            • PENDLE.balanceOf( account=0x54514Ee06c8C10029f631eAFb0964573e554e319 ) => ( 0 )
            • NonfungiblePositionManager.uniswapV3MintCallback( amount0Owed=2169214599653705944473, amount1Owed=0, data=0x000000000000000000000000808507121B80C02388FAD14726482E061B8DA827000000000000000000000000C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC200000000000000000000000000000000000000000000000000000000000001F400000000000000000000000026313B3C868B59E026E0FE71E3471428BEF6A3E4 )
              • PENDLE.transferFrom( src=0x26313B3C868B59e026e0fe71E3471428BEF6a3E4, dst=0x54514Ee06c8C10029f631eAFb0964573e554e319, amount=2169214599653705944473 ) => ( True )
              • PENDLE.balanceOf( account=0x54514Ee06c8C10029f631eAFb0964573e554e319 ) => ( 2169214599653705944473 )
              • Uniswap V3: PENDLE 2.514ea4bf( )
                File 1 of 3: NonfungiblePositionManager
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: GPL-2.0-or-later
                pragma solidity =0.7.6;
                pragma abicoder v2;
                import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';
                import '@uniswap/v3-core/contracts/libraries/FixedPoint128.sol';
                import '@uniswap/v3-core/contracts/libraries/FullMath.sol';
                import './interfaces/INonfungiblePositionManager.sol';
                import './interfaces/INonfungibleTokenPositionDescriptor.sol';
                import './libraries/PositionKey.sol';
                import './libraries/PoolAddress.sol';
                import './base/LiquidityManagement.sol';
                import './base/PeripheryImmutableState.sol';
                import './base/Multicall.sol';
                import './base/ERC721Permit.sol';
                import './base/PeripheryValidation.sol';
                import './base/SelfPermit.sol';
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 2 of 3: UniswapV3Factory
                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                // SPDX-License-Identifier: BUSL-1.1
                pragma solidity =0.7.6;
                import './interfaces/IUniswapV3Factory.sol';
                import './UniswapV3PoolDeployer.sol';
                import './NoDelegateCall.sol';
                import './UniswapV3Pool.sol';
                /// @title Canonical Uniswap V3 factory
                /// @notice Deploys Uniswap V3 pools and manages ownership and control over pool protocol fees
                contract UniswapV3Factory is IUniswapV3Factory, UniswapV3PoolDeployer, NoDelegateCall {
                /// @inheritdoc IUniswapV3Factory
                address public override owner;
                /// @inheritdoc IUniswapV3Factory
                mapping(uint24 => int24) public override feeAmountTickSpacing;
                /// @inheritdoc IUniswapV3Factory
                mapping(address => mapping(address => mapping(uint24 => address))) public override getPool;
                constructor() {
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                File 3 of 3: PENDLE
                1
                {"Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity \u003e=0.6.2 \u003c0.8.0;\n\n/**\n * @dev Collection of functions related
                    to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n *
                    ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a
                    contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an
                    externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a
                    contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This
                    method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n
                    // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly { size := extcodesize
                    (account) }\n return size \u003e 0;\n }\n\n /**\n * @dev Replacement for Solidity\u0027s `transfer`: sends `amount` wei to\n *
                    `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the
                    gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to
                    receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using
                    -soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not
                    create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security
                    -considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address
                    payable recipient, uint256 amount) internal {\n require(address(this).balance \u003e= amount, \"Address: insufficient balance\");\n\n
                     // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n
                    require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call
                    using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If
                    `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns
                    the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables
                    .html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a
                    contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall
                    (address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\"
                    );\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback
                    revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data,
                    string memory errorMessage) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n
                    /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n
                    *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function
                    must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256
                    value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\"
                    );\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with
                    `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function
                    functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n
                    require(address(this).balance \u003e= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to
                    non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{
                    value: value }(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address
                    -functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function
                    functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data,
                    \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string
                    -}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address
                    target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n require(isContract(target), \"Address:
                    static call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) =
                    target.staticcall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address
                    -functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n
                    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target,
                    data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string
                    -}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall
                    (address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n require(isContract(target), \"Address:
                    delegate call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) =
                    target.delegatecall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n function _verifyCallResult(bool
                    success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n if (success) {\n return
                    returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length \u003e 0) {\n
                     // The easiest way to bubble the revert reason is using memory via assembly\n\n // solhint-disable-next-line no-inline
                    -assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata
                    ), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"},"IERC20
                    .sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity \u003e=0.6.0 \u003c0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as
                    defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply()
                    external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address
                    account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller\u0027s account to `recipient`.\n *\n
                     * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer
                    (address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will
                    be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when
                    {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n
                    /**\n * @dev Sets `amount` as the allowance of `spender` over the caller\u0027s tokens.\n *\n * Returns a boolean value indicating
                    whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone
                    may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n *
                    condition is to first reduce the spender\u0027s allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum
                    /EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount)
                    external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount`
                    is then deducted from the caller\u0027s\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n
                     *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool
                    );\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that
                    `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when
                    the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval
                    (address indexed owner, address indexed spender, uint256 value);\n}\n"},"IPENDLE.sol":{"content":"// SPDX-License-Identifier: MIT\n/*\n * MIT
                    License\n * ===========\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated
                    documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy,
                    modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished
                    to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or
                    substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING
                    BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS
                    OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n
                    * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n */\n\npragma solidity 0.7.6;\n\nimport \"./IERC20.sol\"
                    ;\n\ninterface IPENDLE is IERC20 {\n function initiateConfigChanges(\n uint256 _emissionRateMultiplierNumerator,\n uint256
                    _terminalInflationRateNumerator,\n address _liquidityIncentivesRecipient,\n bool _isBurningAllowed\n ) external;\n\n function
                    increaseAllowance(address spender, uint256 addedValue) external returns (bool);\n\n function decreaseAllowance(address spender, uint256
                    subtractedValue) external returns (bool);\n\n function burn(uint256 amount) external returns (bool);\n\n function applyConfigChanges()
                    external;\n\n function claimLiquidityEmissions() external returns (uint256 totalEmissions);\n\n function isPendleToken() external view
                    returns (bool);\n\n function getPriorVotes(address account, uint256 blockNumber) external view returns (uint256);\n\n function startTime()
                    external view returns (uint256);\n\n function configChangesInitiated() external view returns (uint256);\n\n function
                    emissionRateMultiplierNumerator() external view returns (uint256);\n\n function terminalInflationRateNumerator() external view returns (uint256
                    );\n\n function liquidityIncentivesRecipient() external view returns (address);\n\n function isBurningAllowed() external view returns (bool
                    );\n\n function pendingEmissionRateMultiplierNumerator() external view returns (uint256);\n\n function pendingTerminalInflationRateNumerator
                    () external view returns (uint256);\n\n function pendingLiquidityIncentivesRecipient() external view returns (address);\n\n function
                    pendingIsBurningAllowed() external view returns (bool);\n}\n"},"PENDLE.sol":{"content":"/* solhint-disable const-name-snakecase*/\n// SPDX-License
                    -Identifier: MIT\n/*\n * MIT License\n * ===========\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of
                    this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation
                    the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom
                    the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be
                    included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,
                    EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
                    IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
                    TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n */\npragma solidity 0.7.6
                    ;\npragma experimental ABIEncoderV2;\n\nimport \"./IPENDLE.sol\";\nimport \"./Permissions.sol\";\nimport \"./Withdrawable.sol\";\nimport \"
                    ./SafeMath.sol\";\n\n/**\n * @notice The mechanics for delegating votes to other accounts is adapted from Compound\n * https://github.com
                    /compound-finance/compound-protocol/blob/master/contracts/Governance/Comp.sol\n ***/\ncontract PENDLE is IPENDLE, Permissions, Withdrawable {\n
                    using SafeMath for uint256;\n\n /// @notice A checkpoint for marking number of votes from a given block\n struct Checkpoint {\n uint32
                    fromBlock;\n uint256 votes;\n }\n\n bool public constant override isPendleToken = true;\n string public constant name = \"Pendle\"
                    ;\n string public constant symbol = \"PENDLE\";\n uint8 public constant decimals = 18;\n uint256 public override totalSupply;\n\n
                    uint256 private constant TEAM_INVESTOR_ADVISOR_AMOUNT = 94917125 * 1e18;\n uint256 private constant ECOSYSTEM_FUND_TOKEN_AMOUNT = 46 * 1_000_000
                    * 1e18;\n uint256 private constant PUBLIC_SALES_TOKEN_AMOUNT = 16582875 * 1e18;\n uint256 private constant INITIAL_LIQUIDITY_EMISSION =
                    1200000 * 1e18;\n uint256 private constant CONFIG_DENOMINATOR = 1_000_000_000_000;\n uint256 private constant CONFIG_CHANGES_TIME_LOCK = 7
                    days;\n uint256 public override emissionRateMultiplierNumerator;\n uint256 public override terminalInflationRateNumerator;\n address
                    public override liquidityIncentivesRecipient;\n bool public override isBurningAllowed;\n uint256 public override
                    pendingEmissionRateMultiplierNumerator;\n uint256 public override pendingTerminalInflationRateNumerator;\n address public override
                    pendingLiquidityIncentivesRecipient;\n bool public override pendingIsBurningAllowed;\n uint256 public override configChangesInitiated;\n
                    uint256 public override startTime;\n uint256 public lastWeeklyEmission;\n uint256 public lastWeekEmissionSent;\n\n mapping(address =\u003e
                    mapping(address =\u003e uint256)) internal allowances;\n mapping(address =\u003e uint256) internal balances;\n mapping(address =\u003e
                    address) public delegates;\n\n /// @notice A record of votes checkpoints for each account, by index\n mapping(address =\u003e mapping(uint32
                    =\u003e Checkpoint)) public checkpoints;\n\n /// @notice The number of checkpoints for each account\n mapping(address =\u003e uint32) public
                    numCheckpoints;\n\n /// @notice The EIP-712 typehash for the contract\u0027s domain\n bytes32 public constant DOMAIN_TYPEHASH =\n
                    keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n /// @notice The EIP-712 typehash for the delegation
                    struct used by the contract\n bytes32 public constant DELEGATION_TYPEHASH =\n keccak256(\"Delegation(address delegatee,uint256 nonce
                    ,uint256 expiry)\");\n\n /// @notice A record of states for signing / validating signatures\n mapping(address =\u003e uint256) public nonces
                    ;\n\n /// @notice An event thats emitted when an account changes its delegate\n event DelegateChanged(\n address indexed delegator,\n
                     address indexed fromDelegate,\n address indexed toDelegate\n );\n\n /// @notice An event thats emitted when a delegate
                    account\u0027s vote balance changes\n event DelegateVotesChanged(\n address indexed delegate,\n uint256 previousBalance,\n
                    uint256 newBalance\n );\n\n event PendingConfigChanges(\n uint256 pendingEmissionRateMultiplierNumerator,\n uint256
                    pendingTerminalInflationRateNumerator,\n address pendingLiquidityIncentivesRecipient,\n bool pendingIsBurningAllowed\n );\n\n
                    event ConfigsChanged(\n uint256 emissionRateMultiplierNumerator,\n uint256 terminalInflationRateNumerator,\n address
                    liquidityIncentivesRecipient,\n bool isBurningAllowed\n );\n\n /**\n * @notice Construct a new PENDLE token\n */\n
                    constructor(\n address _governance,\n address pendleTeamTokens,\n address pendleEcosystemFund,\n address salesMultisig
                    ,\n address _liquidityIncentivesRecipient\n ) Permissions(_governance) {\n require(\n pendleTeamTokens != address(0)
                    \u0026\u0026\n pendleEcosystemFund != address(0) \u0026\u0026\n salesMultisig != address(0) \u0026\u0026\n
                     _liquidityIncentivesRecipient != address(0),\n \"ZERO_ADDRESS\"\n );\n _mint(pendleTeamTokens,
                    TEAM_INVESTOR_ADVISOR_AMOUNT);\n _mint(pendleEcosystemFund, ECOSYSTEM_FUND_TOKEN_AMOUNT);\n _mint(salesMultisig,
                    PUBLIC_SALES_TOKEN_AMOUNT);\n _mint(_liquidityIncentivesRecipient, INITIAL_LIQUIDITY_EMISSION * 26);\n
                    emissionRateMultiplierNumerator = (CONFIG_DENOMINATOR * 989) / 1000; // emission rate = 98.9% -\u003e 1.1% decay\n
                    terminalInflationRateNumerator = 379848538; // terminal inflation rate = 2% =\u003e weekly inflation = 0.0379848538%\n
                    liquidityIncentivesRecipient = _liquidityIncentivesRecipient;\n startTime = block.timestamp;\n lastWeeklyEmission =
                    INITIAL_LIQUIDITY_EMISSION;\n lastWeekEmissionSent = 26; // already done liquidity emissions for the first 26 weeks\n }\n\n /**\n
                    * @notice Approve `spender` to transfer up to `amount` from `src`\n * @dev This will overwrite the approval amount for `spender`\n * and
                    is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)\n * @param spender The address of the account which may
                    transfer tokens\n * @param amount The number of tokens that are approved\n * @return Whether or not the approval succeeded\n **/\n
                    function approve(address spender, uint256 amount) external override returns (bool) {\n _approve(msg.sender, spender, amount);\n
                    return true;\n }\n\n /**\n * @notice Transfer `amount` tokens from `msg.sender` to `dst`\n * @param dst The address of the
                    destination account\n * @param amount The number of tokens to transfer\n * @return Whether or not the transfer succeeded\n */\n
                    function transfer(address dst, uint256 amount) external override returns (bool) {\n _transfer(msg.sender, dst, amount);\n return true
                    ;\n }\n\n /**\n * @notice Transfer `amount` tokens from `src` to `dst`\n * @param src The address of the source account\n *
                    @param dst The address of the destination account\n * @param amount The number of tokens to transfer\n * @return Whether or not the
                    transfer succeeded\n */\n function transferFrom(\n address src,\n address dst,\n uint256 amount\n ) external
                    override returns (bool) {\n _transfer(src, dst, amount);\n _approve(\n src,\n msg.sender,\n
                    allowances[src][msg.sender].sub(amount, \"TRANSFER_EXCEED_ALLOWANCE\")\n );\n return true;\n }\n\n /**\n * @dev Increases
                    the allowance granted to spender by the caller.\n * @param spender The address to increase the allowance from.\n * @param addedValue The
                    amount allowance to add.\n * @return returns true if allowance has increased, otherwise false\n **/\n function increaseAllowance(address
                    spender, uint256 addedValue)\n public\n override\n returns (bool)\n {\n _approve(msg.sender, spender, allowances[msg
                    .sender][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Decreases the allowance granted to spender by the caller
                    .\n * @param spender The address to reduce the allowance from.\n * @param subtractedValue The amount allowance to subtract.\n * @return
                    Returns true if allowance has decreased, otherwise false.\n **/\n function decreaseAllowance(address spender, uint256 subtractedValue)\n
                     public\n override\n returns (bool)\n {\n _approve(\n msg.sender,\n spender,\n
                    allowances[msg.sender][spender].sub(subtractedValue, \"NEGATIVE_ALLOWANCE\")\n );\n return true;\n }\n\n /**\n * @dev Burns
                    an amount of tokens from the msg.sender\n * @param amount The amount to burn\n * @return Returns true if the operation is successful\n
                    **/\n function burn(uint256 amount) public override returns (bool) {\n require(isBurningAllowed, \"BURNING_NOT_ALLOWED\");\n _burn
                    (msg.sender, amount);\n return true;\n }\n\n /**\n * @notice Get the number of tokens `spender` is approved to spend on behalf of
                    `account`\n * @param account The address of the account holding the funds\n * @param spender The address of the account spending the
                    funds\n * @return The number of tokens approved\n **/\n function allowance(address account, address spender) external view override
                    returns (uint256) {\n return allowances[account][spender];\n }\n\n /**\n * @notice Get the number of tokens held by the
                    `account`\n * @param account The address of the account to get the balance of\n * @return The number of tokens held\n */\n function
                    balanceOf(address account) external view override returns (uint256) {\n return balances[account];\n }\n\n /**\n * @notice Gets the
                    current votes balance for `account`\n * @param account The address to get votes balance\n * @return The number of current votes for
                    `account`\n */\n function getCurrentVotes(address account) external view returns (uint256) {\n uint32 nCheckpoints =
                    numCheckpoints[account];\n return nCheckpoints \u003e 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;\n }\n\n /**\n *
                    @notice Delegate votes from `msg.sender` to `delegatee`\n * @param delegatee The address to delegate votes to\n */\n function delegate
                    (address delegatee) public {\n return _delegate(msg.sender, delegatee);\n }\n\n /**\n * @notice Delegates votes from signatory to
                    `delegatee`\n * @param delegatee The address to delegate votes to\n * @param nonce The contract state required to match the signature\n
                     * @param expiry The time at which to expire the signature\n * @param v The recovery byte of the signature\n * @param r Half of the ECDSA
                    signature pair\n * @param s Half of the ECDSA signature pair\n */\n function delegateBySig(\n address delegatee,\n uint256
                    nonce,\n uint256 expiry,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public {\n bytes32 domainSeparator =\n
                     keccak256(\n abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))\n );\n bytes32
                    structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));\n bytes32 digest = keccak256(abi.encodePacked
                    (\"\\x19\\x01\", domainSeparator, structHash));\n address signatory = ecrecover(digest, v, r, s);\n require(signatory != address(0),
                    \"INVALID_SIGNATURE\");\n require(nonce == nonces[signatory]++, \"INVALID_NONCE\");\n require(block.timestamp \u003c= expiry,
                    \"SIGNATURE_EXPIRED\");\n return _delegate(signatory, delegatee);\n }\n\n /**\n * @notice Determine the prior number of votes for
                    an account as of a block number\n * @dev Block number must be a finalized block or else\n this function will revert to prevent
                    misinformation\n * @param account The address of the account to check\n * @param blockNumber The block number to get the vote balance at\n
                     * @return The number of votes the account had as of the given block\n */\n function getPriorVotes(address account, uint256 blockNumber
                    )\n public\n view\n override\n returns (uint256)\n {\n require(blockNumber \u003c block.number,
                    \"NOT_YET_DETERMINED\");\n\n uint32 nCheckpoints = numCheckpoints[account];\n if (nCheckpoints == 0) {\n return 0;\n
                     }\n\n // First check most recent balance\n if (checkpoints[account][nCheckpoints - 1].fromBlock \u003c= blockNumber) {\n
                     return checkpoints[account][nCheckpoints - 1].votes;\n }\n\n // Next check implicit zero balance\n if
                    (checkpoints[account][0].fromBlock \u003e blockNumber) {\n return 0;\n }\n\n uint32 lower = 0;\n uint32 upper =
                    nCheckpoints - 1;\n while (upper \u003e lower) {\n uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow\n
                     Checkpoint memory cp = checkpoints[account][center];\n if (cp.fromBlock == blockNumber) {\n return cp.votes;\n
                     } else if (cp.fromBlock \u003c blockNumber) {\n lower = center;\n } else {\n upper = center - 1;\n
                     }\n }\n return checkpoints[account][lower].votes;\n }\n\n function _delegate(address delegator, address delegatee)
                    internal {\n address currentDelegate = delegates[delegator];\n uint256 delegatorBalance = balances[delegator];\n
                    delegates[delegator] = delegatee;\n\n emit DelegateChanged(delegator, currentDelegate, delegatee);\n\n _moveDelegates(currentDelegate
                    , delegatee, delegatorBalance);\n }\n\n function _transfer(\n address src,\n address dst,\n uint256 amount\n )
                    internal {\n require(src != address(0), \"SENDER_ZERO_ADDR\");\n require(dst != address(0), \"RECEIVER_ZERO_ADDR\");\n require
                    (dst != address(this), \"SEND_TO_TOKEN_CONTRACT\");\n\n balances[src] = balances[src].sub(amount, \"TRANSFER_EXCEED_BALANCE\");\n
                    balances[dst] = balances[dst].add(amount);\n emit Transfer(src, dst, amount);\n\n _moveDelegates(delegates[src], delegates[dst],
                    amount);\n }\n\n function _approve(\n address src,\n address dst,\n uint256 amount\n ) internal virtual {\n
                    require(src != address(0), \"OWNER_ZERO_ADDR\");\n require(dst != address(0), \"SPENDER_ZERO_ADDR\");\n\n allowances[src][dst] =
                    amount;\n emit Approval(src, dst, amount);\n }\n\n function _moveDelegates(\n address srcRep,\n address dstRep,\n
                     uint256 amount\n ) internal {\n if (srcRep != dstRep \u0026\u0026 amount \u003e 0) {\n if (srcRep != address(0)) {\n
                     uint32 srcRepNum = numCheckpoints[srcRep];\n uint256 srcRepOld = srcRepNum \u003e 0 ? checkpoints[srcRep][srcRepNum - 1]
                    .votes : 0;\n uint256 srcRepNew = srcRepOld.sub(amount);\n _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew
                    );\n }\n\n if (dstRep != address(0)) {\n uint32 dstRepNum = numCheckpoints[dstRep];\n uint256
                    dstRepOld = dstRepNum \u003e 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;\n uint256 dstRepNew = dstRepOld.add(amount);\n
                     _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);\n }\n }\n }\n\n function _writeCheckpoint(\n
                    address delegatee,\n uint32 nCheckpoints,\n uint256 oldVotes,\n uint256 newVotes\n ) internal {\n uint32 blockNumber
                    = safe32(block.number, \"BLOCK_NUM_EXCEED_32_BITS\");\n\n if (\n nCheckpoints \u003e 0 \u0026\u0026
                    checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber\n ) {\n checkpoints[delegatee][nCheckpoints - 1].votes =
                    newVotes;\n } else {\n checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);\n
                    numCheckpoints[delegatee] = nCheckpoints + 1;\n }\n\n emit DelegateVotesChanged(delegatee, oldVotes, newVotes);\n }\n\n
                    function safe32(uint256 n, string memory errorMessage) internal pure returns (uint32) {\n require(n \u003c 2**32, errorMessage);\n
                    return uint32(n);\n }\n\n function getChainId() internal pure returns (uint256) {\n uint256 chainId;\n assembly {\n
                    chainId := chainid()\n }\n return chainId;\n }\n\n function initiateConfigChanges(\n uint256
                    _emissionRateMultiplierNumerator,\n uint256 _terminalInflationRateNumerator,\n address _liquidityIncentivesRecipient,\n bool
                    _isBurningAllowed\n ) external override onlyGovernance {\n require(_liquidityIncentivesRecipient != address(0), \"ZERO_ADDRESS\");\n
                     pendingEmissionRateMultiplierNumerator = _emissionRateMultiplierNumerator;\n pendingTerminalInflationRateNumerator =
                    _terminalInflationRateNumerator;\n pendingLiquidityIncentivesRecipient = _liquidityIncentivesRecipient;\n pendingIsBurningAllowed =
                    _isBurningAllowed;\n emit PendingConfigChanges(\n _emissionRateMultiplierNumerator,\n _terminalInflationRateNumerator
                    ,\n _liquidityIncentivesRecipient,\n _isBurningAllowed\n );\n configChangesInitiated = block.timestamp;\n
                    }\n\n function applyConfigChanges() external override {\n require(configChangesInitiated != 0, \"UNINITIATED_CONFIG_CHANGES\");\n
                    require(\n block.timestamp \u003e configChangesInitiated + CONFIG_CHANGES_TIME_LOCK,\n \"TIMELOCK_IS_NOT_OVER\"\n
                    );\n\n _mintLiquidityEmissions(); // We must settle the pending liquidity emissions first, to make sure the weeks in the past follow the old
                    configs\n\n emissionRateMultiplierNumerator = pendingEmissionRateMultiplierNumerator;\n terminalInflationRateNumerator =
                    pendingTerminalInflationRateNumerator;\n liquidityIncentivesRecipient = pendingLiquidityIncentivesRecipient;\n isBurningAllowed =
                    pendingIsBurningAllowed;\n configChangesInitiated = 0;\n emit ConfigsChanged(\n emissionRateMultiplierNumerator,\n
                     terminalInflationRateNumerator,\n liquidityIncentivesRecipient,\n isBurningAllowed\n );\n }\n\n function
                    claimLiquidityEmissions() external override returns (uint256 totalEmissions) {\n require(msg.sender == liquidityIncentivesRecipient,
                    \"NOT_INCENTIVES_RECIPIENT\");\n totalEmissions = _mintLiquidityEmissions();\n }\n\n function _mintLiquidityEmissions() internal
                    returns (uint256 totalEmissions) {\n uint256 _currentWeek = _getCurrentWeek();\n if (_currentWeek \u003c= lastWeekEmissionSent) {\n
                     return 0;\n }\n for (uint256 i = lastWeekEmissionSent + 1; i \u003c= _currentWeek; i++) {\n if (i \u003c= 259)
                    {\n lastWeeklyEmission = lastWeeklyEmission.mul(emissionRateMultiplierNumerator).div(\n CONFIG_DENOMINATOR\n
                     );\n } else {\n lastWeeklyEmission = totalSupply.mul(terminalInflationRateNumerator).div(\n
                     CONFIG_DENOMINATOR\n );\n }\n _mint(liquidityIncentivesRecipient, lastWeeklyEmission);\n
                    totalEmissions = totalEmissions.add(lastWeeklyEmission);\n }\n lastWeekEmissionSent = _currentWeek;\n }\n\n // get current 1
                    -indexed week id\n function _getCurrentWeek() internal view returns (uint256 weekId) {\n weekId = (block.timestamp - startTime) / (7 days
                    ) + 1;\n }\n\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"MINT_TO_ZERO_ADDR\");\n\n
                     totalSupply = totalSupply.add(amount);\n balances[account] = balances[account].add(amount);\n emit Transfer(address(0),
                    account, amount);\n }\n\n function _burn(address account, uint256 amount) internal {\n require(account != address(0),
                    \"BURN_FROM_ZERO_ADDRESS\");\n\n uint256 accountBalance = balances[account];\n require(accountBalance \u003e= amount,
                    \"BURN_EXCEED_BALANCE\");\n balances[account] = accountBalance.sub(amount);\n totalSupply = totalSupply.sub(amount);\n\n emit
                    Transfer(account, address(0), amount);\n }\n}\n"},"Permissions.sol":{"content":"// SPDX-License-Identifier: MIT\n/*\n * MIT License\n *
                    ===========\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation
                    files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge,
                    publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so,
                    subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or
                    substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING
                    BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS
                    OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n
                    * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n */\npragma solidity 0.7.6;\n\nimport \"./IERC20.sol\"
                    ;\n\nabstract contract Permissions {\n address public governance;\n address public pendingGovernance;\n address internal initializer;\n\n
                     event GovernanceClaimed(address newGovernance, address previousGovernance);\n\n event TransferGovernancePending(address pendingGovernance
                    );\n\n constructor(address _governance) {\n require(_governance != address(0), \"ZERO_ADDRESS\");\n initializer = msg.sender;\n
                     governance = _governance;\n }\n\n modifier initialized() {\n require(initializer == address(0), \"NOT_INITIALIZED\");\n _
                    ;\n }\n\n modifier onlyGovernance() {\n require(msg.sender == governance, \"ONLY_GOVERNANCE\");\n _;\n }\n\n /**\n *
                    @dev Allows the pendingGovernance address to finalize the change governance process.\n */\n function claimGovernance() public {\n
                    require(pendingGovernance == msg.sender, \"WRONG_GOVERNANCE\");\n emit GovernanceClaimed(pendingGovernance, governance);\n governance
                    = pendingGovernance;\n pendingGovernance = address(0);\n }\n\n /**\n * @dev Allows the current governance to set the
                    pendingGovernance address.\n * @param _governance The address to transfer ownership to.\n */\n function transferGovernance(address
                    _governance) public onlyGovernance {\n require(_governance != address(0), \"ZERO_ADDRESS\");\n pendingGovernance = _governance;\n\n
                     emit TransferGovernancePending(pendingGovernance);\n }\n}\n"},"SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma
                    solidity \u003e=0.6.0 \u003c0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./SafeMath.sol\";\nimport \"./Address.sol\";\n\n/**\n * @title SafeERC20\n
                    * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead
                    revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a
                    `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n
                    */\nlibrary SafeERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n function safeTransfer(IERC20 token, address to,
                    uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function
                    safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token
                    .transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n *
                    {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance}
                    instead.\n */\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\n // safeApprove should only be called
                    when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n //
                    \u0027safeIncreaseAllowance\u0027 and \u0027safeDecreaseAllowance\u0027\n // solhint-disable-next-line max-line-length\n require
                    ((value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n
                    );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function
                    safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this),
                    spender).add(value);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n
                    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address
                    (this), spender).sub(value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token
                    .approve.selector, spender, newAllowance));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a
                    contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n
                     * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n
                     function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass
                    Solidity\u0027s return data size checking mechanism, since\n // we\u0027re implementing it ourselves. We use {Address.functionCall} to
                    perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call
                    .\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length
                    \u003e 0) { // Return data is optional\n // solhint-disable-next-line max-line-length\n require(abi.decode(returndata, (bool
                    )), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n"},"SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma
                    solidity \u003e=0.6.0 \u003c0.8.0;\n\n/**\n * @dev Wrappers over Solidity\u0027s arithmetic operations with added overflow\n * checks.\n *\n *
                    Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises
                    an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the
                    transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs,
                    so it\u0027s recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an
                    overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256)
                    {\n uint256 c = a + b;\n if (c \u003c a) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the
                    substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a,
                    uint256 b) internal pure returns (bool, uint256) {\n if (b \u003e a) return (false, 0);\n return (true, a - b);\n }\n\n /**\n
                     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n
                    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n // Gas optimization: this is cheaper than requiring
                    \u0027a\u0027 not being zero, but the\n // benefit is lost if \u0027b\u0027 is also tested.\n // See: https://github.com/OpenZeppelin
                    /openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n
                     return (true, c);\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n *
                    _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return
                    (false, 0);\n return (true, a / b);\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division
                    by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n
                     if (b == 0) return (false, 0);\n return (true, a % b);\n }\n\n /**\n * @dev Returns the addition of two unsigned integers,
                    reverting on\n * overflow.\n *\n * Counterpart to Solidity\u0027s `+` operator.\n *\n * Requirements:\n *\n * -
                    Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n
                    require(c \u003e= a, \"SafeMath: addition overflow\");\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned
                    integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity\u0027s `-` operator.\n *\n *
                    Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n
                     require(b \u003c= a, \"SafeMath: subtraction overflow\");\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of
                    two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity\u0027s `*` operator.\n *\n * Requirements:\n
                     *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n if (a
                    == 0) return 0;\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n return c;\n }\n\n
                    /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero
                    .\n *\n * Counterpart to Solidity\u0027s `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas
                    untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * -
                    The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b \u003e 0,
                    \"SafeMath: division by zero\");\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers.
                    (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity\u0027s `%` operator. This function uses
                    a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining
                    gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure
                    returns (uint256) {\n require(b \u003e 0, \"SafeMath: modulo by zero\");\n return a % b;\n }\n\n /**\n * @dev Returns the
                    subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION:
                    This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use
                    {trySub}.\n *\n * Counterpart to Solidity\u0027s `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow
                    .\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b \u003c= a,
                    errorMessage);\n return a - b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom
                    message on\n * division by zero. The result is rounded towards zero.\n *\n * CAUTION: This function is deprecated because it requires
                    allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryDiv}.\n *\n * Counterpart to
                    Solidity\u0027s `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses
                    an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n
                     function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b \u003e 0, errorMessage);\n
                     return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n *
                    reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for
                    the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity\u0027s `%` operator. This
                    function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming
                    all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b,
                    string memory errorMessage) internal pure returns (uint256) {\n require(b \u003e 0, errorMessage);\n return a % b;\n }\n}\n"}
                    ,"Withdrawable.sol":{"content":"// SPDX-License-Identifier: MIT\n/*\n * MIT License\n * ===========\n *\n * Permission is hereby granted, free of
                    charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software
                    without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *
                    copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The
                    above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE
                    IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *
                    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
                    OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
                    OTHER DEALINGS IN THE\n */\npragma solidity 0.7.6;\n\nimport \"./IERC20.sol\";\nimport \"./SafeERC20.sol\";\nimport \"./Permissions.sol\"
                    ;\n\nabstract contract Withdrawable is Permissions {\n using SafeERC20 for IERC20;\n\n event EtherWithdraw(uint256 amount, address sendTo);\n
                     event TokenWithdraw(IERC20 token, uint256 amount, address sendTo);\n\n /**\n * @dev Allows governance to withdraw Ether in a Pendle
                    contract\n * in case of accidental ETH transfer into the contract.\n * @param amount The amount of Ether to withdraw.\n * @param
                    sendTo The recipient address.\n */\n function withdrawEther(uint256 amount, address payable sendTo) external onlyGovernance {\n (bool
                    success, ) = sendTo.call{value: amount}(\"\");\n require(success, \"WITHDRAW_FAILED\");\n emit EtherWithdraw(amount, sendTo);\n
                    }\n\n /**\n * @dev Allows governance to withdraw all IERC20 compatible tokens in a Pendle\n * contract in case of accidental token
                    transfer into the contract.\n * @param token IERC20 The address of the token contract.\n * @param amount The amount of IERC20 tokens to
                    withdraw.\n * @param sendTo The recipient address.\n */\n function withdrawToken(\n IERC20 token,\n uint256 amount,\n
                     address sendTo\n ) external onlyGovernance {\n token.safeTransfer(sendTo, amount);\n emit TokenWithdraw(token, amount, sendTo
                    );\n }\n}\n"}}
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX