PathOpsSimplifyTest.cpp 568 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856
  1. /*
  2. * Copyright 2012 Google Inc.
  3. *
  4. * Use of this source code is governed by a BSD-style license that can be
  5. * found in the LICENSE file.
  6. */
  7. #include "tests/PathOpsExtendedTest.h"
  8. #define TEST(name) { name, #name }
  9. static void testLine1(skiatest::Reporter* reporter, const char* filename) {
  10. SkPath path;
  11. path.moveTo(2,0);
  12. path.lineTo(1,1);
  13. path.lineTo(0,0);
  14. path.close();
  15. testSimplify(reporter, path, filename);
  16. }
  17. static void testLine1x(skiatest::Reporter* reporter, const char* filename) {
  18. SkPath path;
  19. path.setFillType(SkPath::kEvenOdd_FillType);
  20. path.moveTo(2,0);
  21. path.lineTo(1,1);
  22. path.lineTo(0,0);
  23. path.close();
  24. testSimplify(reporter, path, filename);
  25. }
  26. static void addInnerCWTriangle(SkPath& path) {
  27. path.moveTo(3,0);
  28. path.lineTo(4,1);
  29. path.lineTo(2,1);
  30. path.close();
  31. }
  32. static void addInnerCCWTriangle(SkPath& path) {
  33. path.moveTo(3,0);
  34. path.lineTo(2,1);
  35. path.lineTo(4,1);
  36. path.close();
  37. }
  38. static void addOuterCWTriangle(SkPath& path) {
  39. path.moveTo(3,0);
  40. path.lineTo(6,2);
  41. path.lineTo(0,2);
  42. path.close();
  43. }
  44. static void addOuterCCWTriangle(SkPath& path) {
  45. path.moveTo(3,0);
  46. path.lineTo(0,2);
  47. path.lineTo(6,2);
  48. path.close();
  49. }
  50. static void testLine2(skiatest::Reporter* reporter, const char* filename) {
  51. SkPath path;
  52. addInnerCWTriangle(path);
  53. addOuterCWTriangle(path);
  54. testSimplify(reporter, path, filename);
  55. }
  56. static void testLine2x(skiatest::Reporter* reporter, const char* filename) {
  57. SkPath path;
  58. path.setFillType(SkPath::kEvenOdd_FillType);
  59. addInnerCWTriangle(path);
  60. addOuterCWTriangle(path);
  61. testSimplify(reporter, path, filename);
  62. }
  63. static void testLine3(skiatest::Reporter* reporter, const char* filename) {
  64. SkPath path;
  65. addInnerCCWTriangle(path);
  66. addOuterCWTriangle(path);
  67. testSimplify(reporter, path, filename);
  68. }
  69. static void testLine3x(skiatest::Reporter* reporter, const char* filename) {
  70. SkPath path;
  71. path.setFillType(SkPath::kEvenOdd_FillType);
  72. addInnerCCWTriangle(path);
  73. addOuterCWTriangle(path);
  74. testSimplify(reporter, path, filename);
  75. }
  76. static void testLine3a(skiatest::Reporter* reporter, const char* filename) {
  77. SkPath path;
  78. addInnerCWTriangle(path);
  79. addOuterCCWTriangle(path);
  80. testSimplify(reporter, path, filename);
  81. }
  82. static void testLine3ax(skiatest::Reporter* reporter, const char* filename) {
  83. SkPath path;
  84. path.setFillType(SkPath::kEvenOdd_FillType);
  85. addInnerCWTriangle(path);
  86. addOuterCCWTriangle(path);
  87. testSimplify(reporter, path, filename);
  88. }
  89. static void testLine3b(skiatest::Reporter* reporter, const char* filename) {
  90. SkPath path;
  91. addInnerCCWTriangle(path);
  92. addOuterCCWTriangle(path);
  93. testSimplify(reporter, path, filename);
  94. }
  95. static void testLine3bx(skiatest::Reporter* reporter, const char* filename) {
  96. SkPath path;
  97. path.setFillType(SkPath::kEvenOdd_FillType);
  98. addInnerCCWTriangle(path);
  99. addOuterCCWTriangle(path);
  100. testSimplify(reporter, path, filename);
  101. }
  102. static void testLine4(skiatest::Reporter* reporter, const char* filename) {
  103. SkPath path;
  104. addOuterCCWTriangle(path);
  105. addOuterCWTriangle(path);
  106. testSimplify(reporter, path, filename);
  107. }
  108. static void testLine4x(skiatest::Reporter* reporter, const char* filename) {
  109. SkPath path;
  110. path.setFillType(SkPath::kEvenOdd_FillType);
  111. addOuterCCWTriangle(path);
  112. addOuterCWTriangle(path);
  113. testSimplify(reporter, path, filename);
  114. }
  115. static void testLine5(skiatest::Reporter* reporter, const char* filename) {
  116. SkPath path;
  117. addOuterCWTriangle(path);
  118. addOuterCWTriangle(path);
  119. testSimplify(reporter, path, filename);
  120. }
  121. static void testLine5x(skiatest::Reporter* reporter, const char* filename) {
  122. SkPath path;
  123. path.setFillType(SkPath::kEvenOdd_FillType);
  124. addOuterCWTriangle(path);
  125. addOuterCWTriangle(path);
  126. testSimplify(reporter, path, filename);
  127. }
  128. static void testLine6(skiatest::Reporter* reporter, const char* filename) {
  129. SkPath path;
  130. path.moveTo(0,0);
  131. path.lineTo(4,0);
  132. path.lineTo(2,2);
  133. path.close();
  134. path.moveTo(2,0);
  135. path.lineTo(6,0);
  136. path.lineTo(4,2);
  137. path.close();
  138. testSimplify(reporter, path, filename);
  139. }
  140. static void testLine6x(skiatest::Reporter* reporter, const char* filename) {
  141. SkPath path;
  142. path.setFillType(SkPath::kEvenOdd_FillType);
  143. path.moveTo(0,0);
  144. path.lineTo(4,0);
  145. path.lineTo(2,2);
  146. path.close();
  147. path.moveTo(2,0);
  148. path.lineTo(6,0);
  149. path.lineTo(4,2);
  150. path.close();
  151. testSimplify(reporter, path, filename);
  152. }
  153. static void testLine7(skiatest::Reporter* reporter, const char* filename) {
  154. SkPath path;
  155. path.moveTo(0,0);
  156. path.lineTo(4,0);
  157. path.lineTo(2,2);
  158. path.close();
  159. path.moveTo(6,0);
  160. path.lineTo(2,0);
  161. path.lineTo(4,2);
  162. path.close();
  163. testSimplify(reporter, path, filename);
  164. }
  165. static void testLine7x(skiatest::Reporter* reporter, const char* filename) {
  166. SkPath path;
  167. path.setFillType(SkPath::kEvenOdd_FillType);
  168. path.moveTo(0,0);
  169. path.lineTo(4,0);
  170. path.lineTo(2,2);
  171. path.close();
  172. path.moveTo(6,0);
  173. path.lineTo(2,0);
  174. path.lineTo(4,2);
  175. path.close();
  176. testSimplify(reporter, path, filename);
  177. }
  178. static void testLine7a(skiatest::Reporter* reporter, const char* filename) {
  179. SkPath path;
  180. path.moveTo(0,0);
  181. path.lineTo(4,0);
  182. path.lineTo(2,2);
  183. path.close();
  184. testSimplify(reporter, path, filename);
  185. }
  186. static void testLine7ax(skiatest::Reporter* reporter, const char* filename) {
  187. SkPath path;
  188. path.setFillType(SkPath::kEvenOdd_FillType);
  189. path.moveTo(0,0);
  190. path.lineTo(4,0);
  191. path.lineTo(2,2);
  192. path.close();
  193. testSimplify(reporter, path, filename);
  194. }
  195. static void testLine7b(skiatest::Reporter* reporter, const char* filename) {
  196. SkPath path;
  197. path.moveTo(0,0);
  198. path.lineTo(4,0);
  199. path.close();
  200. path.moveTo(6,0);
  201. path.lineTo(2,0);
  202. path.lineTo(4,2);
  203. path.close();
  204. testSimplify(reporter, path, filename);
  205. }
  206. static void testLine7bx(skiatest::Reporter* reporter, const char* filename) {
  207. SkPath path;
  208. path.setFillType(SkPath::kEvenOdd_FillType);
  209. path.moveTo(0,0);
  210. path.lineTo(4,0);
  211. path.close();
  212. path.moveTo(6,0);
  213. path.lineTo(2,0);
  214. path.lineTo(4,2);
  215. path.close();
  216. testSimplify(reporter, path, filename);
  217. }
  218. static void testLine8(skiatest::Reporter* reporter, const char* filename) {
  219. SkPath path;
  220. path.moveTo(0,4);
  221. path.lineTo(4,4);
  222. path.lineTo(2,2);
  223. path.close();
  224. path.moveTo(2,4);
  225. path.lineTo(6,4);
  226. path.lineTo(4,2);
  227. path.close();
  228. testSimplify(reporter, path, filename);
  229. }
  230. static void testLine8x(skiatest::Reporter* reporter, const char* filename) {
  231. SkPath path;
  232. path.setFillType(SkPath::kEvenOdd_FillType);
  233. path.moveTo(0,4);
  234. path.lineTo(4,4);
  235. path.lineTo(2,2);
  236. path.close();
  237. path.moveTo(2,4);
  238. path.lineTo(6,4);
  239. path.lineTo(4,2);
  240. path.close();
  241. testSimplify(reporter, path, filename);
  242. }
  243. static void testLine9(skiatest::Reporter* reporter, const char* filename) {
  244. SkPath path;
  245. path.moveTo(0,4);
  246. path.lineTo(4,4);
  247. path.lineTo(2,2);
  248. path.close();
  249. path.moveTo(6,4);
  250. path.lineTo(2,4);
  251. path.lineTo(4,2);
  252. path.close();
  253. testSimplify(reporter, path, filename);
  254. }
  255. static void testLine9x(skiatest::Reporter* reporter, const char* filename) {
  256. SkPath path;
  257. path.setFillType(SkPath::kEvenOdd_FillType);
  258. path.moveTo(0,4);
  259. path.lineTo(4,4);
  260. path.lineTo(2,2);
  261. path.close();
  262. path.moveTo(6,4);
  263. path.lineTo(2,4);
  264. path.lineTo(4,2);
  265. path.close();
  266. testSimplify(reporter, path, filename);
  267. }
  268. static void testLine10(skiatest::Reporter* reporter, const char* filename) {
  269. SkPath path;
  270. path.moveTo(0,4);
  271. path.lineTo(4,4);
  272. path.lineTo(2,2);
  273. path.close();
  274. path.moveTo(2,1);
  275. path.lineTo(3,4);
  276. path.lineTo(6,1);
  277. path.close();
  278. testSimplify(reporter, path, filename);
  279. }
  280. static void testLine10x(skiatest::Reporter* reporter, const char* filename) {
  281. SkPath path;
  282. path.setFillType(SkPath::kEvenOdd_FillType);
  283. path.moveTo(0,4);
  284. path.lineTo(4,4);
  285. path.lineTo(2,2);
  286. path.close();
  287. path.moveTo(2,1);
  288. path.lineTo(3,4);
  289. path.lineTo(6,1);
  290. path.close();
  291. testSimplify(reporter, path, filename);
  292. }
  293. static void testLine10a(skiatest::Reporter* reporter, const char* filename) {
  294. SkPath path;
  295. path.moveTo(0,4);
  296. path.lineTo(8,4);
  297. path.lineTo(4,0);
  298. path.close();
  299. path.moveTo(2,2);
  300. path.lineTo(3,3);
  301. path.lineTo(4,2);
  302. path.close();
  303. testSimplify(reporter, path, filename);
  304. }
  305. static void testLine10ax(skiatest::Reporter* reporter, const char* filename) {
  306. SkPath path;
  307. path.setFillType(SkPath::kEvenOdd_FillType);
  308. path.moveTo(0,4);
  309. path.lineTo(8,4);
  310. path.lineTo(4,0);
  311. path.close();
  312. path.moveTo(2,2);
  313. path.lineTo(3,3);
  314. path.lineTo(4,2);
  315. path.close();
  316. testSimplify(reporter, path, filename);
  317. }
  318. static void addCWContainer(SkPath& path) {
  319. path.moveTo(6,4);
  320. path.lineTo(0,4);
  321. path.lineTo(3,1);
  322. path.close();
  323. }
  324. static void addCCWContainer(SkPath& path) {
  325. path.moveTo(0,4);
  326. path.lineTo(6,4);
  327. path.lineTo(3,1);
  328. path.close();
  329. }
  330. static void addCWContents(SkPath& path) {
  331. path.moveTo(2,3);
  332. path.lineTo(3,2);
  333. path.lineTo(4,3);
  334. path.close();
  335. }
  336. static void addCCWContents(SkPath& path) {
  337. path.moveTo(3,2);
  338. path.lineTo(2,3);
  339. path.lineTo(4,3);
  340. path.close();
  341. }
  342. static void testLine11(skiatest::Reporter* reporter, const char* filename) {
  343. SkPath path;
  344. addCWContainer(path);
  345. addCWContents(path);
  346. testSimplify(reporter, path, filename);
  347. }
  348. static void testLine11x(skiatest::Reporter* reporter, const char* filename) {
  349. SkPath path;
  350. path.setFillType(SkPath::kEvenOdd_FillType);
  351. addCWContainer(path);
  352. addCWContents(path);
  353. testSimplify(reporter, path, filename);
  354. }
  355. static void testLine12(skiatest::Reporter* reporter, const char* filename) {
  356. SkPath path;
  357. addCCWContainer(path);
  358. addCWContents(path);
  359. testSimplify(reporter, path, filename);
  360. }
  361. static void testLine12x(skiatest::Reporter* reporter, const char* filename) {
  362. SkPath path;
  363. path.setFillType(SkPath::kEvenOdd_FillType);
  364. addCCWContainer(path);
  365. addCWContents(path);
  366. testSimplify(reporter, path, filename);
  367. }
  368. static void testLine13(skiatest::Reporter* reporter, const char* filename) {
  369. SkPath path;
  370. addCWContainer(path);
  371. addCCWContents(path);
  372. testSimplify(reporter, path, filename);
  373. }
  374. static void testLine13x(skiatest::Reporter* reporter, const char* filename) {
  375. SkPath path;
  376. path.setFillType(SkPath::kEvenOdd_FillType);
  377. addCWContainer(path);
  378. addCCWContents(path);
  379. testSimplify(reporter, path, filename);
  380. }
  381. static void testLine14(skiatest::Reporter* reporter, const char* filename) {
  382. SkPath path;
  383. addCCWContainer(path);
  384. addCCWContents(path);
  385. testSimplify(reporter, path, filename);
  386. }
  387. static void testLine14x(skiatest::Reporter* reporter, const char* filename) {
  388. SkPath path;
  389. path.setFillType(SkPath::kEvenOdd_FillType);
  390. addCCWContainer(path);
  391. addCCWContents(path);
  392. testSimplify(reporter, path, filename);
  393. }
  394. static void testLine15(skiatest::Reporter* reporter, const char* filename) {
  395. SkPath path;
  396. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  397. testSimplify(reporter, path, filename);
  398. }
  399. static void testLine15x(skiatest::Reporter* reporter, const char* filename) {
  400. SkPath path;
  401. path.setFillType(SkPath::kEvenOdd_FillType);
  402. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  403. testSimplify(reporter, path, filename);
  404. }
  405. static void testLine16(skiatest::Reporter* reporter, const char* filename) {
  406. SkPath path;
  407. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  408. path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
  409. testSimplify(reporter, path, filename);
  410. }
  411. static void testLine16x(skiatest::Reporter* reporter, const char* filename) {
  412. SkPath path;
  413. path.setFillType(SkPath::kEvenOdd_FillType);
  414. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  415. path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
  416. testSimplify(reporter, path, filename);
  417. }
  418. static void testLine17(skiatest::Reporter* reporter, const char* filename) {
  419. SkPath path;
  420. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  421. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  422. testSimplify(reporter, path, filename);
  423. }
  424. static void testLine17x(skiatest::Reporter* reporter, const char* filename) {
  425. SkPath path;
  426. path.setFillType(SkPath::kEvenOdd_FillType);
  427. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  428. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  429. testSimplify(reporter, path, filename);
  430. }
  431. static void testLine18(skiatest::Reporter* reporter, const char* filename) {
  432. SkPath path;
  433. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  434. path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
  435. testSimplify(reporter, path, filename);
  436. }
  437. static void testLine18x(skiatest::Reporter* reporter, const char* filename) {
  438. SkPath path;
  439. path.setFillType(SkPath::kEvenOdd_FillType);
  440. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  441. path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
  442. testSimplify(reporter, path, filename);
  443. }
  444. static void testLine19(skiatest::Reporter* reporter, const char* filename) {
  445. SkPath path;
  446. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  447. path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);
  448. testSimplify(reporter, path, filename);
  449. }
  450. static void testLine19x(skiatest::Reporter* reporter, const char* filename) {
  451. SkPath path;
  452. path.setFillType(SkPath::kEvenOdd_FillType);
  453. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  454. path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);
  455. testSimplify(reporter, path, filename);
  456. }
  457. static void testLine20(skiatest::Reporter* reporter, const char* filename) {
  458. SkPath path;
  459. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  460. path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
  461. testSimplify(reporter, path, filename);
  462. }
  463. static void testLine20x(skiatest::Reporter* reporter, const char* filename) {
  464. SkPath path;
  465. path.setFillType(SkPath::kEvenOdd_FillType);
  466. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  467. path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
  468. testSimplify(reporter, path, filename);
  469. }
  470. static void testLine21(skiatest::Reporter* reporter, const char* filename) {
  471. SkPath path;
  472. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  473. path.addRect(0, 16, 9, 9, SkPath::kCW_Direction);
  474. testSimplify(reporter, path, filename);
  475. }
  476. static void testLine21x(skiatest::Reporter* reporter, const char* filename) {
  477. SkPath path;
  478. path.setFillType(SkPath::kEvenOdd_FillType);
  479. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  480. path.addRect(0, 16, 9, 9, SkPath::kCW_Direction);
  481. testSimplify(reporter, path, filename);
  482. }
  483. static void testLine22(skiatest::Reporter* reporter, const char* filename) {
  484. SkPath path;
  485. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  486. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  487. testSimplify(reporter, path, filename);
  488. }
  489. static void testLine22x(skiatest::Reporter* reporter, const char* filename) {
  490. SkPath path;
  491. path.setFillType(SkPath::kEvenOdd_FillType);
  492. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  493. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  494. testSimplify(reporter, path, filename);
  495. }
  496. static void testLine23(skiatest::Reporter* reporter, const char* filename) {
  497. SkPath path;
  498. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  499. path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
  500. testSimplify(reporter, path, filename);
  501. }
  502. static void testLine23x(skiatest::Reporter* reporter, const char* filename) {
  503. SkPath path;
  504. path.setFillType(SkPath::kEvenOdd_FillType);
  505. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  506. path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
  507. testSimplify(reporter, path, filename);
  508. }
  509. static void testLine24a(skiatest::Reporter* reporter, const char* filename) {
  510. SkPath path;
  511. path.moveTo(2,0);
  512. path.lineTo(4,4);
  513. path.lineTo(0,4);
  514. path.close();
  515. path.moveTo(2,0);
  516. path.lineTo(1,2);
  517. path.lineTo(2,2);
  518. path.close();
  519. testSimplify(reporter, path, filename);
  520. }
  521. static void testLine24ax(skiatest::Reporter* reporter, const char* filename) {
  522. SkPath path;
  523. path.setFillType(SkPath::kEvenOdd_FillType);
  524. path.moveTo(2,0);
  525. path.lineTo(4,4);
  526. path.lineTo(0,4);
  527. path.close();
  528. path.moveTo(2,0);
  529. path.lineTo(1,2);
  530. path.lineTo(2,2);
  531. path.close();
  532. testSimplify(reporter, path, filename);
  533. }
  534. static void testLine24(skiatest::Reporter* reporter, const char* filename) {
  535. SkPath path;
  536. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  537. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  538. testSimplify(reporter, path, filename);
  539. }
  540. static void testLine24x(skiatest::Reporter* reporter, const char* filename) {
  541. SkPath path;
  542. path.setFillType(SkPath::kEvenOdd_FillType);
  543. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  544. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  545. testSimplify(reporter, path, filename);
  546. }
  547. static void testLine25(skiatest::Reporter* reporter, const char* filename) {
  548. SkPath path;
  549. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  550. path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
  551. testSimplify(reporter, path, filename);
  552. }
  553. static void testLine25x(skiatest::Reporter* reporter, const char* filename) {
  554. SkPath path;
  555. path.setFillType(SkPath::kEvenOdd_FillType);
  556. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  557. path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
  558. testSimplify(reporter, path, filename);
  559. }
  560. static void testLine26(skiatest::Reporter* reporter, const char* filename) {
  561. SkPath path;
  562. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  563. path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
  564. testSimplify(reporter, path, filename);
  565. }
  566. static void testLine26x(skiatest::Reporter* reporter, const char* filename) {
  567. SkPath path;
  568. path.setFillType(SkPath::kEvenOdd_FillType);
  569. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  570. path.addRect(0, 12, 9, 9, SkPath::kCW_Direction);
  571. testSimplify(reporter, path, filename);
  572. }
  573. static void testLine27(skiatest::Reporter* reporter, const char* filename) {
  574. SkPath path;
  575. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  576. path.addRect(12, 8, 21, 21, SkPath::kCW_Direction);
  577. testSimplify(reporter, path, filename);
  578. }
  579. static void testLine27x(skiatest::Reporter* reporter, const char* filename) {
  580. SkPath path;
  581. path.setFillType(SkPath::kEvenOdd_FillType);
  582. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  583. path.addRect(12, 8, 21, 21, SkPath::kCW_Direction);
  584. testSimplify(reporter, path, filename);
  585. }
  586. static void testLine28(skiatest::Reporter* reporter, const char* filename) {
  587. SkPath path;
  588. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  589. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  590. testSimplify(reporter, path, filename);
  591. }
  592. static void testLine28x(skiatest::Reporter* reporter, const char* filename) {
  593. SkPath path;
  594. path.setFillType(SkPath::kEvenOdd_FillType);
  595. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  596. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  597. testSimplify(reporter, path, filename);
  598. }
  599. static void testLine29(skiatest::Reporter* reporter, const char* filename) {
  600. SkPath path;
  601. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  602. path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
  603. testSimplify(reporter, path, filename);
  604. }
  605. static void testLine29x(skiatest::Reporter* reporter, const char* filename) {
  606. SkPath path;
  607. path.setFillType(SkPath::kEvenOdd_FillType);
  608. path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
  609. path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
  610. testSimplify(reporter, path, filename);
  611. }
  612. static void testLine30(skiatest::Reporter* reporter, const char* filename) {
  613. SkPath path;
  614. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  615. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  616. path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
  617. testSimplify(reporter, path, filename);
  618. }
  619. static void testLine30x(skiatest::Reporter* reporter, const char* filename) {
  620. SkPath path;
  621. path.setFillType(SkPath::kEvenOdd_FillType);
  622. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  623. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  624. path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
  625. testSimplify(reporter, path, filename);
  626. }
  627. static void testLine31(skiatest::Reporter* reporter, const char* filename) {
  628. SkPath path;
  629. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  630. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  631. path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
  632. testSimplify(reporter, path, filename);
  633. }
  634. static void testLine31x(skiatest::Reporter* reporter, const char* filename) {
  635. SkPath path;
  636. path.setFillType(SkPath::kEvenOdd_FillType);
  637. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  638. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  639. path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
  640. testSimplify(reporter, path, filename);
  641. }
  642. static void testLine32(skiatest::Reporter* reporter, const char* filename) {
  643. SkPath path;
  644. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  645. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  646. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  647. testSimplify(reporter, path, filename);
  648. }
  649. static void testLine32x(skiatest::Reporter* reporter, const char* filename) {
  650. SkPath path;
  651. path.setFillType(SkPath::kEvenOdd_FillType);
  652. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  653. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  654. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  655. testSimplify(reporter, path, filename);
  656. }
  657. static void testLine33(skiatest::Reporter* reporter, const char* filename) {
  658. SkPath path;
  659. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  660. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  661. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  662. testSimplify(reporter, path, filename);
  663. }
  664. static void testLine33x(skiatest::Reporter* reporter, const char* filename) {
  665. SkPath path;
  666. path.setFillType(SkPath::kEvenOdd_FillType);
  667. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  668. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  669. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  670. testSimplify(reporter, path, filename);
  671. }
  672. static void testLine34(skiatest::Reporter* reporter, const char* filename) {
  673. SkPath path;
  674. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  675. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  676. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  677. testSimplify(reporter, path, filename);
  678. }
  679. static void testLine34x(skiatest::Reporter* reporter, const char* filename) {
  680. SkPath path;
  681. path.setFillType(SkPath::kEvenOdd_FillType);
  682. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  683. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  684. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  685. testSimplify(reporter, path, filename);
  686. }
  687. static void testLine35(skiatest::Reporter* reporter, const char* filename) {
  688. SkPath path;
  689. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  690. path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
  691. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  692. testSimplify(reporter, path, filename);
  693. }
  694. static void testLine35x(skiatest::Reporter* reporter, const char* filename) {
  695. SkPath path;
  696. path.setFillType(SkPath::kEvenOdd_FillType);
  697. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  698. path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
  699. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  700. testSimplify(reporter, path, filename);
  701. }
  702. static void testLine36(skiatest::Reporter* reporter, const char* filename) {
  703. SkPath path;
  704. path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
  705. path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
  706. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  707. testSimplify(reporter, path, filename);
  708. }
  709. static void testLine36x(skiatest::Reporter* reporter, const char* filename) {
  710. SkPath path;
  711. path.setFillType(SkPath::kEvenOdd_FillType);
  712. path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
  713. path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
  714. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  715. testSimplify(reporter, path, filename);
  716. }
  717. static void testLine37(skiatest::Reporter* reporter, const char* filename) {
  718. SkPath path;
  719. path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
  720. path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
  721. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  722. testSimplify(reporter, path, filename);
  723. }
  724. static void testLine37x(skiatest::Reporter* reporter, const char* filename) {
  725. SkPath path;
  726. path.setFillType(SkPath::kEvenOdd_FillType);
  727. path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
  728. path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
  729. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  730. testSimplify(reporter, path, filename);
  731. }
  732. static void testLine38(skiatest::Reporter* reporter, const char* filename) {
  733. SkPath path;
  734. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  735. path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
  736. path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
  737. testSimplify(reporter, path, filename);
  738. }
  739. static void testLine38x(skiatest::Reporter* reporter, const char* filename) {
  740. SkPath path;
  741. path.setFillType(SkPath::kEvenOdd_FillType);
  742. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  743. path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
  744. path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
  745. testSimplify(reporter, path, filename);
  746. }
  747. static void testLine40(skiatest::Reporter* reporter, const char* filename) {
  748. SkPath path;
  749. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  750. path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
  751. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  752. testSimplify(reporter, path, filename);
  753. }
  754. static void testLine40x(skiatest::Reporter* reporter, const char* filename) {
  755. SkPath path;
  756. path.setFillType(SkPath::kEvenOdd_FillType);
  757. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  758. path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
  759. path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
  760. testSimplify(reporter, path, filename);
  761. }
  762. static void testLine41(skiatest::Reporter* reporter, const char* filename) {
  763. SkPath path;
  764. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  765. path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
  766. path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
  767. testSimplify(reporter, path, filename);
  768. }
  769. static void testLine41x(skiatest::Reporter* reporter, const char* filename) {
  770. SkPath path;
  771. path.setFillType(SkPath::kEvenOdd_FillType);
  772. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  773. path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
  774. path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
  775. testSimplify(reporter, path, filename);
  776. }
  777. static void testLine42(skiatest::Reporter* reporter, const char* filename) {
  778. SkPath path;
  779. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  780. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  781. path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
  782. testSimplify(reporter, path, filename);
  783. }
  784. static void testLine42x(skiatest::Reporter* reporter, const char* filename) {
  785. SkPath path;
  786. path.setFillType(SkPath::kEvenOdd_FillType);
  787. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  788. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  789. path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
  790. testSimplify(reporter, path, filename);
  791. }
  792. static void testLine43(skiatest::Reporter* reporter, const char* filename) {
  793. SkPath path;
  794. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  795. path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
  796. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  797. testSimplify(reporter, path, filename);
  798. }
  799. static void testLine43x(skiatest::Reporter* reporter, const char* filename) {
  800. SkPath path;
  801. path.setFillType(SkPath::kEvenOdd_FillType);
  802. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  803. path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
  804. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  805. testSimplify(reporter, path, filename);
  806. }
  807. static void testLine44(skiatest::Reporter* reporter, const char* filename) {
  808. SkPath path;
  809. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  810. path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
  811. path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
  812. testSimplify(reporter, path, filename);
  813. }
  814. static void testLine44x(skiatest::Reporter* reporter, const char* filename) {
  815. SkPath path;
  816. path.setFillType(SkPath::kEvenOdd_FillType);
  817. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  818. path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
  819. path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
  820. testSimplify(reporter, path, filename);
  821. }
  822. static void testLine45(skiatest::Reporter* reporter, const char* filename) {
  823. SkPath path;
  824. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  825. path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
  826. path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
  827. testSimplify(reporter, path, filename);
  828. }
  829. static void testLine45x(skiatest::Reporter* reporter, const char* filename) {
  830. SkPath path;
  831. path.setFillType(SkPath::kEvenOdd_FillType);
  832. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  833. path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
  834. path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
  835. testSimplify(reporter, path, filename);
  836. }
  837. static void testLine46(skiatest::Reporter* reporter, const char* filename) {
  838. SkPath path;
  839. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  840. path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
  841. path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
  842. testSimplify(reporter, path, filename);
  843. }
  844. static void testLine46x(skiatest::Reporter* reporter, const char* filename) {
  845. SkPath path;
  846. path.setFillType(SkPath::kEvenOdd_FillType);
  847. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  848. path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
  849. path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
  850. testSimplify(reporter, path, filename);
  851. }
  852. static void testLine47(skiatest::Reporter* reporter, const char* filename) {
  853. SkPath path;
  854. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  855. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  856. path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
  857. testSimplify(reporter, path, filename);
  858. }
  859. static void testLine47x(skiatest::Reporter* reporter, const char* filename) {
  860. SkPath path;
  861. path.setFillType(SkPath::kEvenOdd_FillType);
  862. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  863. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  864. path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
  865. testSimplify(reporter, path, filename);
  866. }
  867. static void testLine48(skiatest::Reporter* reporter, const char* filename) {
  868. SkPath path;
  869. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  870. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  871. path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
  872. testSimplify(reporter, path, filename);
  873. }
  874. static void testLine48x(skiatest::Reporter* reporter, const char* filename) {
  875. SkPath path;
  876. path.setFillType(SkPath::kEvenOdd_FillType);
  877. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  878. path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
  879. path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
  880. testSimplify(reporter, path, filename);
  881. }
  882. static void testLine49(skiatest::Reporter* reporter, const char* filename) {
  883. SkPath path;
  884. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  885. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  886. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  887. testSimplify(reporter, path, filename);
  888. }
  889. static void testLine49x(skiatest::Reporter* reporter, const char* filename) {
  890. SkPath path;
  891. path.setFillType(SkPath::kEvenOdd_FillType);
  892. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  893. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  894. path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
  895. testSimplify(reporter, path, filename);
  896. }
  897. static void testLine50(skiatest::Reporter* reporter, const char* filename) {
  898. SkPath path;
  899. path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
  900. path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
  901. testSimplify(reporter, path, filename);
  902. }
  903. static void testLine50x(skiatest::Reporter* reporter, const char* filename) {
  904. SkPath path;
  905. path.setFillType(SkPath::kEvenOdd_FillType);
  906. path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
  907. path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
  908. testSimplify(reporter, path, filename);
  909. }
  910. static void testLine51(skiatest::Reporter* reporter, const char* filename) {
  911. SkPath path;
  912. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  913. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  914. path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
  915. testSimplify(reporter, path, filename);
  916. }
  917. static void testLine51x(skiatest::Reporter* reporter, const char* filename) {
  918. SkPath path;
  919. path.setFillType(SkPath::kEvenOdd_FillType);
  920. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  921. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  922. path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
  923. testSimplify(reporter, path, filename);
  924. }
  925. static void testLine52(skiatest::Reporter* reporter, const char* filename) {
  926. SkPath path;
  927. path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
  928. path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
  929. path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
  930. testSimplify(reporter, path, filename);
  931. }
  932. static void testLine52x(skiatest::Reporter* reporter, const char* filename) {
  933. SkPath path;
  934. path.setFillType(SkPath::kEvenOdd_FillType);
  935. path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
  936. path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
  937. path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
  938. testSimplify(reporter, path, filename);
  939. }
  940. static void testLine53(skiatest::Reporter* reporter, const char* filename) {
  941. SkPath path;
  942. path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
  943. path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
  944. path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
  945. testSimplify(reporter, path, filename);
  946. }
  947. static void testLine53x(skiatest::Reporter* reporter, const char* filename) {
  948. SkPath path;
  949. path.setFillType(SkPath::kEvenOdd_FillType);
  950. path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
  951. path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
  952. path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
  953. testSimplify(reporter, path, filename);
  954. }
  955. static void testLine54(skiatest::Reporter* reporter, const char* filename) {
  956. SkPath path;
  957. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  958. path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
  959. path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
  960. testSimplify(reporter, path, filename);
  961. }
  962. static void testLine54x(skiatest::Reporter* reporter, const char* filename) {
  963. SkPath path;
  964. path.setFillType(SkPath::kEvenOdd_FillType);
  965. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  966. path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
  967. path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
  968. testSimplify(reporter, path, filename);
  969. }
  970. static void testLine55(skiatest::Reporter* reporter, const char* filename) {
  971. SkPath path;
  972. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  973. path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
  974. path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
  975. testSimplify(reporter, path, filename);
  976. }
  977. static void testLine55x(skiatest::Reporter* reporter, const char* filename) {
  978. SkPath path;
  979. path.setFillType(SkPath::kEvenOdd_FillType);
  980. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  981. path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
  982. path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
  983. testSimplify(reporter, path, filename);
  984. }
  985. static void testLine56(skiatest::Reporter* reporter, const char* filename) {
  986. SkPath path;
  987. path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
  988. path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
  989. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  990. testSimplify(reporter, path, filename);
  991. }
  992. static void testLine56x(skiatest::Reporter* reporter, const char* filename) {
  993. SkPath path;
  994. path.setFillType(SkPath::kEvenOdd_FillType);
  995. path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
  996. path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
  997. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  998. testSimplify(reporter, path, filename);
  999. }
  1000. static void testLine57(skiatest::Reporter* reporter, const char* filename) {
  1001. SkPath path;
  1002. path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
  1003. path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
  1004. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  1005. testSimplify(reporter, path, filename);
  1006. }
  1007. static void testLine57x(skiatest::Reporter* reporter, const char* filename) {
  1008. SkPath path;
  1009. path.setFillType(SkPath::kEvenOdd_FillType);
  1010. path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
  1011. path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
  1012. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  1013. testSimplify(reporter, path, filename);
  1014. }
  1015. static void testLine58(skiatest::Reporter* reporter, const char* filename) {
  1016. SkPath path;
  1017. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1018. path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
  1019. path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
  1020. testSimplify(reporter, path, filename);
  1021. }
  1022. static void testLine58x(skiatest::Reporter* reporter, const char* filename) {
  1023. SkPath path;
  1024. path.setFillType(SkPath::kEvenOdd_FillType);
  1025. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1026. path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
  1027. path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
  1028. testSimplify(reporter, path, filename);
  1029. }
  1030. static void testLine59(skiatest::Reporter* reporter, const char* filename) {
  1031. SkPath path;
  1032. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1033. path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
  1034. path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
  1035. testSimplify(reporter, path, filename);
  1036. }
  1037. static void testLine59x(skiatest::Reporter* reporter, const char* filename) {
  1038. SkPath path;
  1039. path.setFillType(SkPath::kEvenOdd_FillType);
  1040. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1041. path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
  1042. path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
  1043. testSimplify(reporter, path, filename);
  1044. }
  1045. static void testLine60(skiatest::Reporter* reporter, const char* filename) {
  1046. SkPath path;
  1047. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1048. path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
  1049. path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
  1050. testSimplify(reporter, path, filename);
  1051. }
  1052. static void testLine60x(skiatest::Reporter* reporter, const char* filename) {
  1053. SkPath path;
  1054. path.setFillType(SkPath::kEvenOdd_FillType);
  1055. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1056. path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
  1057. path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
  1058. testSimplify(reporter, path, filename);
  1059. }
  1060. static void testLine61(skiatest::Reporter* reporter, const char* filename) {
  1061. SkPath path;
  1062. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1063. path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
  1064. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  1065. testSimplify(reporter, path, filename);
  1066. }
  1067. static void testLine61x(skiatest::Reporter* reporter, const char* filename) {
  1068. SkPath path;
  1069. path.setFillType(SkPath::kEvenOdd_FillType);
  1070. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1071. path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
  1072. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  1073. testSimplify(reporter, path, filename);
  1074. }
  1075. static void testLine62(skiatest::Reporter* reporter, const char* filename) {
  1076. SkPath path;
  1077. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1078. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1079. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  1080. path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
  1081. testSimplify(reporter, path, filename);
  1082. }
  1083. static void testLine62x(skiatest::Reporter* reporter, const char* filename) {
  1084. SkPath path;
  1085. path.setFillType(SkPath::kEvenOdd_FillType);
  1086. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1087. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1088. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  1089. path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
  1090. testSimplify(reporter, path, filename);
  1091. }
  1092. static void testLine63(skiatest::Reporter* reporter, const char* filename) {
  1093. SkPath path;
  1094. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1095. path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
  1096. path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
  1097. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  1098. testSimplify(reporter, path, filename);
  1099. }
  1100. static void testLine63x(skiatest::Reporter* reporter, const char* filename) {
  1101. SkPath path;
  1102. path.setFillType(SkPath::kEvenOdd_FillType);
  1103. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1104. path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
  1105. path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
  1106. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  1107. testSimplify(reporter, path, filename);
  1108. }
  1109. static void testLine64(skiatest::Reporter* reporter, const char* filename) {
  1110. SkPath path;
  1111. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1112. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  1113. path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
  1114. testSimplify(reporter, path, filename);
  1115. }
  1116. static void testLine64x(skiatest::Reporter* reporter, const char* filename) {
  1117. SkPath path;
  1118. path.setFillType(SkPath::kEvenOdd_FillType);
  1119. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1120. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  1121. path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
  1122. testSimplify(reporter, path, filename);
  1123. }
  1124. static void testLine65(skiatest::Reporter* reporter, const char* filename) {
  1125. SkPath path;
  1126. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1127. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  1128. path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
  1129. path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
  1130. testSimplify(reporter, path, filename);
  1131. }
  1132. static void testLine65x(skiatest::Reporter* reporter, const char* filename) {
  1133. SkPath path;
  1134. path.setFillType(SkPath::kEvenOdd_FillType);
  1135. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1136. path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
  1137. path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
  1138. path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
  1139. testSimplify(reporter, path, filename);
  1140. }
  1141. static void testLine66(skiatest::Reporter* reporter, const char* filename) {
  1142. SkPath path;
  1143. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1144. path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
  1145. path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
  1146. testSimplify(reporter, path, filename);
  1147. }
  1148. static void testLine66x(skiatest::Reporter* reporter, const char* filename) {
  1149. SkPath path;
  1150. path.setFillType(SkPath::kEvenOdd_FillType);
  1151. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1152. path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
  1153. path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
  1154. testSimplify(reporter, path, filename);
  1155. }
  1156. static void testLine67(skiatest::Reporter* reporter, const char* filename) {
  1157. SkPath path;
  1158. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1159. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  1160. path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
  1161. path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
  1162. testSimplify(reporter, path, filename);
  1163. }
  1164. static void testLine67x(skiatest::Reporter* reporter, const char* filename) {
  1165. SkPath path;
  1166. path.setFillType(SkPath::kEvenOdd_FillType);
  1167. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1168. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  1169. path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
  1170. path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
  1171. testSimplify(reporter, path, filename);
  1172. }
  1173. static void testLine68a(skiatest::Reporter* reporter, const char* filename) {
  1174. SkPath path;
  1175. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1176. path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
  1177. path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
  1178. testSimplify(reporter, path, filename);
  1179. }
  1180. static void testLine68ax(skiatest::Reporter* reporter, const char* filename) {
  1181. SkPath path;
  1182. path.setFillType(SkPath::kEvenOdd_FillType);
  1183. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1184. path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
  1185. path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
  1186. testSimplify(reporter, path, filename);
  1187. }
  1188. static void testLine68b(skiatest::Reporter* reporter, const char* filename) {
  1189. SkPath path;
  1190. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1191. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1192. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1193. testSimplify(reporter, path, filename);
  1194. }
  1195. static void testLine68bx(skiatest::Reporter* reporter, const char* filename) {
  1196. SkPath path;
  1197. path.setFillType(SkPath::kEvenOdd_FillType);
  1198. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1199. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1200. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1201. testSimplify(reporter, path, filename);
  1202. }
  1203. static void testLine68c(skiatest::Reporter* reporter, const char* filename) {
  1204. SkPath path;
  1205. path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
  1206. path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
  1207. path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
  1208. testSimplify(reporter, path, filename);
  1209. }
  1210. static void testLine68cx(skiatest::Reporter* reporter, const char* filename) {
  1211. SkPath path;
  1212. path.setFillType(SkPath::kEvenOdd_FillType);
  1213. path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
  1214. path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
  1215. path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
  1216. testSimplify(reporter, path, filename);
  1217. }
  1218. static void testLine68d(skiatest::Reporter* reporter, const char* filename) {
  1219. SkPath path;
  1220. path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
  1221. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1222. path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
  1223. testSimplify(reporter, path, filename);
  1224. }
  1225. static void testLine68dx(skiatest::Reporter* reporter, const char* filename) {
  1226. SkPath path;
  1227. path.setFillType(SkPath::kEvenOdd_FillType);
  1228. path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
  1229. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1230. path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
  1231. testSimplify(reporter, path, filename);
  1232. }
  1233. static void testLine68e(skiatest::Reporter* reporter, const char* filename) {
  1234. SkPath path;
  1235. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1236. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1237. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1238. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1239. testSimplify(reporter, path, filename);
  1240. }
  1241. static void testLine68ex(skiatest::Reporter* reporter, const char* filename) {
  1242. SkPath path;
  1243. path.setFillType(SkPath::kEvenOdd_FillType);
  1244. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1245. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1246. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1247. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1248. testSimplify(reporter, path, filename);
  1249. }
  1250. static void testLine68f(skiatest::Reporter* reporter, const char* filename) {
  1251. SkPath path;
  1252. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1253. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1254. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1255. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1256. testSimplify(reporter, path, filename);
  1257. }
  1258. static void testLine68fx(skiatest::Reporter* reporter, const char* filename) {
  1259. SkPath path;
  1260. path.setFillType(SkPath::kEvenOdd_FillType);
  1261. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1262. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1263. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1264. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1265. testSimplify(reporter, path, filename);
  1266. }
  1267. static void testLine68g(skiatest::Reporter* reporter, const char* filename) {
  1268. SkPath path;
  1269. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1270. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1271. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1272. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1273. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1274. testSimplify(reporter, path, filename);
  1275. }
  1276. static void testLine68gx(skiatest::Reporter* reporter, const char* filename) {
  1277. SkPath path;
  1278. path.setFillType(SkPath::kEvenOdd_FillType);
  1279. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1280. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1281. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1282. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1283. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1284. testSimplify(reporter, path, filename);
  1285. }
  1286. static void testLine68h(skiatest::Reporter* reporter, const char* filename) {
  1287. SkPath path;
  1288. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1289. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1290. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1291. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1292. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1293. testSimplify(reporter, path, filename);
  1294. }
  1295. static void testLine68hx(skiatest::Reporter* reporter, const char* filename) {
  1296. SkPath path;
  1297. path.setFillType(SkPath::kEvenOdd_FillType);
  1298. path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
  1299. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1300. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1301. path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
  1302. path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
  1303. testSimplify(reporter, path, filename);
  1304. }
  1305. static void testLine69(skiatest::Reporter* reporter, const char* filename) {
  1306. SkPath path;
  1307. path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
  1308. path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
  1309. path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
  1310. testSimplify(reporter, path, filename);
  1311. }
  1312. static void testLine69x(skiatest::Reporter* reporter, const char* filename) {
  1313. SkPath path;
  1314. path.setFillType(SkPath::kEvenOdd_FillType);
  1315. path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
  1316. path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
  1317. path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
  1318. testSimplify(reporter, path, filename);
  1319. }
  1320. static void testLine70(skiatest::Reporter* reporter, const char* filename) {
  1321. SkPath path;
  1322. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1323. path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
  1324. path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
  1325. testSimplify(reporter, path, filename);
  1326. }
  1327. static void testLine70x(skiatest::Reporter* reporter, const char* filename) {
  1328. SkPath path;
  1329. path.setFillType(SkPath::kEvenOdd_FillType);
  1330. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1331. path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
  1332. path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
  1333. testSimplify(reporter, path, filename);
  1334. }
  1335. static void testLine71(skiatest::Reporter* reporter, const char* filename) {
  1336. SkPath path;
  1337. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1338. path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
  1339. path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
  1340. testSimplify(reporter, path, filename);
  1341. }
  1342. static void testLine71x(skiatest::Reporter* reporter, const char* filename) {
  1343. SkPath path;
  1344. path.setFillType(SkPath::kEvenOdd_FillType);
  1345. path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
  1346. path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
  1347. path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
  1348. testSimplify(reporter, path, filename);
  1349. }
  1350. static void testLine72(skiatest::Reporter* reporter, const char* filename) {
  1351. SkPath path;
  1352. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1353. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  1354. path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
  1355. testSimplify(reporter, path, filename);
  1356. }
  1357. static void testLine72x(skiatest::Reporter* reporter, const char* filename) {
  1358. SkPath path;
  1359. path.setFillType(SkPath::kEvenOdd_FillType);
  1360. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1361. path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
  1362. path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
  1363. testSimplify(reporter, path, filename);
  1364. }
  1365. static void testLine73(skiatest::Reporter* reporter, const char* filename) {
  1366. SkPath path;
  1367. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1368. path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
  1369. path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
  1370. path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
  1371. testSimplify(reporter, path, filename);
  1372. }
  1373. static void testLine73x(skiatest::Reporter* reporter, const char* filename) {
  1374. SkPath path;
  1375. path.setFillType(SkPath::kEvenOdd_FillType);
  1376. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1377. path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
  1378. path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
  1379. path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
  1380. testSimplify(reporter, path, filename);
  1381. }
  1382. static void testLine74(skiatest::Reporter* reporter, const char* filename) {
  1383. SkPath path;
  1384. path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
  1385. path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
  1386. path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
  1387. testSimplify(reporter, path, filename);
  1388. }
  1389. static void testLine74x(skiatest::Reporter* reporter, const char* filename) {
  1390. SkPath path;
  1391. path.setFillType(SkPath::kEvenOdd_FillType);
  1392. path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
  1393. path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
  1394. path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
  1395. testSimplify(reporter, path, filename);
  1396. }
  1397. static void testLine75(skiatest::Reporter* reporter, const char* filename) {
  1398. SkPath path;
  1399. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1400. path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
  1401. path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
  1402. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  1403. testSimplify(reporter, path, filename);
  1404. }
  1405. static void testLine75x(skiatest::Reporter* reporter, const char* filename) {
  1406. SkPath path;
  1407. path.setFillType(SkPath::kEvenOdd_FillType);
  1408. path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
  1409. path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
  1410. path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
  1411. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  1412. testSimplify(reporter, path, filename);
  1413. }
  1414. static void testLine76(skiatest::Reporter* reporter, const char* filename) {
  1415. SkPath path;
  1416. path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
  1417. path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
  1418. path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
  1419. path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
  1420. testSimplify(reporter, path, filename);
  1421. }
  1422. static void testLine76x(skiatest::Reporter* reporter, const char* filename) {
  1423. SkPath path;
  1424. path.setFillType(SkPath::kEvenOdd_FillType);
  1425. path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
  1426. path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
  1427. path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
  1428. path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
  1429. testSimplify(reporter, path, filename);
  1430. }
  1431. static void testLine77(skiatest::Reporter* reporter, const char* filename) {
  1432. SkPath path;
  1433. path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
  1434. path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
  1435. path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
  1436. testSimplify(reporter, path, filename);
  1437. }
  1438. static void testLine77x(skiatest::Reporter* reporter, const char* filename) {
  1439. SkPath path;
  1440. path.setFillType(SkPath::kEvenOdd_FillType);
  1441. path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
  1442. path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
  1443. path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
  1444. testSimplify(reporter, path, filename);
  1445. }
  1446. static void testLine78(skiatest::Reporter* reporter, const char* filename) {
  1447. SkPath path;
  1448. path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
  1449. path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
  1450. path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
  1451. path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
  1452. testSimplify(reporter, path, filename);
  1453. }
  1454. static void testLine78x(skiatest::Reporter* reporter, const char* filename) {
  1455. SkPath path;
  1456. path.setFillType(SkPath::kEvenOdd_FillType);
  1457. path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
  1458. path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
  1459. path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
  1460. path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
  1461. testSimplify(reporter, path, filename);
  1462. }
  1463. static void testLine79(skiatest::Reporter* reporter, const char* filename) {
  1464. SkPath path;
  1465. path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
  1466. path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
  1467. path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
  1468. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  1469. testSimplify(reporter, path, filename);
  1470. }
  1471. static void testLine79x(skiatest::Reporter* reporter, const char* filename) {
  1472. SkPath path;
  1473. path.setFillType(SkPath::kEvenOdd_FillType);
  1474. path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
  1475. path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
  1476. path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
  1477. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  1478. testSimplify(reporter, path, filename);
  1479. }
  1480. static void testLine81(skiatest::Reporter* reporter, const char* filename) {
  1481. SkPath path;
  1482. path.addRect(-1, -1, 3, 3, SkPath::kCW_Direction);
  1483. path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
  1484. path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
  1485. path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
  1486. path.addRect(1, 1, 2, 2, SkPath::kCCW_Direction);
  1487. testSimplify(reporter, path, filename);
  1488. }
  1489. static void testDegenerate1(skiatest::Reporter* reporter, const char* filename) {
  1490. SkPath path;
  1491. path.moveTo(0, 0);
  1492. path.lineTo(0, 0);
  1493. path.lineTo(2, 0);
  1494. path.close();
  1495. path.moveTo(0, 0);
  1496. path.lineTo(1, 0);
  1497. path.lineTo(2, 0);
  1498. path.close();
  1499. testSimplify(reporter, path, filename);
  1500. }
  1501. static void testDegenerate1x(skiatest::Reporter* reporter, const char* filename) {
  1502. SkPath path;
  1503. path.setFillType(SkPath::kEvenOdd_FillType);
  1504. path.moveTo(0, 0);
  1505. path.lineTo(0, 0);
  1506. path.lineTo(2, 0);
  1507. path.close();
  1508. path.moveTo(0, 0);
  1509. path.lineTo(1, 0);
  1510. path.lineTo(2, 0);
  1511. path.close();
  1512. testSimplify(reporter, path, filename);
  1513. }
  1514. static void testDegenerate2(skiatest::Reporter* reporter, const char* filename) {
  1515. SkPath path;
  1516. path.moveTo(0, 0);
  1517. path.lineTo(0, 0);
  1518. path.lineTo(0, 0);
  1519. path.close();
  1520. path.moveTo(0, 0);
  1521. path.lineTo(1, 0);
  1522. path.lineTo(0, 1);
  1523. path.close();
  1524. testSimplify(reporter, path, filename);
  1525. }
  1526. static void testDegenerate2x(skiatest::Reporter* reporter, const char* filename) {
  1527. SkPath path;
  1528. path.setFillType(SkPath::kEvenOdd_FillType);
  1529. path.moveTo(0, 0);
  1530. path.lineTo(0, 0);
  1531. path.lineTo(0, 0);
  1532. path.close();
  1533. path.moveTo(0, 0);
  1534. path.lineTo(1, 0);
  1535. path.lineTo(0, 1);
  1536. path.close();
  1537. testSimplify(reporter, path, filename);
  1538. }
  1539. static void testDegenerate3(skiatest::Reporter* reporter, const char* filename) {
  1540. SkPath path;
  1541. path.moveTo(0, 0);
  1542. path.lineTo(2, 0);
  1543. path.lineTo(1, 0);
  1544. path.close();
  1545. path.moveTo(0, 0);
  1546. path.lineTo(0, 0);
  1547. path.lineTo(3, 0);
  1548. path.close();
  1549. testSimplify(reporter, path, filename);
  1550. }
  1551. static void testDegenerate3x(skiatest::Reporter* reporter, const char* filename) {
  1552. SkPath path;
  1553. path.setFillType(SkPath::kEvenOdd_FillType);
  1554. path.moveTo(0, 0);
  1555. path.lineTo(2, 0);
  1556. path.lineTo(1, 0);
  1557. path.close();
  1558. path.moveTo(0, 0);
  1559. path.lineTo(0, 0);
  1560. path.lineTo(3, 0);
  1561. path.close();
  1562. testSimplify(reporter, path, filename);
  1563. }
  1564. static void testDegenerate4(skiatest::Reporter* reporter, const char* filename) {
  1565. SkPath path;
  1566. path.moveTo(0, 0);
  1567. path.lineTo(1, 0);
  1568. path.lineTo(1, 3);
  1569. path.close();
  1570. path.moveTo(1, 0);
  1571. path.lineTo(1, 1);
  1572. path.lineTo(1, 2);
  1573. path.close();
  1574. testSimplify(reporter, path, filename);
  1575. }
  1576. static void testDegenerate4x(skiatest::Reporter* reporter, const char* filename) {
  1577. SkPath path;
  1578. path.setFillType(SkPath::kEvenOdd_FillType);
  1579. path.moveTo(0, 0);
  1580. path.lineTo(1, 0);
  1581. path.lineTo(1, 3);
  1582. path.close();
  1583. path.moveTo(1, 0);
  1584. path.lineTo(1, 1);
  1585. path.lineTo(1, 2);
  1586. path.close();
  1587. testSimplify(reporter, path, filename);
  1588. }
  1589. static void testNondegenerate1(skiatest::Reporter* reporter, const char* filename) {
  1590. SkPath path;
  1591. path.moveTo(0, 0);
  1592. path.lineTo(3, 0);
  1593. path.lineTo(1, 3);
  1594. path.close();
  1595. path.moveTo(1, 1);
  1596. path.lineTo(2, 1);
  1597. path.lineTo(1, 2);
  1598. path.close();
  1599. testSimplify(reporter, path, filename);
  1600. }
  1601. static void testNondegenerate1x(skiatest::Reporter* reporter, const char* filename) {
  1602. SkPath path;
  1603. path.setFillType(SkPath::kEvenOdd_FillType);
  1604. path.moveTo(0, 0);
  1605. path.lineTo(3, 0);
  1606. path.lineTo(1, 3);
  1607. path.close();
  1608. path.moveTo(1, 1);
  1609. path.lineTo(2, 1);
  1610. path.lineTo(1, 2);
  1611. path.close();
  1612. testSimplify(reporter, path, filename);
  1613. }
  1614. static void testNondegenerate2(skiatest::Reporter* reporter, const char* filename) {
  1615. SkPath path;
  1616. path.moveTo(1, 0);
  1617. path.lineTo(0, 1);
  1618. path.lineTo(1, 1);
  1619. path.close();
  1620. path.moveTo(0, 2);
  1621. path.lineTo(0, 3);
  1622. path.lineTo(1, 2);
  1623. path.close();
  1624. testSimplify(reporter, path, filename);
  1625. }
  1626. static void testNondegenerate2x(skiatest::Reporter* reporter, const char* filename) {
  1627. SkPath path;
  1628. path.setFillType(SkPath::kEvenOdd_FillType);
  1629. path.moveTo(1, 0);
  1630. path.lineTo(0, 1);
  1631. path.lineTo(1, 1);
  1632. path.close();
  1633. path.moveTo(0, 2);
  1634. path.lineTo(0, 3);
  1635. path.lineTo(1, 2);
  1636. path.close();
  1637. testSimplify(reporter, path, filename);
  1638. }
  1639. static void testNondegenerate3(skiatest::Reporter* reporter, const char* filename) {
  1640. SkPath path;
  1641. path.moveTo(0, 0);
  1642. path.lineTo(1, 0);
  1643. path.lineTo(2, 1);
  1644. path.close();
  1645. path.moveTo(0, 1);
  1646. path.lineTo(1, 1);
  1647. path.lineTo(0, 2);
  1648. path.close();
  1649. testSimplify(reporter, path, filename);
  1650. }
  1651. static void testNondegenerate3x(skiatest::Reporter* reporter, const char* filename) {
  1652. SkPath path;
  1653. path.setFillType(SkPath::kEvenOdd_FillType);
  1654. path.moveTo(0, 0);
  1655. path.lineTo(1, 0);
  1656. path.lineTo(2, 1);
  1657. path.close();
  1658. path.moveTo(0, 1);
  1659. path.lineTo(1, 1);
  1660. path.lineTo(0, 2);
  1661. path.close();
  1662. testSimplify(reporter, path, filename);
  1663. }
  1664. static void testNondegenerate4(skiatest::Reporter* reporter, const char* filename) {
  1665. SkPath path;
  1666. path.moveTo(1, 0);
  1667. path.lineTo(0, 1);
  1668. path.lineTo(1, 2);
  1669. path.close();
  1670. path.moveTo(0, 2);
  1671. path.lineTo(0, 3);
  1672. path.lineTo(1, 3);
  1673. path.close();
  1674. testSimplify(reporter, path, filename);
  1675. }
  1676. static void testNondegenerate4x(skiatest::Reporter* reporter, const char* filename) {
  1677. SkPath path;
  1678. path.setFillType(SkPath::kEvenOdd_FillType);
  1679. path.moveTo(1, 0);
  1680. path.lineTo(0, 1);
  1681. path.lineTo(1, 2);
  1682. path.close();
  1683. path.moveTo(0, 2);
  1684. path.lineTo(0, 3);
  1685. path.lineTo(1, 3);
  1686. path.close();
  1687. testSimplify(reporter, path, filename);
  1688. }
  1689. static void testQuadralateral5(skiatest::Reporter* reporter, const char* filename) {
  1690. SkPath path;
  1691. path.moveTo(0, 0);
  1692. path.lineTo(0, 0);
  1693. path.lineTo(1, 0);
  1694. path.lineTo(1, 1);
  1695. path.close();
  1696. path.moveTo(0, 0);
  1697. path.lineTo(2, 2);
  1698. path.lineTo(3, 2);
  1699. path.lineTo(3, 3);
  1700. path.close();
  1701. testSimplify(reporter, path, filename);
  1702. }
  1703. static void testQuadralateral5x(skiatest::Reporter* reporter, const char* filename) {
  1704. SkPath path;
  1705. path.setFillType(SkPath::kEvenOdd_FillType);
  1706. path.moveTo(0, 0);
  1707. path.lineTo(0, 0);
  1708. path.lineTo(1, 0);
  1709. path.lineTo(1, 1);
  1710. path.close();
  1711. path.moveTo(0, 0);
  1712. path.lineTo(2, 2);
  1713. path.lineTo(3, 2);
  1714. path.lineTo(3, 3);
  1715. path.close();
  1716. testSimplify(reporter, path, filename);
  1717. }
  1718. static void testQuadralateral6(skiatest::Reporter* reporter, const char* filename) {
  1719. SkPath path;
  1720. path.moveTo(0, 0);
  1721. path.lineTo(0, 0);
  1722. path.lineTo(1, 0);
  1723. path.lineTo(1, 1);
  1724. path.close();
  1725. path.moveTo(1, 0);
  1726. path.lineTo(2, 0);
  1727. path.lineTo(0, 2);
  1728. path.lineTo(2, 2);
  1729. path.close();
  1730. testSimplify(reporter, path, filename);
  1731. }
  1732. static void testQuadralateral6x(skiatest::Reporter* reporter, const char* filename) {
  1733. SkPath path;
  1734. path.setFillType(SkPath::kEvenOdd_FillType);
  1735. path.moveTo(0, 0);
  1736. path.lineTo(0, 0);
  1737. path.lineTo(1, 0);
  1738. path.lineTo(1, 1);
  1739. path.close();
  1740. path.moveTo(1, 0);
  1741. path.lineTo(2, 0);
  1742. path.lineTo(0, 2);
  1743. path.lineTo(2, 2);
  1744. path.close();
  1745. testSimplify(reporter, path, filename);
  1746. }
  1747. static void testFauxQuadralateral6(skiatest::Reporter* reporter, const char* filename) {
  1748. SkPath path;
  1749. path.moveTo(0, 0);
  1750. path.lineTo(1, 0);
  1751. path.lineTo(1, 1);
  1752. path.close();
  1753. path.moveTo(1, 0);
  1754. path.lineTo(2, 0);
  1755. path.lineTo(1 + 1.0f/3, 2.0f/3);
  1756. path.close();
  1757. path.moveTo(1 + 1.0f/3, 2.0f/3);
  1758. path.lineTo(0, 2);
  1759. path.lineTo(2, 2);
  1760. path.close();
  1761. testSimplify(reporter, path, filename);
  1762. }
  1763. static void testFauxQuadralateral6x(skiatest::Reporter* reporter, const char* filename) {
  1764. SkPath path;
  1765. path.setFillType(SkPath::kEvenOdd_FillType);
  1766. path.moveTo(0, 0);
  1767. path.lineTo(1, 0);
  1768. path.lineTo(1, 1);
  1769. path.close();
  1770. path.moveTo(1, 0);
  1771. path.lineTo(2, 0);
  1772. path.lineTo(1 + 1.0f/3, 2.0f/3);
  1773. path.close();
  1774. path.moveTo(1 + 1.0f/3, 2.0f/3);
  1775. path.lineTo(0, 2);
  1776. path.lineTo(2, 2);
  1777. path.close();
  1778. testSimplify(reporter, path, filename);
  1779. }
  1780. static void testFauxQuadralateral6a(skiatest::Reporter* reporter, const char* filename) {
  1781. SkPath path;
  1782. path.moveTo(0, 0);
  1783. path.lineTo(3, 0);
  1784. path.lineTo(3, 3);
  1785. path.close();
  1786. path.moveTo(3, 0);
  1787. path.lineTo(6, 0);
  1788. path.lineTo(4, 2);
  1789. path.close();
  1790. path.moveTo(4, 2);
  1791. path.lineTo(0, 6);
  1792. path.lineTo(6, 6);
  1793. path.close();
  1794. testSimplify(reporter, path, filename);
  1795. }
  1796. static void testFauxQuadralateral6ax(skiatest::Reporter* reporter, const char* filename) {
  1797. SkPath path;
  1798. path.setFillType(SkPath::kEvenOdd_FillType);
  1799. path.moveTo(0, 0);
  1800. path.lineTo(3, 0);
  1801. path.lineTo(3, 3);
  1802. path.close();
  1803. path.moveTo(3, 0);
  1804. path.lineTo(6, 0);
  1805. path.lineTo(4, 2);
  1806. path.close();
  1807. path.moveTo(4, 2);
  1808. path.lineTo(0, 6);
  1809. path.lineTo(6, 6);
  1810. path.close();
  1811. testSimplify(reporter, path, filename);
  1812. }
  1813. static void testFauxQuadralateral6b(skiatest::Reporter* reporter, const char* filename) {
  1814. SkPath path;
  1815. path.moveTo(0, 0);
  1816. path.lineTo(3, 0);
  1817. path.lineTo(3, 3);
  1818. path.close();
  1819. path.moveTo(3, 0);
  1820. path.lineTo(6, 0);
  1821. path.lineTo(4, 2);
  1822. path.close();
  1823. path.moveTo(4, 2);
  1824. path.lineTo(6, 6);
  1825. path.lineTo(0, 6);
  1826. path.close();
  1827. testSimplify(reporter, path, filename);
  1828. }
  1829. static void testFauxQuadralateral6bx(skiatest::Reporter* reporter, const char* filename) {
  1830. SkPath path;
  1831. path.setFillType(SkPath::kEvenOdd_FillType);
  1832. path.moveTo(0, 0);
  1833. path.lineTo(3, 0);
  1834. path.lineTo(3, 3);
  1835. path.close();
  1836. path.moveTo(3, 0);
  1837. path.lineTo(6, 0);
  1838. path.lineTo(4, 2);
  1839. path.close();
  1840. path.moveTo(4, 2);
  1841. path.lineTo(6, 6);
  1842. path.lineTo(0, 6);
  1843. path.close();
  1844. testSimplify(reporter, path, filename);
  1845. }
  1846. static void testFauxQuadralateral6c(skiatest::Reporter* reporter, const char* filename) {
  1847. SkPath path;
  1848. path.moveTo(0, 0);
  1849. path.lineTo(3, 3);
  1850. path.lineTo(3, 0);
  1851. path.close();
  1852. path.moveTo(3, 0);
  1853. path.lineTo(6, 0);
  1854. path.lineTo(4, 2);
  1855. path.close();
  1856. path.moveTo(4, 2);
  1857. path.lineTo(0, 6);
  1858. path.lineTo(6, 6);
  1859. path.close();
  1860. testSimplify(reporter, path, filename);
  1861. }
  1862. static void testFauxQuadralateral6cx(skiatest::Reporter* reporter, const char* filename) {
  1863. SkPath path;
  1864. path.setFillType(SkPath::kEvenOdd_FillType);
  1865. path.moveTo(0, 0);
  1866. path.lineTo(3, 3);
  1867. path.lineTo(3, 0);
  1868. path.close();
  1869. path.moveTo(3, 0);
  1870. path.lineTo(6, 0);
  1871. path.lineTo(4, 2);
  1872. path.close();
  1873. path.moveTo(4, 2);
  1874. path.lineTo(0, 6);
  1875. path.lineTo(6, 6);
  1876. path.close();
  1877. testSimplify(reporter, path, filename);
  1878. }
  1879. static void testFauxQuadralateral6d(skiatest::Reporter* reporter, const char* filename) {
  1880. SkPath path;
  1881. path.moveTo(0, 0);
  1882. path.lineTo(3, 3);
  1883. path.lineTo(3, 0);
  1884. path.close();
  1885. path.moveTo(3, 0);
  1886. path.lineTo(6, 0);
  1887. path.lineTo(4, 2);
  1888. path.close();
  1889. path.moveTo(4, 2);
  1890. path.lineTo(6, 6);
  1891. path.lineTo(0, 6);
  1892. path.close();
  1893. testSimplify(reporter, path, filename);
  1894. }
  1895. static void testFauxQuadralateral6dx(skiatest::Reporter* reporter, const char* filename) {
  1896. SkPath path;
  1897. path.setFillType(SkPath::kEvenOdd_FillType);
  1898. path.moveTo(0, 0);
  1899. path.lineTo(3, 3);
  1900. path.lineTo(3, 0);
  1901. path.close();
  1902. path.moveTo(3, 0);
  1903. path.lineTo(6, 0);
  1904. path.lineTo(4, 2);
  1905. path.close();
  1906. path.moveTo(4, 2);
  1907. path.lineTo(6, 6);
  1908. path.lineTo(0, 6);
  1909. path.close();
  1910. testSimplify(reporter, path, filename);
  1911. }
  1912. static void testQuadralateral6a(skiatest::Reporter* reporter, const char* filename) {
  1913. SkPath path;
  1914. path.moveTo(0, 0);
  1915. path.lineTo(0, 0);
  1916. path.lineTo(3, 0);
  1917. path.lineTo(3, 3);
  1918. path.close();
  1919. path.moveTo(3, 0);
  1920. path.lineTo(6, 0);
  1921. path.lineTo(0, 6);
  1922. path.lineTo(6, 6);
  1923. path.close();
  1924. testSimplify(reporter, path, filename);
  1925. }
  1926. static void testQuadralateral6ax(skiatest::Reporter* reporter, const char* filename) {
  1927. SkPath path;
  1928. path.setFillType(SkPath::kEvenOdd_FillType);
  1929. path.moveTo(0, 0);
  1930. path.lineTo(0, 0);
  1931. path.lineTo(3, 0);
  1932. path.lineTo(3, 3);
  1933. path.close();
  1934. path.moveTo(3, 0);
  1935. path.lineTo(6, 0);
  1936. path.lineTo(0, 6);
  1937. path.lineTo(6, 6);
  1938. path.close();
  1939. testSimplify(reporter, path, filename);
  1940. }
  1941. static void testQuadralateral7(skiatest::Reporter* reporter, const char* filename) {
  1942. SkPath path;
  1943. path.moveTo(0, 0);
  1944. path.lineTo(0, 0);
  1945. path.lineTo(1, 0);
  1946. path.lineTo(2, 1);
  1947. path.close();
  1948. path.moveTo(1, 0);
  1949. path.lineTo(1, 1);
  1950. path.lineTo(2, 2);
  1951. path.lineTo(1, 3);
  1952. path.close();
  1953. testSimplify(reporter, path, filename);
  1954. }
  1955. static void testQuadralateral7x(skiatest::Reporter* reporter, const char* filename) {
  1956. SkPath path;
  1957. path.setFillType(SkPath::kEvenOdd_FillType);
  1958. path.moveTo(0, 0);
  1959. path.lineTo(0, 0);
  1960. path.lineTo(1, 0);
  1961. path.lineTo(2, 1);
  1962. path.close();
  1963. path.moveTo(1, 0);
  1964. path.lineTo(1, 1);
  1965. path.lineTo(2, 2);
  1966. path.lineTo(1, 3);
  1967. path.close();
  1968. testSimplify(reporter, path, filename);
  1969. }
  1970. static void testQuadralateral8(skiatest::Reporter* reporter, const char* filename) {
  1971. SkPath path;
  1972. path.moveTo(0, 0);
  1973. path.lineTo(3, 1);
  1974. path.lineTo(1, 3);
  1975. path.lineTo(3, 3);
  1976. path.close();
  1977. path.moveTo(2, 1);
  1978. path.lineTo(0, 2);
  1979. path.lineTo(3, 2);
  1980. path.lineTo(2, 3);
  1981. path.close();
  1982. testSimplify(reporter, path, filename);
  1983. }
  1984. static void testQuadralateral8x(skiatest::Reporter* reporter, const char* filename) {
  1985. SkPath path;
  1986. path.setFillType(SkPath::kEvenOdd_FillType);
  1987. path.moveTo(0, 0);
  1988. path.lineTo(3, 1);
  1989. path.lineTo(1, 3);
  1990. path.lineTo(3, 3);
  1991. path.close();
  1992. path.moveTo(2, 1);
  1993. path.lineTo(0, 2);
  1994. path.lineTo(3, 2);
  1995. path.lineTo(2, 3);
  1996. path.close();
  1997. testSimplify(reporter, path, filename);
  1998. }
  1999. static void testQuadralateral9(skiatest::Reporter* reporter, const char* filename) {
  2000. SkPath path;
  2001. path.moveTo(0, 0);
  2002. path.lineTo(1, 0);
  2003. path.lineTo(1, 2);
  2004. path.lineTo(2, 2);
  2005. path.close();
  2006. path.moveTo(1, 1);
  2007. path.lineTo(2, 1);
  2008. path.lineTo(1, 3);
  2009. path.lineTo(2, 3);
  2010. path.close();
  2011. testSimplify(reporter, path, filename);
  2012. }
  2013. static void testQuadralateral9x(skiatest::Reporter* reporter, const char* filename) {
  2014. SkPath path;
  2015. path.setFillType(SkPath::kEvenOdd_FillType);
  2016. path.moveTo(0, 0);
  2017. path.lineTo(1, 0);
  2018. path.lineTo(1, 2);
  2019. path.lineTo(2, 2);
  2020. path.close();
  2021. path.moveTo(1, 1);
  2022. path.lineTo(2, 1);
  2023. path.lineTo(1, 3);
  2024. path.lineTo(2, 3);
  2025. path.close();
  2026. testSimplify(reporter, path, filename);
  2027. }
  2028. static void testLine1a(skiatest::Reporter* reporter, const char* filename) {
  2029. SkPath path;
  2030. path.setFillType(SkPath::kWinding_FillType);
  2031. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  2032. path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
  2033. testSimplify(reporter, path, filename);
  2034. }
  2035. static void testLine1ax(skiatest::Reporter* reporter, const char* filename) {
  2036. SkPath path;
  2037. path.setFillType(SkPath::kEvenOdd_FillType);
  2038. path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
  2039. path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
  2040. testSimplify(reporter, path, filename);
  2041. }
  2042. static void testLine2ax(skiatest::Reporter* reporter, const char* filename) {
  2043. SkPath path;
  2044. path.setFillType(SkPath::kEvenOdd_FillType);
  2045. path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
  2046. path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
  2047. path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
  2048. testSimplify(reporter, path, filename);
  2049. }
  2050. static void testLine3aax(skiatest::Reporter* reporter, const char* filename) {
  2051. SkPath path;
  2052. path.setFillType(SkPath::kEvenOdd_FillType);
  2053. path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
  2054. path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
  2055. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  2056. testSimplify(reporter, path, filename);
  2057. }
  2058. static void testLine4ax(skiatest::Reporter* reporter, const char* filename) {
  2059. SkPath path;
  2060. path.setFillType(SkPath::kEvenOdd_FillType);
  2061. path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
  2062. path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
  2063. path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
  2064. testSimplify(reporter, path, filename);
  2065. }
  2066. static void testQuadratic1(skiatest::Reporter* reporter, const char* filename) {
  2067. SkPath path;
  2068. path.moveTo(0, 0);
  2069. path.quadTo(0, 0, 0, 0);
  2070. path.lineTo(1, 0);
  2071. path.close();
  2072. path.moveTo(0, 0);
  2073. path.lineTo(0, 0);
  2074. path.quadTo(0, 0, 0, 0);
  2075. path.close();
  2076. testSimplify(reporter, path, filename);
  2077. }
  2078. static void testQuadratic1x(skiatest::Reporter* reporter, const char* filename) {
  2079. SkPath path;
  2080. path.setFillType(SkPath::kEvenOdd_FillType);
  2081. path.moveTo(0, 0);
  2082. path.quadTo(0, 0, 0, 0);
  2083. path.lineTo(1, 0);
  2084. path.close();
  2085. path.moveTo(0, 0);
  2086. path.lineTo(0, 0);
  2087. path.quadTo(0, 0, 0, 0);
  2088. path.close();
  2089. testSimplify(reporter, path, filename);
  2090. }
  2091. static void testQuadratic2(skiatest::Reporter* reporter, const char* filename) {
  2092. SkPath path;
  2093. path.moveTo(0, 0);
  2094. path.quadTo(0, 0, 0, 0);
  2095. path.lineTo(3, 0);
  2096. path.close();
  2097. path.moveTo(0, 0);
  2098. path.lineTo(0, 0);
  2099. path.quadTo(1, 0, 0, 1);
  2100. path.close();
  2101. testSimplify(reporter, path, filename);
  2102. }
  2103. static void testQuadratic2x(skiatest::Reporter* reporter, const char* filename) {
  2104. SkPath path;
  2105. path.setFillType(SkPath::kEvenOdd_FillType);
  2106. path.moveTo(0, 0);
  2107. path.quadTo(0, 0, 0, 0);
  2108. path.lineTo(3, 0);
  2109. path.close();
  2110. path.moveTo(0, 0);
  2111. path.lineTo(0, 0);
  2112. path.quadTo(1, 0, 0, 1);
  2113. path.close();
  2114. testSimplify(reporter, path, filename);
  2115. }
  2116. static void testQuadratic3(skiatest::Reporter* reporter, const char* filename) {
  2117. SkPath path;
  2118. path.moveTo(0, 0);
  2119. path.quadTo(0, 0, 1, 0);
  2120. path.lineTo(0, 2);
  2121. path.close();
  2122. path.moveTo(0, 0);
  2123. path.lineTo(0, 0);
  2124. path.quadTo(1, 0, 0, 1);
  2125. path.close();
  2126. testSimplify(reporter, path, filename);
  2127. }
  2128. static void testQuadratic3x(skiatest::Reporter* reporter, const char* filename) {
  2129. SkPath path;
  2130. path.setFillType(SkPath::kEvenOdd_FillType);
  2131. path.moveTo(0, 0);
  2132. path.quadTo(0, 0, 1, 0);
  2133. path.lineTo(0, 2);
  2134. path.close();
  2135. path.moveTo(0, 0);
  2136. path.lineTo(0, 0);
  2137. path.quadTo(1, 0, 0, 1);
  2138. path.close();
  2139. testSimplify(reporter, path, filename);
  2140. }
  2141. static void testQuadratic4(skiatest::Reporter* reporter, const char* filename) {
  2142. SkPath path;
  2143. path.moveTo(0, 0);
  2144. path.quadTo(0, 0, 1, 0);
  2145. path.lineTo(0, 2);
  2146. path.close();
  2147. path.moveTo(0, 0);
  2148. path.lineTo(0, 0);
  2149. path.quadTo(1, 0, 0, 2);
  2150. path.close();
  2151. testSimplify(reporter, path, filename);
  2152. }
  2153. static void testQuadratic4x(skiatest::Reporter* reporter, const char* filename) {
  2154. SkPath path;
  2155. path.setFillType(SkPath::kEvenOdd_FillType);
  2156. path.moveTo(0, 0);
  2157. path.quadTo(0, 0, 1, 0);
  2158. path.lineTo(0, 2);
  2159. path.close();
  2160. path.moveTo(0, 0);
  2161. path.lineTo(0, 0);
  2162. path.quadTo(1, 0, 0, 2);
  2163. path.close();
  2164. testSimplify(reporter, path, filename);
  2165. }
  2166. static void testQuadratic5(skiatest::Reporter* reporter, const char* filename) {
  2167. SkPath path;
  2168. path.moveTo(0, 0);
  2169. path.quadTo(0, 0, 0, 0);
  2170. path.lineTo(0, 1);
  2171. path.close();
  2172. path.moveTo(0, 0);
  2173. path.lineTo(1, 0);
  2174. path.quadTo(0, 1, 0, 2);
  2175. path.close();
  2176. testSimplify(reporter, path, filename);
  2177. }
  2178. static void testQuadratic6(skiatest::Reporter* reporter, const char* filename) {
  2179. SkPath path;
  2180. path.moveTo(0, 0);
  2181. path.quadTo(0, 0, 1, 0);
  2182. path.lineTo(2, 1);
  2183. path.close();
  2184. path.moveTo(0, 0);
  2185. path.lineTo(0, 0);
  2186. path.quadTo(2, 0, 0, 1);
  2187. path.close();
  2188. testSimplify(reporter, path, filename);
  2189. }
  2190. static void testQuadratic7(skiatest::Reporter* reporter, const char* filename) {
  2191. SkPath path;
  2192. path.moveTo(0, 0);
  2193. path.quadTo(0, 0, 1, 0);
  2194. path.lineTo(3, 1);
  2195. path.close();
  2196. path.moveTo(0, 0);
  2197. path.lineTo(0, 0);
  2198. path.quadTo(3, 0, 1, 2);
  2199. path.close();
  2200. markTestFlakyForPathKit();
  2201. testSimplify(reporter, path, filename);
  2202. }
  2203. static void testQuadratic8(skiatest::Reporter* reporter, const char* filename) {
  2204. SkPath path;
  2205. path.moveTo(0, 0);
  2206. path.quadTo(0, 0, 1, 0);
  2207. path.lineTo(0, 2);
  2208. path.close();
  2209. path.moveTo(0, 0);
  2210. path.lineTo(1, 0);
  2211. path.quadTo(0, 1, 1, 2);
  2212. path.close();
  2213. testSimplify(reporter, path, filename);
  2214. }
  2215. static void testQuadratic9(skiatest::Reporter* reporter, const char* filename) {
  2216. SkPath path;
  2217. path.moveTo(0, 0);
  2218. path.quadTo(0, 0, 1, 0);
  2219. path.lineTo(3, 1);
  2220. path.close();
  2221. path.moveTo(0, 0);
  2222. path.lineTo(1, 0);
  2223. path.quadTo(1, 2, 3, 2);
  2224. path.close();
  2225. testSimplify(reporter, path, filename);
  2226. }
  2227. static void testQuadratic14(skiatest::Reporter* reporter, const char* filename) {
  2228. SkPath path;
  2229. path.moveTo(0, 0);
  2230. path.quadTo(0, 0, 1, 0);
  2231. path.lineTo(3, 2);
  2232. path.close();
  2233. path.moveTo(0, 0);
  2234. path.lineTo(1, 0);
  2235. path.quadTo(3, 2, 3, 3);
  2236. path.close();
  2237. testSimplify(reporter, path, filename);
  2238. }
  2239. static void testQuadratic15(skiatest::Reporter* reporter, const char* filename) {
  2240. SkPath path;
  2241. path.moveTo(0, 0);
  2242. path.quadTo(0, 0, 1, 0);
  2243. path.lineTo(1, 3);
  2244. path.close();
  2245. path.moveTo(1, 0);
  2246. path.lineTo(0, 1);
  2247. path.quadTo(1, 1, 0, 3);
  2248. path.close();
  2249. testSimplify(reporter, path, filename);
  2250. }
  2251. static void testQuadratic17x(skiatest::Reporter* reporter, const char* filename) {
  2252. SkPath path;
  2253. path.setFillType(SkPath::kEvenOdd_FillType);
  2254. path.moveTo(0, 0);
  2255. path.quadTo(0, 0, 3, 1);
  2256. path.lineTo(0, 2);
  2257. path.close();
  2258. path.moveTo(0, 0);
  2259. path.lineTo(1, 0);
  2260. path.quadTo(3, 1, 0, 2);
  2261. path.close();
  2262. testSimplify(reporter, path, filename);
  2263. }
  2264. static void testQuadratic18(skiatest::Reporter* reporter, const char* filename) {
  2265. SkPath path;
  2266. path.moveTo(0, 0);
  2267. path.quadTo(1, 0, 0, 1);
  2268. path.lineTo(0, 1);
  2269. path.close();
  2270. path.moveTo(0, 0);
  2271. path.lineTo(0, 0);
  2272. path.quadTo(1, 0, 1, 1);
  2273. path.close();
  2274. testSimplify(reporter, path, filename);
  2275. }
  2276. static void testQuadratic19(skiatest::Reporter* reporter, const char* filename) {
  2277. SkPath path;
  2278. path.moveTo(0, 0);
  2279. path.quadTo(1, 0, 0, 1);
  2280. path.lineTo(0, 1);
  2281. path.close();
  2282. path.moveTo(0, 0);
  2283. path.lineTo(0, 0);
  2284. path.quadTo(2, 0, 0, 1);
  2285. path.close();
  2286. testSimplify(reporter, path, filename);
  2287. }
  2288. static void testQuadratic20(skiatest::Reporter* reporter, const char* filename) {
  2289. SkPath path;
  2290. path.moveTo(0, 0);
  2291. path.quadTo(1, 0, 0, 1);
  2292. path.lineTo(0, 1);
  2293. path.close();
  2294. path.moveTo(0, 0);
  2295. path.lineTo(0, 0);
  2296. path.quadTo(1, 0, 0, 1);
  2297. path.close();
  2298. testSimplify(reporter, path, filename);
  2299. }
  2300. static void testQuadratic21(skiatest::Reporter* reporter, const char* filename) {
  2301. SkPath path;
  2302. path.moveTo(0, 0);
  2303. path.quadTo(1, 0, 0, 1);
  2304. path.lineTo(0, 1);
  2305. path.close();
  2306. path.moveTo(0, 0);
  2307. path.lineTo(0, 0);
  2308. path.quadTo(1, 0, 0, 2);
  2309. path.close();
  2310. testSimplify(reporter, path, filename);
  2311. }
  2312. static void testQuadratic22(skiatest::Reporter* reporter, const char* filename) {
  2313. SkPath path;
  2314. path.moveTo(0, 0);
  2315. path.quadTo(1, 0, 0, 1);
  2316. path.lineTo(0, 1);
  2317. path.close();
  2318. path.moveTo(0, 0);
  2319. path.lineTo(0, 0);
  2320. path.quadTo(0, 1, 2, 1);
  2321. path.close();
  2322. testSimplify(reporter, path, filename);
  2323. }
  2324. static void testQuadratic23(skiatest::Reporter* reporter, const char* filename) {
  2325. SkPath path;
  2326. path.moveTo(0, 0);
  2327. path.quadTo(1, 0, 0, 1);
  2328. path.lineTo(0, 1);
  2329. path.close();
  2330. path.moveTo(0, 0);
  2331. path.lineTo(0, 0);
  2332. path.quadTo(0, 2, 1, 2);
  2333. path.close();
  2334. testSimplify(reporter, path, filename);
  2335. }
  2336. static void testQuadratic24(skiatest::Reporter* reporter, const char* filename) {
  2337. SkPath path;
  2338. path.moveTo(0, 0);
  2339. path.quadTo(1, 0, 0, 1);
  2340. path.lineTo(0, 1);
  2341. path.close();
  2342. path.moveTo(0, 0);
  2343. path.lineTo(1, 0);
  2344. path.quadTo(2, 0, 0, 1);
  2345. path.close();
  2346. testSimplify(reporter, path, filename);
  2347. }
  2348. static void testQuadratic25(skiatest::Reporter* reporter, const char* filename) {
  2349. SkPath path;
  2350. path.moveTo(0, 0);
  2351. path.quadTo(1, 0, 1, 1);
  2352. path.lineTo(1, 1);
  2353. path.close();
  2354. path.moveTo(0, 0);
  2355. path.lineTo(0, 0);
  2356. path.quadTo(2, 1, 0, 2);
  2357. path.close();
  2358. testSimplify(reporter, path, filename);
  2359. }
  2360. static void testQuadratic26(skiatest::Reporter* reporter, const char* filename) {
  2361. SkPath path;
  2362. path.moveTo(0, 0);
  2363. path.quadTo(1, 0, 1, 1);
  2364. path.lineTo(0, 2);
  2365. path.close();
  2366. path.moveTo(0, 0);
  2367. path.lineTo(0, 0);
  2368. path.quadTo(1, 0, 0, 1);
  2369. path.close();
  2370. testSimplify(reporter, path, filename);
  2371. }
  2372. static void testQuadratic27(skiatest::Reporter* reporter, const char* filename) {
  2373. SkPath path;
  2374. path.moveTo(0, 0);
  2375. path.quadTo(1, 0, 1, 1);
  2376. path.lineTo(2, 1);
  2377. path.close();
  2378. path.moveTo(0, 0);
  2379. path.lineTo(0, 0);
  2380. path.quadTo(2, 1, 0, 2);
  2381. path.close();
  2382. testSimplify(reporter, path, filename);
  2383. }
  2384. static void testQuadratic28(skiatest::Reporter* reporter, const char* filename) {
  2385. SkPath path;
  2386. path.moveTo(0, 0);
  2387. path.quadTo(1, 0, 0, 1);
  2388. path.lineTo(0, 1);
  2389. path.close();
  2390. path.moveTo(0, 0);
  2391. path.lineTo(0, 2);
  2392. path.quadTo(1, 2, 0, 3);
  2393. path.close();
  2394. testSimplify(reporter, path, filename);
  2395. }
  2396. static void testQuadratic29(skiatest::Reporter* reporter, const char* filename) {
  2397. SkPath path;
  2398. path.moveTo(0, 0);
  2399. path.quadTo(1, 0, 2, 1);
  2400. path.lineTo(0, 2);
  2401. path.close();
  2402. path.moveTo(0, 0);
  2403. path.lineTo(0, 0);
  2404. path.quadTo(1, 0, 0, 1);
  2405. path.close();
  2406. testSimplify(reporter, path, filename);
  2407. }
  2408. static void testQuadratic30(skiatest::Reporter* reporter, const char* filename) {
  2409. SkPath path;
  2410. path.moveTo(0, 0);
  2411. path.quadTo(1, 0, 1, 2);
  2412. path.lineTo(1, 2);
  2413. path.close();
  2414. path.moveTo(0, 0);
  2415. path.lineTo(1, 0);
  2416. path.quadTo(0, 1, 1, 2);
  2417. path.close();
  2418. testSimplify(reporter, path, filename);
  2419. }
  2420. static void testQuadratic31(skiatest::Reporter* reporter, const char* filename) {
  2421. SkPath path;
  2422. path.moveTo(0, 0);
  2423. path.quadTo(1, 0, 1, 2);
  2424. path.lineTo(1, 2);
  2425. path.close();
  2426. path.moveTo(0, 0);
  2427. path.lineTo(1, 0);
  2428. path.quadTo(0, 1, 1, 3);
  2429. path.close();
  2430. testSimplify(reporter, path, filename);
  2431. }
  2432. static void testQuadratic32(skiatest::Reporter* reporter, const char* filename) {
  2433. SkPath path;
  2434. path.moveTo(0, 0);
  2435. path.quadTo(1, 0, 2, 3);
  2436. path.lineTo(2, 3);
  2437. path.close();
  2438. path.moveTo(0, 0);
  2439. path.lineTo(0, 0);
  2440. path.quadTo(3, 1, 0, 2);
  2441. path.close();
  2442. testSimplify(reporter, path, filename);
  2443. }
  2444. static void testQuadratic33(skiatest::Reporter* reporter, const char* filename) {
  2445. SkPath path;
  2446. path.moveTo(0, 0);
  2447. path.quadTo(2, 0, 0, 1);
  2448. path.lineTo(0, 1);
  2449. path.close();
  2450. path.moveTo(0, 0);
  2451. path.lineTo(1, 1);
  2452. path.quadTo(2, 1, 2, 2);
  2453. path.close();
  2454. testSimplify(reporter, path, filename);
  2455. }
  2456. static void testQuadratic34(skiatest::Reporter* reporter, const char* filename) {
  2457. SkPath path;
  2458. path.moveTo(0, 0);
  2459. path.quadTo(2, 0, 0, 1);
  2460. path.lineTo(0, 1);
  2461. path.close();
  2462. path.moveTo(1, 0);
  2463. path.lineTo(1, 1);
  2464. path.quadTo(2, 1, 1, 2);
  2465. path.close();
  2466. markTestFlakyForPathKit();
  2467. testSimplify(reporter, path, filename);
  2468. }
  2469. static void testQuadratic35(skiatest::Reporter* reporter, const char* filename) {
  2470. SkPath path;
  2471. path.moveTo(0, 0);
  2472. path.quadTo(0, 1, 1, 1);
  2473. path.lineTo(1, 3);
  2474. path.close();
  2475. path.moveTo(2, 0);
  2476. path.lineTo(3, 0);
  2477. path.quadTo(0, 1, 1, 1);
  2478. path.close();
  2479. testSimplify(reporter, path, filename);
  2480. }
  2481. static void testQuadratic36(skiatest::Reporter* reporter, const char* filename) {
  2482. SkPath path;
  2483. path.moveTo(0, 0);
  2484. path.quadTo(2, 1, 2, 3);
  2485. path.lineTo(2, 3);
  2486. path.close();
  2487. path.moveTo(3, 1);
  2488. path.lineTo(1, 2);
  2489. path.quadTo(3, 2, 1, 3);
  2490. path.close();
  2491. testSimplify(reporter, path, filename);
  2492. }
  2493. static void testQuadratic37(skiatest::Reporter* reporter, const char* filename) {
  2494. SkPath path;
  2495. path.moveTo(0, 0);
  2496. path.quadTo(0, 2, 1, 2);
  2497. path.lineTo(1, 2);
  2498. path.close();
  2499. path.moveTo(0, 0);
  2500. path.lineTo(3, 1);
  2501. path.quadTo(0, 2, 1, 2);
  2502. path.close();
  2503. testSimplify(reporter, path, filename);
  2504. }
  2505. static void testQuadratic38(skiatest::Reporter* reporter, const char* filename) {
  2506. SkPath path;
  2507. path.moveTo(1, 0);
  2508. path.quadTo(0, 1, 1, 1);
  2509. path.lineTo(1, 1);
  2510. path.close();
  2511. path.moveTo(1, 0);
  2512. path.lineTo(1, 2);
  2513. path.quadTo(2, 2, 1, 3);
  2514. path.close();
  2515. testSimplify(reporter, path, filename);
  2516. }
  2517. static void testQuadratic51(skiatest::Reporter* reporter, const char* filename) {
  2518. SkPath path;
  2519. path.moveTo(369.863983f, 145.645813f);
  2520. path.quadTo(382.380371f, 121.254936f, 406.236359f, 121.254936f);
  2521. path.lineTo(369.863983f, 145.645813f);
  2522. path.close();
  2523. path.moveTo(369.970581f, 137.94342f);
  2524. path.quadTo(383.98465f, 121.254936f, 406.235992f, 121.254936f);
  2525. path.lineTo(369.970581f, 137.94342f);
  2526. path.close();
  2527. testSimplify(reporter, path, filename);
  2528. }
  2529. static void testQuadratic53(skiatest::Reporter* reporter, const char* filename) {
  2530. SkPath path;
  2531. path.moveTo(303.12088f, 141.299606f);
  2532. path.lineTo(330.463562f, 217.659027f);
  2533. path.lineTo(303.12088f, 141.299606f);
  2534. path.close();
  2535. path.moveTo(371.919067f, 205.854996f);
  2536. path.lineTo(326.236786f, 205.854996f);
  2537. path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
  2538. path.lineTo(371.919067f, 205.854996f);
  2539. path.close();
  2540. testSimplify(reporter, path, filename);
  2541. }
  2542. static void testQuadratic55(skiatest::Reporter* reporter, const char* filename) {
  2543. SkPath path;
  2544. path.moveTo(303.12088f, 141.299606f);
  2545. path.lineTo(330.463562f, 217.659027f);
  2546. path.lineTo(358.606506f, 141.299606f);
  2547. path.lineTo(303.12088f, 141.299606f);
  2548. path.close();
  2549. path.moveTo(326.236786f, 205.854996f);
  2550. path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
  2551. path.lineTo(326.236786f, 205.854996f);
  2552. path.close();
  2553. testSimplify(reporter, path, filename);
  2554. }
  2555. static void testQuadratic56(skiatest::Reporter* reporter, const char* filename) {
  2556. SkPath path;
  2557. path.moveTo(366.608826f, 151.196014f);
  2558. path.quadTo(378.803101f, 136.674606f, 398.164948f, 136.674606f);
  2559. path.lineTo(354.009216f, 208.816208f);
  2560. path.lineTo(393.291473f, 102.232819f);
  2561. path.lineTo(359.978058f, 136.581512f);
  2562. path.quadTo(378.315979f, 136.581512f, 388.322723f, 149.613556f);
  2563. path.lineTo(364.390686f, 157.898193f);
  2564. path.quadTo(375.281769f, 136.674606f, 396.039917f, 136.674606f);
  2565. path.lineTo(350, 120);
  2566. path.lineTo(366.608826f, 151.196014f);
  2567. path.close();
  2568. testSimplify(reporter, path, filename);
  2569. }
  2570. static void testLine80(skiatest::Reporter* reporter, const char* filename) {
  2571. SkPath path;
  2572. path.moveTo(4, 0);
  2573. path.lineTo(3, 7);
  2574. path.lineTo(7, 5);
  2575. path.lineTo(2, 2);
  2576. path.close();
  2577. path.moveTo(0, 6);
  2578. path.lineTo(6, 12);
  2579. path.lineTo(8, 3);
  2580. path.close();
  2581. testSimplify(reporter, path, filename);
  2582. }
  2583. static void testQuadratic58(skiatest::Reporter* reporter, const char* filename) {
  2584. SkPath path;
  2585. path.moveTo(283.714233f, 240);
  2586. path.lineTo(283.714233f, 141.299606f);
  2587. path.lineTo(303.12088f, 141.299606f);
  2588. path.lineTo(330.463562f, 217.659027f);
  2589. path.lineTo(358.606506f, 141.299606f);
  2590. path.lineTo(362.874634f, 159.705902f);
  2591. path.lineTo(335.665344f, 233.397751f);
  2592. path.lineTo(322.12738f, 233.397751f);
  2593. path.lineTo(295.718353f, 159.505829f);
  2594. path.lineTo(295.718353f, 240);
  2595. path.lineTo(283.714233f, 240);
  2596. path.close();
  2597. path.moveTo(322.935669f, 231.030273f);
  2598. path.quadTo(312.832214f, 220.393295f, 312.832214f, 203.454178f);
  2599. path.quadTo(312.832214f, 186.981888f, 321.73526f, 176.444946f);
  2600. path.quadTo(330.638306f, 165.90802f, 344.509705f, 165.90802f);
  2601. path.quadTo(357.647522f, 165.90802f, 364.81665f, 175.244537f);
  2602. path.lineTo(371.919067f, 205.854996f);
  2603. path.lineTo(326.236786f, 205.854996f);
  2604. path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
  2605. path.lineTo(322.935669f, 231.030273f);
  2606. path.close();
  2607. path.moveTo(326.837006f, 195.984955f);
  2608. path.lineTo(358.78125f, 195.984955f);
  2609. path.quadTo(358.78125f, 175.778046f, 343.709442f, 175.778046f);
  2610. path.quadTo(328.570923f, 175.778046f, 326.837006f, 195.984955f);
  2611. path.close();
  2612. testSimplify(reporter, path, filename);
  2613. }
  2614. static void testQuadratic59x(skiatest::Reporter* reporter, const char* filename) {
  2615. SkPath path;
  2616. path.setFillType(SkPath::kEvenOdd_FillType);
  2617. path.moveTo(0, 0);
  2618. path.quadTo(0, 0, 0, 0);
  2619. path.lineTo(2, 2);
  2620. path.close();
  2621. path.moveTo(0, 0);
  2622. path.lineTo(2, 0);
  2623. path.quadTo(3, 1, 1, 2);
  2624. path.close();
  2625. testSimplify(reporter, path, filename);
  2626. }
  2627. static void testQuadratic59(skiatest::Reporter* reporter, const char* filename) {
  2628. SkPath path;
  2629. path.setFillType(SkPath::kWinding_FillType);
  2630. path.moveTo(0, 0);
  2631. path.quadTo(0, 0, 0, 0);
  2632. path.lineTo(2, 2);
  2633. path.close();
  2634. path.moveTo(0, 0);
  2635. path.lineTo(2, 0);
  2636. path.quadTo(3, 1, 1, 2);
  2637. path.close();
  2638. testSimplify(reporter, path, filename);
  2639. }
  2640. static void testQuadratic63(skiatest::Reporter* reporter, const char* filename) {
  2641. SkPath path;
  2642. path.moveTo(0, 0);
  2643. path.quadTo(0, 0, 0, 0);
  2644. path.lineTo(3, 2);
  2645. path.close();
  2646. path.moveTo(1, 0);
  2647. path.lineTo(2, 1);
  2648. path.quadTo(2, 1, 2, 2);
  2649. path.close();
  2650. testSimplify(reporter, path, filename);
  2651. }
  2652. static void testQuadratic64(skiatest::Reporter* reporter, const char* filename) {
  2653. SkPath path;
  2654. path.moveTo(0, 0);
  2655. path.quadTo(0, 0, 0, 0);
  2656. path.lineTo(2, 3);
  2657. path.close();
  2658. path.moveTo(1, 2);
  2659. path.lineTo(2, 2);
  2660. path.quadTo(0, 3, 3, 3);
  2661. path.close();
  2662. testSimplify(reporter, path, filename);
  2663. }
  2664. static void testQuadratic65(skiatest::Reporter* reporter, const char* filename) {
  2665. SkPath path;
  2666. path.moveTo(0, 0);
  2667. path.quadTo(0, 0, 0, 0);
  2668. path.lineTo(3, 2);
  2669. path.close();
  2670. path.moveTo(2, 1);
  2671. path.lineTo(2, 2);
  2672. path.quadTo(0, 3, 1, 3);
  2673. path.close();
  2674. testSimplify(reporter, path, filename);
  2675. }
  2676. static void testQuadratic67x(skiatest::Reporter* reporter, const char* filename) {
  2677. SkPath path;
  2678. path.setFillType(SkPath::kEvenOdd_FillType);
  2679. path.moveTo(0, 0);
  2680. path.quadTo(0, 0, 2, 1);
  2681. path.lineTo(2, 2);
  2682. path.close();
  2683. path.moveTo(0, 0);
  2684. path.lineTo(2, 0);
  2685. path.quadTo(1, 1, 3, 2);
  2686. path.close();
  2687. testSimplify(reporter, path, filename);
  2688. }
  2689. static void testQuadratic68(skiatest::Reporter* reporter, const char* filename) {
  2690. SkPath path;
  2691. path.moveTo(0, 0);
  2692. path.quadTo(1, 0, 0, 1);
  2693. path.lineTo(1, 2);
  2694. path.close();
  2695. path.moveTo(0, 0);
  2696. path.lineTo(0, 0);
  2697. path.quadTo(0, 1, 2, 1);
  2698. path.close();
  2699. testSimplify(reporter, path, filename);
  2700. }
  2701. static void testQuadratic69(skiatest::Reporter* reporter, const char* filename) {
  2702. SkPath path;
  2703. path.moveTo(0, 0);
  2704. path.quadTo(0, 0, 0, 1);
  2705. path.lineTo(3, 2);
  2706. path.close();
  2707. path.moveTo(2, 0);
  2708. path.lineTo(1, 1);
  2709. path.quadTo(3, 2, 2, 3);
  2710. path.close();
  2711. markTestFlakyForPathKit();
  2712. testSimplify(reporter, path, filename);
  2713. }
  2714. static void testQuadratic70x(skiatest::Reporter* reporter, const char* filename) {
  2715. SkPath path;
  2716. path.setFillType(SkPath::kEvenOdd_FillType);
  2717. path.moveTo(0, 0);
  2718. path.quadTo(1, 0, 0, 1);
  2719. path.lineTo(1, 2);
  2720. path.close();
  2721. path.moveTo(0, 0);
  2722. path.lineTo(0, 0);
  2723. path.quadTo(0, 1, 2, 1);
  2724. path.close();
  2725. testSimplify(reporter, path, filename);
  2726. }
  2727. static void testQuadratic71(skiatest::Reporter* reporter, const char* filename) {
  2728. SkPath path;
  2729. path.moveTo(0, 0);
  2730. path.quadTo(1, 0, 1, 1);
  2731. path.lineTo(3, 2);
  2732. path.close();
  2733. path.moveTo(0, 0);
  2734. path.lineTo(0, 0);
  2735. path.quadTo(1, 1, 3, 1);
  2736. path.close();
  2737. testSimplify(reporter, path, filename);
  2738. }
  2739. static void testQuadratic72(skiatest::Reporter* reporter, const char* filename) {
  2740. SkPath path;
  2741. path.moveTo(0, 0);
  2742. path.quadTo(1, 0, 1, 2);
  2743. path.lineTo(1, 2);
  2744. path.close();
  2745. path.moveTo(0, 0);
  2746. path.lineTo(1, 0);
  2747. path.quadTo(0, 1, 3, 2);
  2748. path.close();
  2749. testSimplify(reporter, path, filename);
  2750. }
  2751. static void testQuadratic73(skiatest::Reporter* reporter, const char* filename) {
  2752. SkPath path;
  2753. path.moveTo(0, 0);
  2754. path.quadTo(1, 0, 0, 3);
  2755. path.lineTo(0, 3);
  2756. path.close();
  2757. path.moveTo(0, 0);
  2758. path.lineTo(1, 0);
  2759. path.quadTo(0, 1, 1, 1);
  2760. path.close();
  2761. testSimplify(reporter, path, filename);
  2762. }
  2763. static void testQuadratic74(skiatest::Reporter* reporter, const char* filename) {
  2764. SkPath path;
  2765. path.moveTo(0, 0);
  2766. path.quadTo(1, 0, 1, 3);
  2767. path.lineTo(1, 3);
  2768. path.close();
  2769. path.moveTo(0, 0);
  2770. path.lineTo(0, 1);
  2771. path.quadTo(3, 2, 2, 3);
  2772. path.close();
  2773. testSimplify(reporter, path, filename);
  2774. }
  2775. static void testQuadratic75(skiatest::Reporter* reporter, const char* filename) {
  2776. SkPath path;
  2777. path.moveTo(0, 0);
  2778. path.quadTo(1, 0, 1, 3);
  2779. path.lineTo(2, 3);
  2780. path.close();
  2781. path.moveTo(0, 0);
  2782. path.lineTo(0, 1);
  2783. path.quadTo(3, 2, 2, 3);
  2784. path.close();
  2785. testSimplify(reporter, path, filename);
  2786. }
  2787. static void testQuadratic76(skiatest::Reporter* reporter, const char* filename) {
  2788. SkPath path;
  2789. path.moveTo(0, 0);
  2790. path.quadTo(0, 0, 0, 0);
  2791. path.lineTo(2, 3);
  2792. path.close();
  2793. path.moveTo(1, 0);
  2794. path.lineTo(1, 2);
  2795. path.quadTo(1, 2, 2, 2);
  2796. path.close();
  2797. testSimplify(reporter, path, filename);
  2798. }
  2799. static void testQuadratic77(skiatest::Reporter* reporter, const char* filename) {
  2800. SkPath path;
  2801. path.moveTo(0, 0);
  2802. path.quadTo(1, 0, 1, 1);
  2803. path.lineTo(3, 1);
  2804. path.close();
  2805. path.moveTo(0, 0);
  2806. path.lineTo(1, 0);
  2807. path.quadTo(0, 1, 3, 2);
  2808. path.close();
  2809. testSimplify(reporter, path, filename);
  2810. }
  2811. static void testQuadratic78(skiatest::Reporter* reporter, const char* filename) {
  2812. SkPath path;
  2813. path.moveTo(0, 0);
  2814. path.quadTo(1, 0, 1, 2);
  2815. path.lineTo(3, 2);
  2816. path.close();
  2817. path.moveTo(0, 0);
  2818. path.lineTo(0, 0);
  2819. path.quadTo(2, 1, 0, 2);
  2820. path.close();
  2821. testSimplify(reporter, path, filename);
  2822. }
  2823. static void testQuadratic79(skiatest::Reporter* reporter, const char* filename) {
  2824. SkPath path;
  2825. path.moveTo(0, 0);
  2826. path.quadTo(1, 0, 1, 2);
  2827. path.lineTo(3, 2);
  2828. path.close();
  2829. path.moveTo(0, 0);
  2830. path.lineTo(1, 0);
  2831. path.quadTo(0, 1, 3, 2);
  2832. path.close();
  2833. testSimplify(reporter, path, filename);
  2834. }
  2835. static void testEight1(skiatest::Reporter* reporter, const char* filename) {
  2836. SkPath path;
  2837. path.moveTo(0, 0);
  2838. path.lineTo(2, 2);
  2839. path.lineTo(0, 2);
  2840. path.lineTo(2, 0);
  2841. path.close();
  2842. testSimplify(reporter, path, filename);
  2843. }
  2844. static void testEight2(skiatest::Reporter* reporter, const char* filename) {
  2845. SkPath path;
  2846. path.moveTo(0, 0);
  2847. path.lineTo(2, 0);
  2848. path.lineTo(0, 2);
  2849. path.lineTo(2, 2);
  2850. path.close();
  2851. testSimplify(reporter, path, filename);
  2852. }
  2853. static void testEight3(skiatest::Reporter* reporter, const char* filename) {
  2854. SkPath path;
  2855. path.moveTo(0, 0);
  2856. path.lineTo(0, 2);
  2857. path.lineTo(2, 0);
  2858. path.lineTo(2, 2);
  2859. path.close();
  2860. testSimplify(reporter, path, filename);
  2861. }
  2862. static void testEight4(skiatest::Reporter* reporter, const char* filename) {
  2863. SkPath path;
  2864. path.moveTo(0, 0);
  2865. path.lineTo(2, 2);
  2866. path.lineTo(2, 0);
  2867. path.lineTo(0, 2);
  2868. path.close();
  2869. testSimplify(reporter, path, filename);
  2870. }
  2871. static void testEight5(skiatest::Reporter* reporter, const char* filename) {
  2872. SkPath path;
  2873. path.moveTo(1, 0);
  2874. path.lineTo(1, 2);
  2875. path.lineTo(0, 2);
  2876. path.lineTo(2, 0);
  2877. path.close();
  2878. testSimplify(reporter, path, filename);
  2879. }
  2880. static void testEight6(skiatest::Reporter* reporter, const char* filename) {
  2881. SkPath path;
  2882. path.moveTo(1, 0);
  2883. path.lineTo(2, 0);
  2884. path.lineTo(0, 2);
  2885. path.lineTo(1, 2);
  2886. path.close();
  2887. testSimplify(reporter, path, filename);
  2888. }
  2889. static void testEight7(skiatest::Reporter* reporter, const char* filename) {
  2890. SkPath path;
  2891. path.moveTo(0, 0);
  2892. path.lineTo(0, 1);
  2893. path.lineTo(2, 1);
  2894. path.lineTo(2, 2);
  2895. path.close();
  2896. testSimplify(reporter, path, filename);
  2897. }
  2898. static void testEight8(skiatest::Reporter* reporter, const char* filename) {
  2899. SkPath path;
  2900. path.moveTo(0, 0);
  2901. path.lineTo(2, 2);
  2902. path.lineTo(2, 1);
  2903. path.lineTo(0, 1);
  2904. path.close();
  2905. testSimplify(reporter, path, filename);
  2906. }
  2907. static void testEight9(skiatest::Reporter* reporter, const char* filename) {
  2908. SkPath path;
  2909. path.moveTo(1, 0);
  2910. path.lineTo(1, 2);
  2911. path.lineTo(2, 1);
  2912. path.lineTo(0, 1);
  2913. path.close();
  2914. testSimplify(reporter, path, filename);
  2915. }
  2916. static void testEight10(skiatest::Reporter* reporter, const char* filename) {
  2917. SkPath path;
  2918. path.moveTo(1, 0);
  2919. path.lineTo(0, 1);
  2920. path.lineTo(2, 1);
  2921. path.lineTo(1, 2);
  2922. path.close();
  2923. testSimplify(reporter, path, filename);
  2924. }
  2925. static void testQuadratic80(skiatest::Reporter* reporter, const char* filename) {
  2926. SkPath path;
  2927. path.moveTo(0, 0);
  2928. path.quadTo(1, 0, 2, 3);
  2929. path.lineTo(2, 3);
  2930. path.close();
  2931. path.moveTo(1, 0);
  2932. path.lineTo(3, 0);
  2933. path.quadTo(0, 1, 1, 1);
  2934. path.close();
  2935. testSimplify(reporter, path, filename);
  2936. }
  2937. static void testQuadratic81(skiatest::Reporter* reporter, const char* filename) {
  2938. SkPath path;
  2939. path.moveTo(0, 0);
  2940. path.quadTo(2, 0, 1, 1);
  2941. path.lineTo(1, 1);
  2942. path.close();
  2943. path.moveTo(0, 0);
  2944. path.lineTo(0, 0);
  2945. path.quadTo(2, 1, 0, 2);
  2946. path.close();
  2947. testSimplify(reporter, path, filename);
  2948. }
  2949. static void testQuadratic82(skiatest::Reporter* reporter, const char* filename) {
  2950. SkPath path;
  2951. path.moveTo(0, 0);
  2952. path.quadTo(2, 0, 1, 1);
  2953. path.lineTo(0, 3);
  2954. path.close();
  2955. path.moveTo(0, 0);
  2956. path.lineTo(0, 0);
  2957. path.quadTo(2, 1, 0, 2);
  2958. path.close();
  2959. testSimplify(reporter, path, filename);
  2960. }
  2961. static void testQuadratic83(skiatest::Reporter* reporter, const char* filename) {
  2962. SkPath path;
  2963. path.moveTo(0, 0);
  2964. path.quadTo(0, 0, 2, 0);
  2965. path.lineTo(2, 2);
  2966. path.close();
  2967. path.moveTo(0, 1);
  2968. path.lineTo(0, 2);
  2969. path.quadTo(2, 2, 1, 3);
  2970. path.close();
  2971. testSimplify(reporter, path, filename);
  2972. }
  2973. static void testQuadratic84(skiatest::Reporter* reporter, const char* filename) {
  2974. SkPath path;
  2975. path.moveTo(0, 0);
  2976. path.quadTo(2, 0, 1, 1);
  2977. path.lineTo(2, 1);
  2978. path.close();
  2979. path.moveTo(1, 0);
  2980. path.lineTo(2, 0);
  2981. path.quadTo(0, 1, 2, 2);
  2982. path.close();
  2983. testSimplify(reporter, path, filename);
  2984. }
  2985. static void testQuadratic85(skiatest::Reporter* reporter, const char* filename) {
  2986. SkPath path;
  2987. path.moveTo(0, 0);
  2988. path.quadTo(3, 0, 1, 1);
  2989. path.lineTo(1, 1);
  2990. path.close();
  2991. path.moveTo(1, 0);
  2992. path.lineTo(3, 0);
  2993. path.quadTo(0, 1, 1, 2);
  2994. path.close();
  2995. testSimplify(reporter, path, filename);
  2996. }
  2997. static void testQuadratic86(skiatest::Reporter* reporter, const char* filename) {
  2998. SkPath path;
  2999. path.moveTo(0, 0);
  3000. path.quadTo(0, 1, 1, 1);
  3001. path.lineTo(2, 3);
  3002. path.close();
  3003. path.moveTo(0, 0);
  3004. path.lineTo(0, 0);
  3005. path.quadTo(1, 1, 1, 3);
  3006. path.close();
  3007. testSimplify(reporter, path, filename);
  3008. }
  3009. static void testQuadratic87(skiatest::Reporter* reporter, const char* filename) {
  3010. SkPath path;
  3011. path.moveTo(0, 0);
  3012. path.quadTo(2, 1, 0, 2);
  3013. path.lineTo(2, 3);
  3014. path.close();
  3015. path.moveTo(0, 0);
  3016. path.lineTo(1, 1);
  3017. path.quadTo(0, 2, 3, 2);
  3018. path.close();
  3019. testSimplify(reporter, path, filename);
  3020. }
  3021. static void testQuadratic88(skiatest::Reporter* reporter, const char* filename) {
  3022. SkPath path;
  3023. path.moveTo(0, 0);
  3024. path.quadTo(2, 1, 0, 2);
  3025. path.lineTo(2, 2);
  3026. path.close();
  3027. path.moveTo(1, 0);
  3028. path.lineTo(1, 1);
  3029. path.quadTo(0, 2, 2, 2);
  3030. path.close();
  3031. testSimplify(reporter, path, filename);
  3032. }
  3033. static void testQuadratic89x(skiatest::Reporter* reporter, const char* filename) {
  3034. SkPath path;
  3035. path.setFillType(SkPath::kEvenOdd_FillType);
  3036. path.moveTo(0, 0);
  3037. path.quadTo(3, 1, 2, 2);
  3038. path.lineTo(0, 3);
  3039. path.close();
  3040. path.moveTo(0, 0);
  3041. path.lineTo(2, 1);
  3042. path.quadTo(3, 1, 3, 3);
  3043. path.close();
  3044. testSimplify(reporter, path, filename);
  3045. }
  3046. static void testQuadratic90x(skiatest::Reporter* reporter, const char* filename) {
  3047. SkPath path;
  3048. path.setFillType(SkPath::kEvenOdd_FillType);
  3049. path.moveTo(0, 0);
  3050. path.quadTo(3, 0, 2, 2);
  3051. path.lineTo(1, 3);
  3052. path.close();
  3053. path.moveTo(0, 0);
  3054. path.lineTo(0, 1);
  3055. path.quadTo(3, 2, 2, 3);
  3056. path.close();
  3057. testSimplify(reporter, path, filename);
  3058. }
  3059. static void testQuadratic91(skiatest::Reporter* reporter, const char* filename) {
  3060. SkPath path;
  3061. path.moveTo(0, 0);
  3062. path.quadTo(3, 2, 2, 3);
  3063. path.lineTo(2, 3);
  3064. path.close();
  3065. path.moveTo(0, 0);
  3066. path.lineTo(1, 1);
  3067. path.quadTo(2, 1, 2, 3);
  3068. path.close();
  3069. testSimplify(reporter, path, filename);
  3070. }
  3071. static void testQuadratic92x(skiatest::Reporter* reporter, const char* filename) {
  3072. SkPath path;
  3073. path.setFillType(SkPath::kEvenOdd_FillType);
  3074. path.moveTo(1, 0);
  3075. path.quadTo(3, 0, 2, 2);
  3076. path.lineTo(2, 2);
  3077. path.close();
  3078. path.moveTo(2, 0);
  3079. path.lineTo(0, 1);
  3080. path.quadTo(3, 2, 2, 3);
  3081. path.close();
  3082. testSimplify(reporter, path, filename);
  3083. }
  3084. static void testLine82(skiatest::Reporter* reporter, const char* filename) {
  3085. SkPath path;
  3086. path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
  3087. path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
  3088. path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
  3089. testSimplify(reporter, path, filename);
  3090. }
  3091. static void testLine82a(skiatest::Reporter* reporter, const char* filename) {
  3092. SkPath path;
  3093. path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
  3094. path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
  3095. path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
  3096. testSimplify(reporter, path, filename);
  3097. }
  3098. static void testLine82b(skiatest::Reporter* reporter, const char* filename) {
  3099. SkPath path;
  3100. path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
  3101. path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
  3102. path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
  3103. testSimplify(reporter, path, filename);
  3104. }
  3105. static void testLine82c(skiatest::Reporter* reporter, const char* filename) {
  3106. SkPath path;
  3107. path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
  3108. path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
  3109. path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
  3110. testSimplify(reporter, path, filename);
  3111. }
  3112. static void testLine82d(skiatest::Reporter* reporter, const char* filename) {
  3113. SkPath path;
  3114. path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
  3115. path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
  3116. path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
  3117. testSimplify(reporter, path, filename);
  3118. }
  3119. static void testLine82e(skiatest::Reporter* reporter, const char* filename) {
  3120. SkPath path;
  3121. path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
  3122. path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
  3123. path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
  3124. testSimplify(reporter, path, filename);
  3125. }
  3126. static void testLine82f(skiatest::Reporter* reporter, const char* filename) {
  3127. SkPath path;
  3128. path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
  3129. path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
  3130. path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
  3131. testSimplify(reporter, path, filename);
  3132. }
  3133. static void testLine82g(skiatest::Reporter* reporter, const char* filename) {
  3134. SkPath path;
  3135. path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
  3136. path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
  3137. path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
  3138. testSimplify(reporter, path, filename);
  3139. }
  3140. static void testLine82h(skiatest::Reporter* reporter, const char* filename) {
  3141. SkPath path;
  3142. path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
  3143. path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
  3144. path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
  3145. testSimplify(reporter, path, filename);
  3146. }
  3147. static void testLine83(skiatest::Reporter* reporter, const char* filename) {
  3148. SkPath path;
  3149. path.addRect(10, 30, 30, 40, SkPath::kCCW_Direction);
  3150. path.addRect(0, 12, 12, 18, SkPath::kCCW_Direction);
  3151. path.addRect(4, 13, 13, 16, SkPath::kCCW_Direction);
  3152. testSimplify(reporter, path, filename);
  3153. }
  3154. static void testLine84(skiatest::Reporter* reporter, const char* filename) {
  3155. SkPath path;
  3156. path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
  3157. path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
  3158. path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
  3159. path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
  3160. testSimplify(reporter, path, filename);
  3161. }
  3162. static void testLine84x(skiatest::Reporter* reporter, const char* filename) {
  3163. SkPath path;
  3164. path.setFillType(SkPath::kEvenOdd_FillType);
  3165. path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
  3166. path.addRect(10, 20, 40, 30, SkPath::kCCW_Direction);
  3167. path.addRect(0, 12, 12, 12, SkPath::kCCW_Direction);
  3168. path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
  3169. testSimplify(reporter, path, filename);
  3170. }
  3171. static void testLine85(skiatest::Reporter* reporter, const char* filename) {
  3172. SkPath path;
  3173. path.addRect(36, 0, 66, 60, SkPath::kCCW_Direction);
  3174. path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
  3175. path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
  3176. path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
  3177. testSimplify(reporter, path, filename);
  3178. }
  3179. static void testQuadralateral1(skiatest::Reporter* reporter, const char* filename) {
  3180. SkPath path;
  3181. path.moveTo(0, 0);
  3182. path.lineTo(0, 0);
  3183. path.lineTo(0, 0);
  3184. path.lineTo(3, 2);
  3185. path.close();
  3186. path.moveTo(0, 0);
  3187. path.lineTo(2, 1);
  3188. path.lineTo(2, 2);
  3189. path.lineTo(2, 3);
  3190. path.close();
  3191. testSimplify(reporter, path, filename);
  3192. }
  3193. static void testCubic1(skiatest::Reporter* reporter, const char* filename) {
  3194. SkPath path;
  3195. path.moveTo(0, 0);
  3196. path.cubicTo(0, 1, 1, 1, 1, 0);
  3197. path.close();
  3198. path.moveTo(1, 0);
  3199. path.cubicTo(0, 0, 0, 1, 1, 1);
  3200. path.close();
  3201. testSimplify(reporter, path, filename);
  3202. }
  3203. static void testQuadratic93(skiatest::Reporter* reporter, const char* filename) {
  3204. SkPath path;
  3205. path.moveTo(3, 0);
  3206. path.quadTo(0, 1, 3, 2);
  3207. path.lineTo(0, 3);
  3208. path.close();
  3209. path.moveTo(1, 0);
  3210. path.lineTo(2, 0);
  3211. path.quadTo(1, 1, 2, 2);
  3212. path.close();
  3213. testSimplify(reporter, path, filename);
  3214. }
  3215. static void testCubic2(skiatest::Reporter* reporter, const char* filename) {
  3216. SkPath path;
  3217. path.moveTo(0,2);
  3218. path.cubicTo(0,3, 2,1, 4,0);
  3219. path.close();
  3220. path.moveTo(1,2);
  3221. path.cubicTo(0,4, 2,0, 3,0);
  3222. path.close();
  3223. testSimplify(reporter, path, filename);
  3224. }
  3225. static void testQuad1(skiatest::Reporter* reporter, const char* filename) {
  3226. SkPath path;
  3227. path.moveTo(0,0);
  3228. path.quadTo(0,0, 0,1);
  3229. path.lineTo(1,1);
  3230. path.close();
  3231. path.moveTo(0,0);
  3232. path.quadTo(1,1, 0,2);
  3233. path.close();
  3234. testSimplify(reporter, path, filename);
  3235. }
  3236. static void testQuadralateral2(skiatest::Reporter* reporter, const char* filename) {
  3237. SkPath path;
  3238. path.moveTo(0, 0);
  3239. path.lineTo(2, 2);
  3240. path.lineTo(0, 3);
  3241. path.lineTo(3, 3);
  3242. path.close();
  3243. path.moveTo(2, 0);
  3244. path.lineTo(3, 0);
  3245. path.lineTo(0, 1);
  3246. path.lineTo(1, 2);
  3247. path.close();
  3248. markTestFlakyForPathKit();
  3249. testSimplify(reporter, path, filename);
  3250. }
  3251. static void testQuadratic94(skiatest::Reporter* reporter, const char* filename) {
  3252. SkPath path;
  3253. path.moveTo(0, 0);
  3254. path.lineTo(8, 8);
  3255. path.quadTo(8, 4, 4, 4);
  3256. path.quadTo(4, 0, 0, 0);
  3257. path.close();
  3258. testSimplify(reporter, path, filename);
  3259. }
  3260. static void testQuadratic95(skiatest::Reporter* reporter, const char* filename) {
  3261. SkPath path;
  3262. path.moveTo(8, 8);
  3263. path.lineTo(0, 0);
  3264. path.quadTo(4, 0, 4, 4);
  3265. path.quadTo(8, 4, 8, 8);
  3266. path.close();
  3267. testSimplify(reporter, path, filename);
  3268. }
  3269. static void testQuadratic96(skiatest::Reporter* reporter, const char* filename) {
  3270. SkPath path;
  3271. path.moveTo(8, 0);
  3272. path.lineTo(0, 8);
  3273. path.quadTo(0, 4, 4, 4);
  3274. path.quadTo(4, 0, 8, 0);
  3275. path.close();
  3276. testSimplify(reporter, path, filename);
  3277. }
  3278. static void testQuadratic97(skiatest::Reporter* reporter, const char* filename) {
  3279. SkPath path;
  3280. path.moveTo(0, 8);
  3281. path.lineTo(8, 0);
  3282. path.quadTo(4, 0, 4, 4);
  3283. path.quadTo(0, 4, 0, 8);
  3284. path.close();
  3285. testSimplify(reporter, path, filename);
  3286. }
  3287. static void testTriangles1(skiatest::Reporter* reporter, const char* filename) {
  3288. SkPath path;
  3289. path.moveTo(0, 0);
  3290. path.lineTo(1, 0);
  3291. path.lineTo(3, 3);
  3292. path.close();
  3293. path.moveTo(0, 0);
  3294. path.lineTo(1, 2);
  3295. path.lineTo(1, 1);
  3296. path.close();
  3297. testSimplify(reporter, path, filename);
  3298. }
  3299. static void testTriangles2(skiatest::Reporter* reporter, const char* filename) {
  3300. SkPath path;
  3301. path.moveTo(0, 0);
  3302. path.lineTo(1, 0);
  3303. path.lineTo(3, 3);
  3304. path.close();
  3305. path.moveTo(1, 1);
  3306. path.lineTo(2, 3);
  3307. path.lineTo(1, 2);
  3308. path.close();
  3309. testSimplify(reporter, path, filename);
  3310. }
  3311. // A test for this case:
  3312. // contourA has two segments that are coincident
  3313. // contourB has two segments that are coincident in the same place
  3314. // each ends up with +2/0 pairs for winding count
  3315. // since logic in OpSegment::addTCoincident doesn't transfer count (only increments/decrements)
  3316. // can this be resolved to +4/0 ?
  3317. static void testAddTCoincident1(skiatest::Reporter* reporter, const char* filename) {
  3318. SkPath path;
  3319. path.moveTo(2, 0);
  3320. path.lineTo(2, 2);
  3321. path.lineTo(1, 1);
  3322. path.lineTo(2, 0);
  3323. path.lineTo(2, 2);
  3324. path.lineTo(1, 1);
  3325. path.close();
  3326. path.moveTo(2, 0);
  3327. path.lineTo(2, 2);
  3328. path.lineTo(3, 1);
  3329. path.lineTo(2, 0);
  3330. path.lineTo(2, 2);
  3331. path.lineTo(3, 1);
  3332. path.close();
  3333. testSimplify(reporter, path, filename);
  3334. }
  3335. // test with implicit close
  3336. static void testAddTCoincident2(skiatest::Reporter* reporter, const char* filename) {
  3337. SkPath path;
  3338. path.moveTo(2, 0);
  3339. path.lineTo(2, 2);
  3340. path.lineTo(1, 1);
  3341. path.lineTo(2, 0);
  3342. path.lineTo(2, 2);
  3343. path.lineTo(1, 1);
  3344. path.moveTo(2, 0);
  3345. path.lineTo(2, 2);
  3346. path.lineTo(3, 1);
  3347. path.lineTo(2, 0);
  3348. path.lineTo(2, 2);
  3349. path.lineTo(3, 1);
  3350. testSimplify(reporter, path, filename);
  3351. }
  3352. static void testQuad2(skiatest::Reporter* reporter, const char* filename) {
  3353. SkPath path;
  3354. path.moveTo(1, 0);
  3355. path.quadTo(0, 1, 3, 2);
  3356. path.lineTo(2, 3);
  3357. path.close();
  3358. path.moveTo(0, 0);
  3359. path.lineTo(1, 0);
  3360. path.quadTo(0, 1, 1, 1);
  3361. path.close();
  3362. }
  3363. static void testQuad3(skiatest::Reporter* reporter, const char* filename) {
  3364. SkPath path;
  3365. path.moveTo(1, 0);
  3366. path.quadTo(0, 1, 3, 2);
  3367. path.lineTo(3, 3);
  3368. path.close();
  3369. path.moveTo(0, 0);
  3370. path.lineTo(1, 0);
  3371. path.quadTo(0, 1, 1, 1);
  3372. path.close();
  3373. testSimplify(reporter, path, filename);
  3374. }
  3375. static void testQuad4(skiatest::Reporter* reporter, const char* filename) {
  3376. SkPath path;
  3377. path.moveTo(2, 0);
  3378. path.quadTo(0, 1, 1, 1);
  3379. path.lineTo(3, 3);
  3380. path.close();
  3381. path.moveTo(0, 0);
  3382. path.lineTo(2, 0);
  3383. path.quadTo(0, 1, 2, 2);
  3384. path.close();
  3385. testSimplify(reporter, path, filename);
  3386. }
  3387. static void testQuad5(skiatest::Reporter* reporter, const char* filename) {
  3388. SkPath path;
  3389. path.moveTo(2, 0);
  3390. path.quadTo(0, 1, 2, 2);
  3391. path.lineTo(1, 3);
  3392. path.close();
  3393. path.moveTo(0, 0);
  3394. path.lineTo(2, 0);
  3395. path.quadTo(0, 1, 1, 1);
  3396. path.close();
  3397. testSimplify(reporter, path, filename);
  3398. }
  3399. static void testQuad6(skiatest::Reporter* reporter, const char* filename) {
  3400. SkPath path;
  3401. path.moveTo(2, 0);
  3402. path.quadTo(0, 1, 2, 2);
  3403. path.lineTo(1, 3);
  3404. path.close();
  3405. path.moveTo(1, 0);
  3406. path.lineTo(2, 0);
  3407. path.quadTo(0, 1, 1, 1);
  3408. path.close();
  3409. testSimplify(reporter, path, filename);
  3410. }
  3411. static void testQuad7(skiatest::Reporter* reporter, const char* filename) {
  3412. SkPath path;
  3413. path.moveTo(3, 0);
  3414. path.quadTo(0, 1, 1, 1);
  3415. path.lineTo(1, 3);
  3416. path.close();
  3417. path.moveTo(1, 0);
  3418. path.lineTo(3, 0);
  3419. path.quadTo(0, 1, 1, 2);
  3420. path.close();
  3421. testSimplify(reporter, path, filename);
  3422. }
  3423. static void testQuadLineIntersect1(skiatest::Reporter* reporter, const char* filename) {
  3424. SkPath path;
  3425. path.moveTo(0, 0);
  3426. path.quadTo(3, 1, 0, 3);
  3427. path.lineTo(2, 3);
  3428. path.close();
  3429. path.moveTo(2, 0);
  3430. path.lineTo(0, 1);
  3431. path.quadTo(3, 1, 0, 2);
  3432. path.close();
  3433. testSimplify(reporter, path, filename);
  3434. }
  3435. static void testQuadLineIntersect2(skiatest::Reporter* reporter, const char* filename) {
  3436. SkPath path;
  3437. path.moveTo(0, 0);
  3438. path.quadTo(3, 1, 0, 3);
  3439. path.lineTo(0, 3);
  3440. path.close();
  3441. path.moveTo(2, 0);
  3442. path.lineTo(0, 1);
  3443. path.quadTo(3, 1, 0, 2);
  3444. path.close();
  3445. testSimplify(reporter, path, filename);
  3446. }
  3447. static void testQuadLineIntersect3(skiatest::Reporter* reporter, const char* filename) {
  3448. SkPath path;
  3449. path.moveTo(0, 0);
  3450. path.quadTo(3, 1, 0, 3);
  3451. path.lineTo(1, 3);
  3452. path.close();
  3453. path.moveTo(2, 0);
  3454. path.lineTo(0, 1);
  3455. path.quadTo(3, 1, 0, 2);
  3456. path.close();
  3457. testSimplify(reporter, path, filename);
  3458. }
  3459. static void skphealth_com76s(skiatest::Reporter* reporter, const char* filename) {
  3460. SkPath path;
  3461. path.setFillType(SkPath::kWinding_FillType);
  3462. path.moveTo(708.099182f, 7.09919119f);
  3463. path.lineTo(708.099182f, 7.09920025f);
  3464. path.quadTo(704.000000f, 11.2010098f, 704.000000f, 17.0000000f);
  3465. path.lineTo(704.000000f, 33.0000000f);
  3466. path.lineTo(705.000000f, 33.0000000f);
  3467. path.lineTo(705.000000f, 17.0000000f);
  3468. path.cubicTo(705.000000f, 13.4101496f, 706.455078f, 10.1601505f, 708.807617f, 7.80761385f);
  3469. path.lineTo(708.099182f, 7.09919119f);
  3470. path.close();
  3471. path.moveTo(704.000000f, 3.00000000f);
  3472. path.lineTo(704.000000f, 33.0000000f);
  3473. path.lineTo(705.000000f, 33.0000000f);
  3474. path.lineTo(719.500000f, 3.00000000f);
  3475. testSimplify(reporter, path, filename);
  3476. }
  3477. static void tooCloseTest(skiatest::Reporter* reporter, const char* filename) {
  3478. SkPath path;
  3479. path.moveTo(0, 0);
  3480. path.lineTo(1, 1);
  3481. path.lineTo(1,-1);
  3482. path.close();
  3483. path.moveTo(0, 0);
  3484. path.lineTo(1,-2);
  3485. path.lineTo(1, 2);
  3486. path.lineTo(2, 0);
  3487. path.close();
  3488. testSimplify(reporter, path, filename);
  3489. }
  3490. static void testRect1s(skiatest::Reporter* reporter, const char* filename) {
  3491. SkPath path;
  3492. path.addRect(0, 0, 60, 60, SkPath::kCCW_Direction);
  3493. path.addRect(30, 20, 50, 50, SkPath::kCCW_Direction);
  3494. path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
  3495. path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
  3496. testSimplify(reporter, path, filename);
  3497. }
  3498. static void testRect2s(skiatest::Reporter* reporter, const char* filename) {
  3499. SkPath path;
  3500. path.setFillType(SkPath::kWinding_FillType);
  3501. path.moveTo(0, 0);
  3502. path.lineTo(60, 0);
  3503. path.lineTo(60, 60);
  3504. path.lineTo(0, 60);
  3505. path.close();
  3506. path.moveTo(30, 20);
  3507. path.lineTo(30, 50);
  3508. path.lineTo(50, 50);
  3509. path.lineTo(50, 20);
  3510. path.close();
  3511. path.moveTo(24, 20);
  3512. path.lineTo(24, 30);
  3513. path.lineTo(36, 30);
  3514. path.lineTo(36, 20);
  3515. path.close();
  3516. path.moveTo(32, 24);
  3517. path.lineTo(32, 41);
  3518. path.lineTo(36, 41);
  3519. path.lineTo(36, 24);
  3520. path.close();
  3521. testSimplify(reporter, path, filename);
  3522. }
  3523. static void testTriangles3x(skiatest::Reporter* reporter, const char* filename) {
  3524. SkPath path;
  3525. path.setFillType(SkPath::kEvenOdd_FillType);
  3526. path.moveTo(1, 0);
  3527. path.quadTo(0, 1, 3, 2);
  3528. path.lineTo(1, 3);
  3529. path.close();
  3530. path.moveTo(0, 0);
  3531. path.lineTo(1, 1);
  3532. path.quadTo(2, 1, 0, 2);
  3533. path.close();
  3534. testSimplify(reporter, path, filename);
  3535. }
  3536. static void testQuad8(skiatest::Reporter* reporter, const char* filename) {
  3537. SkPath path;
  3538. path.moveTo(3, 0);
  3539. path.quadTo(0, 1, 3, 2);
  3540. path.lineTo(0, 3);
  3541. path.close();
  3542. path.moveTo(1, 0);
  3543. path.lineTo(3, 0);
  3544. path.quadTo(1, 1, 2, 2);
  3545. path.close();
  3546. testSimplify(reporter, path, filename);
  3547. }
  3548. static void testTriangles4x(skiatest::Reporter* reporter, const char* filename) {
  3549. SkPath path;
  3550. path.setFillType(SkPath::kEvenOdd_FillType);
  3551. path.moveTo(0, 0);
  3552. path.quadTo(2, 0, 0, 3);
  3553. path.lineTo(2, 3);
  3554. path.close();
  3555. path.moveTo(0, 0);
  3556. path.lineTo(0, 1);
  3557. path.quadTo(3, 2, 2, 3);
  3558. path.close();
  3559. testSimplify(reporter, path, filename);
  3560. }
  3561. static void testQuad9(skiatest::Reporter* reporter, const char* filename) {
  3562. SkPath path;
  3563. path.setFillType(SkPath::kEvenOdd_FillType);
  3564. path.moveTo(1, 0);
  3565. path.quadTo(0, 1, 3, 2);
  3566. path.lineTo(1, 3);
  3567. path.close();
  3568. path.moveTo(1, 0);
  3569. path.lineTo(1, 1);
  3570. path.quadTo(2, 1, 1, 3);
  3571. path.close();
  3572. testSimplify(reporter, path, filename);
  3573. }
  3574. static void testQuad10(skiatest::Reporter* reporter, const char* filename) {
  3575. SkPath path;
  3576. path.moveTo(1, 0);
  3577. path.quadTo(0, 1, 3, 2);
  3578. path.lineTo(3, 3);
  3579. path.close();
  3580. path.moveTo(1, 0);
  3581. path.lineTo(2, 0);
  3582. path.quadTo(2, 3, 3, 3);
  3583. path.close();
  3584. testSimplify(reporter, path, filename);
  3585. }
  3586. static void testQuad11(skiatest::Reporter* reporter, const char* filename) {
  3587. SkPath path;
  3588. path.moveTo(2, 0);
  3589. path.quadTo(0, 1, 1, 2);
  3590. path.lineTo(1, 2);
  3591. path.close();
  3592. path.moveTo(0, 0);
  3593. path.lineTo(1, 1);
  3594. path.quadTo(1, 3, 3, 3);
  3595. path.close();
  3596. testSimplify(reporter, path, filename);
  3597. }
  3598. static void testQuad12(skiatest::Reporter* reporter, const char* filename) {
  3599. SkPath path;
  3600. path.moveTo(0, 0);
  3601. path.quadTo(0, 0, 0, 0);
  3602. path.lineTo(0, 1);
  3603. path.close();
  3604. path.moveTo(0, 0);
  3605. path.lineTo(0, 0);
  3606. path.quadTo(1, 0, 0, 1);
  3607. path.close();
  3608. testSimplify(reporter, path, filename);
  3609. }
  3610. static void testQuadralateral3(skiatest::Reporter* reporter, const char* filename) {
  3611. SkPath path;
  3612. path.setFillType(SkPath::kEvenOdd_FillType);
  3613. path.moveTo(0, 0);
  3614. path.lineTo(0, 0);
  3615. path.lineTo(0, 0);
  3616. path.lineTo(1, 0);
  3617. path.close();
  3618. path.moveTo(0, 0);
  3619. path.lineTo(0, 0);
  3620. path.lineTo(1, 0);
  3621. path.lineTo(0, 1);
  3622. path.close();
  3623. testSimplify(reporter, path, filename);
  3624. }
  3625. static void testDegenerate5(skiatest::Reporter* reporter, const char* filename) {
  3626. SkPath path;
  3627. path.moveTo(0, 0);
  3628. path.lineTo(0, 0);
  3629. path.lineTo(1, 0);
  3630. path.close();
  3631. path.moveTo(0, 0);
  3632. path.lineTo(1, 0);
  3633. path.lineTo(0, 1);
  3634. path.close();
  3635. testSimplify(reporter, path, filename);
  3636. }
  3637. static void testQuadralateral4(skiatest::Reporter* reporter, const char* filename) {
  3638. SkPath path;
  3639. path.moveTo(0, 0);
  3640. path.lineTo(0, 0);
  3641. path.lineTo(0, 0);
  3642. path.lineTo(3, 1);
  3643. path.close();
  3644. path.moveTo(0, 0);
  3645. path.lineTo(0, 0);
  3646. path.lineTo(0, 1);
  3647. path.lineTo(3, 1);
  3648. path.close();
  3649. testSimplify(reporter, path, filename);
  3650. }
  3651. static void testDegenerates1(skiatest::Reporter* reporter, const char* filename) {
  3652. SkPath path;
  3653. path.moveTo(0, 0);
  3654. path.quadTo(0, 0, 1, 1);
  3655. path.lineTo(2, 3);
  3656. path.close();
  3657. path.moveTo(0, 0);
  3658. path.lineTo(0, 0);
  3659. path.quadTo(3, 2, 2, 3);
  3660. path.close();
  3661. testSimplify(reporter, path, filename);
  3662. }
  3663. static void testQuad13(skiatest::Reporter* reporter, const char* filename) {
  3664. SkPath path;
  3665. path.moveTo(0, 0);
  3666. path.quadTo(0, 0, 1, 1);
  3667. path.lineTo(2, 3);
  3668. path.close();
  3669. path.moveTo(0, 0);
  3670. path.lineTo(0, 0);
  3671. path.quadTo(3, 2, 2, 3);
  3672. path.close();
  3673. testSimplify(reporter, path, filename);
  3674. }
  3675. static void testQuad14(skiatest::Reporter* reporter, const char* filename) {
  3676. SkPath path;
  3677. path.setFillType(SkPath::kWinding_FillType);
  3678. path.moveTo(0, 0);
  3679. path.quadTo(0, 0, 1, 1);
  3680. path.lineTo(1, 2);
  3681. path.close();
  3682. path.moveTo(0, 0);
  3683. path.lineTo(0, 0);
  3684. path.quadTo(3, 1, 1, 3);
  3685. path.close();
  3686. testSimplify(reporter, path, filename);
  3687. }
  3688. static void testQuad15(skiatest::Reporter* reporter, const char* filename) {
  3689. SkPath path;
  3690. path.moveTo(0, 0);
  3691. path.quadTo(0, 0, 1, 1);
  3692. path.lineTo(1, 3);
  3693. path.close();
  3694. path.moveTo(0, 0);
  3695. path.lineTo(0, 0);
  3696. path.quadTo(2, 0, 1, 3);
  3697. path.close();
  3698. testSimplify(reporter, path, filename);
  3699. }
  3700. static void testQuads16(skiatest::Reporter* reporter, const char* filename) {
  3701. SkPath path;
  3702. path.moveTo(0, 0);
  3703. path.quadTo(0, 0, 1, 1);
  3704. path.lineTo(3, 2);
  3705. path.close();
  3706. path.moveTo(0, 0);
  3707. path.lineTo(0, 0);
  3708. path.quadTo(0, 1, 3, 2);
  3709. path.close();
  3710. testSimplify(reporter, path, filename);
  3711. }
  3712. static void testQuads17(skiatest::Reporter* reporter, const char* filename) {
  3713. SkPath path;
  3714. path.moveTo(0, 0);
  3715. path.quadTo(0, 0, 1, 1);
  3716. path.lineTo(3, 2);
  3717. path.close();
  3718. path.moveTo(0, 0);
  3719. path.lineTo(0, 0);
  3720. path.quadTo(0, 2, 3, 2);
  3721. path.close();
  3722. testSimplify(reporter, path, filename);
  3723. }
  3724. static void testQuads18(skiatest::Reporter* reporter, const char* filename) {
  3725. SkPath path;
  3726. path.moveTo(0, 0);
  3727. path.quadTo(0, 0, 1, 1);
  3728. path.lineTo(3, 2);
  3729. path.close();
  3730. path.moveTo(0, 0);
  3731. path.lineTo(0, 0);
  3732. path.quadTo(1, 2, 3, 2);
  3733. path.close();
  3734. testSimplify(reporter, path, filename);
  3735. }
  3736. static void testQuads19(skiatest::Reporter* reporter, const char* filename) {
  3737. SkPath path;
  3738. path.moveTo(0, 0);
  3739. path.quadTo(0, 0, 2, 1);
  3740. path.lineTo(1, 2);
  3741. path.close();
  3742. path.moveTo(0, 0);
  3743. path.lineTo(0, 0);
  3744. path.quadTo(2, 1, 1, 2);
  3745. path.close();
  3746. testSimplify(reporter, path, filename);
  3747. }
  3748. static void testQuads20(skiatest::Reporter* reporter, const char* filename) {
  3749. SkPath path;
  3750. path.moveTo(0, 0);
  3751. path.quadTo(0, 0, 2, 1);
  3752. path.lineTo(1, 3);
  3753. path.close();
  3754. path.moveTo(0, 0);
  3755. path.lineTo(0, 0);
  3756. path.quadTo(2, 1, 1, 3);
  3757. path.close();
  3758. testSimplify(reporter, path, filename);
  3759. }
  3760. static void testQuads21(skiatest::Reporter* reporter, const char* filename) {
  3761. SkPath path;
  3762. path.moveTo(0, 0);
  3763. path.quadTo(0, 0, 1, 1);
  3764. path.lineTo(2, 1);
  3765. path.close();
  3766. path.moveTo(0, 0);
  3767. path.lineTo(0, 0);
  3768. path.quadTo(3, 0, 2, 3);
  3769. path.close();
  3770. testSimplify(reporter, path, filename);
  3771. }
  3772. static void testQuads22(skiatest::Reporter* reporter, const char* filename) {
  3773. SkPath path;
  3774. path.moveTo(0, 0);
  3775. path.quadTo(0, 0, 2, 0);
  3776. path.lineTo(1, 1);
  3777. path.close();
  3778. path.moveTo(0, 0);
  3779. path.lineTo(0, 0);
  3780. path.quadTo(0, 1, 3, 2);
  3781. path.close();
  3782. testSimplify(reporter, path, filename);
  3783. }
  3784. static void testQuads23(skiatest::Reporter* reporter, const char* filename) {
  3785. SkPath path;
  3786. path.moveTo(0, 0);
  3787. path.quadTo(0, 0, 1, 0);
  3788. path.lineTo(1, 1);
  3789. path.close();
  3790. path.moveTo(0, 0);
  3791. path.lineTo(0, 0);
  3792. path.quadTo(0, 1, 3, 2);
  3793. path.close();
  3794. testSimplify(reporter, path, filename);
  3795. }
  3796. static void testQuads24(skiatest::Reporter* reporter, const char* filename) {
  3797. SkPath path;
  3798. path.moveTo(0, 0);
  3799. path.quadTo(0, 0, 0, 1);
  3800. path.lineTo(1, 2);
  3801. path.close();
  3802. path.moveTo(0, 1);
  3803. path.lineTo(0, 1);
  3804. path.quadTo(0, 2, 3, 3);
  3805. path.close();
  3806. testSimplify(reporter, path, filename);
  3807. }
  3808. static void testQuads25(skiatest::Reporter* reporter, const char* filename) {
  3809. SkPath path;
  3810. path.moveTo(0, 0);
  3811. path.quadTo(0, 0, 0, 1);
  3812. path.lineTo(2, 1);
  3813. path.close();
  3814. path.moveTo(0, 0);
  3815. path.lineTo(0, 0);
  3816. path.quadTo(3, 0, 2, 3);
  3817. path.close();
  3818. testSimplify(reporter, path, filename);
  3819. }
  3820. static void testQuads26(skiatest::Reporter* reporter, const char* filename) {
  3821. SkPath path;
  3822. path.moveTo(0, 0);
  3823. path.quadTo(0, 0, 3, 0);
  3824. path.lineTo(1, 1);
  3825. path.close();
  3826. path.moveTo(0, 0);
  3827. path.lineTo(0, 0);
  3828. path.quadTo(0, 1, 3, 2);
  3829. path.close();
  3830. testSimplify(reporter, path, filename);
  3831. }
  3832. static void testQuads27(skiatest::Reporter* reporter, const char* filename) {
  3833. SkPath path;
  3834. path.moveTo(0, 0);
  3835. path.quadTo(0, 0, 2, 0);
  3836. path.lineTo(2, 1);
  3837. path.close();
  3838. path.moveTo(2, 0);
  3839. path.lineTo(2, 0);
  3840. path.quadTo(3, 0, 1, 3);
  3841. path.close();
  3842. testSimplify(reporter, path, filename);
  3843. }
  3844. static void testQuads28(skiatest::Reporter* reporter, const char* filename) {
  3845. SkPath path;
  3846. path.moveTo(0, 0);
  3847. path.quadTo(0, 0, 0, 1);
  3848. path.lineTo(2, 2);
  3849. path.close();
  3850. path.moveTo(0, 0);
  3851. path.lineTo(0, 0);
  3852. path.quadTo(3, 0, 2, 3);
  3853. path.close();
  3854. testSimplify(reporter, path, filename);
  3855. }
  3856. static void testQuads29(skiatest::Reporter* reporter, const char* filename) {
  3857. SkPath path;
  3858. path.moveTo(0, 0);
  3859. path.quadTo(0, 0, 3, 0);
  3860. path.lineTo(2, 1);
  3861. path.close();
  3862. path.moveTo(3, 0);
  3863. path.lineTo(3, 0);
  3864. path.quadTo(3, 1, 0, 2);
  3865. path.close();
  3866. testSimplify(reporter, path, filename);
  3867. }
  3868. static void testQuads30(skiatest::Reporter* reporter, const char* filename) {
  3869. SkPath path;
  3870. path.moveTo(0, 0);
  3871. path.quadTo(0, 0, 2, 0);
  3872. path.lineTo(2, 2);
  3873. path.close();
  3874. path.moveTo(2, 0);
  3875. path.lineTo(2, 0);
  3876. path.quadTo(3, 2, 1, 3);
  3877. path.close();
  3878. testSimplify(reporter, path, filename);
  3879. }
  3880. static void testQuads31(skiatest::Reporter* reporter, const char* filename) {
  3881. SkPath path;
  3882. path.moveTo(0, 0);
  3883. path.quadTo(0, 0, 2, 1);
  3884. path.lineTo(1, 3);
  3885. path.close();
  3886. path.moveTo(3, 0);
  3887. path.lineTo(0, 1);
  3888. path.quadTo(2, 1, 1, 3);
  3889. path.close();
  3890. testSimplify(reporter, path, filename);
  3891. }
  3892. static void testQuads32(skiatest::Reporter* reporter, const char* filename) {
  3893. SkPath path;
  3894. path.moveTo(0, 0);
  3895. path.quadTo(0, 0, 1, 1);
  3896. path.lineTo(1, 2);
  3897. path.close();
  3898. path.moveTo(1, 1);
  3899. path.lineTo(1, 1);
  3900. path.quadTo(3, 1, 0, 3);
  3901. path.close();
  3902. testSimplify(reporter, path, filename);
  3903. }
  3904. static void testQuads33(skiatest::Reporter* reporter, const char* filename) {
  3905. SkPath path;
  3906. path.moveTo(0, 0);
  3907. path.quadTo(0, 0, 1, 1);
  3908. path.lineTo(2, 1);
  3909. path.close();
  3910. path.moveTo(0, 0);
  3911. path.lineTo(0, 0);
  3912. path.quadTo(3, 0, 2, 3);
  3913. path.close();
  3914. testSimplify(reporter, path, filename);
  3915. }
  3916. static void testQuads34(skiatest::Reporter* reporter, const char* filename) {
  3917. SkPath path;
  3918. path.moveTo(0, 0);
  3919. path.quadTo(0, 0, 1, 0);
  3920. path.lineTo(2, 1);
  3921. path.close();
  3922. path.moveTo(1, 0);
  3923. path.lineTo(1, 0);
  3924. path.quadTo(2, 0, 3, 3);
  3925. path.close();
  3926. testSimplify(reporter, path, filename);
  3927. }
  3928. static void testQuads35(skiatest::Reporter* reporter, const char* filename) {
  3929. SkPath path;
  3930. path.moveTo(0, 0);
  3931. path.quadTo(0, 0, 1, 0);
  3932. path.lineTo(1, 2);
  3933. path.close();
  3934. path.moveTo(1, 0);
  3935. path.lineTo(1, 0);
  3936. path.quadTo(3, 1, 0, 3);
  3937. path.close();
  3938. testSimplify(reporter, path, filename);
  3939. }
  3940. static void testQuads36(skiatest::Reporter* reporter, const char* filename) {
  3941. SkPath path;
  3942. path.moveTo(1, 0);
  3943. path.quadTo(2, 0, 1, 2);
  3944. path.lineTo(2, 2);
  3945. path.close();
  3946. path.moveTo(1, 0);
  3947. path.lineTo(1, 0);
  3948. path.quadTo(3, 0, 2, 3);
  3949. path.close();
  3950. testSimplify(reporter, path, filename);
  3951. }
  3952. static void testQuads37(skiatest::Reporter* reporter, const char* filename) {
  3953. SkPath path;
  3954. path.setFillType(SkPath::kEvenOdd_FillType);
  3955. path.moveTo(1, 0);
  3956. path.quadTo(2, 0, 1, 2);
  3957. path.lineTo(2, 2);
  3958. path.close();
  3959. path.moveTo(1, 0);
  3960. path.lineTo(1, 0);
  3961. path.quadTo(3, 0, 2, 3);
  3962. path.close();
  3963. testSimplify(reporter, path, filename);
  3964. }
  3965. static void testQuads38(skiatest::Reporter* reporter, const char* filename) {
  3966. SkPath path;
  3967. path.moveTo(1, 0);
  3968. path.quadTo(3, 0, 0, 2);
  3969. path.lineTo(3, 2);
  3970. path.close();
  3971. path.moveTo(1, 0);
  3972. path.lineTo(1, 0);
  3973. path.quadTo(2, 1, 3, 1);
  3974. path.close();
  3975. testSimplify(reporter, path, filename);
  3976. }
  3977. static void testQuads39(skiatest::Reporter* reporter, const char* filename) {
  3978. SkPath path;
  3979. path.moveTo(1, 0);
  3980. path.quadTo(3, 0, 0, 3);
  3981. path.lineTo(0, 3);
  3982. path.close();
  3983. path.moveTo(1, 1);
  3984. path.lineTo(0, 2);
  3985. path.quadTo(1, 2, 0, 3);
  3986. path.close();
  3987. testSimplify(reporter, path, filename);
  3988. }
  3989. static void testQuads40(skiatest::Reporter* reporter, const char* filename) {
  3990. SkPath path;
  3991. path.moveTo(1, 0);
  3992. path.quadTo(3, 0, 3, 3);
  3993. path.lineTo(3, 3);
  3994. path.close();
  3995. path.moveTo(2, 1);
  3996. path.lineTo(2, 2);
  3997. path.quadTo(3, 2, 3, 3);
  3998. path.close();
  3999. testSimplify(reporter, path, filename);
  4000. }
  4001. static void testQuads41(skiatest::Reporter* reporter, const char* filename) {
  4002. SkPath path;
  4003. path.moveTo(0, 0);
  4004. path.quadTo(0, 0, 1, 0);
  4005. path.lineTo(2, 1);
  4006. path.close();
  4007. path.moveTo(0, 0);
  4008. path.lineTo(0, 0);
  4009. path.quadTo(0, 1, 1, 2);
  4010. path.close();
  4011. testSimplify(reporter, path, filename);
  4012. }
  4013. static void testQuads54(skiatest::Reporter* reporter, const char* filename) {
  4014. SkPath path;
  4015. path.moveTo(1, 0);
  4016. path.quadTo(2, 0, 1, 1);
  4017. path.lineTo(3, 1);
  4018. path.close();
  4019. path.moveTo(2, 0);
  4020. path.lineTo(1, 1);
  4021. path.quadTo(1, 1, 2, 3);
  4022. path.close();
  4023. testSimplify(reporter, path, filename);
  4024. }
  4025. static void testQuads53(skiatest::Reporter* reporter, const char* filename) {
  4026. SkPath path;
  4027. path.moveTo(1, 0);
  4028. path.quadTo(2, 0, 1, 1);
  4029. path.lineTo(3, 1);
  4030. path.close();
  4031. path.moveTo(2, 0);
  4032. path.lineTo(1, 1);
  4033. path.quadTo(2, 3, 2, 3);
  4034. path.close();
  4035. testSimplify(reporter, path, filename);
  4036. }
  4037. static void testQuads52(skiatest::Reporter* reporter, const char* filename) {
  4038. SkPath path;
  4039. path.moveTo(1, 0);
  4040. path.quadTo(2, 0, 1, 1);
  4041. path.lineTo(3, 1);
  4042. path.close();
  4043. path.moveTo(2, 0);
  4044. path.lineTo(1, 1);
  4045. path.quadTo(2, 3, 3, 3);
  4046. path.close();
  4047. testSimplify(reporter, path, filename);
  4048. }
  4049. static void testQuads51(skiatest::Reporter* reporter, const char* filename) {
  4050. SkPath path;
  4051. path.moveTo(2, 0);
  4052. path.quadTo(3, 0, 2, 1);
  4053. path.lineTo(3, 2);
  4054. path.close();
  4055. path.moveTo(3, 0);
  4056. path.lineTo(3, 1);
  4057. path.quadTo(3, 1, 1, 2);
  4058. path.close();
  4059. testSimplify(reporter, path, filename);
  4060. }
  4061. static void testQuads50(skiatest::Reporter* reporter, const char* filename) {
  4062. SkPath path;
  4063. path.moveTo(2, 0);
  4064. path.quadTo(3, 0, 2, 1);
  4065. path.lineTo(3, 2);
  4066. path.close();
  4067. path.moveTo(3, 0);
  4068. path.lineTo(3, 1);
  4069. path.quadTo(1, 2, 1, 2);
  4070. path.close();
  4071. testSimplify(reporter, path, filename);
  4072. }
  4073. static void testQuads49(skiatest::Reporter* reporter, const char* filename) {
  4074. SkPath path;
  4075. path.moveTo(2, 0);
  4076. path.quadTo(3, 0, 2, 1);
  4077. path.lineTo(3, 2);
  4078. path.close();
  4079. path.moveTo(3, 0);
  4080. path.lineTo(2, 2);
  4081. path.quadTo(2, 2, 0, 3);
  4082. path.close();
  4083. testSimplify(reporter, path, filename);
  4084. }
  4085. static void testQuads48(skiatest::Reporter* reporter, const char* filename) {
  4086. SkPath path;
  4087. path.moveTo(2, 0);
  4088. path.quadTo(3, 0, 2, 1);
  4089. path.lineTo(3, 2);
  4090. path.close();
  4091. path.moveTo(3, 0);
  4092. path.lineTo(2, 2);
  4093. path.quadTo(3, 2, 0, 3);
  4094. path.close();
  4095. testSimplify(reporter, path, filename);
  4096. }
  4097. static void testQuads47(skiatest::Reporter* reporter, const char* filename) {
  4098. SkPath path;
  4099. path.moveTo(2, 0);
  4100. path.quadTo(3, 0, 2, 1);
  4101. path.lineTo(3, 2);
  4102. path.close();
  4103. path.moveTo(3, 0);
  4104. path.lineTo(2, 2);
  4105. path.quadTo(0, 3, 0, 3);
  4106. path.close();
  4107. testSimplify(reporter, path, filename);
  4108. }
  4109. static void testQuads46x(skiatest::Reporter* reporter, const char* filename) {
  4110. SkPath path;
  4111. path.setFillType(SkPath::kEvenOdd_FillType);
  4112. path.moveTo(2, 0);
  4113. path.quadTo(0, 1, 3, 2);
  4114. path.lineTo(1, 3);
  4115. path.close();
  4116. path.moveTo(0, 0);
  4117. path.lineTo(1, 1);
  4118. path.quadTo(3, 2, 1, 3);
  4119. path.close();
  4120. testSimplify(reporter, path, filename);
  4121. }
  4122. static void testQuads45(skiatest::Reporter* reporter, const char* filename) {
  4123. SkPath path;
  4124. path.moveTo(2, 0);
  4125. path.quadTo(3, 2, 3, 3);
  4126. path.lineTo(3, 3);
  4127. path.close();
  4128. path.moveTo(0, 0);
  4129. path.lineTo(0, 2);
  4130. path.quadTo(3, 2, 3, 3);
  4131. path.close();
  4132. testSimplify(reporter, path, filename);
  4133. }
  4134. static void testQuads44(skiatest::Reporter* reporter, const char* filename) {
  4135. SkPath path;
  4136. path.moveTo(2, 0);
  4137. path.quadTo(3, 2, 3, 3);
  4138. path.lineTo(3, 3);
  4139. path.close();
  4140. path.moveTo(1, 0);
  4141. path.lineTo(0, 2);
  4142. path.quadTo(3, 2, 3, 3);
  4143. path.close();
  4144. testSimplify(reporter, path, filename);
  4145. }
  4146. static void testQuads43(skiatest::Reporter* reporter, const char* filename) {
  4147. SkPath path;
  4148. path.moveTo(2, 0);
  4149. path.quadTo(2, 3, 3, 3);
  4150. path.lineTo(3, 3);
  4151. path.close();
  4152. path.moveTo(0, 2);
  4153. path.lineTo(0, 2);
  4154. path.quadTo(2, 3, 3, 3);
  4155. path.close();
  4156. testSimplify(reporter, path, filename);
  4157. }
  4158. static void testQuads42(skiatest::Reporter* reporter, const char* filename) {
  4159. SkPath path;
  4160. path.moveTo(2, 0);
  4161. path.quadTo(3, 2, 3, 3);
  4162. path.lineTo(3, 3);
  4163. path.close();
  4164. path.moveTo(2, 0);
  4165. path.lineTo(0, 2);
  4166. path.quadTo(3, 2, 3, 3);
  4167. path.close();
  4168. testSimplify(reporter, path, filename);
  4169. }
  4170. static void testQuads56(skiatest::Reporter* reporter, const char* filename) {
  4171. SkPath path;
  4172. path.moveTo(2, 0);
  4173. path.quadTo(3, 1, 0, 2);
  4174. path.lineTo(3, 2);
  4175. path.close();
  4176. path.moveTo(3, 0);
  4177. path.lineTo(2, 1);
  4178. path.quadTo(2, 1, 3, 3);
  4179. path.close();
  4180. testSimplify(reporter, path, filename);
  4181. }
  4182. static void testQuads57(skiatest::Reporter* reporter, const char* filename) {
  4183. SkPath path;
  4184. path.moveTo(1, 0);
  4185. path.quadTo(3, 0, 3, 1);
  4186. path.lineTo(2, 2);
  4187. path.close();
  4188. path.moveTo(2, 0);
  4189. path.lineTo(3, 1);
  4190. path.quadTo(2, 2, 3, 2);
  4191. path.close();
  4192. testSimplify(reporter, path, filename);
  4193. }
  4194. static void testQuads58(skiatest::Reporter* reporter, const char* filename) {
  4195. SkPath path;
  4196. path.moveTo(1, 0);
  4197. path.quadTo(3, 0, 3, 1);
  4198. path.lineTo(1, 3);
  4199. path.close();
  4200. path.moveTo(2, 0);
  4201. path.lineTo(3, 1);
  4202. path.quadTo(2, 2, 3, 2);
  4203. path.close();
  4204. testSimplify(reporter, path, filename);
  4205. }
  4206. static void testQuads59(skiatest::Reporter* reporter, const char* filename) {
  4207. SkPath path;
  4208. path.moveTo(3, 0);
  4209. path.quadTo(3, 1, 3, 1);
  4210. path.lineTo(2, 2);
  4211. path.close();
  4212. path.moveTo(2, 0);
  4213. path.lineTo(3, 1);
  4214. path.quadTo(2, 2, 3, 2);
  4215. path.close();
  4216. testSimplify(reporter, path, filename);
  4217. }
  4218. static void testQuads60(skiatest::Reporter* reporter, const char* filename) {
  4219. SkPath path;
  4220. path.moveTo(2, 1);
  4221. path.quadTo(0, 2, 3, 2);
  4222. path.lineTo(2, 3);
  4223. path.close();
  4224. path.moveTo(0, 0);
  4225. path.lineTo(2, 0);
  4226. path.quadTo(1, 1, 2, 2);
  4227. path.close();
  4228. testSimplify(reporter, path, filename);
  4229. }
  4230. static void testQuads61(skiatest::Reporter* reporter, const char* filename) {
  4231. SkPath path;
  4232. path.setFillType(SkPath::kEvenOdd_FillType);
  4233. path.moveTo(0, 0);
  4234. path.quadTo(0, 0, 2, 0);
  4235. path.lineTo(1, 1);
  4236. path.close();
  4237. path.moveTo(0, 0);
  4238. path.lineTo(0, 0);
  4239. path.quadTo(1, 0, 2, 2);
  4240. path.close();
  4241. testSimplify(reporter, path, filename);
  4242. }
  4243. static void testQuadralateral10(skiatest::Reporter* reporter, const char* filename) {
  4244. SkPath path;
  4245. path.setFillType(SkPath::kWinding_FillType);
  4246. path.moveTo(0, 0);
  4247. path.lineTo(0, 0);
  4248. path.lineTo(0, 0);
  4249. path.lineTo(2, 2);
  4250. path.close();
  4251. path.moveTo(1, 0);
  4252. path.lineTo(1, 1);
  4253. path.lineTo(2, 2);
  4254. path.lineTo(1, 3);
  4255. path.close();
  4256. testSimplify(reporter, path, filename);
  4257. }
  4258. static void testRect3(skiatest::Reporter* reporter, const char* filename) {
  4259. SkPath path;
  4260. path.setFillType(SkPath::kEvenOdd_FillType);
  4261. path.addRect(0, 0, 60, 60, SkPath::kCCW_Direction);
  4262. path.addRect(10, 30, 40, 30, SkPath::kCCW_Direction);
  4263. path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
  4264. path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
  4265. testSimplify(reporter, path, filename);
  4266. }
  4267. static void testRect4(skiatest::Reporter* reporter, const char* filename) {
  4268. SkPath path;
  4269. path.setFillType(SkPath::kEvenOdd_FillType);
  4270. path.addRect(0, 0, 30, 60, SkPath::kCCW_Direction);
  4271. path.addRect(10, 0, 40, 30, SkPath::kCCW_Direction);
  4272. path.addRect(20, 0, 30, 40, SkPath::kCCW_Direction);
  4273. path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
  4274. testSimplify(reporter, path, filename);
  4275. }
  4276. static void testQuads62(skiatest::Reporter* reporter, const char* filename) {
  4277. SkPath path;
  4278. path.moveTo(3, 2);
  4279. path.quadTo(1, 3, 3, 3);
  4280. path.lineTo(3, 3);
  4281. path.close();
  4282. path.moveTo(0, 0);
  4283. path.lineTo(2, 0);
  4284. path.quadTo(1, 3, 3, 3);
  4285. path.close();
  4286. testSimplify(reporter, path, filename);
  4287. }
  4288. static void testQuads63(skiatest::Reporter* reporter,const char* filename) {
  4289. SkPath path;
  4290. path.moveTo(3, 0);
  4291. path.quadTo(0, 1, 1, 2);
  4292. path.lineTo(3, 3);
  4293. path.close();
  4294. path.moveTo(0, 0);
  4295. path.lineTo(1, 1);
  4296. path.quadTo(0, 2, 3, 3);
  4297. path.close();
  4298. testSimplify(reporter, path, filename);
  4299. }
  4300. static void testQuads64(skiatest::Reporter* reporter,const char* filename) {
  4301. SkPath path;
  4302. path.moveTo(3, 0);
  4303. path.quadTo(0, 1, 1, 2);
  4304. path.lineTo(2, 2);
  4305. path.close();
  4306. path.moveTo(1, 0);
  4307. path.lineTo(1, 1);
  4308. path.quadTo(0, 2, 3, 3);
  4309. path.close();
  4310. testSimplify(reporter, path, filename);
  4311. }
  4312. static void testTriangle1(skiatest::Reporter* reporter,const char* filename) {
  4313. SkPath path;
  4314. path.moveTo(0, 0);
  4315. path.lineTo(1, 0);
  4316. path.lineTo(2, 3);
  4317. path.close();
  4318. path.moveTo(0, 0);
  4319. path.lineTo(1, 2);
  4320. path.lineTo(1, 0);
  4321. path.close();
  4322. testSimplify(reporter, path, filename);
  4323. }
  4324. static void testTriangle2(skiatest::Reporter* reporter,const char* filename) {
  4325. SkPath path;
  4326. path.moveTo(0, 0);
  4327. path.lineTo(1, 0);
  4328. path.lineTo(0, 1);
  4329. path.close();
  4330. path.moveTo(2, 0);
  4331. path.lineTo(0, 2);
  4332. path.lineTo(2, 2);
  4333. path.close();
  4334. testSimplify(reporter, path, filename);
  4335. }
  4336. static void testArc(skiatest::Reporter* reporter,const char* filename) {
  4337. SkRect r = SkRect::MakeWH(150, 100);
  4338. SkPath path;
  4339. path.arcTo(r, 0, 0.0025f, false);
  4340. testSimplify(reporter, path, filename);
  4341. }
  4342. static void testIssue3838(skiatest::Reporter* reporter,const char* filename) {
  4343. SkPath path;
  4344. path.moveTo(220, 170);
  4345. path.lineTo(200, 170);
  4346. path.lineTo(200, 190);
  4347. path.lineTo(180, 190);
  4348. path.lineTo(180, 210);
  4349. path.lineTo(200, 210);
  4350. path.lineTo(200, 250);
  4351. path.lineTo(260, 250);
  4352. path.lineTo(260, 190);
  4353. path.lineTo(220, 190);
  4354. path.lineTo(220, 170);
  4355. path.close();
  4356. path.moveTo(220, 210);
  4357. path.lineTo(220, 230);
  4358. path.lineTo(240, 230);
  4359. path.lineTo(240, 210);
  4360. path.lineTo(220, 210);
  4361. path.close();
  4362. testSimplify(reporter, path, filename);
  4363. }
  4364. static void testIssue3838_3(skiatest::Reporter* reporter,const char* filename) {
  4365. SkPath path;
  4366. path.moveTo(40, 10);
  4367. path.lineTo(60, 10);
  4368. path.lineTo(60, 30);
  4369. path.lineTo(40, 30);
  4370. path.lineTo(40, 10);
  4371. path.moveTo(41, 11);
  4372. path.lineTo(41, 29);
  4373. path.lineTo(59, 29);
  4374. path.lineTo(59, 11);
  4375. path.lineTo(41, 11);
  4376. testSimplify(reporter, path, filename);
  4377. }
  4378. static void testQuads65(skiatest::Reporter* reporter,const char* filename) {
  4379. SkPath path;
  4380. path.moveTo(1, 2);
  4381. path.quadTo(3, 2, 0, 3);
  4382. path.lineTo(1, 3);
  4383. path.close();
  4384. path.moveTo(1, 0);
  4385. path.lineTo(1, 2);
  4386. path.quadTo(3, 2, 1, 3);
  4387. path.close();
  4388. testSimplify(reporter, path, filename);
  4389. }
  4390. static void fuzz864a(skiatest::Reporter* reporter,const char* filename) {
  4391. SkPath path;
  4392. path.moveTo(10, 90);
  4393. path.lineTo(10, 90);
  4394. path.lineTo(10, 30);
  4395. path.lineTo(10, 30);
  4396. path.lineTo(10, 90);
  4397. path.close();
  4398. path.moveTo(10, 90);
  4399. path.lineTo(10, 90);
  4400. path.lineTo(10, 30);
  4401. path.lineTo(10, 30);
  4402. path.lineTo(10, 90);
  4403. path.close();
  4404. path.moveTo(10, 90);
  4405. path.lineTo(110, 90);
  4406. path.lineTo(110, 30);
  4407. path.lineTo(10, 30);
  4408. path.lineTo(10, 90);
  4409. path.close();
  4410. path.moveTo(10, 30);
  4411. path.lineTo(32678, 30);
  4412. path.lineTo(32678, 30);
  4413. path.lineTo(10, 30);
  4414. path.close();
  4415. path.moveTo(10, 3.35545e+07f);
  4416. path.lineTo(110, 3.35545e+07f);
  4417. path.lineTo(110, 30);
  4418. path.lineTo(10, 30);
  4419. path.lineTo(10, 3.35545e+07f);
  4420. path.close();
  4421. path.moveTo(10, 315);
  4422. path.lineTo(110, 315);
  4423. path.lineTo(110, 255);
  4424. path.lineTo(10, 255);
  4425. path.lineTo(10, 315);
  4426. path.close();
  4427. path.moveTo(0, 60);
  4428. path.lineTo(100, 60);
  4429. path.lineTo(100, 0);
  4430. path.lineTo(0, 0);
  4431. path.lineTo(0, 60);
  4432. path.close();
  4433. path.moveTo(10, 90);
  4434. path.lineTo(110, 90);
  4435. path.lineTo(110, 30);
  4436. path.lineTo(10, 30);
  4437. path.lineTo(10, 90);
  4438. path.close();
  4439. path.moveTo(10, 3.35545e+07f);
  4440. path.lineTo(110, 3.35545e+07f);
  4441. path.lineTo(110, 30);
  4442. path.lineTo(10, 30);
  4443. path.lineTo(10, 3.35545e+07f);
  4444. path.close();
  4445. path.moveTo(10, 90);
  4446. path.lineTo(110, 90);
  4447. path.lineTo(110, 30);
  4448. path.lineTo(10, 30);
  4449. path.lineTo(10, 90);
  4450. path.close();
  4451. testSimplify(reporter, path, filename);
  4452. }
  4453. static void cr514118(skiatest::Reporter* reporter,const char* filename) {
  4454. SkPath path;
  4455. path.moveTo(SkBits2Float(0x42c80000), SkBits2Float(0x42480000)); // 100, 50
  4456. path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3)); // 100, 0, 50, 0, 0.707107f
  4457. path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 0, 0, 0, 50, 0.707107f
  4458. path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3)); // 0, 100, 50, 100, 0.707107f
  4459. path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 100, 100, 100, 50, 0.707107f
  4460. path.close();
  4461. path.moveTo(SkBits2Float(0x42c80133), SkBits2Float(0x42480000)); // 100.002f, 50
  4462. path.conicTo(SkBits2Float(0x42c80133), SkBits2Float(0x00000000), SkBits2Float(0x42480267), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3)); // 100.002f, 0, 50.0023f, 0, 0.707107f
  4463. path.conicTo(SkBits2Float(0x3b19b530), SkBits2Float(0x00000000), SkBits2Float(0x3b19b530), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 0.00234539f, 0, 0.00234539f, 50, 0.707107f
  4464. path.conicTo(SkBits2Float(0x3b19b530), SkBits2Float(0x42c80000), SkBits2Float(0x42480267), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3)); // 0.00234539f, 100, 50.0023f, 100, 0.707107f
  4465. path.conicTo(SkBits2Float(0x42c80133), SkBits2Float(0x42c80000), SkBits2Float(0x42c80133), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 100.002f, 100, 100.002f, 50, 0.707107f
  4466. path.close();
  4467. testSimplify(reporter, path, filename);
  4468. }
  4469. static void fuzz994s_11(skiatest::Reporter* reporter, const char* filename) {
  4470. SkPath path;
  4471. path.setFillType((SkPath::FillType) 0);
  4472. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4473. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4474. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4475. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4476. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4477. path.close();
  4478. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4479. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4480. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4481. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4482. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4483. path.close();
  4484. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4485. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x42b40000)); // 110, 90
  4486. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000)); // 110, 30
  4487. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4488. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4489. path.close();
  4490. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4491. path.lineTo(SkBits2Float(0x46ff4c00), SkBits2Float(0x41f00000)); // 32678, 30
  4492. path.lineTo(SkBits2Float(0x46ff4c00), SkBits2Float(0x41f00000)); // 32678, 30
  4493. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4494. path.close();
  4495. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006)); // 10, 3.35545e+07f
  4496. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x4c000006)); // 110, 3.35545e+07f
  4497. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000)); // 110, 30
  4498. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4499. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006)); // 10, 3.35545e+07f
  4500. path.close();
  4501. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x439d8000)); // 10, 315
  4502. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x439d8000)); // 110, 315
  4503. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x437f0000)); // 110, 255
  4504. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x437f0000)); // 10, 255
  4505. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x439d8000)); // 10, 315
  4506. path.close();
  4507. path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x42700000)); // 0, 60
  4508. path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x42700000)); // 100, 60
  4509. path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000)); // 100, 0
  4510. path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
  4511. path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x42700000)); // 0, 60
  4512. path.close();
  4513. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4514. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x42b40000)); // 110, 90
  4515. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000)); // 110, 30
  4516. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4517. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4518. path.close();
  4519. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006)); // 10, 3.35545e+07f
  4520. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x4c000006)); // 110, 3.35545e+07f
  4521. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000)); // 110, 30
  4522. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4523. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006)); // 10, 3.35545e+07f
  4524. path.close();
  4525. path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4526. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x42b40000)); // 110, 90
  4527. path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000)); // 110, 30
  4528. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000)); // 10, 30
  4529. path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000)); // 10, 90
  4530. path.close();
  4531. testSimplify(reporter, path, filename);
  4532. }
  4533. static void fuzz994s_3414(skiatest::Reporter* reporter, const char* filename) {
  4534. SkPath path;
  4535. path.setFillType((SkPath::FillType) 0);
  4536. path.moveTo(SkBits2Float(0x42c80000), SkBits2Float(0x42480000)); // 100, 50
  4537. path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3)); // 100, 0, 50, 0, 0.707107f
  4538. path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 0, 0, 0, 50, 0.707107f
  4539. path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3)); // 0, 100, 50, 100, 0.707107f
  4540. path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 100, 100, 100, 50, 0.707107f
  4541. path.close();
  4542. path.moveTo(SkBits2Float(0x42c84964), SkBits2Float(0x42480000)); // 100.143f, 50
  4543. path.conicTo(SkBits2Float(0x42c84964), SkBits2Float(0x00000000), SkBits2Float(0x424892c8), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3)); // 100.143f, 0, 50.1433f, 0, 0.707107f
  4544. path.conicTo(SkBits2Float(0x3e12c788), SkBits2Float(0x00000000), SkBits2Float(0x3e12c788), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 0.143339f, 0, 0.143339f, 50, 0.707107f
  4545. path.conicTo(SkBits2Float(0x3e12c788), SkBits2Float(0x42c80000), SkBits2Float(0x424892c8), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3)); // 0.143339f, 100, 50.1433f, 100, 0.707107f
  4546. path.conicTo(SkBits2Float(0x42c84964), SkBits2Float(0x42c80000), SkBits2Float(0x42c84964), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 100.143f, 100, 100.143f, 50, 0.707107f
  4547. path.close();
  4548. path.moveTo(SkBits2Float(0x42c80000), SkBits2Float(0x42480000)); // 100, 50
  4549. path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3)); // 100, 0, 50, 0, 0.707107f
  4550. path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 0, 0, 0, 50, 0.707107f
  4551. path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3)); // 0, 100, 50, 100, 0.707107f
  4552. path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 100, 100, 100, 50, 0.707107f
  4553. path.close();
  4554. path.moveTo(SkBits2Float(0x4c00006b), SkBits2Float(0x424c0000)); // 3.35549e+07f, 51
  4555. path.conicTo(SkBits2Float(0x4c00006b), SkBits2Float(0xcbffffe5), SkBits2Float(0x43d6e720), SkBits2Float(0xcbffffe5), SkBits2Float(0x3f3504f3)); // 3.35549e+07f, -3.35544e+07f, 429.806f, -3.35544e+07f, 0.707107f
  4556. path.conicTo(SkBits2Float(0xcbffff28), SkBits2Float(0xcbffffe5), SkBits2Float(0xcbffff28), SkBits2Float(0x424c0000), SkBits2Float(0x3f3504f3)); // -3.3554e+07f, -3.35544e+07f, -3.3554e+07f, 51, 0.707107f
  4557. path.conicTo(SkBits2Float(0xcbffff28), SkBits2Float(0x4c00000c), SkBits2Float(0x43d6e720), SkBits2Float(0x4c00000c), SkBits2Float(0x3f3504f3)); // -3.3554e+07f, 3.35545e+07f, 429.806f, 3.35545e+07f, 0.707107f
  4558. path.conicTo(SkBits2Float(0x4c00006b), SkBits2Float(0x4c00000c), SkBits2Float(0x4c00006b), SkBits2Float(0x424c0000), SkBits2Float(0x3f3504f3)); // 3.35549e+07f, 3.35545e+07f, 3.35549e+07f, 51, 0.707107f
  4559. path.close();
  4560. path.moveTo(SkBits2Float(0x43ef6720), SkBits2Float(0x42480000)); // 478.806f, 50
  4561. path.conicTo(SkBits2Float(0x43ef6720), SkBits2Float(0x00000000), SkBits2Float(0x43d66720), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3)); // 478.806f, 0, 428.806f, 0, 0.707107f
  4562. path.conicTo(SkBits2Float(0x43bd6720), SkBits2Float(0x00000000), SkBits2Float(0x43bd6720), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 378.806f, 0, 378.806f, 50, 0.707107f
  4563. path.conicTo(SkBits2Float(0x43bd6720), SkBits2Float(0x42c80000), SkBits2Float(0x43d66720), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3)); // 378.806f, 100, 428.806f, 100, 0.707107f
  4564. path.conicTo(SkBits2Float(0x43ef6720), SkBits2Float(0x42c80000), SkBits2Float(0x43ef6720), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3)); // 478.806f, 100, 478.806f, 50, 0.707107f
  4565. path.close();
  4566. testSimplify(reporter, path, filename);
  4567. }
  4568. static void fuzz_twister(skiatest::Reporter* reporter, const char* filename) {
  4569. SkPath path;
  4570. path.setFillType((SkPath::FillType) 0);
  4571. path.moveTo(0, 600);
  4572. path.lineTo(3.35544e+07f, 600);
  4573. path.lineTo(3.35544e+07f, 0);
  4574. path.lineTo(0, 0);
  4575. path.lineTo(0, 600);
  4576. path.close();
  4577. path.moveTo(63, 600);
  4578. path.lineTo(3.35545e+07f, 600);
  4579. path.lineTo(3.35545e+07f, 0);
  4580. path.lineTo(63, 0);
  4581. path.lineTo(63, 600);
  4582. path.close();
  4583. path.moveTo(93, 600);
  4584. path.lineTo(3.35545e+07f, 600);
  4585. path.lineTo(3.35545e+07f, 0);
  4586. path.lineTo(93, 0);
  4587. path.lineTo(93, 600);
  4588. path.close();
  4589. path.moveTo(123, 600);
  4590. path.lineTo(3.35546e+07f, 600);
  4591. path.lineTo(3.35546e+07f, 0);
  4592. path.lineTo(123, 0);
  4593. path.lineTo(123, 600);
  4594. path.close();
  4595. testSimplify(reporter, path, filename);
  4596. }
  4597. static void fuzz_twister2(skiatest::Reporter* reporter, const char* filename) {
  4598. SkPath path;
  4599. path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x44160000)); // 0, 600
  4600. path.lineTo(SkBits2Float(0x4bfffffe), SkBits2Float(0x44160000)); // 3.35544e+07f, 600
  4601. path.lineTo(SkBits2Float(0x4bfffffe), SkBits2Float(0x00000000)); // 3.35544e+07f, 0
  4602. path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
  4603. path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x44160000)); // 0, 600
  4604. path.close();
  4605. path.moveTo(SkBits2Float(0x427c0000), SkBits2Float(0x00000000)); // 63, 0
  4606. path.lineTo(SkBits2Float(0x4c00000f), SkBits2Float(0x00000000)); // 3.35545e+07f, 0
  4607. path.lineTo(SkBits2Float(0x4c00000f), SkBits2Float(0x00000000)); // 3.35545e+07f, 0
  4608. path.lineTo(SkBits2Float(0x427c0000), SkBits2Float(0x00000000)); // 63, 0
  4609. path.close();
  4610. path.moveTo(SkBits2Float(0x42ba0000), SkBits2Float(0x00000000)); // 93, 0
  4611. path.lineTo(SkBits2Float(0x4c000016), SkBits2Float(0x00000000)); // 3.35545e+07f, 0
  4612. path.lineTo(SkBits2Float(0x4c000016), SkBits2Float(0x00000000)); // 3.35545e+07f, 0
  4613. path.lineTo(SkBits2Float(0x42ba0000), SkBits2Float(0x00000000)); // 93, 0
  4614. path.close();
  4615. path.moveTo(SkBits2Float(0x42f60000), SkBits2Float(0x00000000)); // 123, 0
  4616. path.lineTo(SkBits2Float(0x4c00001e), SkBits2Float(0x00000000)); // 3.35546e+07f, 0
  4617. path.lineTo(SkBits2Float(0x4c00001e), SkBits2Float(0x00000000)); // 3.35546e+07f, 0
  4618. path.lineTo(SkBits2Float(0x42f60000), SkBits2Float(0x00000000)); // 123, 0
  4619. path.close();
  4620. testSimplify(reporter, path, filename);
  4621. }
  4622. static void fuzz763_4713_b(skiatest::Reporter* reporter, const char* filename) {
  4623. SkPath path;
  4624. path.setFillType((SkPath::FillType) 0);
  4625. path.moveTo(SkBits2Float(0x42240000), SkBits2Float(0x42040000));
  4626. path.quadTo(SkBits2Float(0x42240000), SkBits2Float(0x4211413d), SkBits2Float(0x421aa09e), SkBits2Float(0x421aa09e));
  4627. path.quadTo(SkBits2Float(0x4211413d), SkBits2Float(0x42240000), SkBits2Float(0x42040000), SkBits2Float(0x42240000));
  4628. path.quadTo(SkBits2Float(0x41ed7d86), SkBits2Float(0x42240000), SkBits2Float(0x41dabec3), SkBits2Float(0x421aa09e));
  4629. path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x4211413d), SkBits2Float(0x41c80000), SkBits2Float(0x42040000));
  4630. path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x41ed7d86), SkBits2Float(0x41dabec3), SkBits2Float(0x41dabec3));
  4631. path.quadTo(SkBits2Float(0x41ed7d86), SkBits2Float(0x41c80000), SkBits2Float(0x42040000), SkBits2Float(0x41c80000));
  4632. path.quadTo(SkBits2Float(0x4211413d), SkBits2Float(0x41c80000), SkBits2Float(0x421aa09e), SkBits2Float(0x41dabec3));
  4633. path.quadTo(SkBits2Float(0x42240000), SkBits2Float(0x41ed7d86), SkBits2Float(0x42240000), SkBits2Float(0x42040000));
  4634. path.close();
  4635. path.moveTo(SkBits2Float(0x4204f72e), SkBits2Float(0x41c56cd2));
  4636. path.quadTo(SkBits2Float(0x42123842), SkBits2Float(0x41c52adf), SkBits2Float(0x421baed7), SkBits2Float(0x41d7bac6));
  4637. path.quadTo(SkBits2Float(0x4225256d), SkBits2Float(0x41ea4aad), SkBits2Float(0x42254667), SkBits2Float(0x4202666b));
  4638. path.quadTo(SkBits2Float(0x42256760), SkBits2Float(0x420fa77f), SkBits2Float(0x421c1f6c), SkBits2Float(0x42191e14));
  4639. path.quadTo(SkBits2Float(0x421bff97), SkBits2Float(0x42193e89), SkBits2Float(0x421bdf6b), SkBits2Float(0x42195eb8));
  4640. path.quadTo(SkBits2Float(0x421bbff6), SkBits2Float(0x42197f32), SkBits2Float(0x421ba03b), SkBits2Float(0x42199f57));
  4641. path.quadTo(SkBits2Float(0x421b605e), SkBits2Float(0x4219e00a), SkBits2Float(0x421b1fa8), SkBits2Float(0x421a1f22));
  4642. path.quadTo(SkBits2Float(0x421ae0f1), SkBits2Float(0x421a604b), SkBits2Float(0x421aa09e), SkBits2Float(0x421aa09e));
  4643. path.quadTo(SkBits2Float(0x4211413d), SkBits2Float(0x42240000), SkBits2Float(0x42040000), SkBits2Float(0x42240000));
  4644. path.quadTo(SkBits2Float(0x41ed7d86), SkBits2Float(0x42240000), SkBits2Float(0x41dabec3), SkBits2Float(0x421aa09e));
  4645. path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x4211413d), SkBits2Float(0x41c80000), SkBits2Float(0x42040000));
  4646. path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x41ed7d86), SkBits2Float(0x41dabec3), SkBits2Float(0x41dabec3));
  4647. path.quadTo(SkBits2Float(0x41db19b1), SkBits2Float(0x41da63d5), SkBits2Float(0x41db755b), SkBits2Float(0x41da0a9b));
  4648. path.quadTo(SkBits2Float(0x41dbce01), SkBits2Float(0x41d9ae59), SkBits2Float(0x41dc285e), SkBits2Float(0x41d952ce));
  4649. path.quadTo(SkBits2Float(0x41dc55b6), SkBits2Float(0x41d924df), SkBits2Float(0x41dc82cd), SkBits2Float(0x41d8f7cd));
  4650. path.quadTo(SkBits2Float(0x41dcaf1e), SkBits2Float(0x41d8ca01), SkBits2Float(0x41dcdc4c), SkBits2Float(0x41d89bf0));
  4651. path.quadTo(SkBits2Float(0x41ef6c33), SkBits2Float(0x41c5aec5), SkBits2Float(0x4204f72e), SkBits2Float(0x41c56cd2));
  4652. path.close();
  4653. testSimplify(reporter, path, filename);
  4654. }
  4655. static void dean4(skiatest::Reporter* reporter, const char* filename) {
  4656. SkPath path;
  4657. // start region
  4658. // start loop, contour: 1
  4659. // Segment 1145.3381097316742 2017.6783947944641 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2017.0033947825432
  4660. path.moveTo(1145.3381347656250, 2017.6783447265625);
  4661. path.lineTo(1145.3381347656250, 2017.0034179687500);
  4662. // Segment 1145.3381097316742 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6927231521568 2017.0033947825432
  4663. path.lineTo(1143.6927490234375, 2017.0034179687500);
  4664. // Segment 1143.6927231521568 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675112890 2018.1589246992417
  4665. path.lineTo(1144.8640136718750, 2018.1589355468750);
  4666. // Segment 1144.8640675112890 2018.1589246992417 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2017.6783947944641
  4667. path.lineTo(1145.3381347656250, 2017.6783447265625);
  4668. path.close();
  4669. // start loop, contour: 2
  4670. // Segment 1145.3381097316742 2016.3216052055359 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675258462 2015.8410752863977
  4671. path.moveTo(1145.3381347656250, 2016.3216552734375);
  4672. path.lineTo(1144.8640136718750, 2015.8410644531250);
  4673. // Segment 1144.8640675258462 2015.8410752863977 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6927230811802 2016.9966052174568
  4674. path.lineTo(1143.6927490234375, 2016.9965820312500);
  4675. // Segment 1143.6927230811802 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2016.9966052174568
  4676. path.lineTo(1145.3381347656250, 2016.9965820312500);
  4677. // Segment 1145.3381097316742 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2016.3216052055359
  4678. path.lineTo(1145.3381347656250, 2016.3216552734375);
  4679. path.close();
  4680. // start loop, contour: 3
  4681. // Segment 1147.3323798179626 2014.3542600870132 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220239557 2014.8347900059885
  4682. path.moveTo(1147.3323974609375, 2014.3542480468750);
  4683. path.lineTo(1147.8063964843750, 2014.8348388671875);
  4684. // Segment 1147.8064220239557 2014.8347900059885 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2014.8347899786306
  4685. path.lineTo(1147.8063964843750, 2014.8348388671875);
  4686. // Segment 1147.8064220516883 2014.8347899786306 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.3323798179626 2014.3542600870132
  4687. path.lineTo(1147.3323974609375, 2014.3542480468750);
  4688. path.close();
  4689. // start loop, contour: 4
  4690. // Segment 1146.3696286678314 2013.4045072346926 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708778083 2013.8850371497379
  4691. path.moveTo(1146.3696289062500, 2013.4045410156250);
  4692. path.lineTo(1146.8436279296875, 2013.8850097656250);
  4693. // Segment 1146.8436708778083 2013.8850371497379 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436709015571 2013.8850371263100
  4694. path.lineTo(1146.8436279296875, 2013.8850097656250);
  4695. // Segment 1146.8436709015571 2013.8850371263100 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.3696286678314 2013.4045072346926
  4696. path.lineTo(1146.3696289062500, 2013.4045410156250);
  4697. path.close();
  4698. // start loop, contour: 5
  4699. // Segment 1143.2063037902117 2016.5251235961914 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615802348 2016.0445936811461
  4700. path.moveTo(1143.2062988281250, 2016.5251464843750);
  4701. path.lineTo(1142.7322998046875, 2016.0445556640625);
  4702. // Segment 1142.7322615802348 2016.0445936811461 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615564860 2016.0445937045740
  4703. path.lineTo(1142.7322998046875, 2016.0445556640625);
  4704. // Segment 1142.7322615564860 2016.0445937045740 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.2063037902117 2016.5251235961914
  4705. path.lineTo(1143.2062988281250, 2016.5251464843750);
  4706. path.close();
  4707. // start loop, contour: 6
  4708. // Segment 1143.0687679275870 2016.7286419868469 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.5428101613127 2017.2091718784643
  4709. path.moveTo(1143.0687255859375, 2016.7286376953125);
  4710. path.lineTo(1143.5428466796875, 2017.2092285156250);
  4711. // Segment 1143.5428101613127 2017.2091718784643 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.7437679395080 2017.0109272411960
  4712. path.lineTo(1143.7437744140625, 2017.0109863281250);
  4713. // Segment 1143.7437679395080 2017.0109272411960 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.7437679395080 2016.7286419868469
  4714. path.lineTo(1143.7437744140625, 2016.7286376953125);
  4715. // Segment 1143.7437679395080 2016.7286419868469 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.0687679275870 2016.7286419868469
  4716. path.lineTo(1143.0687255859375, 2016.7286376953125);
  4717. path.close();
  4718. // start loop, contour: 7
  4719. // Segment 1143.2063037902117 2017.4748764038086 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615603032 2017.9554062991915
  4720. path.moveTo(1143.2062988281250, 2017.4748535156250);
  4721. path.lineTo(1142.7322998046875, 2017.9554443359375);
  4722. // Segment 1142.7322615603032 2017.9554062991915 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615746241 2017.9554063133189
  4723. path.lineTo(1142.7322998046875, 2017.9554443359375);
  4724. // Segment 1142.7322615746241 2017.9554063133189 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.2063037902117 2017.4748764038086
  4725. path.lineTo(1143.2062988281250, 2017.4748535156250);
  4726. path.close();
  4727. // start loop, contour: 8
  4728. // Segment 1146.3696286678314 2020.5954928398132 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708977399 2020.1149629444303
  4729. path.moveTo(1146.3696289062500, 2020.5954589843750);
  4730. path.lineTo(1146.8436279296875, 2020.1149902343750);
  4731. // Segment 1146.8436708977399 2020.1149629444303 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708834190 2020.1149629303029
  4732. path.lineTo(1146.8436279296875, 2020.1149902343750);
  4733. // Segment 1146.8436708834190 2020.1149629303029 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.3696286678314 2020.5954928398132
  4734. path.lineTo(1146.3696289062500, 2020.5954589843750);
  4735. path.close();
  4736. // start loop, contour: 9
  4737. // Segment 1147.3323798179626 2019.6457400321960 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220484741 2019.1652101374082
  4738. path.moveTo(1147.3323974609375, 2019.6457519531250);
  4739. path.lineTo(1147.8063964843750, 2019.1651611328125);
  4740. // Segment 1147.8064220484741 2019.1652101374082 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220383478 2019.1652101274185
  4741. path.lineTo(1147.8063964843750, 2019.1651611328125);
  4742. // Segment 1147.8064220383478 2019.1652101274185 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.3323798179626 2019.6457400321960
  4743. path.lineTo(1147.3323974609375, 2019.6457519531250);
  4744. path.close();
  4745. // start loop, contour: 10
  4746. // Segment 1145.3381097316742 2018.3533948063850 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2018.3533948063850
  4747. path.moveTo(1145.3381347656250, 2018.3533935546875);
  4748. path.lineTo(1156.6848144531250, 2018.3533935546875);
  4749. // Segment 1156.6848182678223 2018.3533948063850 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2017.0033947825432
  4750. path.lineTo(1156.6848144531250, 2017.0034179687500);
  4751. // Segment 1156.6848182678223 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2017.0033947825432
  4752. path.lineTo(1145.3381347656250, 2017.0034179687500);
  4753. // Segment 1145.3381097316742 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2018.3533948063850
  4754. path.lineTo(1145.3381347656250, 2018.3533935546875);
  4755. path.close();
  4756. // start loop, contour: 11
  4757. // Segment 1156.6848182678223 2018.3533948063850 0.3569631313191 0.0000000000000 -0.2645167304388 0.2609454237780 1157.6574279406423 2017.9723661860094
  4758. path.moveTo(1156.6848144531250, 2018.3533935546875);
  4759. path.cubicTo(1157.0417480468750, 2018.3533935546875, 1157.3929443359375, 2018.2332763671875, 1157.6574707031250, 2017.9724121093750);
  4760. // Segment 1157.6574279406423 2017.9723661860094 0.2653344079822 -0.2617520616521 0.0000000000000 0.3596905289350 1158.0474975705147 2017.0000000000000
  4761. path.cubicTo(1157.9227294921875, 2017.7105712890625, 1158.0474853515625, 2017.3597412109375, 1158.0474853515625, 2017.0000000000000);
  4762. // Segment 1158.0474975705147 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6974975466728 2017.0000000000000
  4763. path.lineTo(1156.6975097656250, 2017.0000000000000);
  4764. // Segment 1156.6974975466728 2017.0000000000000 0.0028009248351 0.0403311981485 0.0118595244351 -0.0220843520393 1156.6941780622435 2017.0325257649940
  4765. path.cubicTo(1156.7003173828125, 2017.0402832031250, 1156.7060546875000, 2017.0104980468750, 1156.6942138671875, 2017.0324707031250);
  4766. // Segment 1156.6941780622435 2017.0325257649940 -0.0032637855860 0.0184860248562 0.0120617528380 -0.0065934603083 1156.7093435710913 2017.0113063061967
  4767. path.cubicTo(1156.6909179687500, 2017.0510253906250, 1156.7214355468750, 2017.0047607421875, 1156.7093505859375, 2017.0113525390625);
  4768. // split at 0.4496445953846
  4769. // path.cubicTo(1156.6927490234375, 2017.0407714843750, 1156.6981201171875, 2017.0360107421875, 1156.7033691406250, 2017.0289306640625);
  4770. // path.cubicTo(1156.7097167968750, 2017.0201416015625, 1156.7159423828125, 2017.0076904296875, 1156.7093505859375, 2017.0113525390625);
  4771. // Segment 1156.7093435710913 2017.0113063061967 -0.0070717276929 0.0122220954353 0.0203483811973 -0.0039136894418 1156.7268834554304 2016.9985353221975
  4772. path.cubicTo(1156.7022705078125, 2017.0235595703125, 1156.7471923828125, 2016.9946289062500, 1156.7269287109375, 2016.9985351562500);
  4773. // Segment 1156.7268834554304 2016.9985353221975 -0.0244396787691 0.0123649140586 0.0433322464027 0.0026558844666 1156.6848182678223 2017.0033947825432
  4774. path.cubicTo(1156.7023925781250, 2017.0108642578125, 1156.7281494140625, 2017.0061035156250, 1156.6848144531250, 2017.0034179687500);
  4775. // split at 0.4418420493603
  4776. // path.cubicTo(1156.7160644531250, 2017.0040283203125, 1156.7150878906250, 2017.0061035156250, 1156.7136230468750, 2017.0065917968750);
  4777. // path.cubicTo(1156.7116699218750, 2017.0070800781250, 1156.7089843750000, 2017.0048828125000, 1156.6848144531250, 2017.0034179687500);
  4778. // Segment 1156.6848182678223 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2018.3533948063850
  4779. path.lineTo(1156.6848144531250, 2018.3533935546875);
  4780. path.close();
  4781. // start loop, contour: 12
  4782. // Segment 1158.0474975705147 2017.0000000000000 0.0000000000000 -0.3596905289350 0.2653344079822 0.2617520616521 1157.6574279406423 2016.0276338139906
  4783. path.moveTo(1158.0474853515625, 2017.0000000000000);
  4784. path.cubicTo(1158.0474853515625, 2016.6402587890625, 1157.9227294921875, 2016.2894287109375, 1157.6574707031250, 2016.0275878906250);
  4785. // Segment 1157.6574279406423 2016.0276338139906 -0.2645167304388 -0.2609454237780 0.3569631313191 0.0000000000000 1156.6848182678223 2015.6466051936150
  4786. path.cubicTo(1157.3929443359375, 2015.7667236328125, 1157.0417480468750, 2015.6466064453125, 1156.6848144531250, 2015.6466064453125);
  4787. // split at 0.5481675863266
  4788. // path.cubicTo(1157.5124511718750, 2015.8846435546875, 1157.3414306640625, 2015.7839355468750, 1157.1577148437500, 2015.7220458984375);
  4789. // path.cubicTo(1157.0062255859375, 2015.6711425781250, 1156.8460693359375, 2015.6466064453125, 1156.6848144531250, 2015.6466064453125);
  4790. // Segment 1156.6848182678223 2015.6466051936150 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2016.9966052174568
  4791. path.lineTo(1156.6848144531250, 2016.9965820312500);
  4792. // Segment 1156.6848182678223 2016.9966052174568 0.0433322464027 -0.0026558844666 -0.0244396787691 -0.0123649140586 1156.7268834554304 2017.0014646778025
  4793. path.cubicTo(1156.7281494140625, 2016.9938964843750, 1156.7023925781250, 2016.9891357421875, 1156.7269287109375, 2017.0014648437500);
  4794. // split at 0.5581579208374
  4795. // path.cubicTo(1156.7089843750000, 2016.9951171875000, 1156.7116699218750, 2016.9929199218750, 1156.7136230468750, 2016.9934082031250);
  4796. // path.cubicTo(1156.7150878906250, 2016.9938964843750, 1156.7160644531250, 2016.9959716796875, 1156.7269287109375, 2017.0014648437500);
  4797. // Segment 1156.7268834554304 2017.0014646778025 0.0203483811973 0.0039136894418 -0.0070717276929 -0.0122220954353 1156.7093435710913 2016.9886936938033
  4798. path.cubicTo(1156.7471923828125, 2017.0053710937500, 1156.7022705078125, 2016.9764404296875, 1156.7093505859375, 2016.9886474609375);
  4799. // Segment 1156.7093435710913 2016.9886936938033 0.0120617528380 0.0065934603083 -0.0032637855860 -0.0184860248562 1156.6941780622435 2016.9674742350060
  4800. path.cubicTo(1156.7214355468750, 2016.9952392578125, 1156.6909179687500, 2016.9489746093750, 1156.6942138671875, 2016.9675292968750);
  4801. // Segment 1156.6941780622435 2016.9674742350060 0.0118595244351 0.0220843520393 0.0028009248351 -0.0403311981485 1156.6974975466728 2017.0000000000000
  4802. path.cubicTo(1156.7060546875000, 2016.9895019531250, 1156.7003173828125, 2016.9597167968750, 1156.6975097656250, 2017.0000000000000);
  4803. // split at 0.4572408795357
  4804. // path.cubicTo(1156.6995849609375, 2016.9775390625000, 1156.7014160156250, 2016.9768066406250, 1156.7014160156250, 2016.9768066406250);
  4805. // path.cubicTo(1156.7014160156250, 2016.9769287109375, 1156.6989746093750, 2016.9781494140625, 1156.6975097656250, 2017.0000000000000);
  4806. // Segment 1156.6974975466728 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1158.0474975705147 2017.0000000000000
  4807. path.lineTo(1158.0474853515625, 2017.0000000000000);
  4808. path.close();
  4809. // start loop, contour: 13
  4810. // Segment 1156.6848182678223 2015.6466051936150 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2015.6466051936150
  4811. path.moveTo(1156.6848144531250, 2015.6466064453125);
  4812. path.lineTo(1145.3381347656250, 2015.6466064453125);
  4813. // Segment 1145.3381097316742 2015.6466051936150 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2016.9966052174568
  4814. path.lineTo(1145.3381347656250, 2016.9965820312500);
  4815. // Segment 1145.3381097316742 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2016.9966052174568
  4816. path.lineTo(1156.6848144531250, 2016.9965820312500);
  4817. // Segment 1156.6848182678223 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2015.6466051936150
  4818. path.lineTo(1156.6848144531250, 2015.6466064453125);
  4819. path.close();
  4820. // start loop, contour: 14
  4821. // Segment 1145.8121519375022 2016.8021351246741 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220237907 2014.8347900061515
  4822. path.moveTo(1145.8121337890625, 2016.8021240234375);
  4823. path.lineTo(1147.8063964843750, 2014.8348388671875);
  4824. // Segment 1147.8064220237907 2014.8347900061515 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583376121346 2013.8737301678750
  4825. path.lineTo(1146.8583984375000, 2013.8737792968750);
  4826. // Segment 1146.8583376121346 2013.8737301678750 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675258462 2015.8410752863977
  4827. path.lineTo(1144.8640136718750, 2015.8410644531250);
  4828. // Segment 1144.8640675258462 2015.8410752863977 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8121519375022 2016.8021351246741
  4829. path.lineTo(1145.8121337890625, 2016.8021240234375);
  4830. path.close();
  4831. // start loop, contour: 15
  4832. // Segment 1147.8064220516883 2014.8347899786306 0.5430154146087 -0.5356841365729 0.5430154146087 0.5356841365729 1147.8064220516883 2012.9239773430752
  4833. path.moveTo(1147.8063964843750, 2014.8348388671875);
  4834. path.cubicTo(1148.3494873046875, 2014.2990722656250, 1148.3494873046875, 2013.4597167968750, 1147.8063964843750, 2012.9239501953125);
  4835. // Segment 1147.8064220516883 2012.9239773430752 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375842370 2013.8850371263100
  4836. path.lineTo(1146.8583984375000, 2013.8850097656250);
  4837. // Segment 1146.8583375842370 2013.8850371263100 0.0071280060876 0.0070317705240 0.0071280060876 -0.0070317705240 1146.8583375842370 2013.8737301953959
  4838. path.cubicTo(1146.8654785156250, 2013.8920898437500, 1146.8654785156250, 2013.8666992187500, 1146.8583984375000, 2013.8737792968750);
  4839. // Segment 1146.8583375842370 2013.8737301953959 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2014.8347899786306
  4840. path.lineTo(1147.8063964843750, 2014.8348388671875);
  4841. path.close();
  4842. // start loop, contour: 16
  4843. // Segment 1147.8064220516883 2012.9239773430752 -0.5379138488298 -0.5306514472866 0.5379138488298 -0.5306514472866 1145.8955864341058 2012.9239773430752
  4844. path.moveTo(1147.8063964843750, 2012.9239501953125);
  4845. path.cubicTo(1147.2685546875000, 2012.3933105468750, 1146.4334716796875, 2012.3933105468750, 1145.8956298828125, 2012.9239501953125);
  4846. // Segment 1145.8955864341058 2012.9239773430752 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436709015571 2013.8850371263100
  4847. path.lineTo(1146.8436279296875, 2013.8850097656250);
  4848. // Segment 1146.8436709015571 2013.8850371263100 0.0122295718664 -0.0120644598103 -0.0122295718664 -0.0120644598103 1146.8583375842370 2013.8850371263100
  4849. path.cubicTo(1146.8559570312500, 2013.8729248046875, 1146.8460693359375, 2013.8729248046875, 1146.8583984375000, 2013.8850097656250);
  4850. // Segment 1146.8583375842370 2013.8850371263100 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2012.9239773430752
  4851. path.lineTo(1147.8063964843750, 2012.9239501953125);
  4852. path.close();
  4853. // start loop, contour: 17
  4854. // Segment 1145.8955864579798 2012.9239773195236 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615803600 2016.0445936810224
  4855. path.moveTo(1145.8956298828125, 2012.9239501953125);
  4856. path.lineTo(1142.7322998046875, 2016.0445556640625);
  4857. // Segment 1142.7322615803600 2016.0445936810224 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6803460000633 2017.0056535113604
  4858. path.lineTo(1143.6802978515625, 2017.0056152343750);
  4859. // Segment 1143.6803460000633 2017.0056535113604 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708776831 2013.8850371498615
  4860. path.lineTo(1146.8436279296875, 2013.8850097656250);
  4861. // Segment 1146.8436708776831 2013.8850371498615 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8955864579798 2012.9239773195236
  4862. path.lineTo(1145.8956298828125, 2012.9239501953125);
  4863. path.close();
  4864. // start loop, contour: 18
  4865. // Segment 1142.7322615564860 2016.0445937045740 -0.0343838913237 0.0339196727021 0.0561572931720 -0.0710493024751 1142.5744069596683 2016.2183613784646
  4866. path.moveTo(1142.7322998046875, 2016.0445556640625);
  4867. path.cubicTo(1142.6978759765625, 2016.0784912109375, 1142.6306152343750, 2016.1473388671875, 1142.5744628906250, 2016.2183837890625);
  4868. // Segment 1142.5744069596683 2016.2183613784646 -0.0547779032556 0.0720510806539 0.0000000000000 -0.2570904015602 1142.3937679156661 2016.7286419868469
  4869. path.cubicTo(1142.5196533203125, 2016.2904052734375, 1142.3937988281250, 2016.4715576171875, 1142.3937988281250, 2016.7286376953125);
  4870. // Segment 1142.3937679156661 2016.7286419868469 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.7437679395080 2016.7286419868469
  4871. path.lineTo(1143.7437744140625, 2016.7286376953125);
  4872. // Segment 1143.7437679395080 2016.7286419868469 -0.0051909534315 0.0665915567290 0.0133980913650 -0.0361675066532 1143.6976291086639 2016.9514128270803
  4873. path.cubicTo(1143.7385253906250, 2016.7952880859375, 1143.7110595703125, 2016.9152832031250, 1143.6976318359375, 2016.9514160156250);
  4874. // Segment 1143.6976291086639 2016.9514128270803 -0.0142876819622 0.0277028472317 0.0040377216094 -0.0063254385208 1143.6490888124401 2017.0354042045738
  4875. path.cubicTo(1143.6833496093750, 2016.9791259765625, 1143.6530761718750, 2017.0290527343750, 1143.6490478515625, 2017.0354003906250);
  4876. // Segment 1143.6490888124401 2017.0354042045738 -0.0045813437564 0.0032098513409 -0.0343840362634 0.0339198156850 1143.6803460239373 2017.0056534878088
  4877. path.cubicTo(1143.6445312500000, 2017.0385742187500, 1143.6459960937500, 2017.0395507812500, 1143.6802978515625, 2017.0056152343750);
  4878. // Segment 1143.6803460239373 2017.0056534878088 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615564860 2016.0445937045740
  4879. path.lineTo(1142.7322998046875, 2016.0445556640625);
  4880. path.close();
  4881. // start loop, contour: 19
  4882. // Segment 1142.5947256938614 2016.2481120952295 -0.1857487117715 0.1832409092043 0.0167379373694 -0.0990717748979 1142.3430278987244 2016.7518748698508
  4883. path.moveTo(1142.5947265625000, 2016.2481689453125);
  4884. path.cubicTo(1142.4089355468750, 2016.4313964843750, 1142.3597412109375, 2016.6528320312500, 1142.3430175781250, 2016.7518310546875);
  4885. // Segment 1142.3430278987244 2016.7518748698508 -0.0156657977007 0.1069052535795 0.0000000000000 -0.0339197441936 1142.3249999880791 2017.0000000000000
  4886. path.cubicTo(1142.3273925781250, 2016.8587646484375, 1142.3249511718750, 2016.9660644531250, 1142.3249511718750, 2017.0000000000000);
  4887. // Segment 1142.3249999880791 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6750000119209 2017.0000000000000
  4888. path.lineTo(1143.6750488281250, 2017.0000000000000);
  4889. // Segment 1143.6750000119209 2017.0000000000000 0.0000000000000 -0.0339197441936 -0.0015261841961 -0.0051459911965 1143.6741640831724 2016.9767671169961
  4890. path.cubicTo(1143.6750488281250, 2016.9660644531250, 1143.6726074218750, 2016.9716796875000, 1143.6741943359375, 2016.9768066406250);
  4891. // Segment 1143.6741640831724 2016.9767671169961 -0.0007886982052 0.0013596649622 0.0074114058388 -0.0224954551713 1143.6525251830094 2017.0486861571169
  4892. path.cubicTo(1143.6733398437500, 2016.9781494140625, 1143.6599121093750, 2017.0262451171875, 1143.6524658203125, 2017.0487060546875);
  4893. // split at 0.4203657805920
  4894. // path.cubicTo(1143.6738281250000, 2016.9774169921875, 1143.6712646484375, 2016.9862060546875, 1143.6678466796875, 2016.9979248046875);
  4895. // path.cubicTo(1143.6630859375000, 2017.0140380859375, 1143.6567382812500, 2017.0356445312500, 1143.6524658203125, 2017.0487060546875);
  4896. // Segment 1143.6525251830094 2017.0486861571169 -0.0119644334077 0.0236755853369 0.0381324473830 -0.0447670202574 1143.5428101613127 2017.2091718784643
  4897. path.cubicTo(1143.6405029296875, 2017.0723876953125, 1143.5809326171875, 2017.1644287109375, 1143.5428466796875, 2017.2092285156250);
  4898. // Segment 1143.5428101613127 2017.2091718784643 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.5947256938614 2016.2481120952295
  4899. path.lineTo(1142.5947265625000, 2016.2481689453125);
  4900. path.close();
  4901. // start loop, contour: 20
  4902. // Segment 1142.3249999880791 2017.0000000000000 0.0000000000000 0.0339197441936 -0.0156657977007 -0.1069052535795 1142.3430278987244 2017.2481251301492
  4903. path.moveTo(1142.3249511718750, 2017.0000000000000);
  4904. path.cubicTo(1142.3249511718750, 2017.0339355468750, 1142.3273925781250, 2017.1412353515625, 1142.3430175781250, 2017.2481689453125);
  4905. // Segment 1142.3430278987244 2017.2481251301492 0.0167379373694 0.0990717748979 -0.1857487117715 -0.1832409092043 1142.5947256938614 2017.7518879047705
  4906. path.cubicTo(1142.3597412109375, 2017.3471679687500, 1142.4089355468750, 2017.5686035156250, 1142.5947265625000, 2017.7518310546875);
  4907. // split at 0.4008532166481
  4908. // path.cubicTo(1142.3497314453125, 2017.2878417968750, 1142.3616943359375, 2017.3471679687500, 1142.3854980468750, 2017.4158935546875);
  4909. // path.cubicTo(1142.4211425781250, 2017.5185546875000, 1142.4833984375000, 2017.6420898437500, 1142.5947265625000, 2017.7518310546875);
  4910. // Segment 1142.5947256938614 2017.7518879047705 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.5428101613127 2016.7908281215357
  4911. path.lineTo(1143.5428466796875, 2016.7907714843750);
  4912. // Segment 1143.5428101613127 2016.7908281215357 0.0381324473830 0.0447670202574 -0.0119644334077 -0.0236755853369 1143.6525251830094 2016.9513138428831
  4913. path.cubicTo(1143.5809326171875, 2016.8355712890625, 1143.6405029296875, 2016.9276123046875, 1143.6524658203125, 2016.9512939453125);
  4914. // Segment 1143.6525251830094 2016.9513138428831 0.0074114058388 0.0224954551713 -0.0007886982052 -0.0013596649622 1143.6741640831724 2017.0232328830039
  4915. path.cubicTo(1143.6599121093750, 2016.9737548828125, 1143.6733398437500, 2017.0218505859375, 1143.6741943359375, 2017.0231933593750);
  4916. // Segment 1143.6741640831724 2017.0232328830039 -0.0015261841961 0.0051459911965 0.0000000000000 0.0339197441936 1143.6750000119209 2017.0000000000000
  4917. path.cubicTo(1143.6726074218750, 2017.0283203125000, 1143.6750488281250, 2017.0339355468750, 1143.6750488281250, 2017.0000000000000);
  4918. // Segment 1143.6750000119209 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.3249999880791 2017.0000000000000
  4919. path.lineTo(1142.3249511718750, 2017.0000000000000);
  4920. path.close();
  4921. // start loop, contour: 21
  4922. // Segment 1142.5947256938614 2017.7518879047705 -0.0799271403989 -0.1522613934208 -0.2174629955730 -0.2879403701950 1142.7322615564860 2017.9554062954260
  4923. path.moveTo(1142.5947265625000, 2017.7518310546875);
  4924. path.cubicTo(1142.5147705078125, 2017.5996093750000, 1142.5147705078125, 2017.6674804687500, 1142.7322998046875, 2017.9554443359375);
  4925. // Segment 1142.7322615564860 2017.9554062954260 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6803460239373 2016.9943465121912
  4926. path.lineTo(1143.6802978515625, 2016.9943847656250);
  4927. // Segment 1143.6803460239373 2016.9943465121912 0.0799271403989 0.1522613934208 0.2174629955730 0.2879403701950 1143.5428101613127 2016.7908281215357
  4928. path.cubicTo(1143.7602539062500, 2017.1466064453125, 1143.7602539062500, 2017.0787353515625, 1143.5428466796875, 2016.7907714843750);
  4929. // Segment 1143.5428101613127 2016.7908281215357 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.5947256938614 2017.7518879047705
  4930. path.lineTo(1142.5947265625000, 2017.7518310546875);
  4931. path.close();
  4932. // start loop, contour: 22
  4933. // Segment 1142.7322615746241 2017.9554063133189 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8955864522438 2021.0760227493236
  4934. path.moveTo(1142.7322998046875, 2017.9554443359375);
  4935. path.lineTo(1145.8956298828125, 2021.0760498046875);
  4936. // Segment 1145.8955864522438 2021.0760227493236 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708834190 2020.1149629303029
  4937. path.lineTo(1146.8436279296875, 2020.1149902343750);
  4938. // Segment 1146.8436708834190 2020.1149629303029 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6803460057993 2016.9943464942983
  4939. path.lineTo(1143.6802978515625, 2016.9943847656250);
  4940. // Segment 1143.6803460057993 2016.9943464942983 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615746241 2017.9554063133189
  4941. path.lineTo(1142.7322998046875, 2017.9554443359375);
  4942. path.close();
  4943. // start loop, contour: 23
  4944. // Segment 1145.8955864341058 2021.0760227314306 0.2730164534637 0.2693304447891 -0.3016608168437 0.0000000000000 1146.8510041236877 2021.4740112423897
  4945. path.moveTo(1145.8956298828125, 2021.0760498046875);
  4946. path.cubicTo(1146.1685791015625, 2021.3453369140625, 1146.5493164062500, 2021.4739990234375, 1146.8509521484375, 2021.4739990234375);
  4947. // Segment 1146.8510041236877 2021.4740112423897 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8510041236877 2020.1240112185478
  4948. path.lineTo(1146.8509521484375, 2020.1240234375000);
  4949. // Segment 1146.8510041236877 2020.1240112185478 -0.0031276099109 0.0031991747760 0.0281856144058 0.0140930868099 1146.8580791488898 2020.1202473991566
  4950. path.cubicTo(1146.8479003906250, 2020.1271972656250, 1146.8862304687500, 2020.1343994140625, 1146.8580322265625, 2020.1202392578125);
  4951. // split at 0.3845077157021
  4952. // path.cubicTo(1146.8497314453125, 2020.1252441406250, 1146.8547363281250, 2020.1270751953125, 1146.8596191406250, 2020.1280517578125);
  4953. // path.cubicTo(1146.8675537109375, 2020.1296386718750, 1146.8753662109375, 2020.1289062500000, 1146.8580322265625, 2020.1202392578125);
  4954. // Segment 1146.8580791488898 2020.1202473991566 -0.0369995545027 -0.0123195805663 0.0067223483810 0.0136883790721 1146.8436709015571 2020.1149629481959
  4955. path.cubicTo(1146.8210449218750, 2020.1079101562500, 1146.8503417968750, 2020.1286621093750, 1146.8436279296875, 2020.1149902343750);
  4956. // Segment 1146.8436709015571 2020.1149629481959 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8955864341058 2021.0760227314306
  4957. path.lineTo(1145.8956298828125, 2021.0760498046875);
  4958. path.close();
  4959. // start loop, contour: 24
  4960. // Segment 1146.8510041236877 2021.4740112423897 0.3016605789999 0.0000000000000 -0.2730166120260 0.2693306012106 1147.8064220516883 2021.0760227314306
  4961. path.moveTo(1146.8509521484375, 2021.4739990234375);
  4962. path.cubicTo(1147.1527099609375, 2021.4739990234375, 1147.5334472656250, 2021.3453369140625, 1147.8063964843750, 2021.0760498046875);
  4963. // Segment 1147.8064220516883 2021.0760227314306 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375842370 2020.1149629481959
  4964. path.lineTo(1146.8583984375000, 2020.1149902343750);
  4965. // Segment 1146.8583375842370 2020.1149629481959 -0.0067222671256 0.0136883164611 0.0369996293611 -0.0123196021258 1146.8439293663473 2020.1202473404985
  4966. path.cubicTo(1146.8515625000000, 2020.1286621093750, 1146.8809814453125, 2020.1079101562500, 1146.8438720703125, 2020.1202392578125);
  4967. // Segment 1146.8439293663473 2020.1202473404985 -0.0281857033438 0.0140931104690 0.0031276541428 0.0031991704542 1146.8510041236877 2020.1240112185478
  4968. path.cubicTo(1146.8157958984375, 2020.1343994140625, 1146.8541259765625, 2020.1271972656250, 1146.8509521484375, 2020.1240234375000);
  4969. // Segment 1146.8510041236877 2020.1240112185478 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8510041236877 2021.4740112423897
  4970. path.lineTo(1146.8509521484375, 2021.4739990234375);
  4971. path.close();
  4972. // start loop, contour: 25
  4973. // Segment 1147.8064220516883 2021.0760227314306 0.5430154146087 -0.5356841365729 0.5430154146087 0.5356841365729 1147.8064220516883 2019.1652101405787
  4974. path.moveTo(1147.8063964843750, 2021.0760498046875);
  4975. path.cubicTo(1148.3494873046875, 2020.5402832031250, 1148.3494873046875, 2019.7009277343750, 1147.8063964843750, 2019.1651611328125);
  4976. // Segment 1147.8064220516883 2019.1652101405787 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375842370 2020.1262699238134
  4977. path.lineTo(1146.8583984375000, 2020.1262207031250);
  4978. // Segment 1146.8583375842370 2020.1262699238134 0.0071280060876 0.0070317705240 0.0071280060876 -0.0070317705240 1146.8583375842370 2020.1149629481959
  4979. path.cubicTo(1146.8654785156250, 2020.1333007812500, 1146.8654785156250, 2020.1079101562500, 1146.8583984375000, 2020.1149902343750);
  4980. // Segment 1146.8583375842370 2020.1149629481959 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2021.0760227314306
  4981. path.lineTo(1147.8063964843750, 2021.0760498046875);
  4982. path.close();
  4983. // start loop, contour: 26
  4984. // Segment 1147.8064220383478 2019.1652101274185 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8121519520594 2017.1978648896866
  4985. path.moveTo(1147.8063964843750, 2019.1651611328125);
  4986. path.lineTo(1145.8121337890625, 2017.1978759765625);
  4987. // Segment 1145.8121519520594 2017.1978648896866 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675112890 2018.1589246992417
  4988. path.lineTo(1144.8640136718750, 2018.1589355468750);
  4989. // Segment 1144.8640675112890 2018.1589246992417 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375975775 2020.1262699369736
  4990. path.lineTo(1146.8583984375000, 2020.1262207031250);
  4991. // Segment 1146.8583375975775 2020.1262699369736 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220383478 2019.1652101274185
  4992. path.lineTo(1147.8063964843750, 2019.1651611328125);
  4993. path.close();
  4994. testSimplify(reporter, path, filename);
  4995. }
  4996. static void testQuads66(skiatest::Reporter* reporter,const char* filename) {
  4997. SkPath path;
  4998. path.moveTo(2, 0);
  4999. path.quadTo(3, 1, 2, 2);
  5000. path.lineTo(2, 3);
  5001. path.close();
  5002. path.moveTo(2, 1);
  5003. path.lineTo(2, 1);
  5004. path.quadTo(1, 2, 2, 2);
  5005. path.close();
  5006. testSimplify(reporter, path, filename);
  5007. }
  5008. static void testQuads67(skiatest::Reporter* reporter,const char* filename) {
  5009. SkPath path;
  5010. path.moveTo(3, 2);
  5011. path.quadTo(1, 3, 3, 3);
  5012. path.lineTo(3, 3);
  5013. path.close();
  5014. path.moveTo(0, 0);
  5015. path.lineTo(1, 0);
  5016. path.quadTo(2, 3, 3, 3);
  5017. path.close();
  5018. testSimplify(reporter, path, filename);
  5019. }
  5020. static void testQuads68(skiatest::Reporter* reporter,const char* filename) {
  5021. SkPath path;
  5022. path.moveTo(1, 2);
  5023. path.quadTo(0, 3, 2, 3);
  5024. path.lineTo(2, 3);
  5025. path.close();
  5026. path.moveTo(1, 0);
  5027. path.lineTo(0, 1);
  5028. path.quadTo(1, 3, 2, 3);
  5029. path.close();
  5030. testSimplify(reporter, path, filename);
  5031. }
  5032. static void testQuads69(skiatest::Reporter* reporter,const char* filename) {
  5033. SkPath path;
  5034. path.moveTo(1, 0);
  5035. path.quadTo(2, 2, 2, 3);
  5036. path.lineTo(2, 3);
  5037. path.close();
  5038. path.moveTo(1, 0);
  5039. path.lineTo(1, 0);
  5040. path.quadTo(3, 0, 1, 3);
  5041. path.close();
  5042. testSimplify(reporter, path, filename);
  5043. }
  5044. static void testQuads70(skiatest::Reporter* reporter, const char* filename) {
  5045. SkPath path;
  5046. path.moveTo(1, 1);
  5047. path.quadTo(2, 3, 3, 3);
  5048. path.lineTo(3, 3);
  5049. path.close();
  5050. path.moveTo(2, 0);
  5051. path.lineTo(2, 2);
  5052. path.quadTo(1, 3, 3, 3);
  5053. path.close();
  5054. testSimplify(reporter, path, filename);
  5055. }
  5056. static void testQuads71(skiatest::Reporter* reporter, const char* filename) {
  5057. SkPath path;
  5058. path.moveTo(1, 1);
  5059. path.quadTo(2, 3, 3, 3);
  5060. path.lineTo(3, 3);
  5061. path.close();
  5062. path.moveTo(3, 0);
  5063. path.lineTo(2, 2);
  5064. path.quadTo(1, 3, 3, 3);
  5065. path.close();
  5066. testSimplify(reporter, path, filename);
  5067. }
  5068. static void testQuads72(skiatest::Reporter* reporter, const char* filename) {
  5069. SkPath path;
  5070. path.moveTo(1, 1);
  5071. path.quadTo(2, 3, 3, 3);
  5072. path.lineTo(3, 3);
  5073. path.close();
  5074. path.moveTo(0, 1);
  5075. path.lineTo(2, 2);
  5076. path.quadTo(1, 3, 3, 3);
  5077. path.close();
  5078. testSimplify(reporter, path, filename);
  5079. }
  5080. static void testQuads73(skiatest::Reporter* reporter, const char* filename) {
  5081. SkPath path;
  5082. path.moveTo(0, 0);
  5083. path.quadTo(0, 1, 1, 2);
  5084. path.lineTo(0, 3);
  5085. path.close();
  5086. path.moveTo(0, 0);
  5087. path.lineTo(0, 0);
  5088. path.quadTo(0, 1, 1, 1);
  5089. path.close();
  5090. testSimplify(reporter, path, filename);
  5091. }
  5092. static void bug5169(skiatest::Reporter* reporter, const char* filename) {
  5093. SkPath path;
  5094. path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x4281c71c)); // 0, 64.8889f
  5095. path.cubicTo(SkBits2Float(0x434e0000), SkBits2Float(0x4281c71c), SkBits2Float(0x00000000), SkBits2Float(0xc2a238e4), SkBits2Float(0x00000000), SkBits2Float(0x4281c71c)); // 206, 64.8889f, 0, -81.1111f, 0, 64.8889f
  5096. path.moveTo(SkBits2Float(0x43300000), SkBits2Float(0x41971c72)); // 176, 18.8889f
  5097. path.cubicTo(SkBits2Float(0xc29e0000), SkBits2Float(0xc25c71c7), SkBits2Float(0x42b20000), SkBits2Float(0x42fbc71c), SkBits2Float(0x43300000), SkBits2Float(0x41971c72)); // -79, -55.1111f, 89, 125.889f, 176, 18.8889f
  5098. testSimplify(reporter, path, filename);
  5099. }
  5100. static void tiger8_393(skiatest::Reporter* reporter, const char* filename) {
  5101. SkPath path;
  5102. path.setFillType((SkPath::FillType) 0);
  5103. path.moveTo(SkBits2Float(0x42b93333), SkBits2Float(0x43d5a666)); // 92.6f, 427.3f
  5104. path.cubicTo(SkBits2Float(0x42b93333), SkBits2Float(0x43d5a666), SkBits2Float(0x42b5cccd), SkBits2Float(0x43da1999), SkBits2Float(0x42b80000), SkBits2Float(0x43ddf333)); // 92.6f, 427.3f, 90.9f, 436.2f, 92, 443.9f
  5105. path.cubicTo(SkBits2Float(0x42b80000), SkBits2Float(0x43ddf333), SkBits2Float(0x42b30000), SkBits2Float(0x43e17333), SkBits2Float(0x42cf999a), SkBits2Float(0x43e1b333)); // 92, 443.9f, 89.5f, 450.9f, 103.8f, 451.4f
  5106. path.cubicTo(SkBits2Float(0x42ec3334), SkBits2Float(0x43e14ccd), SkBits2Float(0x42e73334), SkBits2Float(0x43ddf333), SkBits2Float(0x42e73334), SkBits2Float(0x43ddf333)); // 118.1f, 450.6f, 115.6f, 443.9f, 115.6f, 443.9f
  5107. path.cubicTo(SkBits2Float(0x42e7999a), SkBits2Float(0x43de8000), SkBits2Float(0x42ea6667), SkBits2Float(0x43db4000), SkBits2Float(0x42e60001), SkBits2Float(0x43d5a666)); // 115.8f, 445, 117.2f, 438.5f, 115, 427.3f
  5108. testSimplify(reporter, path, filename);
  5109. }
  5110. // triggers angle assert from distance field code
  5111. static void carsvg_1(skiatest::Reporter* reporter, const char* filename) {
  5112. SkPath path;
  5113. path.setFillType((SkPath::FillType) 0);
  5114. path.moveTo(SkBits2Float(0x4393d61e), SkBits2Float(0x43e768f9)); // 295.673f, 462.82f
  5115. path.cubicTo(SkBits2Float(0x4396b50e), SkBits2Float(0x43e63c20), SkBits2Float(0x43998931), SkBits2Float(0x43e6c43e), SkBits2Float(0x439cb6a8), SkBits2Float(0x43e70ef9)); // 301.414f, 460.47f, 307.072f, 461.533f, 313.427f, 462.117f
  5116. path.cubicTo(SkBits2Float(0x439dfc1e), SkBits2Float(0x43e72ce0), SkBits2Float(0x439a285c), SkBits2Float(0x43e717fb), SkBits2Float(0x4398e23c), SkBits2Float(0x43e7027c)); // 315.97f, 462.351f, 308.315f, 462.187f, 305.767f, 462.019f
  5117. path.cubicTo(SkBits2Float(0x4398136f), SkBits2Float(0x43e6f4db), SkBits2Float(0x439a7e14), SkBits2Float(0x43e6d390), SkBits2Float(0x439b4ba9), SkBits2Float(0x43e6b956)); // 304.152f, 461.913f, 308.985f, 461.653f, 310.591f, 461.448f
  5118. path.cubicTo(SkBits2Float(0x439c2b19), SkBits2Float(0x43e68603), SkBits2Float(0x43abf4df), SkBits2Float(0x43e9ca9e), SkBits2Float(0x43a1daea), SkBits2Float(0x43e912a5)); // 312.337f, 461.047f, 343.913f, 467.583f, 323.71f, 466.146f
  5119. path.cubicTo(SkBits2Float(0x43a4f45a), SkBits2Float(0x43e78baf), SkBits2Float(0x43a2a391), SkBits2Float(0x43e86a82), SkBits2Float(0x43a946bd), SkBits2Float(0x43e90c56)); // 329.909f, 463.091f, 325.278f, 464.832f, 338.553f, 466.096f
  5120. path.lineTo(SkBits2Float(0x43a4250b), SkBits2Float(0x43e998dc)); // 328.289f, 467.194f
  5121. path.cubicTo(SkBits2Float(0x43a8a9c8), SkBits2Float(0x43e8f06c), SkBits2Float(0x43a95cb5), SkBits2Float(0x43e84ea6), SkBits2Float(0x43a6f7c1), SkBits2Float(0x43e9bdb5)); // 337.326f, 465.878f, 338.724f, 464.614f, 333.936f, 467.482f
  5122. path.cubicTo(SkBits2Float(0x43a59ed0), SkBits2Float(0x43e9d2ca), SkBits2Float(0x4395ea4d), SkBits2Float(0x43e92afe), SkBits2Float(0x43a06569), SkBits2Float(0x43e7773d)); // 331.241f, 467.647f, 299.83f, 466.336f, 320.792f, 462.932f
  5123. path.cubicTo(SkBits2Float(0x438bf0ff), SkBits2Float(0x43ea0fef), SkBits2Float(0x43a0e17a), SkBits2Float(0x43e5f41b), SkBits2Float(0x4398f3fb), SkBits2Float(0x43e804c8)); // 279.883f, 468.124f, 321.762f, 459.907f, 305.906f, 464.037f
  5124. path.lineTo(SkBits2Float(0x4393d61e), SkBits2Float(0x43e768f9)); // 295.673f, 462.82f
  5125. path.close();
  5126. testSimplify(reporter, path, filename);
  5127. }
  5128. static void simplifyTest_1(skiatest::Reporter* reporter, const char* filename) {
  5129. SkPath path;
  5130. path.setFillType((SkPath::FillType) 0);
  5131. path.moveTo(SkBits2Float(0x42bfefd4), SkBits2Float(0x42ef80ef)); // 95.9684f, 119.752f
  5132. path.quadTo(SkBits2Float(0x42c26810), SkBits2Float(0x42e214b8), SkBits2Float(0x42cdcad5), SkBits2Float(0x42d82aa2)); // 97.2032f, 113.04f, 102.896f, 108.083f
  5133. path.lineTo(SkBits2Float(0x42cdcb21), SkBits2Float(0x42d82a61)); // 102.897f, 108.083f
  5134. path.quadTo(SkBits2Float(0x42d5e3c8), SkBits2Float(0x42d12140), SkBits2Float(0x42e20ee8), SkBits2Float(0x42cdc937)); // 106.945f, 104.565f, 113.029f, 102.893f
  5135. path.lineTo(SkBits2Float(0x42e256e3), SkBits2Float(0x42cdbc92)); // 113.17f, 102.868f
  5136. path.lineTo(SkBits2Float(0x42f5eadb), SkBits2Float(0x42cc2cb3)); // 122.959f, 102.087f
  5137. path.lineTo(SkBits2Float(0x42f746a6), SkBits2Float(0x42cccf85)); // 123.638f, 102.405f
  5138. path.quadTo(SkBits2Float(0x42fa586c), SkBits2Float(0x42d126c4), SkBits2Float(0x42f6c657), SkBits2Float(0x42d5d315)); // 125.173f, 104.576f, 123.387f, 106.912f
  5139. path.lineTo(SkBits2Float(0x42f591eb), SkBits2Float(0x42d4e76d)); // 122.785f, 106.452f
  5140. path.lineTo(SkBits2Float(0x42f6c6e0), SkBits2Float(0x42d5d261)); // 123.388f, 106.911f
  5141. path.quadTo(SkBits2Float(0x42f6bb33), SkBits2Float(0x42d5e1bb), SkBits2Float(0x42f6a3d8), SkBits2Float(0x42d6007c)); // 123.366f, 106.941f, 123.32f, 107.001f
  5142. path.quadTo(SkBits2Float(0x42ea3850), SkBits2Float(0x42e65af0), SkBits2Float(0x42d97a6e), SkBits2Float(0x42ed841c)); // 117.11f, 115.178f, 108.739f, 118.758f
  5143. path.lineTo(SkBits2Float(0x42d91d92), SkBits2Float(0x42ed9ec0)); // 108.558f, 118.81f
  5144. path.lineTo(SkBits2Float(0x42c1a959), SkBits2Float(0x42f146b0)); // 96.8308f, 120.638f
  5145. path.lineTo(SkBits2Float(0x42bfefd4), SkBits2Float(0x42ef80f0)); // 95.9684f, 119.752f
  5146. path.lineTo(SkBits2Float(0x42bfefd4), SkBits2Float(0x42ef80ef)); // 95.9684f, 119.752f
  5147. path.close();
  5148. path.moveTo(SkBits2Float(0x42c2eb4e), SkBits2Float(0x42f00d68)); // 97.4596f, 120.026f
  5149. path.lineTo(SkBits2Float(0x42c16d91), SkBits2Float(0x42efc72c)); // 96.714f, 119.889f
  5150. path.lineTo(SkBits2Float(0x42c131c9), SkBits2Float(0x42ee47a8)); // 96.5972f, 119.14f
  5151. path.lineTo(SkBits2Float(0x42d8a602), SkBits2Float(0x42ea9fb8)); // 108.324f, 117.312f
  5152. path.lineTo(SkBits2Float(0x42d8e1ca), SkBits2Float(0x42ec1f3c)); // 108.441f, 118.061f
  5153. path.lineTo(SkBits2Float(0x42d84926), SkBits2Float(0x42eaba5c)); // 108.143f, 117.364f
  5154. path.quadTo(SkBits2Float(0x42e84a40), SkBits2Float(0x42e3e1f0), SkBits2Float(0x42f439a2), SkBits2Float(0x42d42af8)); // 116.145f, 113.941f, 122.113f, 106.084f
  5155. path.quadTo(SkBits2Float(0x42f45121), SkBits2Float(0x42d40c08), SkBits2Float(0x42f45cf6), SkBits2Float(0x42d3fc79)); // 122.158f, 106.023f, 122.182f, 105.993f
  5156. path.lineTo(SkBits2Float(0x42f45d7f), SkBits2Float(0x42d3fbc5)); // 122.183f, 105.992f
  5157. path.quadTo(SkBits2Float(0x42f69510), SkBits2Float(0x42d114f4), SkBits2Float(0x42f4ccce), SkBits2Float(0x42ce8fb7)); // 123.291f, 104.541f, 122.4f, 103.281f
  5158. path.lineTo(SkBits2Float(0x42f609ba), SkBits2Float(0x42cdaf9e)); // 123.019f, 102.843f
  5159. path.lineTo(SkBits2Float(0x42f62899), SkBits2Float(0x42cf3289)); // 123.079f, 103.599f
  5160. path.lineTo(SkBits2Float(0x42e294a1), SkBits2Float(0x42d0c268)); // 113.29f, 104.38f
  5161. path.lineTo(SkBits2Float(0x42e275c2), SkBits2Float(0x42cf3f7d)); // 113.23f, 103.624f
  5162. path.lineTo(SkBits2Float(0x42e2dc9c), SkBits2Float(0x42d0b5c3)); // 113.431f, 104.355f
  5163. path.quadTo(SkBits2Float(0x42d75bb8), SkBits2Float(0x42d3df08), SkBits2Float(0x42cfc853), SkBits2Float(0x42da7457)); // 107.679f, 105.936f, 103.891f, 109.227f
  5164. path.lineTo(SkBits2Float(0x42cec9ba), SkBits2Float(0x42d94f5c)); // 103.394f, 108.655f
  5165. path.lineTo(SkBits2Float(0x42cfc89f), SkBits2Float(0x42da7416)); // 103.892f, 109.227f
  5166. path.quadTo(SkBits2Float(0x42c53268), SkBits2Float(0x42e3ac00), SkBits2Float(0x42c2eb4e), SkBits2Float(0x42f00d67)); // 98.5984f, 113.836f, 97.4596f, 120.026f
  5167. path.lineTo(SkBits2Float(0x42c2eb4e), SkBits2Float(0x42f00d68)); // 97.4596f, 120.026f
  5168. path.close();
  5169. testSimplify(reporter, path, filename);
  5170. }
  5171. static void joel_1(skiatest::Reporter* reporter, const char* filename) {
  5172. SkPath path;
  5173. path.setFillType((SkPath::FillType) 0);
  5174. path.moveTo(144.859f, 285.172f);
  5175. path.lineTo(144.859f, 285.172f);
  5176. path.lineTo(144.859f, 285.172f);
  5177. path.lineTo(143.132f, 284.617f);
  5178. path.lineTo(144.859f, 285.172f);
  5179. path.close();
  5180. path.moveTo(135.922f, 286.844f);
  5181. path.lineTo(135.922f, 286.844f);
  5182. path.lineTo(135.922f, 286.844f);
  5183. path.lineTo(135.367f, 288.571f);
  5184. path.lineTo(135.922f, 286.844f);
  5185. path.close();
  5186. path.moveTo(135.922f, 286.844f);
  5187. path.cubicTo(137.07f, 287.219f, 138.242f, 287.086f, 139.242f, 286.578f);
  5188. path.cubicTo(140.234f, 286.078f, 141.031f, 285.203f, 141.406f, 284.055f);
  5189. path.lineTo(144.859f, 285.172f);
  5190. path.cubicTo(143.492f, 289.375f, 138.992f, 291.656f, 134.797f, 290.297f);
  5191. path.lineTo(135.922f, 286.844f);
  5192. path.close();
  5193. path.moveTo(129.68f, 280.242f);
  5194. path.lineTo(129.68f, 280.242f);
  5195. path.lineTo(129.68f, 280.242f);
  5196. path.lineTo(131.407f, 280.804f);
  5197. path.lineTo(129.68f, 280.242f);
  5198. path.close();
  5199. path.moveTo(133.133f, 281.367f);
  5200. path.cubicTo(132.758f, 282.508f, 132.883f, 283.687f, 133.391f, 284.679f);
  5201. path.cubicTo(133.907f, 285.679f, 134.774f, 286.468f, 135.922f, 286.843f);
  5202. path.lineTo(134.797f, 290.296f);
  5203. path.cubicTo(130.602f, 288.929f, 128.313f, 284.437f, 129.68f, 280.241f);
  5204. path.lineTo(133.133f, 281.367f);
  5205. path.close();
  5206. path.moveTo(139.742f, 275.117f);
  5207. path.lineTo(139.742f, 275.117f);
  5208. path.lineTo(139.18f, 276.844f);
  5209. path.lineTo(139.742f, 275.117f);
  5210. path.close();
  5211. path.moveTo(138.609f, 278.57f);
  5212. path.cubicTo(137.461f, 278.203f, 136.297f, 278.328f, 135.297f, 278.836f);
  5213. path.cubicTo(134.297f, 279.344f, 133.508f, 280.219f, 133.133f, 281.367f);
  5214. path.lineTo(129.68f, 280.242f);
  5215. path.cubicTo(131.047f, 276.039f, 135.539f, 273.758f, 139.742f, 275.117f);
  5216. path.lineTo(138.609f, 278.57f);
  5217. path.close();
  5218. path.moveTo(141.406f, 284.055f);
  5219. path.cubicTo(141.773f, 282.907f, 141.648f, 281.735f, 141.148f, 280.735f);
  5220. path.cubicTo(140.625f, 279.735f, 139.757f, 278.946f, 138.609f, 278.571f);
  5221. path.lineTo(139.742f, 275.118f);
  5222. path.cubicTo(143.937f, 276.493f, 146.219f, 280.977f, 144.859f, 285.173f);
  5223. path.lineTo(141.406f, 284.055f);
  5224. path.close();
  5225. testSimplify(reporter, path, filename);
  5226. }
  5227. static void joel_2(skiatest::Reporter* reporter, const char* filename) {
  5228. SkPath path;
  5229. path.setFillType((SkPath::FillType) 0);
  5230. path.moveTo(403.283f, 497.197f);
  5231. path.cubicTo(403.424f, 497.244f, 391.111f, 495.556f, 391.111f, 495.556f);
  5232. path.lineTo(392.291f, 493.165f);
  5233. path.cubicTo(392.291f, 493.165f, 388.994f, 492.056f, 386.65f, 491.821f);
  5234. path.cubicTo(384.244f, 491.454f, 381.603f, 490.774f, 381.603f, 490.774f);
  5235. path.lineTo(383.392f, 488.383f);
  5236. path.cubicTo(383.392f, 488.383f, 379.119f, 487.453f, 378.939f, 485.695f);
  5237. path.cubicTo(378.791f, 483.57f, 383.064f, 485.25f, 384.877f, 485.843f);
  5238. path.lineTo(387.697f, 484.351f);
  5239. path.cubicTo(382.752f, 483.835f, 376.595f, 482.124f, 374.478f, 480.312f);
  5240. path.lineTo(356.22f, 496.304f);
  5241. path.lineTo(368.095f, 510.499f);
  5242. path.lineTo(373.884f, 510.202f);
  5243. path.lineTo(374.478f, 509.007f);
  5244. path.lineTo(370.916f, 506.913f);
  5245. path.lineTo(371.807f, 506.022f);
  5246. path.cubicTo(371.807f, 506.022f, 374.807f, 507.28f, 377.752f, 507.514f);
  5247. path.cubicTo(380.752f, 507.881f, 387.4f, 508.108f, 387.4f, 508.108f);
  5248. path.lineTo(388.884f, 506.764f);
  5249. path.cubicTo(388.884f, 506.764f, 378.345f, 504.998f, 378.345f, 504.819f);
  5250. path.lineTo(378.04f, 503.03f);
  5251. path.cubicTo(378.04f, 503.03f, 391.415f, 505.796f, 391.399f, 505.866f);
  5252. path.lineTo(386.063f, 502.132f);
  5253. path.lineTo(387.547f, 500.335f);
  5254. path.lineTo(398.375f, 501.976f);
  5255. path.lineTo(403.283f, 497.197f);
  5256. path.lineTo(403.283f, 497.197f);
  5257. path.close();
  5258. testSimplify(reporter, path, filename);
  5259. }
  5260. static void joel_3(skiatest::Reporter* reporter, const char* filename) {
  5261. SkPath path;
  5262. path.setFillType((SkPath::FillType) 0);
  5263. path.moveTo(391.097f, 334.453f);
  5264. path.lineTo(390.761f, 334.617f);
  5265. path.lineTo(390.425f, 333.937f);
  5266. path.lineTo(390.761f, 333.765f);
  5267. path.lineTo(391.097f, 334.453f);
  5268. path.close();
  5269. path.moveTo(391.128f, 334.438f);
  5270. path.lineTo(390.808f, 334.633f);
  5271. path.lineTo(390.402f, 333.992f);
  5272. path.lineTo(390.73f, 333.781f);
  5273. path.lineTo(391.128f, 334.438f);
  5274. path.lineTo(391.128f, 334.438f);
  5275. path.close();
  5276. path.moveTo(455.073f, 302.219f);
  5277. path.lineTo(455.018f, 302.375f);
  5278. path.lineTo(454.87f, 302.453f);
  5279. path.lineTo(454.706f, 302.109f);
  5280. path.lineTo(455.073f, 302.219f);
  5281. path.close();
  5282. path.moveTo(454.87f, 302.453f);
  5283. path.lineTo(391.097f, 334.453f);
  5284. path.lineTo(390.761f, 333.765f);
  5285. path.lineTo(454.534f, 301.765f);
  5286. path.lineTo(454.87f, 302.453f);
  5287. path.close();
  5288. path.moveTo(456.245f, 296.867f);
  5289. path.lineTo(456.659f, 296.953f);
  5290. path.lineTo(456.526f, 297.351f);
  5291. path.lineTo(456.174f, 297.242f);
  5292. path.lineTo(456.245f, 296.867f);
  5293. path.lineTo(456.245f, 296.867f);
  5294. path.close();
  5295. path.moveTo(456.526f, 297.352f);
  5296. path.lineTo(455.073f, 302.219f);
  5297. path.lineTo(454.339f, 302);
  5298. path.lineTo(455.808f, 297.133f);
  5299. path.lineTo(456.526f, 297.352f);
  5300. path.lineTo(456.526f, 297.352f);
  5301. path.close();
  5302. path.moveTo(450.979f, 295.891f);
  5303. path.lineTo(451.112f, 295.813f);
  5304. path.lineTo(451.26f, 295.836f);
  5305. path.lineTo(451.19f, 296.211f);
  5306. path.lineTo(450.979f, 295.891f);
  5307. path.close();
  5308. path.moveTo(451.261f, 295.836f);
  5309. path.lineTo(456.245f, 296.867f);
  5310. path.lineTo(456.089f, 297.617f);
  5311. path.lineTo(451.105f, 296.586f);
  5312. path.lineTo(451.261f, 295.836f);
  5313. path.close();
  5314. path.moveTo(390.729f, 333.781f);
  5315. path.lineTo(450.979f, 295.89f);
  5316. path.lineTo(451.385f, 296.531f);
  5317. path.lineTo(391.127f, 334.437f);
  5318. path.lineTo(390.729f, 333.781f);
  5319. path.close();
  5320. testSimplify(reporter, path, filename);
  5321. }
  5322. static void joel_4(skiatest::Reporter* reporter, const char* filename) {
  5323. SkPath path;
  5324. path.setFillType((SkPath::FillType) 0);
  5325. path.moveTo(SkBits2Float(0x4199d4fe), SkBits2Float(0x4265ac08)); // 19.229f, 57.418f
  5326. path.cubicTo(SkBits2Float(0x419be979), SkBits2Float(0x426574bc), SkBits2Float(0x419c2b02), SkBits2Float(0x42653c6a), SkBits2Float(0x419af5c3), SkBits2Float(0x42645f3b)); // 19.489f, 57.364f, 19.521f, 57.309f, 19.37f, 57.093f
  5327. path.cubicTo(SkBits2Float(0x419a1894), SkBits2Float(0x4263a3d7), SkBits2Float(0x4198cccd), SkBits2Float(0x4262f2b0), SkBits2Float(0x4197c290), SkBits2Float(0x4262374b)); // 19.262f, 56.91f, 19.1f, 56.737f, 18.97f, 56.554f
  5328. path.cubicTo(SkBits2Float(0x41960832), SkBits2Float(0x42610c49), SkBits2Float(0x41944dd4), SkBits2Float(0x425fd709), SkBits2Float(0x41927cee), SkBits2Float(0x425ea0c4)); // 18.754f, 56.262f, 18.538f, 55.96f, 18.311f, 55.657f
  5329. path.cubicTo(SkBits2Float(0x4191b646), SkBits2Float(0x425e1cab), SkBits2Float(0x418edd30), SkBits2Float(0x425ca4dd), SkBits2Float(0x418f4bc7), SkBits2Float(0x425bdd2e)); // 18.214f, 55.528f, 17.858f, 55.161f, 17.912f, 54.966f
  5330. path.lineTo(SkBits2Float(0x41903f7d), SkBits2Float(0x425b6e96)); // 18.031f, 54.858f
  5331. path.cubicTo(SkBits2Float(0x41921062), SkBits2Float(0x425aa6e8), SkBits2Float(0x4193872b), SkBits2Float(0x425bd1ea), SkBits2Float(0x41947ae1), SkBits2Float(0x425c77cd)); // 18.258f, 54.663f, 18.441f, 54.955f, 18.56f, 55.117f
  5332. path.cubicTo(SkBits2Float(0x4195dd2f), SkBits2Float(0x425d6b83), SkBits2Float(0x4197ae14), SkBits2Float(0x425e1caa), SkBits2Float(0x419924dd), SkBits2Float(0x425ef9d9)); // 18.733f, 55.355f, 18.96f, 55.528f, 19.143f, 55.744f
  5333. path.cubicTo(SkBits2Float(0x419a1893), SkBits2Float(0x425f9479), SkBits2Float(0x419adf3b), SkBits2Float(0x42601997), SkBits2Float(0x419bd2f1), SkBits2Float(0x42609db0)); // 19.262f, 55.895f, 19.359f, 56.025f, 19.478f, 56.154f
  5334. path.cubicTo(SkBits2Float(0x419c147a), SkBits2Float(0x4260c9b8), SkBits2Float(0x419c8312), SkBits2Float(0x4260e03f), SkBits2Float(0x419cb020), SkBits2Float(0x42610104)); // 19.51f, 56.197f, 19.564f, 56.219f, 19.586f, 56.251f
  5335. path.cubicTo(SkBits2Float(0x419d0830), SkBits2Float(0x42613850), SkBits2Float(0x419da3d6), SkBits2Float(0x4261bd6e), SkBits2Float(0x419e126e), SkBits2Float(0x4261d2f0)); // 19.629f, 56.305f, 19.705f, 56.435f, 19.759f, 56.456f
  5336. path.lineTo(SkBits2Float(0x419e28f5), SkBits2Float(0x4261d2f0)); // 19.77f, 56.456f
  5337. path.lineTo(SkBits2Float(0x419e28f5), SkBits2Float(0x4261f4bb)); // 19.77f, 56.489f
  5338. path.cubicTo(SkBits2Float(0x419e3d70), SkBits2Float(0x4261fef8), SkBits2Float(0x419e53f7), SkBits2Float(0x4261f4bb), SkBits2Float(0x419e8105), SkBits2Float(0x4261fef8)); // 19.78f, 56.499f, 19.791f, 56.489f, 19.813f, 56.499f
  5339. path.cubicTo(SkBits2Float(0x419eac07), SkBits2Float(0x426220c3), SkBits2Float(0x419eac07), SkBits2Float(0x42624187), SkBits2Float(0x419eef9d), SkBits2Float(0x4262580f)); // 19.834f, 56.532f, 19.834f, 56.564f, 19.867f, 56.586f
  5340. path.cubicTo(SkBits2Float(0x419fe353), SkBits2Float(0x4262f2af), SkBits2Float(0x41a0eb84), SkBits2Float(0x426377cd), SkBits2Float(0x41a1b22c), SkBits2Float(0x4263fbe6)); // 19.986f, 56.737f, 20.115f, 56.867f, 20.212f, 56.996f
  5341. path.cubicTo(SkBits2Float(0x41a20a3c), SkBits2Float(0x42641db1), SkBits2Float(0x41a2e76b), SkBits2Float(0x4264a1c9), SkBits2Float(0x41a34188), SkBits2Float(0x4264ad0d)); // 20.255f, 57.029f, 20.363f, 57.158f, 20.407f, 57.169f
  5342. path.cubicTo(SkBits2Float(0x41a36c8a), SkBits2Float(0x4264ad0d), SkBits2Float(0x41a3c6a7), SkBits2Float(0x4264a1c9), SkBits2Float(0x41a3f1a9), SkBits2Float(0x4264ad0d)); // 20.428f, 57.169f, 20.472f, 57.158f, 20.493f, 57.169f
  5343. path.cubicTo(SkBits2Float(0x41a3f1a9), SkBits2Float(0x42648c48), SkBits2Float(0x41a41eb7), SkBits2Float(0x42648105), SkBits2Float(0x41a449b9), SkBits2Float(0x426475c1)); // 20.493f, 57.137f, 20.515f, 57.126f, 20.536f, 57.115f
  5344. path.cubicTo(SkBits2Float(0x41a48d4f), SkBits2Float(0x4263f1a8), SkBits2Float(0x41a46040), SkBits2Float(0x42634082), SkBits2Float(0x41a48d4f), SkBits2Float(0x4262bb63)); // 20.569f, 56.986f, 20.547f, 56.813f, 20.569f, 56.683f
  5345. path.cubicTo(SkBits2Float(0x41a51061), SkBits2Float(0x426122d0), SkBits2Float(0x41a63126), SkBits2Float(0x425f51ea), SkBits2Float(0x41a82d0d), SkBits2Float(0x425e0624)); // 20.633f, 56.284f, 20.774f, 55.83f, 21.022f, 55.506f
  5346. path.cubicTo(SkBits2Float(0x41a90a3c), SkBits2Float(0x425d820b), SkBits2Float(0x41aab01f), SkBits2Float(0x425cba5d), SkBits2Float(0x41ab0830), SkBits2Float(0x425c147a)); // 21.13f, 55.377f, 21.336f, 55.182f, 21.379f, 55.02f
  5347. path.cubicTo(SkBits2Float(0x41aa147a), SkBits2Float(0x425bf3b5), SkBits2Float(0x41a8df3a), SkBits2Float(0x425c0936), SkBits2Float(0x41a7d4fd), SkBits2Float(0x425c147a)); // 21.26f, 54.988f, 21.109f, 55.009f, 20.979f, 55.02f
  5348. path.cubicTo(SkBits2Float(0x41a74fde), SkBits2Float(0x425c147a), SkBits2Float(0x41a65e34), SkBits2Float(0x425c4082), SkBits2Float(0x41a5c28e), SkBits2Float(0x425c4082)); // 20.914f, 55.02f, 20.796f, 55.063f, 20.72f, 55.063f
  5349. path.cubicTo(SkBits2Float(0x41a56a7e), SkBits2Float(0x425c353e), SkBits2Float(0x41a4fbe6), SkBits2Float(0x425c147a), SkBits2Float(0x41a4ced8), SkBits2Float(0x425c0936)); // 20.677f, 55.052f, 20.623f, 55.02f, 20.601f, 55.009f
  5350. path.cubicTo(SkBits2Float(0x41a53d70), SkBits2Float(0x425af4bb), SkBits2Float(0x41a5ed90), SkBits2Float(0x425abd6f), SkBits2Float(0x41a85a1c), SkBits2Float(0x425aa6e8)); // 20.655f, 54.739f, 20.741f, 54.685f, 21.044f, 54.663f
  5351. path.cubicTo(SkBits2Float(0x41a920c4), SkBits2Float(0x425a9cab), SkBits2Float(0x41a9d0e5), SkBits2Float(0x425aa6e8), SkBits2Float(0x41aa5603), SkBits2Float(0x425a9167)); // 21.141f, 54.653f, 21.227f, 54.663f, 21.292f, 54.642f
  5352. path.cubicTo(SkBits2Float(0x41aa8311), SkBits2Float(0x425a8623), SkBits2Float(0x41aa9999), SkBits2Float(0x425a655f), SkBits2Float(0x41aab020), SkBits2Float(0x425a655f)); // 21.314f, 54.631f, 21.325f, 54.599f, 21.336f, 54.599f
  5353. path.cubicTo(SkBits2Float(0x41aa3f7c), SkBits2Float(0x42599eb7), SkBits2Float(0x41a9a5e3), SkBits2Float(0x42591998), SkBits2Float(0x41a9374b), SkBits2Float(0x42586871)); // 21.281f, 54.405f, 21.206f, 54.275f, 21.152f, 54.102f
  5354. path.cubicTo(SkBits2Float(0x41a8c8b3), SkBits2Float(0x4257e458), SkBits2Float(0x41a8b22c), SkBits2Float(0x42575f3a), SkBits2Float(0x41a85a1c), SkBits2Float(0x4256c49a)); // 21.098f, 53.973f, 21.087f, 53.843f, 21.044f, 53.692f
  5355. path.cubicTo(SkBits2Float(0x41a76666), SkBits2Float(0x42551479), SkBits2Float(0x41a68937), SkBits2Float(0x4252cabf), SkBits2Float(0x41a74fdf), SkBits2Float(0x4250a1c9)); // 20.925f, 53.27f, 20.817f, 52.698f, 20.914f, 52.158f
  5356. path.cubicTo(SkBits2Float(0x41a77ced), SkBits2Float(0x42500729), SkBits2Float(0x41a870a4), SkBits2Float(0x424e8417), SkBits2Float(0x41a8b22d), SkBits2Float(0x424e4ccb)); // 20.936f, 52.007f, 21.055f, 51.629f, 21.087f, 51.575f
  5357. path.cubicTo(SkBits2Float(0x41a8b22d), SkBits2Float(0x424e4187), SkBits2Float(0x41aa147b), SkBits2Float(0x424cc9b9), SkBits2Float(0x41aab021), SkBits2Float(0x424c2f19)); // 21.087f, 51.564f, 21.26f, 51.197f, 21.336f, 51.046f
  5358. path.cubicTo(SkBits2Float(0x41aac49c), SkBits2Float(0x424c1892), SkBits2Float(0x41ab49bb), SkBits2Float(0x424b9eb7), SkBits2Float(0x41ab8b44), SkBits2Float(0x424b676b)); // 21.346f, 51.024f, 21.411f, 50.905f, 21.443f, 50.851f
  5359. path.cubicTo(SkBits2Float(0x41ac3d71), SkBits2Float(0x424ab644), SkBits2Float(0x41ad45a2), SkBits2Float(0x424a26e8), SkBits2Float(0x41ae22d1), SkBits2Float(0x42498105)); // 21.53f, 50.678f, 21.659f, 50.538f, 21.767f, 50.376f
  5360. path.cubicTo(SkBits2Float(0x41ae6667), SkBits2Float(0x42496b84), SkBits2Float(0x41aeeb85), SkBits2Float(0x42491db1), SkBits2Float(0x41af0000), SkBits2Float(0x4248fbe6)); // 21.8f, 50.355f, 21.865f, 50.279f, 21.875f, 50.246f
  5361. path.cubicTo(SkBits2Float(0x41b0624e), SkBits2Float(0x4248353e), SkBits2Float(0x41b1db23), SkBits2Float(0x424779da), SkBits2Float(0x41b353f8), SkBits2Float(0x4246bd6f)); // 22.048f, 50.052f, 22.232f, 49.869f, 22.416f, 49.685f
  5362. path.cubicTo(SkBits2Float(0x41b3c083), SkBits2Float(0x42468623), SkBits2Float(0x41b445a2), SkBits2Float(0x42464ed7), SkBits2Float(0x41b4cac1), SkBits2Float(0x4246178c)); // 22.469f, 49.631f, 22.534f, 49.577f, 22.599f, 49.523f
  5363. path.cubicTo(SkBits2Float(0x41b56667), SkBits2Float(0x4245c9b9), SkBits2Float(0x41b62d0f), SkBits2Float(0x4245872a), SkBits2Float(0x41b6c8b5), SkBits2Float(0x4245449a)); // 22.675f, 49.447f, 22.772f, 49.382f, 22.848f, 49.317f
  5364. path.cubicTo(SkBits2Float(0x41b7624f), SkBits2Float(0x42450311), SkBits2Float(0x41b7e76d), SkBits2Float(0x4244a9fa), SkBits2Float(0x41b88313), SkBits2Float(0x42445d2d)); // 22.923f, 49.253f, 22.988f, 49.166f, 23.064f, 49.091f
  5365. path.cubicTo(SkBits2Float(0x41b949bb), SkBits2Float(0x4243ee95), SkBits2Float(0x41ba1063), SkBits2Float(0x424374ba), SkBits2Float(0x41baed92), SkBits2Float(0x42431166)); // 23.161f, 48.983f, 23.258f, 48.864f, 23.366f, 48.767f
  5366. path.cubicTo(SkBits2Float(0x41bb45a2), SkBits2Float(0x4242c393), SkBits2Float(0x41bbb43a), SkBits2Float(0x424276c6), SkBits2Float(0x41bc0e57), SkBits2Float(0x424228f3)); // 23.409f, 48.691f, 23.463f, 48.616f, 23.507f, 48.54f
  5367. path.cubicTo(SkBits2Float(0x41bc6667), SkBits2Float(0x4241e664), SkBits2Float(0x41bc7ae2), SkBits2Float(0x4241a4da), SkBits2Float(0x41bcd2f3), SkBits2Float(0x4241624b)); // 23.55f, 48.475f, 23.56f, 48.411f, 23.603f, 48.346f
  5368. path.cubicTo(SkBits2Float(0x41bd0001), SkBits2Float(0x42411478), SkBits2Float(0x41bd0001), SkBits2Float(0x4240c6a5), SkBits2Float(0x41bd1689), SkBits2Float(0x4240851c)); // 23.625f, 48.27f, 23.625f, 48.194f, 23.636f, 48.13f
  5369. path.cubicTo(SkBits2Float(0x41bd2d10), SkBits2Float(0x42404cca), SkBits2Float(0x41bdb023), SkBits2Float(0x423fd3f5), SkBits2Float(0x41bd8521), SkBits2Float(0x423f7adf)); // 23.647f, 48.075f, 23.711f, 47.957f, 23.69f, 47.87f
  5370. path.lineTo(SkBits2Float(0x41bd6e9a), SkBits2Float(0x423f7adf)); // 23.679f, 47.87f
  5371. path.cubicTo(SkBits2Float(0x41bd6e9a), SkBits2Float(0x423f7adf), SkBits2Float(0x41bd5813), SkBits2Float(0x423f4ed7), SkBits2Float(0x41bd168a), SkBits2Float(0x423f4499)); // 23.679f, 47.87f, 23.668f, 47.827f, 23.636f, 47.817f
  5372. path.cubicTo(SkBits2Float(0x41bc916b), SkBits2Float(0x423f22ce), SkBits2Float(0x41bc22d4), SkBits2Float(0x423f3955), SkBits2Float(0x41bb893a), SkBits2Float(0x423f178b)); // 23.571f, 47.784f, 23.517f, 47.806f, 23.442f, 47.773f
  5373. path.cubicTo(SkBits2Float(0x41bb2f1d), SkBits2Float(0x423f0c47), SkBits2Float(0x41bb041b), SkBits2Float(0x423ee03f), SkBits2Float(0x41baac0b), SkBits2Float(0x423ec9b8)); // 23.398f, 47.762f, 23.377f, 47.719f, 23.334f, 47.697f
  5374. path.cubicTo(SkBits2Float(0x41baac0b), SkBits2Float(0x423ebf7b), SkBits2Float(0x41bac086), SkBits2Float(0x423ea8f3), SkBits2Float(0x41bac086), SkBits2Float(0x423e926c)); // 23.334f, 47.687f, 23.344f, 47.665f, 23.344f, 47.643f
  5375. path.cubicTo(SkBits2Float(0x41bb2f1e), SkBits2Float(0x423e882f), SkBits2Float(0x41bc0e59), SkBits2Float(0x423e6664), SkBits2Float(0x41bc916b), SkBits2Float(0x423e5c26)); // 23.398f, 47.633f, 23.507f, 47.6f, 23.571f, 47.59f
  5376. path.cubicTo(SkBits2Float(0x41be4bc9), SkBits2Float(0x423e50e2), SkBits2Float(0x41c53542), SkBits2Float(0x423e926c), SkBits2Float(0x41c5ba61), SkBits2Float(0x423e24da)); // 23.787f, 47.579f, 24.651f, 47.643f, 24.716f, 47.536f
  5377. path.cubicTo(SkBits2Float(0x41c61271), SkBits2Float(0x423de24b), SkBits2Float(0x41c61271), SkBits2Float(0x423d1a9d), SkBits2Float(0x41c63f80), SkBits2Float(0x423ca1c8)); // 24.759f, 47.471f, 24.759f, 47.276f, 24.781f, 47.158f
  5378. path.cubicTo(SkBits2Float(0x41c68109), SkBits2Float(0x423bda1a), SkBits2Float(0x41c6ae18), SkBits2Float(0x423afceb), SkBits2Float(0x41c70628), SkBits2Float(0x423a2aff)); // 24.813f, 46.963f, 24.835f, 46.747f, 24.878f, 46.542f
  5379. path.cubicTo(SkBits2Float(0x41c71caf), SkBits2Float(0x42399ba3), SkBits2Float(0x41c81065), SkBits2Float(0x42379eb5), SkBits2Float(0x41c79fc2), SkBits2Float(0x4237459f)); // 24.889f, 46.402f, 25.008f, 45.905f, 24.953f, 45.818f
  5380. path.cubicTo(SkBits2Float(0x41c70628), SkBits2Float(0x4236e24b), SkBits2Float(0x41c4dd33), SkBits2Float(0x4237459f), SkBits2Float(0x41c45814), SkBits2Float(0x423750e3)); // 24.878f, 45.721f, 24.608f, 45.818f, 24.543f, 45.829f
  5381. path.cubicTo(SkBits2Float(0x41c245a5), SkBits2Float(0x42379eb6), SkBits2Float(0x41bea5e7), SkBits2Float(0x42380d4d), SkBits2Float(0x41bbf5c6), SkBits2Float(0x4237ec89)); // 24.284f, 45.905f, 23.831f, 46.013f, 23.495f, 45.981f
  5382. path.cubicTo(SkBits2Float(0x41b9f9df), SkBits2Float(0x4237e145), SkBits2Float(0x41b7e770), SkBits2Float(0x4237a9fa), SkBits2Float(0x41b62d12), SkBits2Float(0x4237676a)); // 23.247f, 45.97f, 22.988f, 45.916f, 22.772f, 45.851f
  5383. path.cubicTo(SkBits2Float(0x41b4312b), SkBits2Float(0x423724db), SkBits2Float(0x41b1f1ae), SkBits2Float(0x42369fbc), SkBits2Float(0x41af9baa), SkBits2Float(0x423673b4)); // 22.524f, 45.786f, 22.243f, 45.656f, 21.951f, 45.613f
  5384. path.cubicTo(SkBits2Float(0x41ae7ae5), SkBits2Float(0x42366977), SkBits2Float(0x41aced96), SkBits2Float(0x42365d2d), SkBits2Float(0x41ab8b48), SkBits2Float(0x42366977)); // 21.81f, 45.603f, 21.616f, 45.591f, 21.443f, 45.603f
  5385. path.cubicTo(SkBits2Float(0x41a9e771), SkBits2Float(0x42368a3c), SkBits2Float(0x41a82d13), SkBits2Float(0x4236d708), SkBits2Float(0x41a65e3a), SkBits2Float(0x4236b644)); // 21.238f, 45.635f, 21.022f, 45.71f, 20.796f, 45.678f
  5386. path.cubicTo(SkBits2Float(0x41a65e3a), SkBits2Float(0x4236ab00), SkBits2Float(0x41a647b3), SkBits2Float(0x42369fbd), SkBits2Float(0x41a65e3a), SkBits2Float(0x42369479)); // 20.796f, 45.667f, 20.785f, 45.656f, 20.796f, 45.645f
  5387. path.cubicTo(SkBits2Float(0x41a672b5), SkBits2Float(0x42366977), SkBits2Float(0x41a7a7f4), SkBits2Float(0x42363125), SkBits2Float(0x41a81898), SkBits2Float(0x42361ba4)); // 20.806f, 45.603f, 20.957f, 45.548f, 21.012f, 45.527f
  5388. path.cubicTo(SkBits2Float(0x41a85a21), SkBits2Float(0x42361060), SkBits2Float(0x41a8df40), SkBits2Float(0x4235d915), SkBits2Float(0x41a94dd7), SkBits2Float(0x4235cdd1)); // 21.044f, 45.516f, 21.109f, 45.462f, 21.163f, 45.451f
  5389. path.cubicTo(SkBits2Float(0x41ab8b48), SkBits2Float(0x42356a7d), SkBits2Float(0x41af8523), SkBits2Float(0x423575c1), SkBits2Float(0x41b249be), SkBits2Float(0x42359685)); // 21.443f, 45.354f, 21.94f, 45.365f, 22.286f, 45.397f
  5390. path.cubicTo(SkBits2Float(0x41b3d70e), SkBits2Float(0x4235a1c9), SkBits2Float(0x41b6168b), SkBits2Float(0x4235cdd1), SkBits2Float(0x41b7e770), SkBits2Float(0x4235ad0c)); // 22.48f, 45.408f, 22.761f, 45.451f, 22.988f, 45.419f
  5391. path.cubicTo(SkBits2Float(0x41bac087), SkBits2Float(0x42359685), SkBits2Float(0x41bd6e9b), SkBits2Float(0x4234fbe5), SkBits2Float(0x41c03337), SkBits2Float(0x4234af18)); // 23.344f, 45.397f, 23.679f, 45.246f, 24.025f, 45.171f
  5392. path.cubicTo(SkBits2Float(0x41c2cac4), SkBits2Float(0x42346145), SkBits2Float(0x41c56252), SkBits2Float(0x4234820a), SkBits2Float(0x41c81066), SkBits2Float(0x42346145)); // 24.349f, 45.095f, 24.673f, 45.127f, 25.008f, 45.095f
  5393. path.cubicTo(SkBits2Float(0x41c824e1), SkBits2Float(0x42340935), SkBits2Float(0x41c89378), SkBits2Float(0x42330a3b), SkBits2Float(0x41c7b649), SkBits2Float(0x4232fef7)); // 25.018f, 45.009f, 25.072f, 44.76f, 24.964f, 44.749f
  5394. path.cubicTo(SkBits2Float(0x41c6d91a), SkBits2Float(0x4232e976), SkBits2Float(0x41c5a3da), SkBits2Float(0x42338416), SkBits2Float(0x41c51ebc), SkBits2Float(0x4233a4da)); // 24.856f, 44.728f, 24.705f, 44.879f, 24.64f, 44.911f
  5395. path.cubicTo(SkBits2Float(0x41c42b06), SkBits2Float(0x4233bb61), SkBits2Float(0x41c2cac4), SkBits2Float(0x4233d0e2), SkBits2Float(0x41c1d70e), SkBits2Float(0x4233e769)); // 24.521f, 44.933f, 24.349f, 44.954f, 24.23f, 44.976f
  5396. path.cubicTo(SkBits2Float(0x41c08b47), SkBits2Float(0x4233f2ad), SkBits2Float(0x41bf1272), SkBits2Float(0x4233c6a4), SkBits2Float(0x41bdf3ba), SkBits2Float(0x4233bb61)); // 24.068f, 44.987f, 23.884f, 44.944f, 23.744f, 44.933f
  5397. path.cubicTo(SkBits2Float(0x41bcd2f5), SkBits2Float(0x4233b01d), SkBits2Float(0x41bbf5c6), SkBits2Float(0x4233b01d), SkBits2Float(0x41baed95), SkBits2Float(0x4233a4da)); // 23.603f, 44.922f, 23.495f, 44.922f, 23.366f, 44.911f
  5398. path.cubicTo(SkBits2Float(0x41ba26ed), SkBits2Float(0x42338f59), SkBits2Float(0x41b91cb0), SkBits2Float(0x4233580d), SkBits2Float(0x41b83f81), SkBits2Float(0x4233580d)); // 23.269f, 44.89f, 23.139f, 44.836f, 23.031f, 44.836f
  5399. path.cubicTo(SkBits2Float(0x41b4b43d), SkBits2Float(0x42333642), SkBits2Float(0x41b19791), SkBits2Float(0x4233a4da), SkBits2Float(0x41aea7f4), SkBits2Float(0x4233d0e2)); // 22.588f, 44.803f, 22.199f, 44.911f, 21.832f, 44.954f
  5400. path.cubicTo(SkBits2Float(0x41aba1cf), SkBits2Float(0x42340934), SkBits2Float(0x41a7666b), SkBits2Float(0x4233e769), SkBits2Float(0x41a4b856), SkBits2Float(0x42338415)); // 21.454f, 45.009f, 20.925f, 44.976f, 20.59f, 44.879f
  5401. path.cubicTo(SkBits2Float(0x41a46046), SkBits2Float(0x423378d1), SkBits2Float(0x41a3f1ae), SkBits2Float(0x4233580d), SkBits2Float(0x41a3c6ac), SkBits2Float(0x42334cc9)); // 20.547f, 44.868f, 20.493f, 44.836f, 20.472f, 44.825f
  5402. path.cubicTo(SkBits2Float(0x41a28f60), SkBits2Float(0x4233157d), SkBits2Float(0x41a19db6), SkBits2Float(0x42330a3a), SkBits2Float(0x41a0c087), SkBits2Float(0x4232c7aa)); // 20.32f, 44.771f, 20.202f, 44.76f, 20.094f, 44.695f
  5403. path.cubicTo(SkBits2Float(0x41a0eb89), SkBits2Float(0x4232bc66), SkBits2Float(0x41a0eb89), SkBits2Float(0x4232905e), SkBits2Float(0x41a10210), SkBits2Float(0x4232905e)); // 20.115f, 44.684f, 20.115f, 44.641f, 20.126f, 44.641f
  5404. path.cubicTo(SkBits2Float(0x41a19db6), SkBits2Float(0x42325912), SkBits2Float(0x41a2645e), SkBits2Float(0x42326f99), SkBits2Float(0x41a35608), SkBits2Float(0x42326f99)); // 20.202f, 44.587f, 20.299f, 44.609f, 20.417f, 44.609f
  5405. path.cubicTo(SkBits2Float(0x41a476cd), SkBits2Float(0x42324ed4), SkBits2Float(0x41a5ed95), SkBits2Float(0x4232384d), SkBits2Float(0x41a724e1), SkBits2Float(0x42320c45)); // 20.558f, 44.577f, 20.741f, 44.555f, 20.893f, 44.512f
  5406. path.cubicTo(SkBits2Float(0x41a8c8b8), SkBits2Float(0x4231c9b6), SkBits2Float(0x41aa999d), SkBits2Float(0x42316662), SkBits2Float(0x41ac26ed), SkBits2Float(0x4231188f)); // 21.098f, 44.447f, 21.325f, 44.35f, 21.519f, 44.274f
  5407. path.cubicTo(SkBits2Float(0x41af168b), SkBits2Float(0x423072ac), SkBits2Float(0x41b249be), SkBits2Float(0x42300f58), SkBits2Float(0x41b57ae5), SkBits2Float(0x422fe249)); // 21.886f, 44.112f, 22.286f, 44.015f, 22.685f, 43.971f
  5408. path.cubicTo(SkBits2Float(0x41b66e9b), SkBits2Float(0x422fd80c), SkBits2Float(0x41b7d0e9), SkBits2Float(0x422fee93), SkBits2Float(0x41b89791), SkBits2Float(0x422fee93)); // 22.804f, 43.961f, 22.977f, 43.983f, 23.074f, 43.983f
  5409. path.cubicTo(SkBits2Float(0x41bb1897), SkBits2Float(0x42300f58), SkBits2Float(0x41bd2d12), SkBits2Float(0x423024d9), SkBits2Float(0x41bfc49f), SkBits2Float(0x4230301c)); // 23.387f, 44.015f, 23.647f, 44.036f, 23.971f, 44.047f
  5410. path.cubicTo(SkBits2Float(0x41c0e357), SkBits2Float(0x423046a3), SkBits2Float(0x41c245a5), SkBits2Float(0x42305c24), SkBits2Float(0x41c3a7f3), SkBits2Float(0x423051e7)); // 24.111f, 44.069f, 24.284f, 44.09f, 24.457f, 44.08f
  5411. path.cubicTo(SkBits2Float(0x41c50835), SkBits2Float(0x423046a3), SkBits2Float(0x41c69791), SkBits2Float(0x42300f58), SkBits2Float(0x41c79fc2), SkBits2Float(0x422fb641)); // 24.629f, 44.069f, 24.824f, 44.015f, 24.953f, 43.928f
  5412. path.cubicTo(SkBits2Float(0x41c7f9df), SkBits2Float(0x422fa0c0), SkBits2Float(0x41c86876), SkBits2Float(0x422f5e31), SkBits2Float(0x41c8eb89), SkBits2Float(0x422f52ed)); // 24.997f, 43.907f, 25.051f, 43.842f, 25.115f, 43.831f
  5413. path.cubicTo(SkBits2Float(0x41c9b43d), SkBits2Float(0x422f3c66), SkBits2Float(0x41c9df3f), SkBits2Float(0x422fb641), SkBits2Float(0x41c9f5c6), SkBits2Float(0x42300f57)); // 25.213f, 43.809f, 25.234f, 43.928f, 25.245f, 44.015f
  5414. path.cubicTo(SkBits2Float(0x41ca0c4d), SkBits2Float(0x4230e143), SkBits2Float(0x41c9df3f), SkBits2Float(0x42319ca7), SkBits2Float(0x41c9f5c6), SkBits2Float(0x4232384d)); // 25.256f, 44.22f, 25.234f, 44.403f, 25.245f, 44.555f
  5415. path.cubicTo(SkBits2Float(0x41ca395c), SkBits2Float(0x4234fbe2), SkBits2Float(0x41ca22d4), SkBits2Float(0x4237cabc), SkBits2Float(0x41ca7ae5), SkBits2Float(0x423a6d8c)); // 25.278f, 45.246f, 25.267f, 45.948f, 25.31f, 46.607f
  5416. path.cubicTo(SkBits2Float(0x41ca916c), SkBits2Float(0x423b3f78), SkBits2Float(0x41ca645e), SkBits2Float(0x423ca1c5), SkBits2Float(0x41ca916c), SkBits2Float(0x423d9475)); // 25.321f, 46.812f, 25.299f, 47.158f, 25.321f, 47.395f
  5417. path.cubicTo(SkBits2Float(0x41ca916c), SkBits2Float(0x423daafc), SkBits2Float(0x41ca7ae5), SkBits2Float(0x423dd704), SkBits2Float(0x41ca916c), SkBits2Float(0x423dec85)); // 25.321f, 47.417f, 25.31f, 47.46f, 25.321f, 47.481f
  5418. path.cubicTo(SkBits2Float(0x41caa5e7), SkBits2Float(0x423e0e50), SkBits2Float(0x41cb0004), SkBits2Float(0x423e459c), SkBits2Float(0x41cb2b06), SkBits2Float(0x423e50df)); // 25.331f, 47.514f, 25.375f, 47.568f, 25.396f, 47.579f
  5419. path.cubicTo(SkBits2Float(0x41cb6e9c), SkBits2Float(0x423e5c23), SkBits2Float(0x41ce47b2), SkBits2Float(0x423e7ce7), SkBits2Float(0x41ce8b48), SkBits2Float(0x423e6660)); // 25.429f, 47.59f, 25.785f, 47.622f, 25.818f, 47.6f
  5420. path.lineTo(SkBits2Float(0x41ceb64a), SkBits2Float(0x423e5c23)); // 25.839f, 47.59f
  5421. path.cubicTo(SkBits2Float(0x41d1395c), SkBits2Float(0x423e5c23), SkBits2Float(0x41d41273), SkBits2Float(0x423e50df), SkBits2Float(0x41d6666b), SkBits2Float(0x423e6660)); // 26.153f, 47.59f, 26.509f, 47.579f, 26.8f, 47.6f
  5422. path.cubicTo(SkBits2Float(0x41d71898), SkBits2Float(0x423e7ce7), SkBits2Float(0x41d80a42), SkBits2Float(0x423e5c23), SkBits2Float(0x41d8a5e8), SkBits2Float(0x423e7ce7)); // 26.887f, 47.622f, 27.005f, 47.59f, 27.081f, 47.622f
  5423. path.cubicTo(SkBits2Float(0x41d8d2f6), SkBits2Float(0x423e882b), SkBits2Float(0x41d8d2f6), SkBits2Float(0x423e9268), SkBits2Float(0x41d8fdf8), SkBits2Float(0x423e9eb2)); // 27.103f, 47.633f, 27.103f, 47.643f, 27.124f, 47.655f
  5424. path.cubicTo(SkBits2Float(0x41d8e771), SkBits2Float(0x423ebf77), SkBits2Float(0x41d8fdf8), SkBits2Float(0x423ed4f8), SkBits2Float(0x41d8e771), SkBits2Float(0x423eeb7f)); // 27.113f, 47.687f, 27.124f, 47.708f, 27.113f, 47.73f
  5425. path.cubicTo(SkBits2Float(0x41d88f61), SkBits2Float(0x423f4496), SkBits2Float(0x41d71898), SkBits2Float(0x423f4496), SkBits2Float(0x41d6aa00), SkBits2Float(0x423f9162)); // 27.07f, 47.817f, 26.887f, 47.817f, 26.833f, 47.892f
  5426. path.cubicTo(SkBits2Float(0x41d547b2), SkBits2Float(0x42406e91), SkBits2Float(0x41d43d75), SkBits2Float(0x4241ba58), SkBits2Float(0x41d38d54), SkBits2Float(0x4242b952)); // 26.66f, 48.108f, 26.53f, 48.432f, 26.444f, 48.681f
  5427. path.cubicTo(SkBits2Float(0x41d1395c), SkBits2Float(0x4245a8f0), SkBits2Float(0x41d0b231), SkBits2Float(0x42491dac), SkBits2Float(0x41d2147f), SkBits2Float(0x424c2f15)); // 26.153f, 49.415f, 26.087f, 50.279f, 26.26f, 51.046f
  5428. path.cubicTo(SkBits2Float(0x41d2418d), SkBits2Float(0x424c7be2), SkBits2Float(0x41d2999e), SkBits2Float(0x424cc9b5), SkBits2Float(0x41d2b025), SkBits2Float(0x424d0c44)); // 26.282f, 51.121f, 26.325f, 51.197f, 26.336f, 51.262f
  5429. path.cubicTo(SkBits2Float(0x41d33544), SkBits2Float(0x424dc7a8), SkBits2Float(0x41d3a3db), SkBits2Float(0x424e8413), SkBits2Float(0x41d453fc), SkBits2Float(0x424f136f)); // 26.401f, 51.445f, 26.455f, 51.629f, 26.541f, 51.769f
  5430. path.cubicTo(SkBits2Float(0x41d453fc), SkBits2Float(0x424f136f), SkBits2Float(0x41d59fc3), SkBits2Float(0x42506a79), SkBits2Float(0x41d6c087), SkBits2Float(0x4250e454)); // 26.541f, 51.769f, 26.703f, 52.104f, 26.844f, 52.223f
  5431. path.cubicTo(SkBits2Float(0x41d6c087), SkBits2Float(0x4250ef98), SkBits2Float(0x41d6eb89), SkBits2Float(0x4251105c), SkBits2Float(0x41d70210), SkBits2Float(0x4251105c)); // 26.844f, 52.234f, 26.865f, 52.266f, 26.876f, 52.266f
  5432. path.cubicTo(SkBits2Float(0x41d71897), SkBits2Float(0x42511ba0), SkBits2Float(0x41d75a20), SkBits2Float(0x4251105c), SkBits2Float(0x41d7872f), SkBits2Float(0x4251105c)); // 26.887f, 52.277f, 26.919f, 52.266f, 26.941f, 52.266f
  5433. path.cubicTo(SkBits2Float(0x41d87ae5), SkBits2Float(0x42501ca6), SkBits2Float(0x41d9147f), SkBits2Float(0x424f136e), SkBits2Float(0x41da0835), SkBits2Float(0x424e157b)); // 27.06f, 52.028f, 27.135f, 51.769f, 27.254f, 51.521f
  5434. path.cubicTo(SkBits2Float(0x41da1ebc), SkBits2Float(0x424df4b6), SkBits2Float(0x41db1066), SkBits2Float(0x424d0c44), SkBits2Float(0x41db1066), SkBits2Float(0x424d0100)); // 27.265f, 51.489f, 27.383f, 51.262f, 27.383f, 51.251f
  5435. path.cubicTo(SkBits2Float(0x41db3d74), SkBits2Float(0x424cc9b4), SkBits2Float(0x41db9585), SkBits2Float(0x424c8725), SkBits2Float(0x41dbd91a), SkBits2Float(0x424c5b1d)); // 27.405f, 51.197f, 27.448f, 51.132f, 27.481f, 51.089f
  5436. path.cubicTo(SkBits2Float(0x41dc5e39), SkBits2Float(0x424bcbc1), SkBits2Float(0x41dcf7d2), SkBits2Float(0x424b301b), SkBits2Float(0x41dd7cf1), SkBits2Float(0x424aac02)); // 27.546f, 50.949f, 27.621f, 50.797f, 27.686f, 50.668f
  5437. path.cubicTo(SkBits2Float(0x41ddd501), SkBits2Float(0x424a5e2f), SkBits2Float(0x41ddeb89), SkBits2Float(0x424a105c), SkBits2Float(0x41de4399), SkBits2Float(0x4249b84c)); // 27.729f, 50.592f, 27.74f, 50.516f, 27.783f, 50.43f
  5438. path.cubicTo(SkBits2Float(0x41de70a7), SkBits2Float(0x4249a1c5), SkBits2Float(0x41def5c6), SkBits2Float(0x42490725), SkBits2Float(0x41df20c8), SkBits2Float(0x4248e660)); // 27.805f, 50.408f, 27.87f, 50.257f, 27.891f, 50.225f
  5439. path.cubicTo(SkBits2Float(0x41df8f60), SkBits2Float(0x42488206), SkBits2Float(0x41e0c49f), SkBits2Float(0x42474cc6), SkBits2Float(0x41e10835), SkBits2Float(0x42472c02)); // 27.945f, 50.127f, 28.096f, 49.825f, 28.129f, 49.793f
  5440. path.cubicTo(SkBits2Float(0x41e11ebc), SkBits2Float(0x42472c02), SkBits2Float(0x41e13337), SkBits2Float(0x4246fef4), SkBits2Float(0x41e13337), SkBits2Float(0x4246f4b6)); // 28.14f, 49.793f, 28.15f, 49.749f, 28.15f, 49.739f
  5441. path.cubicTo(SkBits2Float(0x41e149be), SkBits2Float(0x4246c7a8), SkBits2Float(0x41e226ed), SkBits2Float(0x42461787), SkBits2Float(0x41e253fc), SkBits2Float(0x4245df35)); // 28.161f, 49.695f, 28.269f, 49.523f, 28.291f, 49.468f
  5442. path.cubicTo(SkBits2Float(0x41e27efe), SkBits2Float(0x4245d3f1), SkBits2Float(0x41e2ac0c), SkBits2Float(0x42459ca6), SkBits2Float(0x41e2ac0c), SkBits2Float(0x42459162)); // 28.312f, 49.457f, 28.334f, 49.403f, 28.334f, 49.392f
  5443. path.cubicTo(SkBits2Float(0x41e372b4), SkBits2Float(0x4244e141), SkBits2Float(0x41e4666a), SkBits2Float(0x42445c23), SkBits2Float(0x41e4eb89), SkBits2Float(0x42437ef3)); // 28.431f, 49.22f, 28.55f, 49.09f, 28.615f, 48.874f
  5444. path.cubicTo(SkBits2Float(0x41e4a7f3), SkBits2Float(0x424373af), SkBits2Float(0x41e47ae5), SkBits2Float(0x42435e2e), SkBits2Float(0x41e4666a), SkBits2Float(0x42435e2e)); // 28.582f, 48.863f, 28.56f, 48.842f, 28.55f, 48.842f
  5445. path.cubicTo(SkBits2Float(0x41e3893b), SkBits2Float(0x42433c63), SkBits2Float(0x41e1fbeb), SkBits2Float(0x4243686b), SkBits2Float(0x41e18b47), SkBits2Float(0x42431b9f)); // 28.442f, 48.809f, 28.248f, 48.852f, 28.193f, 48.777f
  5446. path.cubicTo(SkBits2Float(0x41e16045), SkBits2Float(0x4242f9d4), SkBits2Float(0x41e18b47), SkBits2Float(0x4242ee91), SkBits2Float(0x41e16045), SkBits2Float(0x4242d910)); // 28.172f, 48.744f, 28.193f, 48.733f, 28.172f, 48.712f
  5447. path.cubicTo(SkBits2Float(0x41e1a1ce), SkBits2Float(0x4242b84b), SkBits2Float(0x41e1fbeb), SkBits2Float(0x42429681), SkBits2Float(0x41e226ed), SkBits2Float(0x42429681)); // 28.204f, 48.68f, 28.248f, 48.647f, 28.269f, 48.647f
  5448. path.cubicTo(SkBits2Float(0x41e3cac4), SkBits2Float(0x42425f35), SkBits2Float(0x41e9c087), SkBits2Float(0x4242b84c), SkBits2Float(0x41ea5c2c), SkBits2Float(0x424248ae)); // 28.474f, 48.593f, 29.219f, 48.68f, 29.295f, 48.571f
  5449. path.cubicTo(SkBits2Float(0x41eacac4), SkBits2Float(0x4241fbe1), SkBits2Float(0x41eacac4), SkBits2Float(0x42414aba), SkBits2Float(0x41eaf7d2), SkBits2Float(0x4240d0df)); // 29.349f, 48.496f, 29.349f, 48.323f, 29.371f, 48.204f
  5450. path.cubicTo(SkBits2Float(0x41eb395b), SkBits2Float(0x4240580a), SkBits2Float(0x41eba7f3), SkBits2Float(0x423fb121), SkBits2Float(0x41ebd501), SkBits2Float(0x423f21c4)); // 29.403f, 48.086f, 29.457f, 47.923f, 29.479f, 47.783f
  5451. path.cubicTo(SkBits2Float(0x41ec2d11), SkBits2Float(0x423e4fd8), SkBits2Float(0x41ec5813), SkBits2Float(0x423d936e), SkBits2Float(0x41ecb230), SkBits2Float(0x423cb63f)); // 29.522f, 47.578f, 29.543f, 47.394f, 29.587f, 47.178f
  5452. path.cubicTo(SkBits2Float(0x41ecc8b7), SkBits2Float(0x423c5e2f), SkBits2Float(0x41edba61), SkBits2Float(0x423b332d), SkBits2Float(0x41ed8f5f), SkBits2Float(0x423ac495)); // 29.598f, 47.092f, 29.716f, 46.8f, 29.695f, 46.692f
  5453. path.cubicTo(SkBits2Float(0x41ed6251), SkBits2Float(0x423a8d49), SkBits2Float(0x41ec9ba9), SkBits2Float(0x423a407c), SkBits2Float(0x41ec2d11), SkBits2Float(0x423a3539)); // 29.673f, 46.638f, 29.576f, 46.563f, 29.522f, 46.552f
  5454. path.cubicTo(SkBits2Float(0x41ec0003), SkBits2Float(0x423a29f5), SkBits2Float(0x41ebeb88), SkBits2Float(0x423a3539), SkBits2Float(0x41ebd501), SkBits2Float(0x423a3539)); // 29.5f, 46.541f, 29.49f, 46.552f, 29.479f, 46.552f
  5455. path.cubicTo(SkBits2Float(0x41eb6669), SkBits2Float(0x423a29f5), SkBits2Float(0x41ea72b3), SkBits2Float(0x4239f2aa), SkBits2Float(0x41e9c086), SkBits2Float(0x423a0931)); // 29.425f, 46.541f, 29.306f, 46.487f, 29.219f, 46.509f
  5456. path.cubicTo(SkBits2Float(0x41e99584), SkBits2Float(0x423a0931), SkBits2Float(0x41e96876), SkBits2Float(0x423a29f6), SkBits2Float(0x41e953fb), SkBits2Float(0x423a3539)); // 29.198f, 46.509f, 29.176f, 46.541f, 29.166f, 46.552f
  5457. path.cubicTo(SkBits2Float(0x41e96876), SkBits2Float(0x423a8d49), SkBits2Float(0x41e9c086), SkBits2Float(0x423acfd9), SkBits2Float(0x41e9d70d), SkBits2Float(0x423b28ef)); // 29.176f, 46.638f, 29.219f, 46.703f, 29.23f, 46.79f
  5458. path.cubicTo(SkBits2Float(0x41ea041b), SkBits2Float(0x423bd910), SkBits2Float(0x41e8fbea), SkBits2Float(0x423c73b0), SkBits2Float(0x41e849bd), SkBits2Float(0x423cac01)); // 29.252f, 46.962f, 29.123f, 47.113f, 29.036f, 47.168f
  5459. path.cubicTo(SkBits2Float(0x41e75607), SkBits2Float(0x423cf8ce), SkBits2Float(0x41e5f3b9), SkBits2Float(0x423ced8a), SkBits2Float(0x41e4eb88), SkBits2Float(0x423cd809)); // 28.917f, 47.243f, 28.744f, 47.232f, 28.615f, 47.211f
  5460. path.cubicTo(SkBits2Float(0x41e372b3), SkBits2Float(0x423cb63e), SkBits2Float(0x41e2ac0b), SkBits2Float(0x423c0517), SkBits2Float(0x41e10834), SkBits2Float(0x423c52ea)); // 28.431f, 47.178f, 28.334f, 47.005f, 28.129f, 47.081f
  5461. path.cubicTo(SkBits2Float(0x41e0db26), SkBits2Float(0x423cd809), SkBits2Float(0x41e0999c), SkBits2Float(0x423d46a0), SkBits2Float(0x41dfd0e8), SkBits2Float(0x423d72a8)); // 28.107f, 47.211f, 28.075f, 47.319f, 27.977f, 47.362f
  5462. path.cubicTo(SkBits2Float(0x41deb230), SkBits2Float(0x423dcab8), SkBits2Float(0x41dd3b67), SkBits2Float(0x423d8829), SkBits2Float(0x41dc312a), SkBits2Float(0x423d46a0)); // 27.837f, 47.448f, 27.654f, 47.383f, 27.524f, 47.319f
  5463. path.cubicTo(SkBits2Float(0x41dae563), SkBits2Float(0x423cf8cd), SkBits2Float(0x41d98316), SkBits2Float(0x423cccc5), SkBits2Float(0x41d8645d), SkBits2Float(0x423c6971)); // 27.362f, 47.243f, 27.189f, 47.2f, 27.049f, 47.103f
  5464. path.cubicTo(SkBits2Float(0x41d7df3e), SkBits2Float(0x423c52ea), SkBits2Float(0x41d72d11), SkBits2Float(0x423c311f), SkBits2Float(0x41d6a9ff), SkBits2Float(0x423c0517)); // 26.984f, 47.081f, 26.897f, 47.048f, 26.833f, 47.005f
  5465. path.cubicTo(SkBits2Float(0x41d67cf1), SkBits2Float(0x423bfada), SkBits2Float(0x41d572b3), SkBits2Float(0x423b967f), SkBits2Float(0x41d5893a), SkBits2Float(0x423b967f)); // 26.811f, 46.995f, 26.681f, 46.897f, 26.692f, 46.897f
  5466. path.cubicTo(SkBits2Float(0x41d5893a), SkBits2Float(0x423b967f), SkBits2Float(0x41d5b648), SkBits2Float(0x423b6a77), SkBits2Float(0x41d5ccd0), SkBits2Float(0x423b6a77)); // 26.692f, 46.897f, 26.714f, 46.854f, 26.725f, 46.854f
  5467. path.cubicTo(SkBits2Float(0x41d6eb88), SkBits2Float(0x423b3e6f), SkBits2Float(0x41d8374f), SkBits2Float(0x423b967f), SkBits2Float(0x41d8fdf7), SkBits2Float(0x423bad06)); // 26.865f, 46.811f, 27.027f, 46.897f, 27.124f, 46.919f
  5468. path.cubicTo(SkBits2Float(0x41d9c6ab), SkBits2Float(0x423bb84a), SkBits2Float(0x41da49be), SkBits2Float(0x423bb84a), SkBits2Float(0x41db1066), SkBits2Float(0x423bd90e)); // 27.222f, 46.93f, 27.286f, 46.93f, 27.383f, 46.962f
  5469. path.cubicTo(SkBits2Float(0x41db810a), SkBits2Float(0x423bd90e), SkBits2Float(0x41dc5e39), SkBits2Float(0x423bfad9), SkBits2Float(0x41dcf7d3), SkBits2Float(0x423bef95)); // 27.438f, 46.962f, 27.546f, 46.995f, 27.621f, 46.984f
  5470. path.cubicTo(SkBits2Float(0x41ddd502), SkBits2Float(0x423bc38d), SkBits2Float(0x41dd4fe3), SkBits2Float(0x423b332b), SkBits2Float(0x41dd7cf2), SkBits2Float(0x423ab94f)); // 27.729f, 46.941f, 27.664f, 46.8f, 27.686f, 46.681f
  5471. path.cubicTo(SkBits2Float(0x41dda7f4), SkBits2Float(0x423a77c6), SkBits2Float(0x41de2d13), SkBits2Float(0x423a29f3), SkBits2Float(0x41de70a8), SkBits2Float(0x423a136c)); // 27.707f, 46.617f, 27.772f, 46.541f, 27.805f, 46.519f
  5472. path.cubicTo(SkBits2Float(0x41dfba62), SkBits2Float(0x4239c69f), SkBits2Float(0x41e253fc), SkBits2Float(0x423a092f), SkBits2Float(0x41e372b4), SkBits2Float(0x423a4bbe)); // 27.966f, 46.444f, 28.291f, 46.509f, 28.431f, 46.574f
  5473. path.cubicTo(SkBits2Float(0x41e40e5a), SkBits2Float(0x423a6c83), SkBits2Float(0x41e49379), SkBits2Float(0x423a8d47), SkBits2Float(0x41e55a21), SkBits2Float(0x423ab94f)); // 28.507f, 46.606f, 28.572f, 46.638f, 28.669f, 46.681f
  5474. path.lineTo(SkBits2Float(0x41e58523), SkBits2Float(0x423acfd6)); // 28.69f, 46.703f
  5475. path.cubicTo(SkBits2Float(0x41e5b231), SkBits2Float(0x423acfd6), SkBits2Float(0x41e60a42), SkBits2Float(0x423ac492), SkBits2Float(0x41e66252), SkBits2Float(0x423acfd6)); // 28.712f, 46.703f, 28.755f, 46.692f, 28.798f, 46.703f
  5476. path.cubicTo(SkBits2Float(0x41e66252), SkBits2Float(0x423ab94f), SkBits2Float(0x41e68f60), SkBits2Float(0x423ab94f), SkBits2Float(0x41e6a5e8), SkBits2Float(0x423aae0b)); // 28.798f, 46.681f, 28.82f, 46.681f, 28.831f, 46.67f
  5477. path.cubicTo(SkBits2Float(0x41e6fdf8), SkBits2Float(0x423a136b), SkBits2Float(0x41e5dd34), SkBits2Float(0x423978cc), SkBits2Float(0x41e68f61), SkBits2Float(0x4238fef0)); // 28.874f, 46.519f, 28.733f, 46.368f, 28.82f, 46.249f
  5478. path.cubicTo(SkBits2Float(0x41e72b07), SkBits2Float(0x42389058), SkBits2Float(0x41eaf7d4), SkBits2Float(0x42391577), SkBits2Float(0x41ec5815), SkBits2Float(0x4238f3ac)); // 28.896f, 46.141f, 29.371f, 46.271f, 29.543f, 46.238f
  5479. path.cubicTo(SkBits2Float(0x41ef1cb1), SkBits2Float(0x4238bd66), SkBits2Float(0x41ed6252), SkBits2Float(0x4237d4f4), SkBits2Float(0x41ede771), SkBits2Float(0x42369eae)); // 29.889f, 46.185f, 29.673f, 45.958f, 29.738f, 45.655f
  5480. path.cubicTo(SkBits2Float(0x41ee28fa), SkBits2Float(0x423651e1), SkBits2Float(0x41ee8317), SkBits2Float(0x42366868), SkBits2Float(0x41eedb27), SkBits2Float(0x42365c1f)); // 29.77f, 45.58f, 29.814f, 45.602f, 29.857f, 45.59f
  5481. path.cubicTo(SkBits2Float(0x41ef0629), SkBits2Float(0x4236a9f2), SkBits2Float(0x41ef3337), SkBits2Float(0x42371889), SkBits2Float(0x41ef3337), SkBits2Float(0x42375b19)); // 29.878f, 45.666f, 29.9f, 45.774f, 29.9f, 45.839f
  5482. path.cubicTo(SkBits2Float(0x41ef49be), SkBits2Float(0x4237e038), SkBits2Float(0x41ef3337), SkBits2Float(0x42386450), SkBits2Float(0x41ef49be), SkBits2Float(0x4238d2e8)); // 29.911f, 45.969f, 29.9f, 46.098f, 29.911f, 46.206f
  5483. path.cubicTo(SkBits2Float(0x41ef8b47), SkBits2Float(0x42394cc3), SkBits2Float(0x41eff9df), SkBits2Float(0x4239e763), SkBits2Float(0x41f026ed), SkBits2Float(0x423a613e)); // 29.943f, 46.325f, 29.997f, 46.476f, 30.019f, 46.595f
  5484. path.cubicTo(SkBits2Float(0x41f0ac0c), SkBits2Float(0x423b967d), SkBits2Float(0x41f11897), SkBits2Float(0x423ca0bb), SkBits2Float(0x41f1893b), SkBits2Float(0x423dd5fa)); // 30.084f, 46.897f, 30.137f, 47.157f, 30.192f, 47.459f
  5485. path.cubicTo(SkBits2Float(0x41f19db6), SkBits2Float(0x423e1889), SkBits2Float(0x41f1f5c6), SkBits2Float(0x423e7bdd), SkBits2Float(0x41f20e5a), SkBits2Float(0x423ebe6d)); // 30.202f, 47.524f, 30.245f, 47.621f, 30.257f, 47.686f
  5486. path.cubicTo(SkBits2Float(0x41f27ae5), SkBits2Float(0x423f9059), SkBits2Float(0x41f2be7b), SkBits2Float(0x42406d88), SkBits2Float(0x41f3168b), SkBits2Float(0x424128ec)); // 30.31f, 47.891f, 30.343f, 48.107f, 30.386f, 48.29f
  5487. path.cubicTo(SkBits2Float(0x41f35814), SkBits2Float(0x42418203), SkBits2Float(0x41f35814), SkBits2Float(0x4241e556), SkBits2Float(0x41f38523), SkBits2Float(0x42423329)); // 30.418f, 48.377f, 30.418f, 48.474f, 30.44f, 48.55f
  5488. path.cubicTo(SkBits2Float(0x41f3b025), SkBits2Float(0x424248aa), SkBits2Float(0x41f420c9), SkBits2Float(0x424275b8), SkBits2Float(0x41f46252), SkBits2Float(0x424280fc)); // 30.461f, 48.571f, 30.516f, 48.615f, 30.548f, 48.626f
  5489. path.cubicTo(SkBits2Float(0x41f4fdf8), SkBits2Float(0x4242967d), SkBits2Float(0x41f5db27), SkBits2Float(0x424275b8), SkBits2Float(0x41f674c1), SkBits2Float(0x424280fc)); // 30.624f, 48.647f, 30.732f, 48.615f, 30.807f, 48.626f
  5490. path.cubicTo(SkBits2Float(0x41f8f5c7), SkBits2Float(0x4242967d), SkBits2Float(0x41fc5609), SkBits2Float(0x424280fc), SkBits2Float(0x41feeb8a), SkBits2Float(0x4242a1c1)); // 31.12f, 48.647f, 31.542f, 48.626f, 31.865f, 48.658f
  5491. path.cubicTo(SkBits2Float(0x41ff45a7), SkBits2Float(0x4242a1c1), SkBits2Float(0x41ffdf40), SkBits2Float(0x424280fc), SkBits2Float(0x4200322f), SkBits2Float(0x4242a1c1)); // 31.909f, 48.658f, 31.984f, 48.626f, 32.049f, 48.658f
  5492. path.cubicTo(SkBits2Float(0x420048b6), SkBits2Float(0x4242a1c1), SkBits2Float(0x42005e37), SkBits2Float(0x4242c286), SkBits2Float(0x420074be), SkBits2Float(0x4242d90d)); // 32.071f, 48.658f, 32.092f, 48.69f, 32.114f, 48.712f
  5493. path.cubicTo(SkBits2Float(0x420074be), SkBits2Float(0x4242ee8e), SkBits2Float(0x42008002), SkBits2Float(0x42431b9c), SkBits2Float(0x420074be), SkBits2Float(0x4243311d)); // 32.114f, 48.733f, 32.125f, 48.777f, 32.114f, 48.798f
  5494. path.lineTo(SkBits2Float(0x420052f3), SkBits2Float(0x42433c61)); // 32.081f, 48.809f
  5495. path.cubicTo(SkBits2Float(0x42001cad), SkBits2Float(0x42439fb5), SkBits2Float(0x41ff2f1d), SkBits2Float(0x42436869), SkBits2Float(0x41fe7cf0), SkBits2Float(0x4243aaf9)); // 32.028f, 48.906f, 31.898f, 48.852f, 31.811f, 48.917f
  5496. path.cubicTo(SkBits2Float(0x41fe24e0), SkBits2Float(0x4243cbbe), SkBits2Float(0x41fd3336), SkBits2Float(0x4244cab7), SkBits2Float(0x41fd0627), SkBits2Float(0x42450203)); // 31.768f, 48.949f, 31.65f, 49.198f, 31.628f, 49.252f
  5497. path.cubicTo(SkBits2Float(0x41fcc291), SkBits2Float(0x4245438c), SkBits2Float(0x41fcc291), SkBits2Float(0x42457bde), SkBits2Float(0x41fcae17), SkBits2Float(0x4245be6d)); // 31.595f, 49.316f, 31.595f, 49.371f, 31.585f, 49.436f
  5498. path.cubicTo(SkBits2Float(0x41fc9790), SkBits2Float(0x4245fff6), SkBits2Float(0x41fc28f8), SkBits2Float(0x4246634a), SkBits2Float(0x41fc1271), SkBits2Float(0x4246b11d)); // 31.574f, 49.5f, 31.52f, 49.597f, 31.509f, 49.673f
  5499. path.cubicTo(SkBits2Float(0x41fbba61), SkBits2Float(0x42478e4c), SkBits2Float(0x41fba3d9), SkBits2Float(0x424880fc), SkBits2Float(0x41fbba61), SkBits2Float(0x424974b2)); // 31.466f, 49.889f, 31.455f, 50.126f, 31.466f, 50.364f
  5500. path.cubicTo(SkBits2Float(0x41fbd0e8), SkBits2Float(0x424a7de9), SkBits2Float(0x41fc8109), SkBits2Float(0x424b5b18), SkBits2Float(0x41fd47b1), SkBits2Float(0x424c4ecf)); // 31.477f, 50.623f, 31.563f, 50.839f, 31.66f, 51.077f
  5501. path.cubicTo(SkBits2Float(0x41fd8b47), SkBits2Float(0x424c915e), SkBits2Float(0x41fdccd0), SkBits2Float(0x424cde2b), SkBits2Float(0x41fe3b67), SkBits2Float(0x424d167d)); // 31.693f, 51.142f, 31.725f, 51.217f, 31.779f, 51.272f
  5502. path.cubicTo(SkBits2Float(0x41fe9377), SkBits2Float(0x424d4dc9), SkBits2Float(0x41fec086), SkBits2Float(0x424d8f52), SkBits2Float(0x41ff2f1d), SkBits2Float(0x424dc69e)); // 31.822f, 51.326f, 31.844f, 51.39f, 31.898f, 51.444f
  5503. path.cubicTo(SkBits2Float(0x41ff70a6), SkBits2Float(0x424df3ac), SkBits2Float(0x41ffdf3e), SkBits2Float(0x424e092d), SkBits2Float(0x42000626), SkBits2Float(0x424e3536)); // 31.93f, 51.488f, 31.984f, 51.509f, 32.006f, 51.552f
  5504. path.cubicTo(SkBits2Float(0x42003d72), SkBits2Float(0x424e6c82), SkBits2Float(0x4200c18a), SkBits2Float(0x424f3e6d), SkBits2Float(0x4201041a), SkBits2Float(0x424f49b1)); // 32.06f, 51.606f, 32.189f, 51.811f, 32.254f, 51.822f
  5505. path.cubicTo(SkBits2Float(0x420172b2), SkBits2Float(0x424f6b7c), SkBits2Float(0x4201ec8d), SkBits2Float(0x424e8309), SkBits2Float(0x42020d51), SkBits2Float(0x424e4bbd)); // 32.362f, 51.855f, 32.481f, 51.628f, 32.513f, 51.574f
  5506. path.cubicTo(SkBits2Float(0x4202be78), SkBits2Float(0x424d5807), SkBits2Float(0x42037ae2), SkBits2Float(0x424c6557), SkBits2Float(0x42044cce), SkBits2Float(0x424b9265)); // 32.686f, 51.336f, 32.87f, 51.099f, 33.075f, 50.893f
  5507. path.cubicTo(SkBits2Float(0x42049aa1), SkBits2Float(0x424b4598), SkBits2Float(0x4204e874), SkBits2Float(0x424ae13e), SkBits2Float(0x42054084), SkBits2Float(0x424a9471)); // 33.151f, 50.818f, 33.227f, 50.72f, 33.313f, 50.645f
  5508. path.cubicTo(SkBits2Float(0x42058d51), SkBits2Float(0x424a51e2), SkBits2Float(0x4206ef9f), SkBits2Float(0x4248fad7), SkBits2Float(0x42071063), SkBits2Float(0x4248cecf)); // 33.388f, 50.58f, 33.734f, 50.245f, 33.766f, 50.202f
  5509. path.cubicTo(SkBits2Float(0x42075e36), SkBits2Float(0x424876bf), SkBits2Float(0x4207cccd), SkBits2Float(0x4248342f), SkBits2Float(0x42083021), SkBits2Float(0x4247e65c)); // 33.842f, 50.116f, 33.95f, 50.051f, 34.047f, 49.975f
  5510. path.cubicTo(SkBits2Float(0x42088831), SkBits2Float(0x42478308), SkBits2Float(0x4208f6c9), SkBits2Float(0x4247363b), SkBits2Float(0x420970a4), SkBits2Float(0x4246f3ac)); // 34.133f, 49.878f, 34.241f, 49.803f, 34.36f, 49.738f
  5511. path.cubicTo(SkBits2Float(0x4209f5c3), SkBits2Float(0x42469a95), SkBits2Float(0x420a645a), SkBits2Float(0x42464285), SkBits2Float(0x420add2f), SkBits2Float(0x4245f4b2)); // 34.49f, 49.651f, 34.598f, 49.565f, 34.716f, 49.489f
  5512. path.cubicTo(SkBits2Float(0x420b2b02), SkBits2Float(0x4245be6c), SkBits2Float(0x420bc5a2), SkBits2Float(0x42455a12), SkBits2Float(0x420b8418), SkBits2Float(0x4244eb7b)); // 34.792f, 49.436f, 34.943f, 49.338f, 34.879f, 49.23f
  5513. path.cubicTo(SkBits2Float(0x420b624d), SkBits2Float(0x4244cab6), SkBits2Float(0x420b1fbe), SkBits2Float(0x42449eae), SkBits2Float(0x420b0a3d), SkBits2Float(0x42448827)); // 34.846f, 49.198f, 34.781f, 49.155f, 34.76f, 49.133f
  5514. path.cubicTo(SkBits2Float(0x420abd70), SkBits2Float(0x424450db), SkBits2Float(0x420a9ba5), SkBits2Float(0x42440e4c), SkBits2Float(0x420a5916), SkBits2Float(0x4243d700)); // 34.685f, 49.079f, 34.652f, 49.014f, 34.587f, 48.96f
  5515. path.cubicTo(SkBits2Float(0x420a3851), SkBits2Float(0x4243b63b), SkBits2Float(0x420a21ca), SkBits2Float(0x4243b63b), SkBits2Float(0x4209f5c2), SkBits2Float(0x42439fb4)); // 34.555f, 48.928f, 34.533f, 48.928f, 34.49f, 48.906f
  5516. path.cubicTo(SkBits2Float(0x4209ea7e), SkBits2Float(0x42439470), SkBits2Float(0x4209ea7e), SkBits2Float(0x424373ac), SkBits2Float(0x4209d3f7), SkBits2Float(0x42436868)); // 34.479f, 48.895f, 34.479f, 48.863f, 34.457f, 48.852f
  5517. path.cubicTo(SkBits2Float(0x4209b332), SkBits2Float(0x424352e7), SkBits2Float(0x42099db1), SkBits2Float(0x42435e2b), SkBits2Float(0x42097be7), SkBits2Float(0x424352e7)); // 34.425f, 48.831f, 34.404f, 48.842f, 34.371f, 48.831f
  5518. path.cubicTo(SkBits2Float(0x420970a3), SkBits2Float(0x42433c60), SkBits2Float(0x42096560), SkBits2Float(0x42431b9b), SkBits2Float(0x4209449b), SkBits2Float(0x42431b9b)); // 34.36f, 48.809f, 34.349f, 48.777f, 34.317f, 48.777f
  5519. path.cubicTo(SkBits2Float(0x4208f6c8), SkBits2Float(0x4242e349), SkBits2Float(0x42089eb8), SkBits2Float(0x4242c284), SkBits2Float(0x42083020), SkBits2Float(0x4242a1c0)); // 34.241f, 48.722f, 34.155f, 48.69f, 34.047f, 48.658f
  5520. path.cubicTo(SkBits2Float(0x42080f5b), SkBits2Float(0x4242967c), SkBits2Float(0x4207d810), SkBits2Float(0x42425f31), SkBits2Float(0x4207c188), SkBits2Float(0x42425f31)); // 34.015f, 48.647f, 33.961f, 48.593f, 33.939f, 48.593f
  5521. path.cubicTo(SkBits2Float(0x420748b3), SkBits2Float(0x424227e5), SkBits2Float(0x42066040), SkBits2Float(0x4241fbdd), SkBits2Float(0x4205b957), SkBits2Float(0x42421ca2)); // 33.821f, 48.539f, 33.594f, 48.496f, 33.431f, 48.528f
  5522. path.cubicTo(SkBits2Float(0x4204c6a7), SkBits2Float(0x42423329), SkBits2Float(0x42041580), SkBits2Float(0x4242ad04), SkBits2Float(0x42032d0d), SkBits2Float(0x4242c285)); // 33.194f, 48.55f, 33.021f, 48.669f, 32.794f, 48.69f
  5523. path.cubicTo(SkBits2Float(0x42032d0d), SkBits2Float(0x4242b848), SkBits2Float(0x420322d0), SkBits2Float(0x4242a1c0), SkBits2Float(0x42032d0d), SkBits2Float(0x4242a1c0)); // 32.794f, 48.68f, 32.784f, 48.658f, 32.794f, 48.658f
  5524. path.cubicTo(SkBits2Float(0x42032d0d), SkBits2Float(0x424280fb), SkBits2Float(0x42036459), SkBits2Float(0x424275b8), SkBits2Float(0x42036f9c), SkBits2Float(0x42426a74)); // 32.794f, 48.626f, 32.848f, 48.615f, 32.859f, 48.604f
  5525. path.cubicTo(SkBits2Float(0x4203e977), SkBits2Float(0x4241cfd4), SkBits2Float(0x4204580f), SkBits2Float(0x42418201), SkBits2Float(0x420529fa), SkBits2Float(0x42413f72)); // 32.978f, 48.453f, 33.086f, 48.377f, 33.291f, 48.312f
  5526. path.lineTo(SkBits2Float(0x42054abf), SkBits2Float(0x424128eb)); // 33.323f, 48.29f
  5527. path.cubicTo(SkBits2Float(0x4205cfde), SkBits2Float(0x4240fde9), SkBits2Float(0x420649b9), SkBits2Float(0x4240fde9), SkBits2Float(0x4206b850), SkBits2Float(0x4240b016)); // 33.453f, 48.248f, 33.572f, 48.248f, 33.68f, 48.172f
  5528. path.cubicTo(SkBits2Float(0x4206a1c9), SkBits2Float(0x4240998f), SkBits2Float(0x4206b850), SkBits2Float(0x42408e4b), SkBits2Float(0x4206a1c9), SkBits2Float(0x424078ca)); // 33.658f, 48.15f, 33.68f, 48.139f, 33.658f, 48.118f
  5529. path.cubicTo(SkBits2Float(0x42068104), SkBits2Float(0x4240363b), SkBits2Float(0x42054081), SkBits2Float(0x423fb11c), SkBits2Float(0x4204d1ea), SkBits2Float(0x423f9057)); // 33.626f, 48.053f, 33.313f, 47.923f, 33.205f, 47.891f
  5530. path.cubicTo(SkBits2Float(0x42044ccb), SkBits2Float(0x423f79d0), SkBits2Float(0x42035915), SkBits2Float(0x423f644f), SkBits2Float(0x4202be75), SkBits2Float(0x423f8513)); // 33.075f, 47.869f, 32.837f, 47.848f, 32.686f, 47.88f
  5531. path.cubicTo(SkBits2Float(0x42022f19), SkBits2Float(0x423f9b9a), SkBits2Float(0x4201c081), SkBits2Float(0x423fde2a), SkBits2Float(0x420125e2), SkBits2Float(0x423ff3ab)); // 32.546f, 47.902f, 32.438f, 47.967f, 32.287f, 47.988f
  5532. path.lineTo(SkBits2Float(0x42010f5b), SkBits2Float(0x423fc7a3)); // 32.265f, 47.945f
  5533. path.cubicTo(SkBits2Float(0x4201a9fb), SkBits2Float(0x423f167c), SkBits2Float(0x42036459), SkBits2Float(0x423d5c1e), SkBits2Float(0x4204580f), SkBits2Float(0x423d198f)); // 32.416f, 47.772f, 32.848f, 47.34f, 33.086f, 47.275f
  5534. path.cubicTo(SkBits2Float(0x4205b957), SkBits2Float(0x423cabfe), SkBits2Float(0x4207c188), SkBits2Float(0x423cd806), SkBits2Float(0x42090d4e), SkBits2Float(0x423d24d3)); // 33.431f, 47.168f, 33.939f, 47.211f, 34.263f, 47.286f
  5535. path.cubicTo(SkBits2Float(0x420ae871), SkBits2Float(0x423d936b), SkBits2Float(0x420c9892), SkBits2Float(0x423e7bdd), SkBits2Float(0x420e6871), SkBits2Float(0x423ed3ee)); // 34.727f, 47.394f, 35.149f, 47.621f, 35.602f, 47.707f
  5536. path.cubicTo(SkBits2Float(0x42103956), SkBits2Float(0x423f438c), SkBits2Float(0x42121479), SkBits2Float(0x423f0b3a), SkBits2Float(0x4213c49a), SkBits2Float(0x423e2e0b)); // 36.056f, 47.816f, 36.52f, 47.761f, 36.942f, 47.545f
  5537. path.cubicTo(SkBits2Float(0x4214cdd1), SkBits2Float(0x423db536), SkBits2Float(0x4215c081), SkBits2Float(0x423d24d4), SkBits2Float(0x42169db1), SkBits2Float(0x423c696f)); // 37.201f, 47.427f, 37.438f, 47.286f, 37.654f, 47.103f
  5538. path.cubicTo(SkBits2Float(0x4216eb84), SkBits2Float(0x423c26e0), SkBits2Float(0x4217df3a), SkBits2Float(0x423afbde), SkBits2Float(0x4218580f), SkBits2Float(0x423b75b9)); // 37.73f, 47.038f, 37.968f, 46.746f, 38.086f, 46.865f
  5539. path.cubicTo(SkBits2Float(0x42189a9e), SkBits2Float(0x423bad05), SkBits2Float(0x421820c3), SkBits2Float(0x423c1b9c), SkBits2Float(0x4217ffff), SkBits2Float(0x423c311d)); // 38.151f, 46.919f, 38.032f, 47.027f, 38, 47.048f
  5540. path.cubicTo(SkBits2Float(0x4217a6e8), SkBits2Float(0x423c9577), SkBits2Float(0x42173851), SkBits2Float(0x423ced87), SkBits2Float(0x4216cac0), SkBits2Float(0x423d5c1f)); // 37.913f, 47.146f, 37.805f, 47.232f, 37.698f, 47.34f
  5541. path.cubicTo(SkBits2Float(0x42168831), SkBits2Float(0x423d9eae), SkBits2Float(0x421650e5), SkBits2Float(0x423deb7b), SkBits2Float(0x4215f7ce), SkBits2Float(0x423e23cd)); // 37.633f, 47.405f, 37.579f, 47.48f, 37.492f, 47.535f
  5542. path.lineTo(SkBits2Float(0x4215f7ce), SkBits2Float(0x423e4492)); // 37.492f, 47.567f
  5543. path.cubicTo(SkBits2Float(0x4215ed91), SkBits2Float(0x423e4fd6), SkBits2Float(0x4215d709), SkBits2Float(0x423e4492), SkBits2Float(0x4215cbc6), SkBits2Float(0x423e4fd6)); // 37.482f, 47.578f, 37.46f, 47.567f, 37.449f, 47.578f
  5544. path.cubicTo(SkBits2Float(0x42158937), SkBits2Float(0x423e8722), SkBits2Float(0x42153126), SkBits2Float(0x423f00fd), SkBits2Float(0x4214ee97), SkBits2Float(0x423f3849)); // 37.384f, 47.632f, 37.298f, 47.751f, 37.233f, 47.805f
  5545. path.cubicTo(SkBits2Float(0x4214d810), SkBits2Float(0x423f438d), SkBits2Float(0x4214cdd2), SkBits2Float(0x423f590e), SkBits2Float(0x4214cdd2), SkBits2Float(0x423f590e)); // 37.211f, 47.816f, 37.201f, 47.837f, 37.201f, 47.837f
  5546. path.lineTo(SkBits2Float(0x4214b74b), SkBits2Float(0x423f590e)); // 37.179f, 47.837f
  5547. path.lineTo(SkBits2Float(0x4214b74b), SkBits2Float(0x423f79d3)); // 37.179f, 47.869f
  5548. path.cubicTo(SkBits2Float(0x42147fff), SkBits2Float(0x423f905a), SkBits2Float(0x421474bc), SkBits2Float(0x423fb11f), SkBits2Float(0x421448b3), SkBits2Float(0x423fc7a6)); // 37.125f, 47.891f, 37.114f, 47.923f, 37.071f, 47.945f
  5549. path.lineTo(SkBits2Float(0x421448b3), SkBits2Float(0x423fdd27)); // 37.071f, 47.966f
  5550. path.lineTo(SkBits2Float(0x42143332), SkBits2Float(0x423fdd27)); // 37.05f, 47.966f
  5551. path.lineTo(SkBits2Float(0x4213b957), SkBits2Float(0x424077c7)); // 36.931f, 48.117f
  5552. path.cubicTo(SkBits2Float(0x4213a2d0), SkBits2Float(0x4240830b), SkBits2Float(0x4213b957), SkBits2Float(0x4240988c), SkBits2Float(0x4213b957), SkBits2Float(0x4240988c)); // 36.909f, 48.128f, 36.931f, 48.149f, 36.931f, 48.149f
  5553. path.cubicTo(SkBits2Float(0x4213c49b), SkBits2Float(0x4240988c), SkBits2Float(0x4213b957), SkBits2Float(0x4240ba57), SkBits2Float(0x4213da1c), SkBits2Float(0x4240af13)); // 36.942f, 48.149f, 36.931f, 48.182f, 36.963f, 48.171f
  5554. path.cubicTo(SkBits2Float(0x42141cab), SkBits2Float(0x4240af13), SkBits2Float(0x4214a1ca), SkBits2Float(0x42405703), SkBits2Float(0x4214ee97), SkBits2Float(0x42403538)); // 37.028f, 48.171f, 37.158f, 48.085f, 37.233f, 48.052f
  5555. path.cubicTo(SkBits2Float(0x42153126), SkBits2Float(0x42401473), SkBits2Float(0x42157ef9), SkBits2Float(0x423ffdec), SkBits2Float(0x4215cbc6), SkBits2Float(0x423fd1e4)); // 37.298f, 48.02f, 37.374f, 47.998f, 37.449f, 47.955f
  5556. path.cubicTo(SkBits2Float(0x421650e5), SkBits2Float(0x423f8f55), SkBits2Float(0x4216cac0), SkBits2Float(0x423f4288), SkBits2Float(0x42178624), SkBits2Float(0x423f20bd)); // 37.579f, 47.89f, 37.698f, 47.815f, 37.881f, 47.782f
  5557. path.cubicTo(SkBits2Float(0x42177ae0), SkBits2Float(0x423f8f55), SkBits2Float(0x421770a3), SkBits2Float(0x423fc6a0), SkBits2Float(0x42174395), SkBits2Float(0x423ffdec)); // 37.87f, 47.89f, 37.86f, 47.944f, 37.816f, 47.998f
  5558. path.cubicTo(SkBits2Float(0x4216bf7c), SkBits2Float(0x4240ba56), SkBits2Float(0x4215ab02), SkBits2Float(0x4241332b), SkBits2Float(0x4214f9db), SkBits2Float(0x4241c38e)); // 37.687f, 48.182f, 37.417f, 48.3f, 37.244f, 48.441f
  5559. path.cubicTo(SkBits2Float(0x42143333), SkBits2Float(0x424274b5), SkBits2Float(0x42136b85), SkBits2Float(0x42433019), SkBits2Float(0x4212c5a2), SkBits2Float(0x4243f7c7)); // 37.05f, 48.614f, 36.855f, 48.797f, 36.693f, 48.992f
  5560. path.cubicTo(SkBits2Float(0x42115917), SkBits2Float(0x42459b9e), SkBits2Float(0x421022d1), SkBits2Float(0x42476c83), SkBits2Float(0x420f0313), SkBits2Float(0x4249311f)); // 36.337f, 49.402f, 36.034f, 49.856f, 35.753f, 50.298f
  5561. path.cubicTo(SkBits2Float(0x420e1ba6), SkBits2Float(0x424a936d), SkBits2Float(0x420d75c3), SkBits2Float(0x424c21c3), SkBits2Float(0x420cdb23), SkBits2Float(0x424dba56)); // 35.527f, 50.644f, 35.365f, 51.033f, 35.214f, 51.432f
  5562. path.cubicTo(SkBits2Float(0x420c3f7d), SkBits2Float(0x424f6a77), SkBits2Float(0x420b8419), SkBits2Float(0x42510e4e), SkBits2Float(0x420b1fbf), SkBits2Float(0x4252d3f0)); // 35.062f, 51.854f, 34.879f, 52.264f, 34.781f, 52.707f
  5563. path.cubicTo(SkBits2Float(0x420ad2f2), SkBits2Float(0x42548e4e), SkBits2Float(0x420ab127), SkBits2Float(0x42565e2d), SkBits2Float(0x420a9063), SkBits2Float(0x4258188c)); // 34.706f, 53.139f, 34.673f, 53.592f, 34.641f, 54.024f
  5564. path.cubicTo(SkBits2Float(0x420a7ae2), SkBits2Float(0x4258882a), SkBits2Float(0x420a9ba7), SkBits2Float(0x4258e03a), SkBits2Float(0x420a9ba7), SkBits2Float(0x42594ed2)); // 34.62f, 54.133f, 34.652f, 54.219f, 34.652f, 54.327f
  5565. path.cubicTo(SkBits2Float(0x420aa6eb), SkBits2Float(0x425e301a), SkBits2Float(0x420c820d), SkBits2Float(0x4262c495), SkBits2Float(0x420ecbc8), SkBits2Float(0x4266fff9)); // 34.663f, 55.547f, 35.127f, 56.692f, 35.699f, 57.75f
  5566. path.cubicTo(SkBits2Float(0x420eed93), SkBits2Float(0x426721c4), SkBits2Float(0x420f0e57), SkBits2Float(0x42674dcc), SkBits2Float(0x420f3022), SkBits2Float(0x42676e91)); // 35.732f, 57.783f, 35.764f, 57.826f, 35.797f, 57.858f
  5567. path.cubicTo(SkBits2Float(0x420f7df5), SkBits2Float(0x42680a37), SkBits2Float(0x420fbf7e), SkBits2Float(0x42689993), SkBits2Float(0x42100d51), SkBits2Float(0x42693433)); // 35.873f, 58.01f, 35.937f, 58.15f, 36.013f, 58.301f
  5568. path.cubicTo(SkBits2Float(0x42102e16), SkBits2Float(0x426955fe), SkBits2Float(0x42105a1e), SkBits2Float(0x426976c2), SkBits2Float(0x42106561), SkBits2Float(0x42698d4a)); // 36.045f, 58.334f, 36.088f, 58.366f, 36.099f, 58.388f
  5569. path.cubicTo(SkBits2Float(0x4210872c), SkBits2Float(0x4269e55a), SkBits2Float(0x4210a7f0), SkBits2Float(0x426a3d6b), SkBits2Float(0x4210ea80), SkBits2Float(0x426a6a79)); // 36.132f, 58.474f, 36.164f, 58.56f, 36.229f, 58.604f
  5570. path.cubicTo(SkBits2Float(0x42119aa1), SkBits2Float(0x426acdcd), SkBits2Float(0x42131376), SkBits2Float(0x426a48ae), SkBits2Float(0x4213e561), SkBits2Float(0x426a6a79)); // 36.401f, 58.701f, 36.769f, 58.571f, 36.974f, 58.604f
  5571. path.cubicTo(SkBits2Float(0x4213fae2), SkBits2Float(0x426a75bd), SkBits2Float(0x42141cad), SkBits2Float(0x426a8b3e), SkBits2Float(0x42143d71), SkBits2Float(0x426a8b3e)); // 36.995f, 58.615f, 37.028f, 58.636f, 37.06f, 58.636f
  5572. path.cubicTo(SkBits2Float(0x42141cac), SkBits2Float(0x426acdcd), SkBits2Float(0x42143334), SkBits2Float(0x426aee92), SkBits2Float(0x42141cac), SkBits2Float(0x426b25de)); // 37.028f, 58.701f, 37.05f, 58.733f, 37.028f, 58.787f
  5573. path.cubicTo(SkBits2Float(0x4213e560), SkBits2Float(0x426b9fb9), SkBits2Float(0x4212dc29), SkBits2Float(0x426d0d4b), SkBits2Float(0x4212f1aa), SkBits2Float(0x426da7ea)); // 36.974f, 58.906f, 36.715f, 59.263f, 36.736f, 59.414f
  5574. path.cubicTo(SkBits2Float(0x4212f1aa), SkBits2Float(0x426dfffa), SkBits2Float(0x4213b958), SkBits2Float(0x426ed1e6), SkBits2Float(0x4213c49c), SkBits2Float(0x426edd29)); // 36.736f, 59.5f, 36.931f, 59.705f, 36.942f, 59.716f
  5575. path.cubicTo(SkBits2Float(0x4213e561), SkBits2Float(0x426f1fb8), SkBits2Float(0x42143d71), SkBits2Float(0x426f9993), SkBits2Float(0x421448b5), SkBits2Float(0x426ffce7)); // 36.974f, 59.781f, 37.06f, 59.9f, 37.071f, 59.997f
  5576. path.cubicTo(SkBits2Float(0x421448b5), SkBits2Float(0x427076c2), SkBits2Float(0x4214072c), SkBits2Float(0x4270ef97), SkBits2Float(0x4213fae2), SkBits2Float(0x427148ae)); // 37.071f, 60.116f, 37.007f, 60.234f, 36.995f, 60.321f
  5577. path.cubicTo(SkBits2Float(0x4213e561), SkBits2Float(0x42717ffa), SkBits2Float(0x4213fae2), SkBits2Float(0x42718b3d), SkBits2Float(0x4213e561), SkBits2Float(0x4271b746)); // 36.974f, 60.375f, 36.995f, 60.386f, 36.974f, 60.429f
  5578. path.cubicTo(SkBits2Float(0x4213da1d), SkBits2Float(0x4271ccc7), SkBits2Float(0x4213b959), SkBits2Float(0x42721a9a), SkBits2Float(0x4213a2d2), SkBits2Float(0x42721a9a)); // 36.963f, 60.45f, 36.931f, 60.526f, 36.909f, 60.526f
  5579. path.cubicTo(SkBits2Float(0x42134ac2), SkBits2Float(0x42723c65), SkBits2Float(0x4212d0e6), SkBits2Float(0x427225de), SkBits2Float(0x42126d93), SkBits2Float(0x427225de)); // 36.823f, 60.559f, 36.704f, 60.537f, 36.607f, 60.537f
  5580. path.cubicTo(SkBits2Float(0x42124bc8), SkBits2Float(0x427225de), SkBits2Float(0x4211bc6c), SkBits2Float(0x42723c65), SkBits2Float(0x42119064), SkBits2Float(0x42723c65)); // 36.574f, 60.537f, 36.434f, 60.559f, 36.391f, 60.559f
  5581. path.cubicTo(SkBits2Float(0x4210d3fa), SkBits2Float(0x427246a2), SkBits2Float(0x420ff6ca), SkBits2Float(0x4272301b), SkBits2Float(0x420f676e), SkBits2Float(0x4272686d)); // 36.207f, 60.569f, 35.991f, 60.547f, 35.851f, 60.602f
  5582. path.cubicTo(SkBits2Float(0x420eb647), SkBits2Float(0x4272b53a), SkBits2Float(0x420e52f3), SkBits2Float(0x42737ce8), SkBits2Float(0x420dc291), SkBits2Float(0x4273f5bd)); // 35.678f, 60.677f, 35.581f, 60.872f, 35.44f, 60.99f
  5583. path.cubicTo(SkBits2Float(0x420d116a), SkBits2Float(0x4274861f), SkBits2Float(0x420c5606), SkBits2Float(0x4274e973), SkBits2Float(0x420b999b), SkBits2Float(0x4275580b)); // 35.267f, 61.131f, 35.084f, 61.228f, 34.9f, 61.336f
  5584. path.cubicTo(SkBits2Float(0x420a9ba7), SkBits2Float(0x4275fdee), SkBits2Float(0x4209b335), SkBits2Float(0x42768d4a), SkBits2Float(0x42089eba), SkBits2Float(0x4276f1a5)); // 34.652f, 61.498f, 34.425f, 61.638f, 34.155f, 61.736f
  5585. path.cubicTo(SkBits2Float(0x4207ab04), SkBits2Float(0x42773e72), SkBits2Float(0x4206a1cc), SkBits2Float(0x42778101), SkBits2Float(0x4205b95a), SkBits2Float(0x4277c391)); // 33.917f, 61.811f, 33.658f, 61.876f, 33.431f, 61.941f
  5586. path.cubicTo(SkBits2Float(0x4203bd73), SkBits2Float(0x42786974), SkBits2Float(0x4201cbc9), SkBits2Float(0x42793b60), SkBits2Float(0x4200ac0a), SkBits2Float(0x427af5be)); // 32.935f, 62.103f, 32.449f, 62.308f, 32.168f, 62.74f
  5587. path.cubicTo(SkBits2Float(0x420074be), SkBits2Float(0x427b428b), SkBits2Float(0x41ffb43d), SkBits2Float(0x427c4cc8), SkBits2Float(0x41ff872f), SkBits2Float(0x427ca4d9)); // 32.114f, 62.815f, 31.963f, 63.075f, 31.941f, 63.161f
  5588. path.cubicTo(SkBits2Float(0x41ff872f), SkBits2Float(0x427cbb60), SkBits2Float(0x41ff9db6), SkBits2Float(0x427cd0e1), SkBits2Float(0x41ff872f), SkBits2Float(0x427ce768)); // 31.941f, 63.183f, 31.952f, 63.204f, 31.941f, 63.226f
  5589. path.cubicTo(SkBits2Float(0x41ffb43d), SkBits2Float(0x427cfce9), SkBits2Float(0x41ffb43d), SkBits2Float(0x427cfce9), SkBits2Float(0x41ffdf3f), SkBits2Float(0x427d1370)); // 31.963f, 63.247f, 31.963f, 63.247f, 31.984f, 63.269f
  5590. path.cubicTo(SkBits2Float(0x4200ac0a), SkBits2Float(0x427cfce9), SkBits2Float(0x42010f5e), SkBits2Float(0x427cd0e1), SkBits2Float(0x4201a9fe), SkBits2Float(0x427ca4d8)); // 32.168f, 63.247f, 32.265f, 63.204f, 32.416f, 63.161f
  5591. path.cubicTo(SkBits2Float(0x4201c085), SkBits2Float(0x427c9994), SkBits2Float(0x4201f7d1), SkBits2Float(0x427c78d0), SkBits2Float(0x42020315), SkBits2Float(0x427c78d0)); // 32.438f, 63.15f, 32.492f, 63.118f, 32.503f, 63.118f
  5592. path.cubicTo(SkBits2Float(0x420223da), SkBits2Float(0x427c6249), SkBits2Float(0x42022f1d), SkBits2Float(0x427c78d0), SkBits2Float(0x42023a61), SkBits2Float(0x427c78d0)); // 32.535f, 63.096f, 32.546f, 63.118f, 32.557f, 63.118f
  5593. path.cubicTo(SkBits2Float(0x42025b26), SkBits2Float(0x427c6249), SkBits2Float(0x42028834), SkBits2Float(0x427c4184), SkBits2Float(0x4202a8f9), SkBits2Float(0x427c4184)); // 32.589f, 63.096f, 32.633f, 63.064f, 32.665f, 63.064f
  5594. path.cubicTo(SkBits2Float(0x4203e97c), SkBits2Float(0x427bc7a9), SkBits2Float(0x42061db5), SkBits2Float(0x427ba6e4), SkBits2Float(0x4207b649), SkBits2Float(0x427bfef5)); // 32.978f, 62.945f, 33.529f, 62.913f, 33.928f, 62.999f
  5595. path.cubicTo(SkBits2Float(0x42089ebc), SkBits2Float(0x427c20c0), SkBits2Float(0x420970a7), SkBits2Float(0x427c78d0), SkBits2Float(0x420a21ce), SkBits2Float(0x427cc59d)); // 34.155f, 63.032f, 34.36f, 63.118f, 34.533f, 63.193f
  5596. path.cubicTo(SkBits2Float(0x420a6fa1), SkBits2Float(0x427cdc24), SkBits2Float(0x420ab12a), SkBits2Float(0x427ce768), SkBits2Float(0x420af3ba), SkBits2Float(0x427d1370)); // 34.609f, 63.215f, 34.673f, 63.226f, 34.738f, 63.269f
  5597. path.cubicTo(SkBits2Float(0x420b0a41), SkBits2Float(0x427d1370), SkBits2Float(0x420af3ba), SkBits2Float(0x427d353b), SkBits2Float(0x420b1585), SkBits2Float(0x427d407e)); // 34.76f, 63.269f, 34.738f, 63.302f, 34.771f, 63.313f
  5598. path.cubicTo(SkBits2Float(0x420b0a41), SkBits2Float(0x427d6143), SkBits2Float(0x420b0a41), SkBits2Float(0x427d8207), SkBits2Float(0x420af3ba), SkBits2Float(0x427dae0f)); // 34.76f, 63.345f, 34.76f, 63.377f, 34.738f, 63.42f
  5599. path.cubicTo(SkBits2Float(0x420ad2f5), SkBits2Float(0x427df09e), SkBits2Float(0x420a2d12), SkBits2Float(0x427e54f8), SkBits2Float(0x420a4293), SkBits2Float(0x427ee455)); // 34.706f, 63.485f, 34.544f, 63.583f, 34.565f, 63.723f
  5600. path.cubicTo(SkBits2Float(0x420a591a), SkBits2Float(0x427f051a), SkBits2Float(0x420ad2f5), SkBits2Float(0x427f3122), SkBits2Float(0x420af3ba), SkBits2Float(0x427f47a9)); // 34.587f, 63.755f, 34.706f, 63.798f, 34.738f, 63.82f
  5601. path.cubicTo(SkBits2Float(0x420af3ba), SkBits2Float(0x427f5d2a), SkBits2Float(0x420af3ba), SkBits2Float(0x427f73b1), SkBits2Float(0x420b0a41), SkBits2Float(0x427f7ef5)); // 34.738f, 63.841f, 34.738f, 63.863f, 34.76f, 63.874f
  5602. path.cubicTo(SkBits2Float(0x420add33), SkBits2Float(0x427fccc8), SkBits2Float(0x420a21ce), SkBits2Float(0x42803e74), SkBits2Float(0x420a2d12), SkBits2Float(0x4280701e)); // 34.716f, 63.95f, 34.533f, 64.122f, 34.544f, 64.219f
  5603. path.cubicTo(SkBits2Float(0x420a3856), SkBits2Float(0x42808bc4), SkBits2Float(0x420ad2f5), SkBits2Float(0x4280a7ed), SkBits2Float(0x420ae876), SkBits2Float(0x4280b2ad)); // 34.555f, 64.273f, 34.706f, 64.328f, 34.727f, 64.349f
  5604. path.cubicTo(SkBits2Float(0x420af3ba), SkBits2Float(0x4280bdf1), SkBits2Float(0x420add32), SkBits2Float(0x4280c8b1), SkBits2Float(0x420af3ba), SkBits2Float(0x4280d3f5)); // 34.738f, 64.371f, 34.716f, 64.392f, 34.738f, 64.414f
  5605. path.cubicTo(SkBits2Float(0x420abd74), SkBits2Float(0x4280f53d), SkBits2Float(0x4209f5c6), SkBits2Float(0x4281428d), SkBits2Float(0x420a21ce), SkBits2Float(0x42816e95)); // 34.685f, 64.479f, 34.49f, 64.63f, 34.533f, 64.716f
  5606. path.cubicTo(SkBits2Float(0x420a4293), SkBits2Float(0x4281957e), SkBits2Float(0x420ad2f5), SkBits2Float(0x4281a664), SkBits2Float(0x420ae876), SkBits2Float(0x4281c187)); // 34.565f, 64.792f, 34.706f, 64.825f, 34.727f, 64.878f
  5607. path.cubicTo(SkBits2Float(0x420ae876), SkBits2Float(0x4281c729), SkBits2Float(0x420add32), SkBits2Float(0x4281d26c), SkBits2Float(0x420ae876), SkBits2Float(0x4281d26c)); // 34.727f, 64.889f, 34.716f, 64.911f, 34.727f, 64.911f
  5608. path.cubicTo(SkBits2Float(0x420aa6ed), SkBits2Float(0x4281fe74), SkBits2Float(0x420a591a), SkBits2Float(0x42821a1a), SkBits2Float(0x4209f5c6), SkBits2Float(0x42823b62)); // 34.663f, 64.997f, 34.587f, 65.051f, 34.49f, 65.116f
  5609. path.cubicTo(SkBits2Float(0x420a168b), SkBits2Float(0x42825caa), SkBits2Float(0x420a010a), SkBits2Float(0x4282624b), SkBits2Float(0x420a2d12), SkBits2Float(0x42827850)); // 34.522f, 65.181f, 34.501f, 65.192f, 34.544f, 65.235f
  5610. path.cubicTo(SkBits2Float(0x420a645e), SkBits2Float(0x428288b2), SkBits2Float(0x420a9baa), SkBits2Float(0x428293f6), SkBits2Float(0x420ad2f5), SkBits2Float(0x4282a458)); // 34.598f, 65.267f, 34.652f, 65.289f, 34.706f, 65.321f
  5611. path.cubicTo(SkBits2Float(0x420ad2f5), SkBits2Float(0x4282a458), SkBits2Float(0x420add32), SkBits2Float(0x4282d685), SkBits2Float(0x420abd74), SkBits2Float(0x4282c5a0)); // 34.706f, 65.321f, 34.716f, 65.419f, 34.685f, 65.386f
  5612. path.cubicTo(SkBits2Float(0x420aa6ed), SkBits2Float(0x4282cb42), SkBits2Float(0x420a9066), SkBits2Float(0x4282e146), SkBits2Float(0x420a6fa1), SkBits2Float(0x4282e6e8)); // 34.663f, 65.397f, 34.641f, 65.44f, 34.609f, 65.451f
  5613. path.cubicTo(SkBits2Float(0x4209df3f), SkBits2Float(0x42830830), SkBits2Float(0x4208f6cc), SkBits2Float(0x4282bae0), SkBits2Float(0x42088834), SkBits2Float(0x4282a459)); // 34.468f, 65.516f, 34.241f, 65.365f, 34.133f, 65.321f
  5614. path.cubicTo(SkBits2Float(0x420846ab), SkBits2Float(0x42829915), SkBits2Float(0x42080f5f), SkBits2Float(0x42829915), SkBits2Float(0x4207c18c), SkBits2Float(0x428293f7)); // 34.069f, 65.299f, 34.015f, 65.299f, 33.939f, 65.289f
  5615. path.cubicTo(SkBits2Float(0x42079584), SkBits2Float(0x428288b3), SkBits2Float(0x420748b7), SkBits2Float(0x42826d0e), SkBits2Float(0x42071ba9), SkBits2Float(0x42826d0e)); // 33.896f, 65.267f, 33.821f, 65.213f, 33.777f, 65.213f
  5616. path.cubicTo(SkBits2Float(0x4206cedc), SkBits2Float(0x4282624d), SkBits2Float(0x42068109), SkBits2Float(0x4282624d), SkBits2Float(0x42061272), SkBits2Float(0x4282624d)); // 33.702f, 65.192f, 33.626f, 65.192f, 33.518f, 65.192f
  5617. path.cubicTo(SkBits2Float(0x4205cfe3), SkBits2Float(0x42825cab), SkBits2Float(0x4205614b), SkBits2Float(0x42824bc6), SkBits2Float(0x42051ebc), SkBits2Float(0x42824bc6)); // 33.453f, 65.181f, 33.345f, 65.148f, 33.28f, 65.148f
  5618. path.cubicTo(SkBits2Float(0x42037ae5), SkBits2Float(0x428246a7), SkBits2Float(0x4201cbca), SkBits2Float(0x42829eb8), SkBits2Float(0x4200ac0c), SkBits2Float(0x4282e147)); // 32.87f, 65.138f, 32.449f, 65.31f, 32.168f, 65.44f
  5619. path.cubicTo(SkBits2Float(0x42008b47), SkBits2Float(0x4282e6e9), SkBits2Float(0x42005e39), SkBits2Float(0x4282fced), SkBits2Float(0x42003d74), SkBits2Float(0x4283028f)); // 32.136f, 65.451f, 32.092f, 65.494f, 32.06f, 65.505f
  5620. path.cubicTo(SkBits2Float(0x41fdf9e2), SkBits2Float(0x42833f7d), SkBits2Float(0x41fa4190), SkBits2Float(0x42836041), SkBits2Float(0x41f674c3), SkBits2Float(0x42834fdf)); // 31.747f, 65.624f, 31.282f, 65.688f, 30.807f, 65.656f
  5621. path.cubicTo(SkBits2Float(0x41f59794), SkBits2Float(0x4283451e), SkBits2Float(0x41f48d56), SkBits2Float(0x4283451e), SkBits2Float(0x41f3b027), SkBits2Float(0x428339db)); // 30.699f, 65.635f, 30.569f, 65.635f, 30.461f, 65.613f
  5622. path.cubicTo(SkBits2Float(0x41f32d15), SkBits2Float(0x42832e97), SkBits2Float(0x41f2666d), SkBits2Float(0x428312f2), SkBits2Float(0x41f1b440), SkBits2Float(0x42830831)); // 30.397f, 65.591f, 30.3f, 65.537f, 30.213f, 65.516f
  5623. path.cubicTo(SkBits2Float(0x41f1041f), SkBits2Float(0x4282fced), SkBits2Float(0x41f07f01), SkBits2Float(0x4282f74c), SkBits2Float(0x41efb859), SkBits2Float(0x4282e6e9)); // 30.127f, 65.494f, 30.062f, 65.483f, 29.965f, 65.451f
  5624. path.cubicTo(SkBits2Float(0x41efa1d2), SkBits2Float(0x4282e147), SkBits2Float(0x41ef6049), SkBits2Float(0x4282d687), SkBits2Float(0x41ef49c1), SkBits2Float(0x4282d687)); // 29.954f, 65.44f, 29.922f, 65.419f, 29.911f, 65.419f
  5625. path.cubicTo(SkBits2Float(0x41ef062b), SkBits2Float(0x4282cb43), SkBits2Float(0x41eec4a2), SkBits2Float(0x4282cb43), SkBits2Float(0x41ee560b), SkBits2Float(0x4282c5a2)); // 29.878f, 65.397f, 29.846f, 65.397f, 29.792f, 65.386f
  5626. path.cubicTo(SkBits2Float(0x41ee1275), SkBits2Float(0x4282c000), SkBits2Float(0x41ed8f63), SkBits2Float(0x4282a45a), SkBits2Float(0x41ed3546), SkBits2Float(0x42829eb9)); // 29.759f, 65.375f, 29.695f, 65.321f, 29.651f, 65.31f
  5627. path.cubicTo(SkBits2Float(0x41ebbe7d), SkBits2Float(0x42827d71), SkBits2Float(0x41ea72b7), SkBits2Float(0x42825cad), SkBits2Float(0x41e91069), SkBits2Float(0x42823b65)); // 29.468f, 65.245f, 29.306f, 65.181f, 29.133f, 65.116f
  5628. path.cubicTo(SkBits2Float(0x41e6fdfa), SkBits2Float(0x42820419), SkBits2Float(0x41e4a7f6), SkBits2Float(0x4281ab86), SkBits2Float(0x41e18b4a), SkBits2Float(0x4281ab86)); // 28.874f, 65.008f, 28.582f, 64.835f, 28.193f, 64.835f
  5629. path.cubicTo(SkBits2Float(0x41de9bac), SkBits2Float(0x4281b128), SkBits2Float(0x41dcf7d5), SkBits2Float(0x4281fe78), SkBits2Float(0x41db3d77), SkBits2Float(0x428246a9)); // 27.826f, 64.846f, 27.621f, 64.997f, 27.405f, 65.138f
  5630. path.cubicTo(SkBits2Float(0x41dacedf), SkBits2Float(0x4282570b), SkBits2Float(0x41da76cf), SkBits2Float(0x4282570b), SkBits2Float(0x41da0838), SkBits2Float(0x4282676e)); // 27.351f, 65.17f, 27.308f, 65.17f, 27.254f, 65.202f
  5631. path.cubicTo(SkBits2Float(0x41d9f1b1), SkBits2Float(0x4282676e), SkBits2Float(0x41d9f1b1), SkBits2Float(0x42827853), SkBits2Float(0x41d9db2a), SkBits2Float(0x42827d72)); // 27.243f, 65.202f, 27.243f, 65.235f, 27.232f, 65.245f
  5632. path.cubicTo(SkBits2Float(0x41d96c92), SkBits2Float(0x428288b6), SkBits2Float(0x41d91482), SkBits2Float(0x428288b6), SkBits2Float(0x41d8a5eb), SkBits2Float(0x42829eba)); // 27.178f, 65.267f, 27.135f, 65.267f, 27.081f, 65.31f
  5633. path.lineTo(SkBits2Float(0x41d88f64), SkBits2Float(0x4282a9fe)); // 27.07f, 65.332f
  5634. path.cubicTo(SkBits2Float(0x41d6eb8d), SkBits2Float(0x4282e14a), SkBits2Float(0x41d4ac10), SkBits2Float(0x42830291), SkBits2Float(0x41d25818), SkBits2Float(0x428312f4)); // 26.865f, 65.44f, 26.584f, 65.505f, 26.293f, 65.537f
  5635. path.cubicTo(SkBits2Float(0x41d0b235), SkBits2Float(0x42831896), SkBits2Float(0x41ce74c4), SkBits2Float(0x428312f4), SkBits2Float(0x41cce568), SkBits2Float(0x42830292)); // 26.087f, 65.548f, 25.807f, 65.537f, 25.612f, 65.505f
  5636. path.cubicTo(SkBits2Float(0x41cca3df), SkBits2Float(0x4282fcf0), SkBits2Float(0x41cc1ec0), SkBits2Float(0x4282f1ad), SkBits2Float(0x41cbf3be), SkBits2Float(0x4282f1ad)); // 25.58f, 65.494f, 25.515f, 65.472f, 25.494f, 65.472f
  5637. path.cubicTo(SkBits2Float(0x41ca9170), SkBits2Float(0x4282dba9), SkBits2Float(0x41c99dba), SkBits2Float(0x4282e14b), SkBits2Float(0x41c8687a), SkBits2Float(0x4282cb47)); // 25.321f, 65.429f, 25.202f, 65.44f, 25.051f, 65.397f
  5638. path.cubicTo(SkBits2Float(0x41c7b64d), SkBits2Float(0x4282c003), SkBits2Float(0x41c71cb3), SkBits2Float(0x4282bae5), SkBits2Float(0x41c6560b), SkBits2Float(0x4282a9ff)); // 24.964f, 65.375f, 24.889f, 65.365f, 24.792f, 65.332f
  5639. path.lineTo(SkBits2Float(0x41c628fd), SkBits2Float(0x42829ebb)); // 24.77f, 65.31f
  5640. path.cubicTo(SkBits2Float(0x41c58d57), SkBits2Float(0x428293fa), SkBits2Float(0x41c53547), SkBits2Float(0x42829919), SkBits2Float(0x41c4b028), SkBits2Float(0x428293fa)); // 24.694f, 65.289f, 24.651f, 65.299f, 24.586f, 65.289f
  5641. path.lineTo(SkBits2Float(0x41c46e9f), SkBits2Float(0x42828315)); // 24.554f, 65.256f
  5642. path.cubicTo(SkBits2Float(0x41c1d712), SkBits2Float(0x4282570d), SkBits2Float(0x41be20cc), SkBits2Float(0x428209bd), SkBits2Float(0x41bb0420), SkBits2Float(0x42820f5f)); // 24.23f, 65.17f, 23.766f, 65.019f, 23.377f, 65.03f
  5643. path.cubicTo(SkBits2Float(0x41b9a1d2), SkBits2Float(0x42820f5f), SkBits2Float(0x41b7e774), SkBits2Float(0x42823024), SkBits2Float(0x41b6dd37), SkBits2Float(0x428246ab)); // 23.204f, 65.03f, 22.988f, 65.094f, 22.858f, 65.138f
  5644. path.cubicTo(SkBits2Float(0x41b5eb8d), SkBits2Float(0x4282570d), SkBits2Float(0x41b54fe7), SkBits2Float(0x4282570d), SkBits2Float(0x41b45c31), SkBits2Float(0x42826770)); // 22.74f, 65.17f, 22.664f, 65.17f, 22.545f, 65.202f
  5645. path.cubicTo(SkBits2Float(0x41b3ed99), SkBits2Float(0x42826d12), SkBits2Float(0x41b35400), SkBits2Float(0x428288b8), SkBits2Float(0x41b2fbef), SkBits2Float(0x428293fb)); // 22.491f, 65.213f, 22.416f, 65.267f, 22.373f, 65.289f
  5646. path.cubicTo(SkBits2Float(0x41b274c4), SkBits2Float(0x4282991a), SkBits2Float(0x41b249c2), SkBits2Float(0x428293fb), SkBits2Float(0x41b1c4a3), SkBits2Float(0x42829ebc)); // 22.307f, 65.299f, 22.286f, 65.289f, 22.221f, 65.31f
  5647. path.cubicTo(SkBits2Float(0x41b1560b), SkBits2Float(0x4282a45e), SkBits2Float(0x41b08f64), SkBits2Float(0x4282c004), SkBits2Float(0x41aff3be), SkBits2Float(0x4282cb47)); // 22.167f, 65.321f, 22.07f, 65.375f, 21.994f, 65.397f
  5648. path.cubicTo(SkBits2Float(0x41aea7f7), SkBits2Float(0x4282e14b), SkBits2Float(0x41ad893f), SkBits2Float(0x4282f1ad), SkBits2Float(0x41ac3d78), SkBits2Float(0x42830835)); // 21.832f, 65.44f, 21.692f, 65.472f, 21.53f, 65.516f
  5649. path.cubicTo(SkBits2Float(0x41ac106a), SkBits2Float(0x428312f6), SkBits2Float(0x41aba1d2), SkBits2Float(0x42831e39), SkBits2Float(0x41ab76d0), SkBits2Float(0x428323db)); // 21.508f, 65.537f, 21.454f, 65.559f, 21.433f, 65.57f
  5650. path.cubicTo(SkBits2Float(0x41aac4a3), SkBits2Float(0x4283343d), SkBits2Float(0x41aa560b), SkBits2Float(0x4283343d), SkBits2Float(0x41a9ba66), SkBits2Float(0x42833f81)); // 21.346f, 65.602f, 21.292f, 65.602f, 21.216f, 65.624f
  5651. path.lineTo(SkBits2Float(0x41a98f64), SkBits2Float(0x42834fe3)); // 21.195f, 65.656f
  5652. path.cubicTo(SkBits2Float(0x41a96256), SkBits2Float(0x42834fe3), SkBits2Float(0x41a93754), SkBits2Float(0x42834522), SkBits2Float(0x41a920cc), SkBits2Float(0x42834fe3)); // 21.173f, 65.656f, 21.152f, 65.635f, 21.141f, 65.656f
  5653. path.cubicTo(SkBits2Float(0x41a90a45), SkBits2Float(0x42834fe3), SkBits2Float(0x41a8b234), SkBits2Float(0x42836045), SkBits2Float(0x41a89bad), SkBits2Float(0x42836b89)); // 21.13f, 65.656f, 21.087f, 65.688f, 21.076f, 65.71f
  5654. path.cubicTo(SkBits2Float(0x41a7d505), SkBits2Float(0x42837beb), SkBits2Float(0x41a7666e), SkBits2Float(0x4283818d), SkBits2Float(0x41a6cac8), SkBits2Float(0x42839d33)); // 20.979f, 65.742f, 20.925f, 65.753f, 20.849f, 65.807f
  5655. path.cubicTo(SkBits2Float(0x41a6b64d), SkBits2Float(0x4283a2d5), SkBits2Float(0x41a672b8), SkBits2Float(0x4283b3ba), SkBits2Float(0x41a65e3d), SkBits2Float(0x4283b8d9)); // 20.839f, 65.818f, 20.806f, 65.851f, 20.796f, 65.861f
  5656. path.cubicTo(SkBits2Float(0x41a6312f), SkBits2Float(0x4283be7b), SkBits2Float(0x41a60420), SkBits2Float(0x4283b8d9), SkBits2Float(0x41a5ed99), SkBits2Float(0x4283be7b)); // 20.774f, 65.872f, 20.752f, 65.861f, 20.741f, 65.872f
  5657. path.cubicTo(SkBits2Float(0x41a5810e), SkBits2Float(0x4283cedd), SkBits2Float(0x41a4e568), SkBits2Float(0x428406ac), SkBits2Float(0x41a48d57), SkBits2Float(0x42840bcb)); // 20.688f, 65.904f, 20.612f, 66.013f, 20.569f, 66.023f
  5658. path.lineTo(SkBits2Float(0x41a41ebf), SkBits2Float(0x42840bcb)); // 20.515f, 66.023f
  5659. path.cubicTo(SkBits2Float(0x41a40838), SkBits2Float(0x4283fb69), SkBits2Float(0x41a3f1b1), SkBits2Float(0x428406ac), SkBits2Float(0x41a3f1b1), SkBits2Float(0x4283fb69)); // 20.504f, 65.991f, 20.493f, 66.013f, 20.493f, 65.991f
  5660. path.cubicTo(SkBits2Float(0x41a38319), SkBits2Float(0x4283b8da), SkBits2Float(0x41a4b859), SkBits2Float(0x4282f750), SkBits2Float(0x41a4e567), SkBits2Float(0x4282cb48)); // 20.439f, 65.861f, 20.59f, 65.483f, 20.612f, 65.397f
  5661. path.cubicTo(SkBits2Float(0x41a5ed98), SkBits2Float(0x4281d273), SkBits2Float(0x41a74fe6), SkBits2Float(0x4280ea00), SkBits2Float(0x41a96255), SkBits2Float(0x42802e19)); // 20.741f, 64.911f, 20.914f, 64.457f, 21.173f, 64.09f
  5662. path.cubicTo(SkBits2Float(0x41aa2b09), SkBits2Float(0x427fccd6), SkBits2Float(0x41ab1ebf), SkBits2Float(0x427f6982), SkBits2Float(0x41abfbef), SkBits2Float(0x427eefa7)); // 21.271f, 63.95f, 21.39f, 63.853f, 21.498f, 63.734f
  5663. path.cubicTo(SkBits2Float(0x41ac7f01), SkBits2Float(0x427e9690), SkBits2Float(0x41aced99), SkBits2Float(0x427e49c4), SkBits2Float(0x41ad893f), SkBits2Float(0x427e0734)); // 21.562f, 63.647f, 21.616f, 63.572f, 21.692f, 63.507f
  5664. path.cubicTo(SkBits2Float(0x41aed506), SkBits2Float(0x427d8215), SkBits2Float(0x41b020cc), SkBits2Float(0x427d137e), SkBits2Float(0x41b1831a), SkBits2Float(0x427cbb6d)); // 21.854f, 63.377f, 22.016f, 63.269f, 22.189f, 63.183f
  5665. path.cubicTo(SkBits2Float(0x41b1f1b2), SkBits2Float(0x427c99a2), SkBits2Float(0x41b26049), SkBits2Float(0x427c6256), SkBits2Float(0x41b2cee1), SkBits2Float(0x427c4cd5)); // 22.243f, 63.15f, 22.297f, 63.096f, 22.351f, 63.075f
  5666. path.cubicTo(SkBits2Float(0x41b3106a), SkBits2Float(0x427c2b0a), SkBits2Float(0x41b445aa), SkBits2Float(0x427bff02), SkBits2Float(0x41b49dba), SkBits2Float(0x427bde3d)); // 22.383f, 63.042f, 22.534f, 62.999f, 22.577f, 62.967f
  5667. path.cubicTo(SkBits2Float(0x41b49dba), SkBits2Float(0x427bd2f9), SkBits2Float(0x41b4cac8), SkBits2Float(0x427ba6f1), SkBits2Float(0x41b4cac8), SkBits2Float(0x427ba6f1)); // 22.577f, 62.956f, 22.599f, 62.913f, 22.599f, 62.913f
  5668. path.cubicTo(SkBits2Float(0x41b4cac8), SkBits2Float(0x427b6462), SkBits2Float(0x41b33b6c), SkBits2Float(0x427a4fe7), SkBits2Float(0x41b2fbef), SkBits2Float(0x427a189b)); // 22.599f, 62.848f, 22.404f, 62.578f, 22.373f, 62.524f
  5669. path.cubicTo(SkBits2Float(0x41b2cee1), SkBits2Float(0x4279f7d6), SkBits2Float(0x41b19795), SkBits2Float(0x42796774), SkBits2Float(0x41b1560c), SkBits2Float(0x42795c31)); // 22.351f, 62.492f, 22.199f, 62.351f, 22.167f, 62.34f
  5670. path.cubicTo(SkBits2Float(0x41b0e774), SkBits2Float(0x42793b6c), SkBits2Float(0x41aff3be), SkBits2Float(0x42795c31), SkBits2Float(0x41af70ac), SkBits2Float(0x42795c31)); // 22.113f, 62.308f, 21.994f, 62.34f, 21.93f, 62.34f
  5671. path.cubicTo(SkBits2Float(0x41ae0e5e), SkBits2Float(0x42796775), SkBits2Float(0x41ac9589), SkBits2Float(0x427946b0), SkBits2Float(0x41ab76d1), SkBits2Float(0x42793b6c)); // 21.757f, 62.351f, 21.573f, 62.319f, 21.433f, 62.308f
  5672. path.cubicTo(SkBits2Float(0x41aa3f85), SkBits2Float(0x42793028), SkBits2Float(0x41a94ddb), SkBits2Float(0x42793b6c), SkBits2Float(0x41a82d17), SkBits2Float(0x42793028)); // 21.281f, 62.297f, 21.163f, 62.308f, 21.022f, 62.297f
  5673. path.cubicTo(SkBits2Float(0x41a5c298), SkBits2Float(0x42791aa7), SkBits2Float(0x41a2e775), SkBits2Float(0x4278ed99), SkBits2Float(0x41a07cf6), SkBits2Float(0x4278c190)); // 20.72f, 62.276f, 20.363f, 62.232f, 20.061f, 62.189f
  5674. path.cubicTo(SkBits2Float(0x419f47b7), SkBits2Float(0x4278b753), SkBits2Float(0x419e810f), SkBits2Float(0x4278b753), SkBits2Float(0x419d4bcf), SkBits2Float(0x4278a0cb)); // 19.91f, 62.179f, 19.813f, 62.179f, 19.662f, 62.157f
  5675. path.cubicTo(SkBits2Float(0x419c831b), SkBits2Float(0x42788a44), SkBits2Float(0x419b20cd), SkBits2Float(0x42785e3c), SkBits2Float(0x419a45aa), SkBits2Float(0x427847b4)); // 19.564f, 62.135f, 19.391f, 62.092f, 19.284f, 62.07f
  5676. path.cubicTo(SkBits2Float(0x41949171), SkBits2Float(0x4277e460), SkBits2Float(0x418e5819), SkBits2Float(0x42778c50), SkBits2Float(0x41896a87), SkBits2Float(0x4275dd35)); // 18.571f, 61.973f, 17.793f, 61.887f, 17.177f, 61.466f
  5677. path.cubicTo(SkBits2Float(0x4182efa6), SkBits2Float(0x4273a8fc), SkBits2Float(0x417fd71a), SkBits2Float(0x42703f83), SkBits2Float(0x4180dd37), SkBits2Float(0x426c5b29)); // 16.367f, 60.915f, 15.99f, 60.062f, 16.108f, 59.089f
  5678. path.cubicTo(SkBits2Float(0x41813547), SkBits2Float(0x426b5d35), SkBits2Float(0x41821276), SkBits2Float(0x426a8006), SkBits2Float(0x4182560c), SkBits2Float(0x426976cf)); // 16.151f, 58.841f, 16.259f, 58.625f, 16.292f, 58.366f
  5679. path.cubicTo(SkBits2Float(0x418228fe), SkBits2Float(0x426976cf), SkBits2Float(0x41823f85), SkBits2Float(0x42696b8b), SkBits2Float(0x418228fe), SkBits2Float(0x42694ac7)); // 16.27f, 58.366f, 16.281f, 58.355f, 16.27f, 58.323f
  5680. path.cubicTo(SkBits2Float(0x4181a5ec), SkBits2Float(0x42696b8c), SkBits2Float(0x41813548), SkBits2Float(0x42696b8c), SkBits2Float(0x41809bae), SkBits2Float(0x4269560b)); // 16.206f, 58.355f, 16.151f, 58.355f, 16.076f, 58.334f
  5681. path.cubicTo(SkBits2Float(0x4180b235), SkBits2Float(0x4269560b), SkBits2Float(0x4180439e), SkBits2Float(0x426976d0), SkBits2Float(0x4180168f), SkBits2Float(0x42696b8c)); // 16.087f, 58.334f, 16.033f, 58.366f, 16.011f, 58.355f
  5682. path.cubicTo(SkBits2Float(0x417eccdc), SkBits2Float(0x4269560b), SkBits2Float(0x417e9fce), SkBits2Float(0x4268d0ec), SkBits2Float(0x417f4fef), SkBits2Float(0x42688319)); // 15.925f, 58.334f, 15.914f, 58.204f, 15.957f, 58.128f
  5683. path.cubicTo(SkBits2Float(0x4180168f), SkBits2Float(0x4268364c), SkBits2Float(0x41849589), SkBits2Float(0x4267a5ea), SkBits2Float(0x4185b441), SkBits2Float(0x42679069)); // 16.011f, 58.053f, 16.573f, 57.912f, 16.713f, 57.891f
  5684. path.cubicTo(SkBits2Float(0x41891276), SkBits2Float(0x42674296), SkBits2Float(0x418c9dba), SkBits2Float(0x4266df42), SkBits2Float(0x418fd0ed), SkBits2Float(0x4266916f)); // 17.134f, 57.815f, 17.577f, 57.718f, 17.977f, 57.642f
  5685. path.cubicTo(SkBits2Float(0x4190ae1c), SkBits2Float(0x42668732), SkBits2Float(0x4191333b), SkBits2Float(0x42668732), SkBits2Float(0x4192106a), SkBits2Float(0x426670aa)); // 18.085f, 57.632f, 18.15f, 57.632f, 18.258f, 57.61f
  5686. path.cubicTo(SkBits2Float(0x4193189b), SkBits2Float(0x42665a23), SkBits2Float(0x4194a5eb), SkBits2Float(0x426622d7), SkBits2Float(0x4195dd37), SkBits2Float(0x42660d56)); // 18.387f, 57.588f, 18.581f, 57.534f, 18.733f, 57.513f
  5687. path.cubicTo(SkBits2Float(0x41975400), SkBits2Float(0x4265e254), SkBits2Float(0x41988b4b), SkBits2Float(0x4265c18f), SkBits2Float(0x4199d506), SkBits2Float(0x4265ac0e)); // 18.916f, 57.471f, 19.068f, 57.439f, 19.229f, 57.418f
  5688. path.moveTo(SkBits2Float(0x41a4e568), SkBits2Float(0x4277d0eb)); // 20.612f, 61.954f
  5689. path.cubicTo(SkBits2Float(0x41a4cee1), SkBits2Float(0x4277d0eb), SkBits2Float(0x41a48d58), SkBits2Float(0x4277f1b0), SkBits2Float(0x41a48d58), SkBits2Float(0x4277f1b0)); // 20.601f, 61.954f, 20.569f, 61.986f, 20.569f, 61.986f
  5690. path.cubicTo(SkBits2Float(0x41a3831b), SkBits2Float(0x42781275), SkBits2Float(0x41a0c08b), SkBits2Float(0x4277c5a8), SkBits2Float(0x419fe35c), SkBits2Float(0x4277af21)); // 20.439f, 62.018f, 20.094f, 61.943f, 19.986f, 61.921f
  5691. path.cubicTo(SkBits2Float(0x419dd0ed), SkBits2Float(0x42778319), SkBits2Float(0x419bbc73), SkBits2Float(0x42775711), SkBits2Float(0x4199c08b), SkBits2Float(0x42771481)); // 19.727f, 61.878f, 19.467f, 61.835f, 19.219f, 61.77f
  5692. path.cubicTo(SkBits2Float(0x4199687b), SkBits2Float(0x4277093d), SkBits2Float(0x4198f7d7), SkBits2Float(0x4276f3bc), SkBits2Float(0x4198b64e), SkBits2Float(0x4276dd35)); // 19.176f, 61.759f, 19.121f, 61.738f, 19.089f, 61.716f
  5693. path.cubicTo(SkBits2Float(0x419847b6), SkBits2Float(0x4276d1f1), SkBits2Float(0x4198062d), SkBits2Float(0x4276dd35), SkBits2Float(0x4197ae1d), SkBits2Float(0x4276d1f1)); // 19.035f, 61.705f, 19.003f, 61.716f, 18.96f, 61.705f
  5694. path.cubicTo(SkBits2Float(0x4196fbf0), SkBits2Float(0x4276c6ad), SkBits2Float(0x4196083a), SkBits2Float(0x42768f62), SkBits2Float(0x4195831b), SkBits2Float(0x427679e1)); // 18.873f, 61.694f, 18.754f, 61.64f, 18.689f, 61.619f
  5695. path.cubicTo(SkBits2Float(0x41951690), SkBits2Float(0x4276635a), SkBits2Float(0x41950009), SkBits2Float(0x427679e1), SkBits2Float(0x4194a5ec), SkBits2Float(0x4276635a)); // 18.636f, 61.597f, 18.625f, 61.619f, 18.581f, 61.597f
  5696. path.cubicTo(SkBits2Float(0x41940c52), SkBits2Float(0x42764dd9), SkBits2Float(0x41935a25), SkBits2Float(0x4276168d), SkBits2Float(0x4192c08c), SkBits2Float(0x42760006)); // 18.506f, 61.576f, 18.419f, 61.522f, 18.344f, 61.5f
  5697. path.cubicTo(SkBits2Float(0x4190c298), SkBits2Float(0x42759cb2), SkBits2Float(0x418f6257), SkBits2Float(0x427544a2), SkBits2Float(0x418e2b0b), SkBits2Float(0x42748837)); // 18.095f, 61.403f, 17.923f, 61.317f, 17.771f, 61.133f
  5698. path.cubicTo(SkBits2Float(0x418e1690), SkBits2Float(0x4274666c), SkBits2Float(0x418dd2fb), SkBits2Float(0x4274666c), SkBits2Float(0x418dbe80), SkBits2Float(0x42745c2f)); // 17.761f, 61.1f, 17.728f, 61.1f, 17.718f, 61.09f
  5699. path.cubicTo(SkBits2Float(0x418da7f9), SkBits2Float(0x42742f21), SkBits2Float(0x418da7f9), SkBits2Float(0x42740e5c), SkBits2Float(0x418d6670), SkBits2Float(0x4273ed97)); // 17.707f, 61.046f, 17.707f, 61.014f, 17.675f, 60.982f
  5700. path.cubicTo(SkBits2Float(0x418d22da), SkBits2Float(0x42739fc4), SkBits2Float(0x418ccaca), SkBits2Float(0x427373bc), SkBits2Float(0x418c9dbc), SkBits2Float(0x42731aa5)); // 17.642f, 60.906f, 17.599f, 60.863f, 17.577f, 60.776f
  5701. path.cubicTo(SkBits2Float(0x418bd714), SkBits2Float(0x4271b95d), SkBits2Float(0x418d22db), SkBits2Float(0x4270999f), SkBits2Float(0x418fd0ef), SkBits2Float(0x4270418e)); // 17.48f, 60.431f, 17.642f, 60.15f, 17.977f, 60.064f
  5702. path.cubicTo(SkBits2Float(0x41919fc8), SkBits2Float(0x426ffeff), SkBits2Float(0x4193df45), SkBits2Float(0x42701fc3), SkBits2Float(0x4195f3c0), SkBits2Float(0x4270841d)); // 18.203f, 59.999f, 18.484f, 60.031f, 18.744f, 60.129f
  5703. path.cubicTo(SkBits2Float(0x419847b8), SkBits2Float(0x4270e771), SkBits2Float(0x419a5a26), SkBits2Float(0x42718211), SkBits2Float(0x419bd2fb), SkBits2Float(0x42723231)); // 19.035f, 60.226f, 19.294f, 60.377f, 19.478f, 60.549f
  5704. path.cubicTo(SkBits2Float(0x419be982), SkBits2Float(0x42723e7b), SkBits2Float(0x419be982), SkBits2Float(0x42726a83), SkBits2Float(0x419c1484), SkBits2Float(0x42726a83)); // 19.489f, 60.561f, 19.489f, 60.604f, 19.51f, 60.604f
  5705. path.cubicTo(SkBits2Float(0x419c4192), SkBits2Float(0x42728004), SkBits2Float(0x419c831c), SkBits2Float(0x42728004), SkBits2Float(0x419c99a3), SkBits2Float(0x4272968b)); // 19.532f, 60.625f, 19.564f, 60.625f, 19.575f, 60.647f
  5706. path.cubicTo(SkBits2Float(0x419cdb2c), SkBits2Float(0x4272b750), SkBits2Float(0x419d083b), SkBits2Float(0x4272ee9b), SkBits2Float(0x419d3549), SkBits2Float(0x427325e7)); // 19.607f, 60.679f, 19.629f, 60.733f, 19.651f, 60.787f
  5707. path.cubicTo(SkBits2Float(0x419e28ff), SkBits2Float(0x4273cbca), SkBits2Float(0x419f062e), SkBits2Float(0x4274666a), SkBits2Float(0x419ff7d8), SkBits2Float(0x42750c4d)); // 19.77f, 60.949f, 19.878f, 61.1f, 19.996f, 61.262f
  5708. path.cubicTo(SkBits2Float(0x41a0c08c), SkBits2Float(0x42758628), SkBits2Float(0x41a1f5cc), SkBits2Float(0x4275df3f), SkBits2Float(0x41a2d2fb), SkBits2Float(0x42766357)); // 20.094f, 61.381f, 20.245f, 61.468f, 20.353f, 61.597f
  5709. path.cubicTo(SkBits2Float(0x41a31484), SkBits2Float(0x42769aa3), SkBits2Float(0x41a36c95), SkBits2Float(0x4276f3b9), SkBits2Float(0x41a3db2c), SkBits2Float(0x42771fc1)); // 20.385f, 61.651f, 20.428f, 61.738f, 20.482f, 61.781f
  5710. path.cubicTo(SkBits2Float(0x41a4083a), SkBits2Float(0x42774bc9), SkBits2Float(0x41a4b85b), SkBits2Float(0x42778315), SkBits2Float(0x41a4e569), SkBits2Float(0x4277af1d)); // 20.504f, 61.824f, 20.59f, 61.878f, 20.612f, 61.921f
  5711. path.cubicTo(SkBits2Float(0x41a4e569), SkBits2Float(0x4277ba61), SkBits2Float(0x41a4cee2), SkBits2Float(0x4277c5a4), SkBits2Float(0x41a4e569), SkBits2Float(0x4277d0e8)); // 20.612f, 61.932f, 20.601f, 61.943f, 20.612f, 61.954f
  5712. path.moveTo(SkBits2Float(0x41ad72b9), SkBits2Float(0x42786044)); // 21.681f, 62.094f
  5713. path.cubicTo(SkBits2Float(0x41ac106b), SkBits2Float(0x42788c4c), SkBits2Float(0x41a9d0ee), SkBits2Float(0x4277d0e8), SkBits2Float(0x41a8b236), SkBits2Float(0x42778e58)); // 21.508f, 62.137f, 21.227f, 61.954f, 21.087f, 61.889f
  5714. path.cubicTo(SkBits2Float(0x41a2fdfd), SkBits2Float(0x42761689), SkBits2Float(0x41a10215), SkBits2Float(0x42733c6c), SkBits2Float(0x419fb64f), SkBits2Float(0x42704ccf)); // 20.374f, 61.522f, 20.126f, 60.809f, 19.964f, 60.075f
  5715. path.cubicTo(SkBits2Float(0x419f9fc8), SkBits2Float(0x42700a40), SkBits2Float(0x419f47b7), SkBits2Float(0x426f9ba8), SkBits2Float(0x419f3130), SkBits2Float(0x426f5919)); // 19.953f, 60.01f, 19.91f, 59.902f, 19.899f, 59.837f
  5716. path.cubicTo(SkBits2Float(0x419f3130), SkBits2Float(0x426f0b46), SkBits2Float(0x419f47b7), SkBits2Float(0x426ec9bd), SkBits2Float(0x419f3130), SkBits2Float(0x426e70a6)); // 19.899f, 59.761f, 19.91f, 59.697f, 19.899f, 59.61f
  5717. path.cubicTo(SkBits2Float(0x419f1aa9), SkBits2Float(0x426de14a), SkBits2Float(0x419f062e), SkBits2Float(0x426ced94), SkBits2Float(0x419f3130), SkBits2Float(0x426c5d31)); // 19.888f, 59.47f, 19.878f, 59.232f, 19.899f, 59.091f
  5718. path.cubicTo(SkBits2Float(0x419f72b9), SkBits2Float(0x426befa0), SkBits2Float(0x419fe35d), SkBits2Float(0x426b8108), SkBits2Float(0x41a00e5f), SkBits2Float(0x426b3335)); // 19.931f, 58.984f, 19.986f, 58.876f, 20.007f, 58.8f
  5719. path.cubicTo(SkBits2Float(0x41a0666f), SkBits2Float(0x426acfe1), SkBits2Float(0x41a10215), SkBits2Float(0x4269c6aa), SkBits2Float(0x41a19dbb), SkBits2Float(0x4269bb66)); // 20.05f, 58.703f, 20.126f, 58.444f, 20.202f, 58.433f
  5720. path.cubicTo(SkBits2Float(0x41a220cd), SkBits2Float(0x4269bb66), SkBits2Float(0x41a2a5ec), SkBits2Float(0x4269f2b2), SkBits2Float(0x41a31484), SkBits2Float(0x426a3f7f)); // 20.266f, 58.433f, 20.331f, 58.487f, 20.385f, 58.562f
  5721. path.cubicTo(SkBits2Float(0x41a3c6b1), SkBits2Float(0x426aa3d9), SkBits2Float(0x41a449c3), SkBits2Float(0x426b1cae), SkBits2Float(0x41a476d2), SkBits2Float(0x426b3e79)); // 20.472f, 58.66f, 20.536f, 58.778f, 20.558f, 58.811f
  5722. path.cubicTo(SkBits2Float(0x41a5ac11), SkBits2Float(0x426c0521), SkBits2Float(0x41a6caca), SkBits2Float(0x426ce250), SkBits2Float(0x41a8189d), SkBits2Float(0x426da9fe)); // 20.709f, 59.005f, 20.849f, 59.221f, 21.012f, 59.416f
  5723. path.cubicTo(SkBits2Float(0x41aa3f86), SkBits2Float(0x426f1689), SkBits2Float(0x41ac5401), SkBits2Float(0x4270841b), SkBits2Float(0x41ae7aeb), SkBits2Float(0x4271f0a6)); // 21.281f, 59.772f, 21.541f, 60.129f, 21.81f, 60.485f
  5724. path.cubicTo(SkBits2Float(0x41af000a), SkBits2Float(0x427248b6), SkBits2Float(0x41afb237), SkBits2Float(0x4272a1cd), SkBits2Float(0x41b020ce), SkBits2Float(0x4272ee9a)); // 21.875f, 60.571f, 21.962f, 60.658f, 22.016f, 60.733f
  5725. path.cubicTo(SkBits2Float(0x41b06257), SkBits2Float(0x42731aa2), SkBits2Float(0x41b19797), SkBits2Float(0x4273f7d1), SkBits2Float(0x41b19797), SkBits2Float(0x4274199c)); // 22.048f, 60.776f, 22.199f, 60.992f, 22.199f, 61.025f
  5726. path.cubicTo(SkBits2Float(0x41b1c4a5), SkBits2Float(0x427424e0), SkBits2Float(0x41b1831c), SkBits2Float(0x42746669), SkBits2Float(0x41b1831c), SkBits2Float(0x42746669)); // 22.221f, 61.036f, 22.189f, 61.1f, 22.189f, 61.1f
  5727. path.cubicTo(SkBits2Float(0x41ac3d7a), SkBits2Float(0x42742f1d), SkBits2Float(0x41a96257), SkBits2Float(0x4271ae17), SkBits2Float(0x41a7a7f9), SkBits2Float(0x426fb12a)); // 21.53f, 61.046f, 21.173f, 60.42f, 20.957f, 59.923f
  5728. path.cubicTo(SkBits2Float(0x41a77cf7), SkBits2Float(0x426f9ba9), SkBits2Float(0x41a73b6e), SkBits2Float(0x426f79de), SkBits2Float(0x41a73b6e), SkBits2Float(0x426f591a)); // 20.936f, 59.902f, 20.904f, 59.869f, 20.904f, 59.837f
  5729. path.cubicTo(SkBits2Float(0x41a6e151), SkBits2Float(0x426eea82), SkBits2Float(0x41a68941), SkBits2Float(0x426e6564), SkBits2Float(0x41a672ba), SkBits2Float(0x426dec8f)); // 20.86f, 59.729f, 20.817f, 59.599f, 20.806f, 59.481f
  5730. path.cubicTo(SkBits2Float(0x41a65e3f), SkBits2Float(0x426daa00), SkBits2Float(0x41a68941), SkBits2Float(0x426d71ae), SkBits2Float(0x41a65e3f), SkBits2Float(0x426d50e9)); // 20.796f, 59.416f, 20.817f, 59.361f, 20.796f, 59.329f
  5731. path.cubicTo(SkBits2Float(0x41a63131), SkBits2Float(0x426d24e1), SkBits2Float(0x41a56a89), SkBits2Float(0x426cf8d9), SkBits2Float(0x41a4fbf1), SkBits2Float(0x426cf8d9)); // 20.774f, 59.286f, 20.677f, 59.243f, 20.623f, 59.243f
  5732. path.cubicTo(SkBits2Float(0x41a449c4), SkBits2Float(0x426ced95), SkBits2Float(0x41a36c95), SkBits2Float(0x426cf8d9), SkBits2Float(0x41a31484), SkBits2Float(0x426d24e1)); // 20.536f, 59.232f, 20.428f, 59.243f, 20.385f, 59.286f
  5733. path.cubicTo(SkBits2Float(0x41a20a47), SkBits2Float(0x426d71ae), SkBits2Float(0x41a1f5cc), SkBits2Float(0x426f645e), SkBits2Float(0x41a220ce), SkBits2Float(0x42701fc2)); // 20.255f, 59.361f, 20.245f, 59.848f, 20.266f, 60.031f
  5734. path.cubicTo(SkBits2Float(0x41a28f66), SkBits2Float(0x4272e45e), SkBits2Float(0x41a4b85b), SkBits2Float(0x4274c9be), SkBits2Float(0x41a7eb8e), SkBits2Float(0x427621ce)); // 20.32f, 60.723f, 20.59f, 61.197f, 20.99f, 61.533f
  5735. path.cubicTo(SkBits2Float(0x41a82d17), SkBits2Float(0x42764293), SkBits2Float(0x41a870ad), SkBits2Float(0x42764293), SkBits2Float(0x41a8b236), SkBits2Float(0x4276591a)); // 21.022f, 61.565f, 21.055f, 61.565f, 21.087f, 61.587f
  5736. path.cubicTo(SkBits2Float(0x41a90a46), SkBits2Float(0x427679df), SkBits2Float(0x41a93755), SkBits2Float(0x4276b12a), SkBits2Float(0x41a98f65), SkBits2Float(0x4276c6ab)); // 21.13f, 61.619f, 21.152f, 61.673f, 21.195f, 61.694f
  5737. path.cubicTo(SkBits2Float(0x41aadb2c), SkBits2Float(0x42774086), SkBits2Float(0x41ac958a), SkBits2Float(0x42778e59), SkBits2Float(0x41adb64e), SkBits2Float(0x427828f9)); // 21.357f, 61.813f, 21.573f, 61.889f, 21.714f, 62.04f
  5738. path.cubicTo(SkBits2Float(0x41adb64e), SkBits2Float(0x427828f9), SkBits2Float(0x41ad8940), SkBits2Float(0x42786045), SkBits2Float(0x41ad72b8), SkBits2Float(0x42786045)); // 21.714f, 62.04f, 21.692f, 62.094f, 21.681f, 62.094f
  5739. path.moveTo(SkBits2Float(0x41bd168f), SkBits2Float(0x4267be7a)); // 23.636f, 57.936f
  5740. path.cubicTo(SkBits2Float(0x41bd168f), SkBits2Float(0x42679caf), SkBits2Float(0x41bd2d16), SkBits2Float(0x4267666a), SkBits2Float(0x41bd168f), SkBits2Float(0x42674fe2)); // 23.636f, 57.903f, 23.647f, 57.85f, 23.636f, 57.828f
  5741. path.cubicTo(SkBits2Float(0x41bd168f), SkBits2Float(0x4267449e), SkBits2Float(0x41bd0008), SkBits2Float(0x42674fe2), SkBits2Float(0x41bce981), SkBits2Float(0x42672f1d)); // 23.636f, 57.817f, 23.625f, 57.828f, 23.614f, 57.796f
  5742. path.cubicTo(SkBits2Float(0x41bcd2fa), SkBits2Float(0x42672f1d), SkBits2Float(0x41bc9171), SkBits2Float(0x4267449e), SkBits2Float(0x41bc7ae9), SkBits2Float(0x42672f1d)); // 23.603f, 57.796f, 23.571f, 57.817f, 23.56f, 57.796f
  5743. path.cubicTo(SkBits2Float(0x41bb9dba), SkBits2Float(0x4267d500), SkBits2Float(0x41bbb441), SkBits2Float(0x42693648), SkBits2Float(0x41bb72b8), SkBits2Float(0x426a1377)); // 23.452f, 57.958f, 23.463f, 58.303f, 23.431f, 58.519f
  5744. path.cubicTo(SkBits2Float(0x41bb45aa), SkBits2Float(0x426a6c8e), SkBits2Float(0x41bb2f22), SkBits2Float(0x426acfe1), SkBits2Float(0x41bb189b), SkBits2Float(0x426b3335)); // 23.409f, 58.606f, 23.398f, 58.703f, 23.387f, 58.8f
  5745. path.lineTo(SkBits2Float(0x41baed99), SkBits2Float(0x426b5f3d)); // 23.366f, 58.843f
  5746. path.cubicTo(SkBits2Float(0x41baac10), SkBits2Float(0x426bd918), SkBits2Float(0x41bac08b), SkBits2Float(0x426c3129), SkBits2Float(0x41baac10), SkBits2Float(0x426cab04)); // 23.334f, 58.962f, 23.344f, 59.048f, 23.334f, 59.167f
  5747. path.cubicTo(SkBits2Float(0x41ba7f02), SkBits2Float(0x426d50e7), SkBits2Float(0x41ba3b6c), SkBits2Float(0x426e0d52), SkBits2Float(0x41ba106a), SkBits2Float(0x426ec9bc)); // 23.312f, 59.329f, 23.279f, 59.513f, 23.258f, 59.697f
  5748. path.cubicTo(SkBits2Float(0x41b9ccd4), SkBits2Float(0x426f645c), SkBits2Float(0x41b974c4), SkBits2Float(0x42701fc0), SkBits2Float(0x41b949c2), SkBits2Float(0x4270c5a3)); // 23.225f, 59.848f, 23.182f, 60.031f, 23.161f, 60.193f
  5749. path.cubicTo(SkBits2Float(0x41b9333b), SkBits2Float(0x42713f7e), SkBits2Float(0x41b98b4b), SkBits2Float(0x4271820d), SkBits2Float(0x41b9f9e3), SkBits2Float(0x4271ae16)); // 23.15f, 60.312f, 23.193f, 60.377f, 23.247f, 60.42f
  5750. path.cubicTo(SkBits2Float(0x41ba3b6c), SkBits2Float(0x42718d51), SkBits2Float(0x41ba7f02), SkBits2Float(0x4271b95a), SkBits2Float(0x41ba9589), SkBits2Float(0x42716b87)); // 23.279f, 60.388f, 23.312f, 60.431f, 23.323f, 60.355f
  5751. path.cubicTo(SkBits2Float(0x41baac10), SkBits2Float(0x4271343b), SkBits2Float(0x41ba9589), SkBits2Float(0x4270e76e), SkBits2Float(0x41ba9589), SkBits2Float(0x4270999b)); // 23.334f, 60.301f, 23.323f, 60.226f, 23.323f, 60.15f
  5752. path.cubicTo(SkBits2Float(0x41ba9589), SkBits2Float(0x4270418b), SkBits2Float(0x41bac08b), SkBits2Float(0x426fd1ed), SkBits2Float(0x41baed99), SkBits2Float(0x426f645c)); // 23.323f, 60.064f, 23.344f, 59.955f, 23.366f, 59.848f
  5753. path.cubicTo(SkBits2Float(0x41bb2f22), SkBits2Float(0x426e6562), SkBits2Float(0x41bb9dba), SkBits2Float(0x426d3b66), SkBits2Float(0x41bbf5ca), SkBits2Float(0x426c3c6c)); // 23.398f, 59.599f, 23.452f, 59.308f, 23.495f, 59.059f
  5754. path.cubicTo(SkBits2Float(0x41bc0e5d), SkBits2Float(0x426bb853), SkBits2Float(0x41bc0e5d), SkBits2Float(0x426b5f3d), SkBits2Float(0x41bc22d8), SkBits2Float(0x426ae562)); // 23.507f, 58.93f, 23.507f, 58.843f, 23.517f, 58.724f
  5755. path.cubicTo(SkBits2Float(0x41bc395f), SkBits2Float(0x426a820e), SkBits2Float(0x41bc9170), SkBits2Float(0x4269f2b2), SkBits2Float(0x41bca7f7), SkBits2Float(0x42698f5e)); // 23.528f, 58.627f, 23.571f, 58.487f, 23.582f, 58.39f
  5756. path.cubicTo(SkBits2Float(0x41bcd2f9), SkBits2Float(0x426920c6), SkBits2Float(0x41bca7f7), SkBits2Float(0x4268d2f4), SkBits2Float(0x41bcd2f9), SkBits2Float(0x4268645c)); // 23.603f, 58.282f, 23.582f, 58.206f, 23.603f, 58.098f
  5757. path.cubicTo(SkBits2Float(0x41bcd2f9), SkBits2Float(0x42684291), SkBits2Float(0x41bd168f), SkBits2Float(0x4267df3d), SkBits2Float(0x41bd168f), SkBits2Float(0x4267be79)); // 23.603f, 58.065f, 23.636f, 57.968f, 23.636f, 57.936f
  5758. path.moveTo(SkBits2Float(0x41bd6e9f), SkBits2Float(0x426e916b)); // 23.679f, 59.642f
  5759. path.cubicTo(SkBits2Float(0x41bdb028), SkBits2Float(0x426d199c), SkBits2Float(0x41bdf3be), SkBits2Float(0x426bb854), SkBits2Float(0x41be6255), SkBits2Float(0x426a343c)); // 23.711f, 59.275f, 23.744f, 58.93f, 23.798f, 58.551f
  5760. path.cubicTo(SkBits2Float(0x41be78dc), SkBits2Float(0x4269f2b3), SkBits2Float(0x41bed0ed), SkBits2Float(0x4269841b), SkBits2Float(0x41bed0ed), SkBits2Float(0x4269418c)); // 23.809f, 58.487f, 23.852f, 58.379f, 23.852f, 58.314f
  5761. path.cubicTo(SkBits2Float(0x41bee774), SkBits2Float(0x4268bc6d), SkBits2Float(0x41bee774), SkBits2Float(0x42684edc), SkBits2Float(0x41bf1276), SkBits2Float(0x4267df3e)); // 23.863f, 58.184f, 23.863f, 58.077f, 23.884f, 57.968f
  5762. path.cubicTo(SkBits2Float(0x41bf3f84), SkBits2Float(0x4267a7f2), SkBits2Float(0x41bf3f84), SkBits2Float(0x4267872e), SkBits2Float(0x41bf9795), SkBits2Float(0x426770a6)); // 23.906f, 57.914f, 23.906f, 57.882f, 23.949f, 57.86f
  5763. path.cubicTo(SkBits2Float(0x41c0ccd4), SkBits2Float(0x42675b25), SkBits2Float(0x41c6810e), SkBits2Float(0x4268d2f4), SkBits2Float(0x41c6d91e), SkBits2Float(0x426920c7)); // 24.1f, 57.839f, 24.813f, 58.206f, 24.856f, 58.282f
  5764. path.cubicTo(SkBits2Float(0x41c7333b), SkBits2Float(0x42696d94), SkBits2Float(0x41c7062c), SkBits2Float(0x4270e76f), SkBits2Float(0x41c6ae1c), SkBits2Float(0x42713f7f)); // 24.9f, 58.357f, 24.878f, 60.226f, 24.835f, 60.312f
  5765. path.cubicTo(SkBits2Float(0x41c63f84), SkBits2Float(0x4271a2d3), SkBits2Float(0x41c3a7f7), SkBits2Float(0x42716b87), SkBits2Float(0x41c2cac8), SkBits2Float(0x427176cb)); // 24.781f, 60.409f, 24.457f, 60.355f, 24.349f, 60.366f
  5766. path.cubicTo(SkBits2Float(0x41c2b441), SkBits2Float(0x427176cb), SkBits2Float(0x41c270ab), SkBits2Float(0x4271a2d3), SkBits2Float(0x41c245a9), SkBits2Float(0x4271a2d3)); // 24.338f, 60.366f, 24.305f, 60.409f, 24.284f, 60.409f
  5767. path.cubicTo(SkBits2Float(0x41c1aa03), SkBits2Float(0x4271b95a), SkBits2Float(0x41c1106a), SkBits2Float(0x4271ae17), SkBits2Float(0x41c05e3c), SkBits2Float(0x4271b95a)); // 24.208f, 60.431f, 24.133f, 60.42f, 24.046f, 60.431f
  5768. path.cubicTo(SkBits2Float(0x41bf1275), SkBits2Float(0x4271e562), SkBits2Float(0x41be4bcd), SkBits2Float(0x427227f2), SkBits2Float(0x41bcd2f8), SkBits2Float(0x4272322f)); // 23.884f, 60.474f, 23.787f, 60.539f, 23.603f, 60.549f
  5769. path.cubicTo(SkBits2Float(0x41bc395e), SkBits2Float(0x427128f8), SkBits2Float(0x41bd2d15), SkBits2Float(0x426f8f5e), SkBits2Float(0x41bd6e9e), SkBits2Float(0x426e916a)); // 23.528f, 60.29f, 23.647f, 59.89f, 23.679f, 59.642f
  5770. path.moveTo(SkBits2Float(0x41d21481), SkBits2Float(0x42700a3f)); // 26.26f, 60.01f
  5771. path.cubicTo(SkBits2Float(0x41d22b08), SkBits2Float(0x42704cce), SkBits2Float(0x41d299a0), SkBits2Float(0x4270f1ac), SkBits2Float(0x41d2418f), SkBits2Float(0x42713f7e)); // 26.271f, 60.075f, 26.325f, 60.236f, 26.282f, 60.312f
  5772. path.cubicTo(SkBits2Float(0x41d2418f), SkBits2Float(0x42714ac2), SkBits2Float(0x41d22b08), SkBits2Float(0x42713f7e), SkBits2Float(0x41d21481), SkBits2Float(0x42715605)); // 26.282f, 60.323f, 26.271f, 60.312f, 26.26f, 60.334f
  5773. path.cubicTo(SkBits2Float(0x41d1bc71), SkBits2Float(0x42715605), SkBits2Float(0x41d1916f), SkBits2Float(0x42715605), SkBits2Float(0x41d1395e), SkBits2Float(0x42714ac1)); // 26.217f, 60.334f, 26.196f, 60.334f, 26.153f, 60.323f
  5774. path.cubicTo(SkBits2Float(0x41d0b233), SkBits2Float(0x42708419), SkBits2Float(0x41d0c8ba), SkBits2Float(0x426f645b), SkBits2Float(0x41d09db8), SkBits2Float(0x426e5a1d)); // 26.087f, 60.129f, 26.098f, 59.848f, 26.077f, 59.588f
  5775. path.cubicTo(SkBits2Float(0x41d09db8), SkBits2Float(0x426e23d7), SkBits2Float(0x41d05a22), SkBits2Float(0x426d9375), SkBits2Float(0x41d070aa), SkBits2Float(0x426d50e6)); // 26.077f, 59.535f, 26.044f, 59.394f, 26.055f, 59.329f
  5776. path.cubicTo(SkBits2Float(0x41d09db8), SkBits2Float(0x426d3b65), SkBits2Float(0x41d0b233), SkBits2Float(0x426d50e6), SkBits2Float(0x41d0b233), SkBits2Float(0x426d2f1b)); // 26.077f, 59.308f, 26.087f, 59.329f, 26.087f, 59.296f
  5777. path.cubicTo(SkBits2Float(0x41d1395e), SkBits2Float(0x426d3b65), SkBits2Float(0x41d14dd9), SkBits2Float(0x426d2f1b), SkBits2Float(0x41d1916e), SkBits2Float(0x426d50e6)); // 26.153f, 59.308f, 26.163f, 59.296f, 26.196f, 59.329f
  5778. path.cubicTo(SkBits2Float(0x41d1a5e9), SkBits2Float(0x426d50e6), SkBits2Float(0x41d1e97e), SkBits2Float(0x426de148), SkBits2Float(0x41d1e97e), SkBits2Float(0x426dec8c)); // 26.206f, 59.329f, 26.239f, 59.47f, 26.239f, 59.481f
  5779. path.cubicTo(SkBits2Float(0x41d22b07), SkBits2Float(0x426e9cad), SkBits2Float(0x41d1e97e), SkBits2Float(0x426f4dd4), SkBits2Float(0x41d21480), SkBits2Float(0x42700a3e)); // 26.271f, 59.653f, 26.239f, 59.826f, 26.26f, 60.01f
  5780. path.moveTo(SkBits2Float(0x41ee1274), SkBits2Float(0x42564ac1)); // 29.759f, 53.573f
  5781. path.cubicTo(SkBits2Float(0x41ee1274), SkBits2Float(0x42566b86), SkBits2Float(0x41ee3f82), SkBits2Float(0x4256c49c), SkBits2Float(0x41ee28fb), SkBits2Float(0x4256fbe8)); // 29.759f, 53.605f, 29.781f, 53.692f, 29.77f, 53.746f
  5782. path.cubicTo(SkBits2Float(0x41ee28fb), SkBits2Float(0x42571cad), SkBits2Float(0x41ede772), SkBits2Float(0x425748b5), SkBits2Float(0x41ede772), SkBits2Float(0x42576a80)); // 29.77f, 53.778f, 29.738f, 53.821f, 29.738f, 53.854f
  5783. path.cubicTo(SkBits2Float(0x41ed8f62), SkBits2Float(0x425774bd), SkBits2Float(0x41ed20ca), SkBits2Float(0x42579688), SkBits2Float(0x41ec6e9d), SkBits2Float(0x42579688)); // 29.695f, 53.864f, 29.641f, 53.897f, 29.554f, 53.897f
  5784. path.cubicTo(SkBits2Float(0x41ebeb8b), SkBits2Float(0x42579688), SkBits2Float(0x41eb666c), SkBits2Float(0x425774bd), SkBits2Float(0x41eaf7d4), SkBits2Float(0x42576a80)); // 29.49f, 53.897f, 29.425f, 53.864f, 29.371f, 53.854f
  5785. path.cubicTo(SkBits2Float(0x41eacac6), SkBits2Float(0x425676ca), SkBits2Float(0x41eb666c), SkBits2Float(0x42556d92), SkBits2Float(0x41ebbe7c), SkBits2Float(0x42549063)); // 29.349f, 53.616f, 29.425f, 53.357f, 29.468f, 53.141f
  5786. path.cubicTo(SkBits2Float(0x41ebd503), SkBits2Float(0x425421cb), SkBits2Float(0x41ebd503), SkBits2Float(0x4253d3f9), SkBits2Float(0x41ec0005), SkBits2Float(0x42537be8)); // 29.479f, 53.033f, 29.479f, 52.957f, 29.5f, 52.871f
  5787. path.cubicTo(SkBits2Float(0x41ec2d13), SkBits2Float(0x42535a1d), SkBits2Float(0x41ec6e9d), SkBits2Float(0x42531894), SkBits2Float(0x41ecb232), SkBits2Float(0x42531894)); // 29.522f, 52.838f, 29.554f, 52.774f, 29.587f, 52.774f
  5788. path.cubicTo(SkBits2Float(0x41ed3544), SkBits2Float(0x4253020d), SkBits2Float(0x41edd0ea), SkBits2Float(0x42531894), SkBits2Float(0x41ede771), SkBits2Float(0x4253449c)); // 29.651f, 52.752f, 29.727f, 52.774f, 29.738f, 52.817f
  5789. path.cubicTo(SkBits2Float(0x41ee1273), SkBits2Float(0x42534fe0), SkBits2Float(0x41ede771), SkBits2Float(0x42536561), SkBits2Float(0x41ede771), SkBits2Float(0x42537be8)); // 29.759f, 52.828f, 29.738f, 52.849f, 29.738f, 52.871f
  5790. path.cubicTo(SkBits2Float(0x41ee3f81), SkBits2Float(0x42544290), SkBits2Float(0x41ede771), SkBits2Float(0x42554ccd), SkBits2Float(0x41ee1273), SkBits2Float(0x42564ac1)); // 29.781f, 53.065f, 29.738f, 53.325f, 29.759f, 53.573f
  5791. path.moveTo(SkBits2Float(0x41f51273), SkBits2Float(0x4258cbc7)); // 30.634f, 54.199f
  5792. path.cubicTo(SkBits2Float(0x41f4e771), SkBits2Float(0x4259199a), SkBits2Float(0x41f3b025), SkBits2Float(0x4259bf7d), SkBits2Float(0x41f35815), SkBits2Float(0x4259eb85)); // 30.613f, 54.275f, 30.461f, 54.437f, 30.418f, 54.48f
  5793. path.cubicTo(SkBits2Float(0x41f2395d), SkBits2Float(0x425aa6e9), SkBits2Float(0x41f2395d), SkBits2Float(0x425a449c), SkBits2Float(0x41f222d6), SkBits2Float(0x42596666)); // 30.278f, 54.663f, 30.278f, 54.567f, 30.267f, 54.35f
  5794. path.cubicTo(SkBits2Float(0x41f222d6), SkBits2Float(0x425945a1), SkBits2Float(0x41f1f5c8), SkBits2Float(0x4258e24d), SkBits2Float(0x41f222d6), SkBits2Float(0x4258ab02)); // 30.267f, 54.318f, 30.245f, 54.221f, 30.267f, 54.167f
  5795. path.cubicTo(SkBits2Float(0x41f2395d), SkBits2Float(0x42589fbe), SkBits2Float(0x41f2e97e), SkBits2Float(0x42588a3d), SkBits2Float(0x41f30005), SkBits2Float(0x425873b6)); // 30.278f, 54.156f, 30.364f, 54.135f, 30.375f, 54.113f
  5796. path.cubicTo(SkBits2Float(0x41f3b026), SkBits2Float(0x42586872), SkBits2Float(0x41f48d55), SkBits2Float(0x42588937), SkBits2Float(0x41f51274), SkBits2Float(0x4258947b)); // 30.461f, 54.102f, 30.569f, 54.134f, 30.634f, 54.145f
  5797. path.cubicTo(SkBits2Float(0x41f4fdf9), SkBits2Float(0x42589fbf), SkBits2Float(0x41f51274), SkBits2Float(0x4258b646), SkBits2Float(0x41f51274), SkBits2Float(0x4258cbc7)); // 30.624f, 54.156f, 30.634f, 54.178f, 30.634f, 54.199f
  5798. path.moveTo(SkBits2Float(0x41f20e5b), SkBits2Float(0x425727f0)); // 30.257f, 53.789f
  5799. path.cubicTo(SkBits2Float(0x41f1cac5), SkBits2Float(0x4256da1d), SkBits2Float(0x41f222d6), SkBits2Float(0x42561375), SkBits2Float(0x41f222d6), SkBits2Float(0x4255d0e6)); // 30.224f, 53.713f, 30.267f, 53.519f, 30.267f, 53.454f
  5800. path.cubicTo(SkBits2Float(0x41f222d6), SkBits2Float(0x42553646), SkBits2Float(0x41f1b43e), SkBits2Float(0x4254374c), SkBits2Float(0x41f20e5b), SkBits2Float(0x42539169)); // 30.267f, 53.303f, 30.213f, 53.054f, 30.257f, 52.892f
  5801. path.cubicTo(SkBits2Float(0x41f222d6), SkBits2Float(0x42536561), SkBits2Float(0x41f2916d), SkBits2Float(0x4253449c), SkBits2Float(0x41f2be7c), SkBits2Float(0x4253449c)); // 30.267f, 52.849f, 30.321f, 52.817f, 30.343f, 52.817f
  5802. path.cubicTo(SkBits2Float(0x41f3b026), SkBits2Float(0x42532e15), SkBits2Float(0x41f845a7), SkBits2Float(0x42539cac), SkBits2Float(0x41f88730), SkBits2Float(0x4253d3f8)); // 30.461f, 52.795f, 31.034f, 52.903f, 31.066f, 52.957f
  5803. path.cubicTo(SkBits2Float(0x41f8cac6), SkBits2Float(0x42540000), SkBits2Float(0x41f8cac6), SkBits2Float(0x42544290), SkBits2Float(0x41f8e14d), SkBits2Float(0x4254851f)); // 31.099f, 53, 31.099f, 53.065f, 31.11f, 53.13f
  5804. path.cubicTo(SkBits2Float(0x41f8f5c8), SkBits2Float(0x4254d1ec), SkBits2Float(0x41f97ae7), SkBits2Float(0x425578d5), SkBits2Float(0x41f9666c), SkBits2Float(0x4255e76d)); // 31.12f, 53.205f, 31.185f, 53.368f, 31.175f, 53.476f
  5805. path.cubicTo(SkBits2Float(0x41f94dd9), SkBits2Float(0x42561375), SkBits2Float(0x41f88731), SkBits2Float(0x4256a2d1), SkBits2Float(0x41f85c2f), SkBits2Float(0x4256c49c)); // 31.163f, 53.519f, 31.066f, 53.659f, 31.045f, 53.692f
  5806. path.cubicTo(SkBits2Float(0x41f845a8), SkBits2Float(0x4256da1d), SkBits2Float(0x41f7d710), SkBits2Float(0x4256f0a4), SkBits2Float(0x41f7d710), SkBits2Float(0x4256fbe8)); // 31.034f, 53.713f, 30.98f, 53.735f, 30.98f, 53.746f
  5807. path.lineTo(SkBits2Float(0x41f7d710), SkBits2Float(0x42571cad)); // 30.98f, 53.778f
  5808. path.cubicTo(SkBits2Float(0x41f79587), SkBits2Float(0x4257322e), SkBits2Float(0x41f73b6a), SkBits2Float(0x425748b5), SkBits2Float(0x41f6f9e1), SkBits2Float(0x42575f3c)); // 30.948f, 53.799f, 30.904f, 53.821f, 30.872f, 53.843f
  5809. path.cubicTo(SkBits2Float(0x41f6062b), SkBits2Float(0x425774bd), SkBits2Float(0x41f2395e), SkBits2Float(0x425774bd), SkBits2Float(0x41f20e5c), SkBits2Float(0x425727f0)); // 30.753f, 53.864f, 30.278f, 53.864f, 30.257f, 53.789f
  5810. path.moveTo(SkBits2Float(0x42048f5f), SkBits2Float(0x426b072b)); // 33.14f, 58.757f
  5811. path.cubicTo(SkBits2Float(0x42046d94), SkBits2Float(0x426acfdf), SkBits2Float(0x42048f5f), SkBits2Float(0x426ab958), SkBits2Float(0x420478d8), SkBits2Float(0x426a77cf)); // 33.107f, 58.703f, 33.14f, 58.681f, 33.118f, 58.617f
  5812. path.cubicTo(SkBits2Float(0x42045813), SkBits2Float(0x4269d0e6), SkBits2Float(0x42042c0b), SkBits2Float(0x42693646), SkBits2Float(0x42041584), SkBits2Float(0x4268851f)); // 33.086f, 58.454f, 33.043f, 58.303f, 33.021f, 58.13f
  5813. path.cubicTo(SkBits2Float(0x4203e97c), SkBits2Float(0x4267c9bb), SkBits2Float(0x42039caf), SkBits2Float(0x42670d50), SkBits2Float(0x4203a6ec), SkBits2Float(0x426624dd)); // 32.978f, 57.947f, 32.903f, 57.763f, 32.913f, 57.536f
  5814. path.cubicTo(SkBits2Float(0x4203a6ec), SkBits2Float(0x426624dd), SkBits2Float(0x4203de38), SkBits2Float(0x4265f8d5), SkBits2Float(0x4203e97b), SkBits2Float(0x4265f8d5)); // 32.913f, 57.536f, 32.967f, 57.493f, 32.978f, 57.493f
  5815. path.cubicTo(SkBits2Float(0x42042c0a), SkBits2Float(0x4265ee98), SkBits2Float(0x4204c6aa), SkBits2Float(0x4266199a), SkBits2Float(0x4204e875), SkBits2Float(0x42663b64)); // 33.043f, 57.483f, 33.194f, 57.525f, 33.227f, 57.558f
  5816. path.cubicTo(SkBits2Float(0x42051ebb), SkBits2Float(0x42668937), SkBits2Float(0x42051ebb), SkBits2Float(0x42671893), SkBits2Float(0x42054085), SkBits2Float(0x426770a3)); // 33.28f, 57.634f, 33.28f, 57.774f, 33.313f, 57.86f
  5817. path.cubicTo(SkBits2Float(0x42058314), SkBits2Float(0x4268a6e9), SkBits2Float(0x4206072d), SkBits2Float(0x4269d0e5), SkBits2Float(0x42061271), SkBits2Float(0x426b3e76)); // 33.378f, 58.163f, 33.507f, 58.454f, 33.518f, 58.811f
  5818. path.cubicTo(SkBits2Float(0x4205e669), SkBits2Float(0x426b3e76), SkBits2Float(0x4205e669), SkBits2Float(0x426b49ba), SkBits2Float(0x4205b95a), SkBits2Float(0x426b5f3b)); // 33.475f, 58.811f, 33.475f, 58.822f, 33.431f, 58.843f
  5819. path.cubicTo(SkBits2Float(0x42056c8d), SkBits2Float(0x426b5f3b), SkBits2Float(0x4204e875), SkBits2Float(0x426b75c2), SkBits2Float(0x4204b023), SkBits2Float(0x426b49ba)); // 33.356f, 58.843f, 33.227f, 58.865f, 33.172f, 58.822f
  5820. path.lineTo(SkBits2Float(0x4204b023), SkBits2Float(0x426b3333)); // 33.172f, 58.8f
  5821. path.cubicTo(SkBits2Float(0x4204b023), SkBits2Float(0x426b27ef), SkBits2Float(0x42048f5e), SkBits2Float(0x426b072b), SkBits2Float(0x42048f5e), SkBits2Float(0x426b072b)); // 33.172f, 58.789f, 33.14f, 58.757f, 33.14f, 58.757f
  5822. path.moveTo(SkBits2Float(0x42035918), SkBits2Float(0x426b6a7f)); // 32.837f, 58.854f
  5823. path.cubicTo(SkBits2Float(0x42032d10), SkBits2Float(0x426b6a7f), SkBits2Float(0x42030108), SkBits2Float(0x426b75c3), SkBits2Float(0x4202d4ff), SkBits2Float(0x426b75c3)); // 32.794f, 58.854f, 32.751f, 58.865f, 32.708f, 58.865f
  5824. path.cubicTo(SkBits2Float(0x42026667), SkBits2Float(0x426b75c3), SkBits2Float(0x42020d51), SkBits2Float(0x426b5f3c), SkBits2Float(0x4201ec8c), SkBits2Float(0x426b27f0)); // 32.6f, 58.865f, 32.513f, 58.843f, 32.481f, 58.789f
  5825. path.cubicTo(SkBits2Float(0x4201cbc7), SkBits2Float(0x426ae561), SkBits2Float(0x4201cbc7), SkBits2Float(0x426a6c8c), SkBits2Float(0x4201b540), SkBits2Float(0x426a0832)); // 32.449f, 58.724f, 32.449f, 58.606f, 32.427f, 58.508f
  5826. path.cubicTo(SkBits2Float(0x42018938), SkBits2Float(0x426920c5), SkBits2Float(0x42016873), SkBits2Float(0x42683853), SkBits2Float(0x42013021), SkBits2Float(0x42672f1b)); // 32.384f, 58.282f, 32.352f, 58.055f, 32.297f, 57.796f
  5827. path.cubicTo(SkBits2Float(0x42013021), SkBits2Float(0x4267020d), SkBits2Float(0x4200f9db), SkBits2Float(0x42669375), SkBits2Float(0x4200f9db), SkBits2Float(0x426651ec)); // 32.297f, 57.752f, 32.244f, 57.644f, 32.244f, 57.58f
  5828. path.cubicTo(SkBits2Float(0x42010418), SkBits2Float(0x4266199a), SkBits2Float(0x420151eb), SkBits2Float(0x4265ee98), SkBits2Float(0x42018937), SkBits2Float(0x4265ee98)); // 32.254f, 57.525f, 32.33f, 57.483f, 32.384f, 57.483f
  5829. path.cubicTo(SkBits2Float(0x4201e147), SkBits2Float(0x4265e24e), SkBits2Float(0x42022f1a), SkBits2Float(0x4265ee98), SkBits2Float(0x42023a5e), SkBits2Float(0x4266199a)); // 32.47f, 57.471f, 32.546f, 57.483f, 32.557f, 57.525f
  5830. path.cubicTo(SkBits2Float(0x420271aa), SkBits2Float(0x42665c29), SkBits2Float(0x42027be7), SkBits2Float(0x42670d50), SkBits2Float(0x42029db2), SkBits2Float(0x426770a4)); // 32.611f, 57.59f, 32.621f, 57.763f, 32.654f, 57.86f
  5831. path.cubicTo(SkBits2Float(0x42029db2), SkBits2Float(0x4267be77), SkBits2Float(0x4202d4fe), SkBits2Float(0x4268178d), SkBits2Float(0x4202e041), SkBits2Float(0x42684ed9)); // 32.654f, 57.936f, 32.708f, 58.023f, 32.719f, 58.077f
  5832. path.cubicTo(SkBits2Float(0x4202ea7e), SkBits2Float(0x4268bc6a), SkBits2Float(0x4202ea7e), SkBits2Float(0x4268fefa), SkBits2Float(0x42030106), SkBits2Float(0x42695810)); // 32.729f, 58.184f, 32.729f, 58.249f, 32.751f, 58.336f
  5833. path.cubicTo(SkBits2Float(0x420322d1), SkBits2Float(0x4269fced), SkBits2Float(0x4203645a), SkBits2Float(0x426a820c), SkBits2Float(0x4203645a), SkBits2Float(0x426b49ba)); // 32.784f, 58.497f, 32.848f, 58.627f, 32.848f, 58.822f
  5834. path.cubicTo(SkBits2Float(0x42034395), SkBits2Float(0x426b49ba), SkBits2Float(0x42035916), SkBits2Float(0x426b49ba), SkBits2Float(0x42035916), SkBits2Float(0x426b6a7f)); // 32.816f, 58.822f, 32.837f, 58.822f, 32.837f, 58.854f
  5835. path.moveTo(SkBits2Float(0x42009580), SkBits2Float(0x426b6a7f)); // 32.146f, 58.854f
  5836. path.lineTo(SkBits2Float(0x42008b43), SkBits2Float(0x426b8106)); // 32.136f, 58.876f
  5837. path.cubicTo(SkBits2Float(0x42007fff), SkBits2Float(0x426b8106), SkBits2Float(0x42005e35), SkBits2Float(0x426b75c2), SkBits2Float(0x420048b4), SkBits2Float(0x426b8106)); // 32.125f, 58.876f, 32.092f, 58.865f, 32.071f, 58.876f
  5838. path.cubicTo(SkBits2Float(0x41fdcccc), SkBits2Float(0x426bad0e), SkBits2Float(0x41f94dd2), SkBits2Float(0x426b8c4a), SkBits2Float(0x41f6cccc), SkBits2Float(0x426b8c4a)); // 31.725f, 58.919f, 31.163f, 58.887f, 30.85f, 58.887f
  5839. path.cubicTo(SkBits2Float(0x41f65e34), SkBits2Float(0x426b8106), SkBits2Float(0x41f39ba5), SkBits2Float(0x426b8106), SkBits2Float(0x41f35810), SkBits2Float(0x426b49bb)); // 30.796f, 58.876f, 30.451f, 58.876f, 30.418f, 58.822f
  5840. path.cubicTo(SkBits2Float(0x41f35810), SkBits2Float(0x426b3334), SkBits2Float(0x41f2e978), SkBits2Float(0x4267926f), SkBits2Float(0x41f31687), SkBits2Float(0x426723d8)); // 30.418f, 58.8f, 30.364f, 57.893f, 30.386f, 57.785f
  5841. path.lineTo(SkBits2Float(0x41f36e97), SkBits2Float(0x4266ec8c)); // 30.429f, 57.731f
  5842. path.cubicTo(SkBits2Float(0x41f3f3b6), SkBits2Float(0x4266b540), SkBits2Float(0x41f4d0e5), SkBits2Float(0x4266b540), SkBits2Float(0x41f58106), SkBits2Float(0x42669eb9)); // 30.494f, 57.677f, 30.602f, 57.677f, 30.688f, 57.655f
  5843. path.cubicTo(SkBits2Float(0x41f7ed91), SkBits2Float(0x42663b65), SkBits2Float(0x41fac6a8), SkBits2Float(0x4265ee98), SkBits2Float(0x41fdb646), SkBits2Float(0x4265d811)); // 30.991f, 57.558f, 31.347f, 57.483f, 31.714f, 57.461f
  5844. path.cubicTo(SkBits2Float(0x41fe51ec), SkBits2Float(0x4265c18a), SkBits2Float(0x41ff2f1b), SkBits2Float(0x4265d811), SkBits2Float(0x41ff872b), SkBits2Float(0x4265f8d6)); // 31.79f, 57.439f, 31.898f, 57.461f, 31.941f, 57.493f
  5845. path.cubicTo(SkBits2Float(0x41ffb439), SkBits2Float(0x4266199b), SkBits2Float(0x41ffb439), SkBits2Float(0x42669eb9), SkBits2Float(0x41ffdf3b), SkBits2Float(0x4266d605)); // 31.963f, 57.525f, 31.963f, 57.655f, 31.984f, 57.709f
  5846. path.cubicTo(SkBits2Float(0x41fff5c2), SkBits2Float(0x42670d51), SkBits2Float(0x42001cac), SkBits2Float(0x42675b24), SkBits2Float(0x42001cac), SkBits2Float(0x4267926f)); // 31.995f, 57.763f, 32.028f, 57.839f, 32.028f, 57.893f
  5847. path.cubicTo(SkBits2Float(0x42003d71), SkBits2Float(0x42684290), SkBits2Float(0x420048b4), SkBits2Float(0x4268c7ae), SkBits2Float(0x42005e35), SkBits2Float(0x42696d92)); // 32.06f, 58.065f, 32.071f, 58.195f, 32.092f, 58.357f
  5848. path.cubicTo(SkBits2Float(0x42008000), SkBits2Float(0x4269d0e6), SkBits2Float(0x4200ac08), SkBits2Float(0x426a5605), SkBits2Float(0x4200b74c), SkBits2Float(0x426acfe0)); // 32.125f, 58.454f, 32.168f, 58.584f, 32.179f, 58.703f
  5849. path.cubicTo(SkBits2Float(0x4200c189), SkBits2Float(0x426b072c), SkBits2Float(0x4200b74c), SkBits2Float(0x426b49bb), SkBits2Float(0x42009581), SkBits2Float(0x426b6a80)); // 32.189f, 58.757f, 32.179f, 58.822f, 32.146f, 58.854f
  5850. path.moveTo(SkBits2Float(0x41eeae14), SkBits2Float(0x426bef9f)); // 29.835f, 58.984f
  5851. path.cubicTo(SkBits2Float(0x41ee8312), SkBits2Float(0x426c26eb), SkBits2Float(0x41ed353f), SkBits2Float(0x426c52f3), SkBits2Float(0x41ecc8b4), SkBits2Float(0x426c73b8)); // 29.814f, 59.038f, 29.651f, 59.081f, 29.598f, 59.113f
  5852. path.cubicTo(SkBits2Float(0x41eb7ae1), SkBits2Float(0x426cd70c), SkBits2Float(0x41ea3127), SkBits2Float(0x426d9376), SkBits2Float(0x41e96872), SkBits2Float(0x426e2e16)); // 29.435f, 59.21f, 29.274f, 59.394f, 29.176f, 59.545f
  5853. path.cubicTo(SkBits2Float(0x41e88b43), SkBits2Float(0x426ed3f9), SkBits2Float(0x41e7c49b), SkBits2Float(0x426fdd31), SkBits2Float(0x41e6a5e3), SkBits2Float(0x4270570c)); // 29.068f, 59.707f, 28.971f, 59.966f, 28.831f, 60.085f
  5854. path.cubicTo(SkBits2Float(0x41e678d5), SkBits2Float(0x427078d7), SkBits2Float(0x41e6624d), SkBits2Float(0x42706d93), SkBits2Float(0x41e620c4), SkBits2Float(0x427078d7)); // 28.809f, 60.118f, 28.798f, 60.107f, 28.766f, 60.118f
  5855. path.cubicTo(SkBits2Float(0x41e60a3d), SkBits2Float(0x4270841b), SkBits2Float(0x41e5f3b6), SkBits2Float(0x4270999c), SkBits2Float(0x41e5f3b6), SkBits2Float(0x4270999c)); // 28.755f, 60.129f, 28.744f, 60.15f, 28.744f, 60.15f
  5856. path.cubicTo(SkBits2Float(0x41e52d0e), SkBits2Float(0x4270d0e8), SkBits2Float(0x41e49374), SkBits2Float(0x4270e76f), SkBits2Float(0x41e39fbe), SkBits2Float(0x4270fcf0)); // 28.647f, 60.204f, 28.572f, 60.226f, 28.453f, 60.247f
  5857. path.cubicTo(SkBits2Float(0x41e2c28f), SkBits2Float(0x42711377), SkBits2Float(0x41e1a1ca), SkBits2Float(0x42714ac3), SkBits2Float(0x41e03f7c), SkBits2Float(0x4271343c)); // 28.345f, 60.269f, 28.204f, 60.323f, 28.031f, 60.301f
  5858. path.cubicTo(SkBits2Float(0x41de2d0d), SkBits2Float(0x42711377), SkBits2Float(0x41e0c49b), SkBits2Float(0x426e9caf), SkBits2Float(0x41e149b9), SkBits2Float(0x426e23da)); // 27.772f, 60.269f, 28.096f, 59.653f, 28.161f, 59.535f
  5859. path.cubicTo(SkBits2Float(0x41e23d6f), SkBits2Float(0x426d2f1e), SkBits2Float(0x41e38936), SkBits2Float(0x426c52f5), SkBits2Float(0x41e4eb84), SkBits2Float(0x426b8109)); // 28.28f, 59.296f, 28.442f, 59.081f, 28.615f, 58.876f
  5860. path.cubicTo(SkBits2Float(0x41e55a1c), SkBits2Float(0x426b49bd), SkBits2Float(0x41e5dd2e), SkBits2Float(0x426b1caf), SkBits2Float(0x41e6624d), SkBits2Float(0x426ae563)); // 28.669f, 58.822f, 28.733f, 58.778f, 28.798f, 58.724f
  5861. path.cubicTo(SkBits2Float(0x41e78312), SkBits2Float(0x426a77d2), SkBits2Float(0x41e88b43), SkBits2Float(0x4269fcf0), SkBits2Float(0x41e99580), SkBits2Float(0x42698f5f)); // 28.939f, 58.617f, 29.068f, 58.497f, 29.198f, 58.39f
  5862. path.cubicTo(SkBits2Float(0x41ea3126), SkBits2Float(0x42695813), SkBits2Float(0x41edd0e4), SkBits2Float(0x4267a7f2), SkBits2Float(0x41eeae13), SkBits2Float(0x42684292)); // 29.274f, 58.336f, 29.727f, 57.914f, 29.835f, 58.065f
  5863. path.cubicTo(SkBits2Float(0x41eeae13), SkBits2Float(0x42684292), SkBits2Float(0x41eec49a), SkBits2Float(0x42684edc), SkBits2Float(0x41eec49a), SkBits2Float(0x42685919)); // 29.835f, 58.065f, 29.846f, 58.077f, 29.846f, 58.087f
  5864. path.cubicTo(SkBits2Float(0x41ef0623), SkBits2Float(0x4268a6ec), SkBits2Float(0x41eedb21), SkBits2Float(0x426bb854), SkBits2Float(0x41eeae13), SkBits2Float(0x426befa0)); // 29.878f, 58.163f, 29.857f, 58.93f, 29.835f, 58.984f
  5865. path.moveTo(SkBits2Float(0x41eaf7cd), SkBits2Float(0x4258947d)); // 29.371f, 54.145f
  5866. path.cubicTo(SkBits2Float(0x41ebd4fc), SkBits2Float(0x425873b8), SkBits2Float(0x41ed353e), SkBits2Float(0x42589fc1), SkBits2Float(0x41edba5c), SkBits2Float(0x4258ab04)); // 29.479f, 54.113f, 29.651f, 54.156f, 29.716f, 54.167f
  5867. path.cubicTo(SkBits2Float(0x41ede76a), SkBits2Float(0x4259c9bc), SkBits2Float(0x41ee3f7b), SkBits2Float(0x425b6e9a), SkBits2Float(0x41ee126c), SkBits2Float(0x425c8314)); // 29.738f, 54.447f, 29.781f, 54.858f, 29.759f, 55.128f
  5868. path.cubicTo(SkBits2Float(0x41ede76a), SkBits2Float(0x425d343b), SkBits2Float(0x41ee5602), SkBits2Float(0x425dda1e), SkBits2Float(0x41edd0e3), SkBits2Float(0x425e74be)); // 29.738f, 55.301f, 29.792f, 55.463f, 29.727f, 55.614f
  5869. path.cubicTo(SkBits2Float(0x41ed624b), SkBits2Float(0x425f1aa1), SkBits2Float(0x41ec6e95), SkBits2Float(0x425f947c), SkBits2Float(0x41ebd4fc), SkBits2Float(0x426023d9)); // 29.673f, 55.776f, 29.554f, 55.895f, 29.479f, 56.035f
  5870. path.cubicTo(SkBits2Float(0x41eb22cf), SkBits2Float(0x4260c9bc), SkBits2Float(0x41ea5c27), SkBits2Float(0x4261645c), SkBits2Float(0x41e9957f), SkBits2Float(0x42621583)); // 29.392f, 56.197f, 29.295f, 56.348f, 29.198f, 56.521f
  5871. path.cubicTo(SkBits2Float(0x41e8e55e), SkBits2Float(0x4262c6aa), SkBits2Float(0x41e849b8), SkBits2Float(0x42638314), SkBits2Float(0x41e78310), SkBits2Float(0x426427f2)); // 29.112f, 56.694f, 29.036f, 56.878f, 28.939f, 57.039f
  5872. path.cubicTo(SkBits2Float(0x41e72b00), SkBits2Float(0x42646b88), SkBits2Float(0x41e6e76a), SkBits2Float(0x4264b854), SkBits2Float(0x41e68f5a), SkBits2Float(0x4264efa0)); // 28.896f, 57.105f, 28.863f, 57.18f, 28.82f, 57.234f
  5873. path.cubicTo(SkBits2Float(0x41e6624c), SkBits2Float(0x42651ba8), SkBits2Float(0x41e60a3b), SkBits2Float(0x4265322f), SkBits2Float(0x41e5dd2d), SkBits2Float(0x426552f4)); // 28.798f, 57.277f, 28.755f, 57.299f, 28.733f, 57.331f
  5874. path.cubicTo(SkBits2Float(0x41e570a2), SkBits2Float(0x4264ad11), SkBits2Float(0x41e620c3), SkBits2Float(0x4263c49e), SkBits2Float(0x41e6624c), SkBits2Float(0x426329fe)); // 28.68f, 57.169f, 28.766f, 56.942f, 28.798f, 56.791f
  5875. path.cubicTo(SkBits2Float(0x41e6a5e2), SkBits2Float(0x4262418b), SkBits2Float(0x41e6e76b), SkBits2Float(0x42617ae3), SkBits2Float(0x41e72b00), SkBits2Float(0x42609271)); // 28.831f, 56.564f, 28.863f, 56.37f, 28.896f, 56.143f
  5876. path.cubicTo(SkBits2Float(0x41e75602), SkBits2Float(0x42604fe2), SkBits2Float(0x41e7978b), SkBits2Float(0x425fe250), SkBits2Float(0x41e7c49a), SkBits2Float(0x425f9fc1)); // 28.917f, 56.078f, 28.949f, 55.971f, 28.971f, 55.906f
  5877. path.cubicTo(SkBits2Float(0x41e7db21), SkBits2Float(0x425f25e6), SkBits2Float(0x41e7db21), SkBits2Float(0x425ec18c), SkBits2Float(0x41e80623), SkBits2Float(0x425e53fa)); // 28.982f, 55.787f, 28.982f, 55.689f, 29.003f, 55.582f
  5878. path.lineTo(SkBits2Float(0x41e849b9), SkBits2Float(0x425e26ec)); // 29.036f, 55.538f
  5879. path.cubicTo(SkBits2Float(0x41e874bb), SkBits2Float(0x425da2d3), SkBits2Float(0x41e8b851), SkBits2Float(0x425d28f8), SkBits2Float(0x41e8e55f), SkBits2Float(0x425caf1d)); // 29.057f, 55.409f, 29.09f, 55.29f, 29.112f, 55.171f
  5880. path.cubicTo(SkBits2Float(0x41e93b63), SkBits2Float(0x425b8f5f), SkBits2Float(0x41e97ef9), SkBits2Float(0x425a7ae4), SkBits2Float(0x41ea0417), SkBits2Float(0x42596669)); // 29.154f, 54.89f, 29.187f, 54.62f, 29.252f, 54.35f
  5881. path.cubicTo(SkBits2Float(0x41ea3125), SkBits2Float(0x4259199c), SkBits2Float(0x41ea5c27), SkBits2Float(0x4258ab05), SkBits2Float(0x41eaf7cd), SkBits2Float(0x4258947d)); // 29.274f, 54.275f, 29.295f, 54.167f, 29.371f, 54.145f
  5882. path.moveTo(SkBits2Float(0x41e96871), SkBits2Float(0x4256a2d3)); // 29.176f, 53.659f
  5883. path.cubicTo(SkBits2Float(0x41e953f6), SkBits2Float(0x4256e562), SkBits2Float(0x41e96871), SkBits2Float(0x425727f2), SkBits2Float(0x41e93b63), SkBits2Float(0x42575f3d)); // 29.166f, 53.724f, 29.176f, 53.789f, 29.154f, 53.843f
  5884. path.cubicTo(SkBits2Float(0x41e8fbe6), SkBits2Float(0x42578002), SkBits2Float(0x41e88b42), SkBits2Float(0x42578002), SkBits2Float(0x41e81cab), SkBits2Float(0x42578002)); // 29.123f, 53.875f, 29.068f, 53.875f, 29.014f, 53.875f
  5885. path.cubicTo(SkBits2Float(0x41e7db22), SkBits2Float(0x42578002), SkBits2Float(0x41e78311), SkBits2Float(0x42576a81), SkBits2Float(0x41e75603), SkBits2Float(0x42575f3d)); // 28.982f, 53.875f, 28.939f, 53.854f, 28.917f, 53.843f
  5886. path.cubicTo(SkBits2Float(0x41e72b01), SkBits2Float(0x4257322f), SkBits2Float(0x41e72b01), SkBits2Float(0x4257322f), SkBits2Float(0x41e72b01), SkBits2Float(0x4256fbe9)); // 28.896f, 53.799f, 28.896f, 53.799f, 28.896f, 53.746f
  5887. path.cubicTo(SkBits2Float(0x41e72b01), SkBits2Float(0x4256b95a), SkBits2Float(0x41e78311), SkBits2Float(0x42564ac2), SkBits2Float(0x41e7978c), SkBits2Float(0x42561376)); // 28.896f, 53.681f, 28.939f, 53.573f, 28.949f, 53.519f
  5888. path.cubicTo(SkBits2Float(0x41e7db22), SkBits2Float(0x4255570c), SkBits2Float(0x41e80624), SkBits2Float(0x4254b128), SkBits2Float(0x41e86040), SkBits2Float(0x42540b45)); // 28.982f, 53.335f, 29.003f, 53.173f, 29.047f, 53.011f
  5889. path.cubicTo(SkBits2Float(0x41e874bb), SkBits2Float(0x4253cac2), SkBits2Float(0x41e86040), SkBits2Float(0x4253916a), SkBits2Float(0x41e8b850), SkBits2Float(0x42536562)); // 29.057f, 52.948f, 29.047f, 52.892f, 29.09f, 52.849f
  5890. path.cubicTo(SkBits2Float(0x41e8ced7), SkBits2Float(0x42534fe1), SkBits2Float(0x41e953f6), SkBits2Float(0x42532e16), SkBits2Float(0x41e97ef8), SkBits2Float(0x42532e16)); // 29.101f, 52.828f, 29.166f, 52.795f, 29.187f, 52.795f
  5891. path.cubicTo(SkBits2Float(0x41ea0417), SkBits2Float(0x425323d9), SkBits2Float(0x41ea3125), SkBits2Float(0x42534fe1), SkBits2Float(0x41ea72ae), SkBits2Float(0x42535a1e)); // 29.252f, 52.785f, 29.274f, 52.828f, 29.306f, 52.838f
  5892. path.cubicTo(SkBits2Float(0x41ea72ae), SkBits2Float(0x42548520), SkBits2Float(0x41e9d708), SkBits2Float(0x4255a4df), SkBits2Float(0x41e96871), SkBits2Float(0x4256a2d2)); // 29.306f, 53.13f, 29.23f, 53.411f, 29.176f, 53.659f
  5893. path.moveTo(SkBits2Float(0x41e874bb), SkBits2Float(0x4258b647)); // 29.057f, 54.178f
  5894. path.cubicTo(SkBits2Float(0x41e86040), SkBits2Float(0x42595c2a), SkBits2Float(0x41e849b9), SkBits2Float(0x4259bf7e), SkBits2Float(0x41e80623), SkBits2Float(0x425a4eda)); // 29.047f, 54.34f, 29.036f, 54.437f, 29.003f, 54.577f
  5895. path.cubicTo(SkBits2Float(0x41e7db21), SkBits2Float(0x425ad3f9), SkBits2Float(0x41e76c89), SkBits2Float(0x425b8520), SkBits2Float(0x41e72b00), SkBits2Float(0x425c147c)); // 28.982f, 54.707f, 28.928f, 54.88f, 28.896f, 55.02f
  5896. path.cubicTo(SkBits2Float(0x41e71479), SkBits2Float(0x425c570b), SkBits2Float(0x41e72b00), SkBits2Float(0x425c77d0), SkBits2Float(0x41e71479), SkBits2Float(0x425cba5f)); // 28.885f, 55.085f, 28.896f, 55.117f, 28.885f, 55.182f
  5897. path.cubicTo(SkBits2Float(0x41e68f5a), SkBits2Float(0x425dfae2), SkBits2Float(0x41e5dd2d), SkBits2Float(0x425f676d), SkBits2Float(0x41e570a2), SkBits2Float(0x4260a8f7)); // 28.82f, 55.495f, 28.733f, 55.851f, 28.68f, 56.165f
  5898. path.cubicTo(SkBits2Float(0x41e52d0c), SkBits2Float(0x42610c4b), SkBits2Float(0x41e55a1b), SkBits2Float(0x42614eda), SkBits2Float(0x41e52d0c), SkBits2Float(0x42619ba7)); // 28.647f, 56.262f, 28.669f, 56.327f, 28.647f, 56.402f
  5899. path.cubicTo(SkBits2Float(0x41e51685), SkBits2Float(0x4261f4be), SkBits2Float(0x41e4be74), SkBits2Float(0x42624cce), SkBits2Float(0x41e4a7ed), SkBits2Float(0x42628f5d)); // 28.636f, 56.489f, 28.593f, 56.575f, 28.582f, 56.64f
  5900. path.cubicTo(SkBits2Float(0x41e46664), SkBits2Float(0x42634bc7), SkBits2Float(0x41e43b62), SkBits2Float(0x4263e667), SkBits2Float(0x41e3f7cc), SkBits2Float(0x4264a1cc)); // 28.55f, 56.824f, 28.529f, 56.975f, 28.496f, 57.158f
  5901. path.cubicTo(SkBits2Float(0x41e39fbc), SkBits2Float(0x42657efb), SkBits2Float(0x41e31a9d), SkBits2Float(0x42669376), SkBits2Float(0x41e2ac05), SkBits2Float(0x426770a5)); // 28.453f, 57.374f, 28.388f, 57.644f, 28.334f, 57.86f
  5902. path.cubicTo(SkBits2Float(0x41e27ef7), SkBits2Float(0x426821cc), SkBits2Float(0x41e253f5), SkBits2Float(0x4268bc6c), SkBits2Float(0x41e2105f), SkBits2Float(0x42695812)); // 28.312f, 58.033f, 28.291f, 58.184f, 28.258f, 58.336f
  5903. path.cubicTo(SkBits2Float(0x41e1ced6), SkBits2Float(0x4269f2b2), SkBits2Float(0x41e1082e), SkBits2Float(0x426aa3d9), SkBits2Float(0x41e09996), SkBits2Float(0x426b3335)); // 28.226f, 58.487f, 28.129f, 58.66f, 28.075f, 58.8f
  5904. path.lineTo(SkBits2Float(0x41e05600), SkBits2Float(0x426b3e79)); // 28.042f, 58.811f
  5905. path.cubicTo(SkBits2Float(0x41dfe768), SkBits2Float(0x426bb854), SkBits2Float(0x41dfba5a), SkBits2Float(0x426c3129), SkBits2Float(0x41df4dcf), SkBits2Float(0x426ccccf)); // 27.988f, 58.93f, 27.966f, 59.048f, 27.913f, 59.2f
  5906. path.cubicTo(SkBits2Float(0x41def5bf), SkBits2Float(0x426d50e8), SkBits2Float(0x41de5a19), SkBits2Float(0x426de14a), SkBits2Float(0x41ddeb81), SkBits2Float(0x426e70a6)); // 27.87f, 59.329f, 27.794f, 59.47f, 27.74f, 59.61f
  5907. path.cubicTo(SkBits2Float(0x41dd3b60), SkBits2Float(0x426f79dd), SkBits2Float(0x41dd4fdb), SkBits2Float(0x426e1896), SkBits2Float(0x41dd6662), SkBits2Float(0x426db43c)); // 27.654f, 59.869f, 27.664f, 59.524f, 27.675f, 59.426f
  5908. path.cubicTo(SkBits2Float(0x41de9ba1), SkBits2Float(0x426aa3da), SkBits2Float(0x41e01476), SkBits2Float(0x42679271), SkBits2Float(0x41e1332f), SkBits2Float(0x42648109)); // 27.826f, 58.66f, 28.01f, 57.893f, 28.15f, 57.126f
  5909. path.cubicTo(SkBits2Float(0x41e149b6), SkBits2Float(0x42645f3e), SkBits2Float(0x41e1a1c7), SkBits2Float(0x4264072e), SkBits2Float(0x41e1a1c7), SkBits2Float(0x4263f1ad)); // 28.161f, 57.093f, 28.204f, 57.007f, 28.204f, 56.986f
  5910. path.cubicTo(SkBits2Float(0x41e253f4), SkBits2Float(0x42626e9b), SkBits2Float(0x41e2c28c), SkBits2Float(0x42610109), SkBits2Float(0x41e3459e), SkBits2Float(0x425f72b3)); // 28.291f, 56.608f, 28.345f, 56.251f, 28.409f, 55.862f
  5911. path.cubicTo(SkBits2Float(0x41e372ac), SkBits2Float(0x425f51ee), SkBits2Float(0x41e3b642), SkBits2Float(0x425ef9de), SkBits2Float(0x41e3b642), SkBits2Float(0x425ed813)); // 28.431f, 55.83f, 28.464f, 55.744f, 28.464f, 55.711f
  5912. path.cubicTo(SkBits2Float(0x41e46663), SkBits2Float(0x425d76cb), SkBits2Float(0x41e4be73), SkBits2Float(0x425c3542), SkBits2Float(0x41e570a0), SkBits2Float(0x425ad3fa)); // 28.55f, 55.366f, 28.593f, 55.052f, 28.68f, 54.707f
  5913. path.cubicTo(SkBits2Float(0x41e570a0), SkBits2Float(0x425a916b), SkBits2Float(0x41e5dd2b), SkBits2Float(0x425a22d3), SkBits2Float(0x41e5f3b2), SkBits2Float(0x4259e044)); // 28.68f, 54.642f, 28.733f, 54.534f, 28.744f, 54.469f
  5914. path.cubicTo(SkBits2Float(0x41e620c0), SkBits2Float(0x42595c2b), SkBits2Float(0x41e60a39), SkBits2Float(0x4258ab05), SkBits2Float(0x41e72afe), SkBits2Float(0x4258947d)); // 28.766f, 54.34f, 28.755f, 54.167f, 28.896f, 54.145f
  5915. path.cubicTo(SkBits2Float(0x41e79789), SkBits2Float(0x4258947d), SkBits2Float(0x41e80621), SkBits2Float(0x4258ab04), SkBits2Float(0x41e874b8), SkBits2Float(0x4258b648)); // 28.949f, 54.145f, 29.003f, 54.167f, 29.057f, 54.178f
  5916. path.moveTo(SkBits2Float(0x41e5b229), SkBits2Float(0x4256a2d3)); // 28.712f, 53.659f
  5917. path.cubicTo(SkBits2Float(0x41e5851b), SkBits2Float(0x4256e562), SkBits2Float(0x41e59ba2), SkBits2Float(0x425727f2), SkBits2Float(0x41e570a0), SkBits2Float(0x42575f3d)); // 28.69f, 53.724f, 28.701f, 53.789f, 28.68f, 53.843f
  5918. path.cubicTo(SkBits2Float(0x41e52d0a), SkBits2Float(0x42578002), SkBits2Float(0x41e4a7ec), SkBits2Float(0x42579689), SkBits2Float(0x41e43b61), SkBits2Float(0x42578002)); // 28.647f, 53.875f, 28.582f, 53.897f, 28.529f, 53.875f
  5919. path.cubicTo(SkBits2Float(0x41e3f7cb), SkBits2Float(0x42578002), SkBits2Float(0x41e39fbb), SkBits2Float(0x425748b6), SkBits2Float(0x41e3459e), SkBits2Float(0x42573e79)); // 28.496f, 53.875f, 28.453f, 53.821f, 28.409f, 53.811f
  5920. path.cubicTo(SkBits2Float(0x41e39fbb), SkBits2Float(0x42566044), SkBits2Float(0x41e40e52), SkBits2Float(0x42558e58), SkBits2Float(0x41e47add), SkBits2Float(0x4254c7b0)); // 28.453f, 53.594f, 28.507f, 53.389f, 28.56f, 53.195f
  5921. path.cubicTo(SkBits2Float(0x41e49370), SkBits2Float(0x425479dd), SkBits2Float(0x41e49370), SkBits2Float(0x42541689), SkBits2Float(0x41e4eb81), SkBits2Float(0x4253df3d)); // 28.572f, 53.119f, 28.572f, 53.022f, 28.615f, 52.968f
  5922. path.cubicTo(SkBits2Float(0x41e4fffc), SkBits2Float(0x4253c9bc), SkBits2Float(0x41e5b229), SkBits2Float(0x4253916a), SkBits2Float(0x41e60a39), SkBits2Float(0x4253916a)); // 28.625f, 52.947f, 28.712f, 52.892f, 28.755f, 52.892f
  5923. path.cubicTo(SkBits2Float(0x41e68f58), SkBits2Float(0x4253872d), SkBits2Float(0x41e68f58), SkBits2Float(0x4253a7f1), SkBits2Float(0x41e6e768), SkBits2Float(0x4253be78)); // 28.82f, 52.882f, 28.82f, 52.914f, 28.863f, 52.936f
  5924. path.cubicTo(SkBits2Float(0x41e68f58), SkBits2Float(0x4254c7af), SkBits2Float(0x41e60a39), SkBits2Float(0x4255af1c), SkBits2Float(0x41e5b229), SkBits2Float(0x4256a2d2)); // 28.82f, 53.195f, 28.755f, 53.421f, 28.712f, 53.659f
  5925. path.moveTo(SkBits2Float(0x41e372ac), SkBits2Float(0x42589fc0)); // 28.431f, 54.156f
  5926. path.cubicTo(SkBits2Float(0x41e55a19), SkBits2Float(0x42586874), SkBits2Float(0x41e40e52), SkBits2Float(0x425a178f), SkBits2Float(0x41e3cabc), SkBits2Float(0x425a7ae3)); // 28.669f, 54.102f, 28.507f, 54.523f, 28.474f, 54.62f
  5927. path.cubicTo(SkBits2Float(0x41e1fbe3), SkBits2Float(0x425f3b66), SkBits2Float(0x41dfd0e1), SkBits2Float(0x4263f1ac), SkBits2Float(0x41ddeb81), SkBits2Float(0x4268c7b0)); // 28.248f, 55.808f, 27.977f, 56.986f, 27.74f, 58.195f
  5928. path.cubicTo(SkBits2Float(0x41ddd4fa), SkBits2Float(0x42690a3f), SkBits2Float(0x41dd7ce9), SkBits2Float(0x42696d93), SkBits2Float(0x41dd6662), SkBits2Float(0x4269999c)); // 27.729f, 58.26f, 27.686f, 58.357f, 27.675f, 58.4f
  5929. path.cubicTo(SkBits2Float(0x41dd3b60), SkBits2Float(0x426a29fe), SkBits2Float(0x41dd3b60), SkBits2Float(0x426a8d52), SkBits2Float(0x41dcf7ca), SkBits2Float(0x426b1cae)); // 27.654f, 58.541f, 27.654f, 58.638f, 27.621f, 58.778f
  5930. path.cubicTo(SkBits2Float(0x41dcb641), SkBits2Float(0x426bf9dd), SkBits2Float(0x41dc0414), SkBits2Float(0x426cf8d7), SkBits2Float(0x41db957c), SkBits2Float(0x426dec8d)); // 27.589f, 58.994f, 27.502f, 59.243f, 27.448f, 59.481f
  5931. path.cubicTo(SkBits2Float(0x41db53f3), SkBits2Float(0x426e916a), SkBits2Float(0x41db3d6c), SkBits2Float(0x426eea81), SkBits2Float(0x41daa3d2), SkBits2Float(0x426f5918)); // 27.416f, 59.642f, 27.405f, 59.729f, 27.33f, 59.837f
  5932. path.cubicTo(SkBits2Float(0x41da76c4), SkBits2Float(0x426f4dd4), SkBits2Float(0x41da49b5), SkBits2Float(0x426f4291), SkBits2Float(0x41da082c), SkBits2Float(0x426f21cc)); // 27.308f, 59.826f, 27.286f, 59.815f, 27.254f, 59.783f
  5933. path.cubicTo(SkBits2Float(0x41d9db1e), SkBits2Float(0x426f0b45), SkBits2Float(0x41d9f1a5), SkBits2Float(0x426f0b45), SkBits2Float(0x41d9c6a3), SkBits2Float(0x426eea80)); // 27.232f, 59.761f, 27.243f, 59.761f, 27.222f, 59.729f
  5934. path.lineTo(SkBits2Float(0x41d99995), SkBits2Float(0x426edf3c)); // 27.2f, 59.718f
  5935. path.cubicTo(SkBits2Float(0x41d91476), SkBits2Float(0x426ea7f0), SkBits2Float(0x41d8e768), SkBits2Float(0x426e6561), SkBits2Float(0x41d8a5df), SkBits2Float(0x426e020d)); // 27.135f, 59.664f, 27.113f, 59.599f, 27.081f, 59.502f
  5936. path.cubicTo(SkBits2Float(0x41d8a5df), SkBits2Float(0x426e020d), SkBits2Float(0x41d86456), SkBits2Float(0x426dd605), SkBits2Float(0x41d8a5df), SkBits2Float(0x426dd605)); // 27.081f, 59.502f, 27.049f, 59.459f, 27.081f, 59.459f
  5937. path.cubicTo(SkBits2Float(0x41d8e768), SkBits2Float(0x426d5c2a), SkBits2Float(0x41d8fdef), SkBits2Float(0x426cf8d6), SkBits2Float(0x41d92afe), SkBits2Float(0x426c7efb)); // 27.113f, 59.34f, 27.124f, 59.243f, 27.146f, 59.124f
  5938. path.cubicTo(SkBits2Float(0x41d9830e), SkBits2Float(0x426bb853), SkBits2Float(0x41da1eb4), SkBits2Float(0x426ae561), SkBits2Float(0x41da8d4c), SkBits2Float(0x426a29fd)); // 27.189f, 58.93f, 27.265f, 58.724f, 27.319f, 58.541f
  5939. path.cubicTo(SkBits2Float(0x41dccabd), SkBits2Float(0x4265d811), SkBits2Float(0x41e02afe), SkBits2Float(0x42617ae2), SkBits2Float(0x41e1332f), SkBits2Float(0x425cfcef)); // 27.599f, 57.461f, 28.021f, 56.37f, 28.15f, 55.247f
  5940. path.cubicTo(SkBits2Float(0x41e149b6), SkBits2Float(0x425c4085), SkBits2Float(0x41e1a1c7), SkBits2Float(0x425b8f5e), SkBits2Float(0x41e1fbe3), SkBits2Float(0x425adf3d)); // 28.161f, 55.063f, 28.204f, 54.89f, 28.248f, 54.718f
  5941. path.cubicTo(SkBits2Float(0x41e226e5), SkBits2Float(0x425a4edb), SkBits2Float(0x41e226e5), SkBits2Float(0x42598833), SkBits2Float(0x41e2ac04), SkBits2Float(0x4258f7d0)); // 28.269f, 54.577f, 28.269f, 54.383f, 28.334f, 54.242f
  5942. path.cubicTo(SkBits2Float(0x41e2c28b), SkBits2Float(0x4258ec8c), SkBits2Float(0x41e372ac), SkBits2Float(0x42589fc0), SkBits2Float(0x41e372ac), SkBits2Float(0x42589fc0)); // 28.345f, 54.231f, 28.431f, 54.156f, 28.431f, 54.156f
  5943. path.moveTo(SkBits2Float(0x41d9830e), SkBits2Float(0x427128f7)); // 27.189f, 60.29f
  5944. path.cubicTo(SkBits2Float(0x41d95600), SkBits2Float(0x42714ac2), SkBits2Float(0x41d92afe), SkBits2Float(0x427176ca), SkBits2Float(0x41d8e768), SkBits2Float(0x427176ca)); // 27.167f, 60.323f, 27.146f, 60.366f, 27.113f, 60.366f
  5945. path.cubicTo(SkBits2Float(0x41d86456), SkBits2Float(0x42718d51), SkBits2Float(0x41d67ce9), SkBits2Float(0x4271820e), SkBits2Float(0x41d60e51), SkBits2Float(0x42716b86)); // 27.049f, 60.388f, 26.811f, 60.377f, 26.757f, 60.355f
  5946. path.cubicTo(SkBits2Float(0x41d5f7ca), SkBits2Float(0x42716b86), SkBits2Float(0x41d5ccc8), SkBits2Float(0x42714ac1), SkBits2Float(0x41d5b641), SkBits2Float(0x42713f7e)); // 26.746f, 60.355f, 26.725f, 60.323f, 26.714f, 60.312f
  5947. path.cubicTo(SkBits2Float(0x41d5b641), SkBits2Float(0x42708e57), SkBits2Float(0x41d5f7ca), SkBits2Float(0x426ffefb), SkBits2Float(0x41d69370), SkBits2Float(0x426f8f5d)); // 26.714f, 60.139f, 26.746f, 59.999f, 26.822f, 59.89f
  5948. path.cubicTo(SkBits2Float(0x41d6eb80), SkBits2Float(0x426f9ba7), SkBits2Float(0x41d7188f), SkBits2Float(0x426f8f5d), SkBits2Float(0x41d7709f), SkBits2Float(0x426f9ba7)); // 26.865f, 59.902f, 26.887f, 59.89f, 26.93f, 59.902f
  5949. path.cubicTo(SkBits2Float(0x41d7b228), SkBits2Float(0x426fb128), SkBits2Float(0x41d99995), SkBits2Float(0x42706d93), SkBits2Float(0x41d9c6a3), SkBits2Float(0x42708e57)); // 26.962f, 59.923f, 27.2f, 60.107f, 27.222f, 60.139f
  5950. path.cubicTo(SkBits2Float(0x41d9db1e), SkBits2Float(0x4270d0e6), SkBits2Float(0x41d99995), SkBits2Float(0x42710832), SkBits2Float(0x41d9830d), SkBits2Float(0x427128f7)); // 27.232f, 60.204f, 27.2f, 60.258f, 27.189f, 60.29f
  5951. path.moveTo(SkBits2Float(0x41e1603c), SkBits2Float(0x4255f1ab)); // 28.172f, 53.486f
  5952. path.cubicTo(SkBits2Float(0x41e149b5), SkBits2Float(0x42563f7e), SkBits2Float(0x41e1603c), SkBits2Float(0x425676ca), SkBits2Float(0x41e1332e), SkBits2Float(0x4256c49d)); // 28.161f, 53.562f, 28.172f, 53.616f, 28.15f, 53.692f
  5953. path.cubicTo(SkBits2Float(0x41e11eb3), SkBits2Float(0x4256f0a5), SkBits2Float(0x41e0db1e), SkBits2Float(0x425727f1), SkBits2Float(0x41e0b01c), SkBits2Float(0x425748b6)); // 28.14f, 53.735f, 28.107f, 53.789f, 28.086f, 53.821f
  5954. path.lineTo(SkBits2Float(0x41e055ff), SkBits2Float(0x425748b6)); // 28.042f, 53.821f
  5955. path.cubicTo(SkBits2Float(0x41e055ff), SkBits2Float(0x425748b6), SkBits2Float(0x41df4dce), SkBits2Float(0x4256e562), SkBits2Float(0x41df3747), SkBits2Float(0x4256da1e)); // 28.042f, 53.821f, 27.913f, 53.724f, 27.902f, 53.713f
  5956. path.cubicTo(SkBits2Float(0x41deb228), SkBits2Float(0x4256820e), SkBits2Float(0x41de4391), SkBits2Float(0x42561376), SkBits2Float(0x41ddbe72), SkBits2Float(0x4255ba60)); // 27.837f, 53.627f, 27.783f, 53.519f, 27.718f, 53.432f
  5957. path.lineTo(SkBits2Float(0x41dd7ce9), SkBits2Float(0x4255af1c)); // 27.686f, 53.421f
  5958. path.cubicTo(SkBits2Float(0x41dd7ce9), SkBits2Float(0x4255a4df), SkBits2Float(0x41dda7eb), SkBits2Float(0x425578d6), SkBits2Float(0x41dd7ce9), SkBits2Float(0x42556d93)); // 27.686f, 53.411f, 27.707f, 53.368f, 27.686f, 53.357f
  5959. path.cubicTo(SkBits2Float(0x41de9ba1), SkBits2Float(0x4255147c), SkBits2Float(0x41df8f58), SkBits2Float(0x4254c7b0), SkBits2Float(0x41e0b01c), SkBits2Float(0x42549064)); // 27.826f, 53.27f, 27.945f, 53.195f, 28.086f, 53.141f
  5960. path.cubicTo(SkBits2Float(0x41e0c497), SkBits2Float(0x42548520), SkBits2Float(0x41e11eb4), SkBits2Float(0x4254645c), SkBits2Float(0x41e1332e), SkBits2Float(0x4254645c)); // 28.096f, 53.13f, 28.14f, 53.098f, 28.15f, 53.098f
  5961. path.cubicTo(SkBits2Float(0x41e18b3e), SkBits2Float(0x42545918), SkBits2Float(0x41e1ced4), SkBits2Float(0x425479dd), SkBits2Float(0x41e1fbe2), SkBits2Float(0x425479dd)); // 28.193f, 53.087f, 28.226f, 53.119f, 28.248f, 53.119f
  5962. path.cubicTo(SkBits2Float(0x41e1fbe2), SkBits2Float(0x4255147d), SkBits2Float(0x41e1a1c5), SkBits2Float(0x4255841a), SkBits2Float(0x41e1603c), SkBits2Float(0x4255f1ac)); // 28.248f, 53.27f, 28.204f, 53.379f, 28.172f, 53.486f
  5963. path.moveTo(SkBits2Float(0x41df6248), SkBits2Float(0x425b4ccf)); // 27.923f, 54.825f
  5964. path.cubicTo(SkBits2Float(0x41dfe767), SkBits2Float(0x425b9aa2), SkBits2Float(0x41df4dcd), SkBits2Float(0x425c6c8d), SkBits2Float(0x41df20bf), SkBits2Float(0x425cd0e8)); // 27.988f, 54.901f, 27.913f, 55.106f, 27.891f, 55.204f
  5965. path.cubicTo(SkBits2Float(0x41ddeb80), SkBits2Float(0x425f893a), SkBits2Float(0x41dc8932), SkBits2Float(0x4262374e), SkBits2Float(0x41db105d), SkBits2Float(0x4264e45d)); // 27.74f, 55.884f, 27.567f, 56.554f, 27.383f, 57.223f
  5966. path.cubicTo(SkBits2Float(0x41daced4), SkBits2Float(0x42657efd), SkBits2Float(0x41d78726), SkBits2Float(0x426c52f5), SkBits2Float(0x41d6c07e), SkBits2Float(0x426c3c6d)); // 27.351f, 57.374f, 26.941f, 59.081f, 26.844f, 59.059f
  5967. path.cubicTo(SkBits2Float(0x41d58932), SkBits2Float(0x426c3129), SkBits2Float(0x41d50620), SkBits2Float(0x426b1caf), SkBits2Float(0x41d48101), SkBits2Float(0x426aa3da)); // 26.692f, 59.048f, 26.628f, 58.778f, 26.563f, 58.66f
  5968. path.cubicTo(SkBits2Float(0x41d3d0e0), SkBits2Float(0x426a0834), SkBits2Float(0x41d34bc2), SkBits2Float(0x42696d94), SkBits2Float(0x41d2db1e), SkBits2Float(0x4268bc6d)); // 26.477f, 58.508f, 26.412f, 58.357f, 26.357f, 58.184f
  5969. path.cubicTo(SkBits2Float(0x41d21476), SkBits2Float(0x42674fe2), SkBits2Float(0x41d19164), SkBits2Float(0x4265c18c), SkBits2Float(0x41d19164), SkBits2Float(0x426449bd)); // 26.26f, 57.828f, 26.196f, 57.439f, 26.196f, 57.072f
  5970. path.cubicTo(SkBits2Float(0x41d1a5df), SkBits2Float(0x4261bd73), SkBits2Float(0x41d3d0e1), SkBits2Float(0x425f51ee), SkBits2Float(0x41d79dae), SkBits2Float(0x425d820f)); // 26.206f, 56.435f, 26.477f, 55.83f, 26.952f, 55.377f
  5971. path.cubicTo(SkBits2Float(0x41d8a5df), SkBits2Float(0x425cfcf0), SkBits2Float(0x41d9db1f), SkBits2Float(0x425c8e59), SkBits2Float(0x41db105e), SkBits2Float(0x425c3542)); // 27.081f, 55.247f, 27.232f, 55.139f, 27.383f, 55.052f
  5972. path.cubicTo(SkBits2Float(0x41dbed8d), SkBits2Float(0x425bf4bf), SkBits2Float(0x41ddbe72), SkBits2Float(0x425b21cd), SkBits2Float(0x41dec8b0), SkBits2Float(0x425b21cd)); // 27.491f, 54.989f, 27.718f, 54.783f, 27.848f, 54.783f
  5973. path.cubicTo(SkBits2Float(0x41df20c0), SkBits2Float(0x425b374e), SkBits2Float(0x41df4dcf), SkBits2Float(0x425b4292), SkBits2Float(0x41df624a), SkBits2Float(0x425b4ccf)); // 27.891f, 54.804f, 27.913f, 54.815f, 27.923f, 54.825f
  5974. path.moveTo(SkBits2Float(0x41d453f4), SkBits2Float(0x426fbc6d)); // 26.541f, 59.934f
  5975. path.cubicTo(SkBits2Float(0x41d48102), SkBits2Float(0x426f8521), SkBits2Float(0x41d51a9c), SkBits2Float(0x426ea7f2), SkBits2Float(0x41d4957d), SkBits2Float(0x426e872e)); // 26.563f, 59.88f, 26.638f, 59.664f, 26.573f, 59.632f
  5976. path.cubicTo(SkBits2Float(0x41d453f4), SkBits2Float(0x426e70a7), SkBits2Float(0x41d428f2), SkBits2Float(0x426e872e), SkBits2Float(0x41d3fbe3), SkBits2Float(0x426e70a7)); // 26.541f, 59.61f, 26.52f, 59.632f, 26.498f, 59.61f
  5977. path.cubicTo(SkBits2Float(0x41d3d0e1), SkBits2Float(0x426e916c), SkBits2Float(0x41d3b84d), SkBits2Float(0x426e872e), SkBits2Float(0x41d3a3d3), SkBits2Float(0x426e916c)); // 26.477f, 59.642f, 26.465f, 59.632f, 26.455f, 59.642f
  5978. path.cubicTo(SkBits2Float(0x41d3603d), SkBits2Float(0x426f010a), SkBits2Float(0x41d3d0e1), SkBits2Float(0x426f9ba9), SkBits2Float(0x41d4126b), SkBits2Float(0x426fdd33)); // 26.422f, 59.751f, 26.477f, 59.902f, 26.509f, 59.966f
  5979. path.lineTo(SkBits2Float(0x41d43d6d), SkBits2Float(0x426fdd33)); // 26.53f, 59.966f
  5980. path.cubicTo(SkBits2Float(0x41d43d6d), SkBits2Float(0x426fd1ef), SkBits2Float(0x41d43d6d), SkBits2Float(0x426fbc6e), SkBits2Float(0x41d453f4), SkBits2Float(0x426fbc6e)); // 26.53f, 59.955f, 26.53f, 59.934f, 26.541f, 59.934f
  5981. path.moveTo(SkBits2Float(0x42071ba4), SkBits2Float(0x42670210)); // 33.777f, 57.752f
  5982. path.cubicTo(SkBits2Float(0x42075e33), SkBits2Float(0x42670d54), SkBits2Float(0x4207957f), SkBits2Float(0x42671897), SkBits2Float(0x4207cccb), SkBits2Float(0x42672f1e)); // 33.842f, 57.763f, 33.896f, 57.774f, 33.95f, 57.796f
  5983. path.cubicTo(SkBits2Float(0x4208a9fa), SkBits2Float(0x4267872e), SkBits2Float(0x42097be6), SkBits2Float(0x42681791), SkBits2Float(0x420a3850), SkBits2Float(0x42688522)); // 34.166f, 57.882f, 34.371f, 58.023f, 34.555f, 58.13f
  5984. path.cubicTo(SkBits2Float(0x420b0a3c), SkBits2Float(0x4268fefd), SkBits2Float(0x420d1167), SkBits2Float(0x4269e770), SkBits2Float(0x420d27ee), SkBits2Float(0x426ae564)); // 34.76f, 58.249f, 35.267f, 58.476f, 35.289f, 58.724f
  5985. path.cubicTo(SkBits2Float(0x420d0729), SkBits2Float(0x426af0a8), SkBits2Float(0x420cdb21), SkBits2Float(0x426afbeb), SkBits2Float(0x420cb956), SkBits2Float(0x426b072f)); // 35.257f, 58.735f, 35.214f, 58.746f, 35.181f, 58.757f
  5986. path.cubicTo(SkBits2Float(0x420b9998), SkBits2Float(0x426b27f4), SkBits2Float(0x420a6f9c), SkBits2Float(0x426b27f4), SkBits2Float(0x42095b21), SkBits2Float(0x426b3337)); // 34.9f, 58.789f, 34.609f, 58.789f, 34.339f, 58.8f
  5987. path.cubicTo(SkBits2Float(0x42090d4e), SkBits2Float(0x426b3337), SkBits2Float(0x4207b644), SkBits2Float(0x426b49be), SkBits2Float(0x420773b4), SkBits2Float(0x426b3337)); // 34.263f, 58.8f, 33.928f, 58.822f, 33.863f, 58.8f
  5988. path.cubicTo(SkBits2Float(0x4207322b), SkBits2Float(0x426b072f), SkBits2Float(0x4206ef9b), SkBits2Float(0x4269999d), SkBits2Float(0x4206ced7), SkBits2Float(0x426920c8)); // 33.799f, 58.757f, 33.734f, 58.4f, 33.702f, 58.282f
  5989. path.cubicTo(SkBits2Float(0x42069685), SkBits2Float(0x4268645e), SkBits2Float(0x4205c49a), SkBits2Float(0x4266b543), SkBits2Float(0x42071ba4), SkBits2Float(0x42670210)); // 33.647f, 58.098f, 33.442f, 57.677f, 33.777f, 57.752f
  5990. path.moveTo(SkBits2Float(0x41f026e6), SkBits2Float(0x423f0c4e)); // 30.019f, 47.762f
  5991. path.cubicTo(SkBits2Float(0x41effbe4), SkBits2Float(0x42400004), SkBits2Float(0x41f0105f), SkBits2Float(0x4240e877), SkBits2Float(0x41f03b61), SkBits2Float(0x4241d0ea)); // 29.998f, 48, 30.008f, 48.227f, 30.029f, 48.454f
  5992. path.lineTo(SkBits2Float(0x41f03b61), SkBits2Float(0x424228fa)); // 30.029f, 48.54f
  5993. path.cubicTo(SkBits2Float(0x41f051e8), SkBits2Float(0x42423f81), SkBits2Float(0x41f0c080), SkBits2Float(0x424276cd), SkBits2Float(0x41f11890), SkBits2Float(0x424276cd)); // 30.04f, 48.562f, 30.094f, 48.616f, 30.137f, 48.616f
  5994. path.cubicTo(SkBits2Float(0x41f11890), SkBits2Float(0x424276cd), SkBits2Float(0x41f18934), SkBits2Float(0x42426b89), SkBits2Float(0x41f12f17), SkBits2Float(0x42426b89)); // 30.137f, 48.616f, 30.192f, 48.605f, 30.148f, 48.605f
  5995. path.cubicTo(SkBits2Float(0x41f1459e), SkBits2Float(0x42426045), SkBits2Float(0x41f18934), SkBits2Float(0x42426b89), SkBits2Float(0x41f18934), SkBits2Float(0x42426b89)); // 30.159f, 48.594f, 30.192f, 48.605f, 30.192f, 48.605f
  5996. path.cubicTo(SkBits2Float(0x41f19daf), SkBits2Float(0x424249be), SkBits2Float(0x41f19daf), SkBits2Float(0x42423f81), SkBits2Float(0x41f1b436), SkBits2Float(0x42423f81)); // 30.202f, 48.572f, 30.202f, 48.562f, 30.213f, 48.562f
  5997. path.cubicTo(SkBits2Float(0x41f18934), SkBits2Float(0x42414087), SkBits2Float(0x41f11890), SkBits2Float(0x424079df), SkBits2Float(0x41f0ac05), SkBits2Float(0x423f9cb0)); // 30.192f, 48.313f, 30.137f, 48.119f, 30.084f, 47.903f
  5998. path.cubicTo(SkBits2Float(0x41f0957e), SkBits2Float(0x423f7ae5), SkBits2Float(0x41f0c080), SkBits2Float(0x423f5a21), SkBits2Float(0x41f0957e), SkBits2Float(0x423f395c)); // 30.073f, 47.87f, 30.094f, 47.838f, 30.073f, 47.806f
  5999. path.lineTo(SkBits2Float(0x41f026e6), SkBits2Float(0x423f0c4e)); // 30.019f, 47.762f
  6000. path.moveTo(SkBits2Float(0x41ed4dcf), SkBits2Float(0x423fd3fc)); // 29.663f, 47.957f
  6001. path.cubicTo(SkBits2Float(0x41ecc8b0), SkBits2Float(0x42408523), SkBits2Float(0x41ec580c), SkBits2Float(0x42414bcb), SkBits2Float(0x41ec580c), SkBits2Float(0x42423f81)); // 29.598f, 48.13f, 29.543f, 48.324f, 29.543f, 48.562f
  6002. path.cubicTo(SkBits2Float(0x41ec6e93), SkBits2Float(0x42423f81), SkBits2Float(0x41ec9ba2), SkBits2Float(0x42426046), SkBits2Float(0x41ecb229), SkBits2Float(0x42426b89)); // 29.554f, 48.562f, 29.576f, 48.594f, 29.587f, 48.605f
  6003. path.cubicTo(SkBits2Float(0x41ecc8b0), SkBits2Float(0x42426b89), SkBits2Float(0x41ecdd2b), SkBits2Float(0x42426045), SkBits2Float(0x41ecf3b2), SkBits2Float(0x42426b89)); // 29.598f, 48.605f, 29.608f, 48.594f, 29.619f, 48.605f
  6004. path.cubicTo(SkBits2Float(0x41ecf3b2), SkBits2Float(0x42426b89), SkBits2Float(0x41eda5df), SkBits2Float(0x42426045), SkBits2Float(0x41edba5a), SkBits2Float(0x42423f81)); // 29.619f, 48.605f, 29.706f, 48.594f, 29.716f, 48.562f
  6005. path.cubicTo(SkBits2Float(0x41ee126a), SkBits2Float(0x4241e66a), SkBits2Float(0x41edd0e1), SkBits2Float(0x42403750), SkBits2Float(0x41eda5df), SkBits2Float(0x423fdf3f)); // 29.759f, 48.475f, 29.727f, 48.054f, 29.706f, 47.968f
  6006. path.lineTo(SkBits2Float(0x41ed4dcf), SkBits2Float(0x423fd3fb)); // 29.663f, 47.957f
  6007. path.moveTo(SkBits2Float(0x41d05a19), SkBits2Float(0x4258ab05)); // 26.044f, 54.167f
  6008. path.cubicTo(SkBits2Float(0x41d05a19), SkBits2Float(0x42589fc1), SkBits2Float(0x41d070a0), SkBits2Float(0x42588a40), SkBits2Float(0x41d05a19), SkBits2Float(0x42586876)); // 26.044f, 54.156f, 26.055f, 54.135f, 26.044f, 54.102f
  6009. path.cubicTo(SkBits2Float(0x41d05a19), SkBits2Float(0x42583c6e), SkBits2Float(0x41d02f17), SkBits2Float(0x4257ee9b), SkBits2Float(0x41d00209), SkBits2Float(0x4257c293)); // 26.044f, 54.059f, 26.023f, 53.983f, 26.001f, 53.94f
  6010. path.cubicTo(SkBits2Float(0x41cfeb82), SkBits2Float(0x42571cb0), SkBits2Float(0x41d00209), SkBits2Float(0x42568210), SkBits2Float(0x41cfeb82), SkBits2Float(0x4255c5a5)); // 25.99f, 53.778f, 26.001f, 53.627f, 25.99f, 53.443f
  6011. path.cubicTo(SkBits2Float(0x41cfeb82), SkBits2Float(0x4255a4e0), SkBits2Float(0x41cfc080), SkBits2Float(0x42552b05), SkBits2Float(0x41cfd4fb), SkBits2Float(0x4254dd32)); // 25.99f, 53.411f, 25.969f, 53.292f, 25.979f, 53.216f
  6012. path.cubicTo(SkBits2Float(0x41cfeb82), SkBits2Float(0x4254b12a), SkBits2Float(0x41d05a1a), SkBits2Float(0x4254b12a), SkBits2Float(0x41d0df38), SkBits2Float(0x4254c7b1)); // 25.99f, 53.173f, 26.044f, 53.173f, 26.109f, 53.195f
  6013. path.cubicTo(SkBits2Float(0x41d24186), SkBits2Float(0x42552b05), SkBits2Float(0x41d4ac05), SkBits2Float(0x42563f80), SkBits2Float(0x41d50621), SkBits2Float(0x42566044)); // 26.282f, 53.292f, 26.584f, 53.562f, 26.628f, 53.594f
  6014. path.cubicTo(SkBits2Float(0x41d60e52), SkBits2Float(0x4256da1f), SkBits2Float(0x41d70208), SkBits2Float(0x425748b7), SkBits2Float(0x41d80a3a), SkBits2Float(0x4257c292)); // 26.757f, 53.713f, 26.876f, 53.821f, 27.005f, 53.94f
  6015. path.cubicTo(SkBits2Float(0x41d8a5e0), SkBits2Float(0x4257f9de), SkBits2Float(0x41da1eb5), SkBits2Float(0x4258947e), SkBits2Float(0x41d8a5e0), SkBits2Float(0x4258ab05)); // 27.081f, 53.994f, 27.265f, 54.145f, 27.081f, 54.167f
  6016. path.cubicTo(SkBits2Float(0x41d7df38), SkBits2Float(0x4258cbca), SkBits2Float(0x41d72d0b), SkBits2Float(0x4258b649), SkBits2Float(0x41d66663), SkBits2Float(0x4258b649)); // 26.984f, 54.199f, 26.897f, 54.178f, 26.8f, 54.178f
  6017. path.cubicTo(SkBits2Float(0x41d547ab), SkBits2Float(0x4258cbca), SkBits2Float(0x41d1bc67), SkBits2Float(0x42592f1e), SkBits2Float(0x41d0b22a), SkBits2Float(0x4258e251)); // 26.66f, 54.199f, 26.217f, 54.296f, 26.087f, 54.221f
  6018. path.lineTo(SkBits2Float(0x41d0b22a), SkBits2Float(0x4258d70d)); // 26.087f, 54.21f
  6019. path.cubicTo(SkBits2Float(0x41d09daf), SkBits2Float(0x4258d70d), SkBits2Float(0x41d070a1), SkBits2Float(0x4258b648), SkBits2Float(0x41d05a1a), SkBits2Float(0x4258ab05)); // 26.077f, 54.21f, 26.055f, 54.178f, 26.044f, 54.167f
  6020. path.moveTo(SkBits2Float(0x41ce8b41), SkBits2Float(0x42588a40)); // 25.818f, 54.135f
  6021. path.cubicTo(SkBits2Float(0x41ceb643), SkBits2Float(0x4258ab05), SkBits2Float(0x41ce74ba), SkBits2Float(0x4258ab05), SkBits2Float(0x41ceccca), SkBits2Float(0x4258ab05)); // 25.839f, 54.167f, 25.807f, 54.167f, 25.85f, 54.167f
  6022. path.cubicTo(SkBits2Float(0x41cef7cc), SkBits2Float(0x4258ab05), SkBits2Float(0x41cf0e53), SkBits2Float(0x4258b336), SkBits2Float(0x41cf0e53), SkBits2Float(0x42589db5)); // 25.871f, 54.167f, 25.882f, 54.175f, 25.882f, 54.154f
  6023. path.cubicTo(SkBits2Float(0x41cf0e53), SkBits2Float(0x4258395b), SkBits2Float(0x41cf0a3a), SkBits2Float(0x42579790), SkBits2Float(0x41cedd2c), SkBits2Float(0x4257343c)); // 25.882f, 54.056f, 25.88f, 53.898f, 25.858f, 53.801f
  6024. path.cubicTo(SkBits2Float(0x41cec8b1), SkBits2Float(0x42564086), SkBits2Float(0x41ceccca), SkBits2Float(0x4254f3b9), SkBits2Float(0x41ce5e32), SkBits2Float(0x425421cd)); // 25.848f, 53.563f, 25.85f, 53.238f, 25.796f, 53.033f
  6025. path.lineTo(SkBits2Float(0x41cdef9a), SkBits2Float(0x425421cd)); // 25.742f, 53.033f
  6026. path.cubicTo(SkBits2Float(0x41cdd913), SkBits2Float(0x4254dd31), SkBits2Float(0x41ce126b), SkBits2Float(0x425626ec), SkBits2Float(0x41ce28f2), SkBits2Float(0x4256e250)); // 25.731f, 53.216f, 25.759f, 53.538f, 25.77f, 53.721f
  6027. path.cubicTo(SkBits2Float(0x41ce3f79), SkBits2Float(0x42579377), SkBits2Float(0x41ce47aa), SkBits2Float(0x42580f5e), SkBits2Float(0x41ce8b40), SkBits2Float(0x42588a40)); // 25.781f, 53.894f, 25.785f, 54.015f, 25.818f, 54.135f
  6028. path.moveTo(SkBits2Float(0x41c58d4c), SkBits2Float(0x425271ad)); // 24.694f, 52.611f
  6029. path.cubicTo(SkBits2Float(0x41c58d4c), SkBits2Float(0x42525c2c), SkBits2Float(0x41c5ba5a), SkBits2Float(0x42523024), SkBits2Float(0x41c5fbe4), SkBits2Float(0x425224e0)); // 24.694f, 52.59f, 24.716f, 52.547f, 24.748f, 52.536f
  6030. path.lineTo(SkBits2Float(0x41c6126b), SkBits2Float(0x4252199c)); // 24.759f, 52.525f
  6031. path.cubicTo(SkBits2Float(0x41c6978a), SkBits2Float(0x42520f5f), SkBits2Float(0x41c774b9), SkBits2Float(0x42523023), SkBits2Float(0x41c79fbb), SkBits2Float(0x42525c2b)); // 24.824f, 52.515f, 24.932f, 52.547f, 24.953f, 52.59f
  6032. path.cubicTo(SkBits2Float(0x41c7f9d8), SkBits2Float(0x4252a9fe), SkBits2Float(0x41c79fbb), SkBits2Float(0x4258e250), SkBits2Float(0x41c78b40), SkBits2Float(0x4259199c)); // 24.997f, 52.666f, 24.953f, 54.221f, 24.943f, 54.275f
  6033. path.lineTo(SkBits2Float(0x41c78b40), SkBits2Float(0x42592f1d)); // 24.943f, 54.296f
  6034. path.cubicTo(SkBits2Float(0x41c747aa), SkBits2Float(0x42595c2b), SkBits2Float(0x41c68103), SkBits2Float(0x42596669), SkBits2Float(0x41c5fbe4), SkBits2Float(0x42596669)); // 24.91f, 54.34f, 24.813f, 54.35f, 24.748f, 54.35f
  6035. path.cubicTo(SkBits2Float(0x41c5353c), SkBits2Float(0x425971ad), SkBits2Float(0x41c41684), SkBits2Float(0x425971ad), SkBits2Float(0x41c3e975), SkBits2Float(0x42592f1d)); // 24.651f, 54.361f, 24.511f, 54.361f, 24.489f, 54.296f
  6036. path.cubicTo(SkBits2Float(0x41c3a7ec), SkBits2Float(0x4258cbc9), SkBits2Float(0x41c42afe), SkBits2Float(0x4257d919), SkBits2Float(0x41c44185), SkBits2Float(0x42578002)); // 24.457f, 54.199f, 24.521f, 53.962f, 24.532f, 53.875f
  6037. path.cubicTo(SkBits2Float(0x41c46e93), SkBits2Float(0x42563f7f), SkBits2Float(0x41c4c6a4), SkBits2Float(0x42550a3f), SkBits2Float(0x41c5353b), SkBits2Float(0x4253df3d)); // 24.554f, 53.562f, 24.597f, 53.26f, 24.651f, 52.968f
  6038. path.cubicTo(SkBits2Float(0x41c54bc2), SkBits2Float(0x42537be9), SkBits2Float(0x41c56249), SkBits2Float(0x42530d51), SkBits2Float(0x41c58d4b), SkBits2Float(0x4252cac2)); // 24.662f, 52.871f, 24.673f, 52.763f, 24.694f, 52.698f
  6039. path.cubicTo(SkBits2Float(0x41c58d4b), SkBits2Float(0x4252a9fd), SkBits2Float(0x41c56249), SkBits2Float(0x42528833), SkBits2Float(0x41c58d4b), SkBits2Float(0x425271ab)); // 24.694f, 52.666f, 24.673f, 52.633f, 24.694f, 52.611f
  6040. path.moveTo(SkBits2Float(0x41c36662), SkBits2Float(0x42534fe0)); // 24.425f, 52.828f
  6041. path.cubicTo(SkBits2Float(0x41c33954), SkBits2Float(0x4253c9bb), SkBits2Float(0x41c34dcf), SkBits2Float(0x42541688), SkBits2Float(0x41c322cc), SkBits2Float(0x42549063)); // 24.403f, 52.947f, 24.413f, 53.022f, 24.392f, 53.141f
  6042. path.cubicTo(SkBits2Float(0x41c2f5be), SkBits2Float(0x4254fefb), SkBits2Float(0x41c2b434), SkBits2Float(0x42558e57), SkBits2Float(0x41c29dad), SkBits2Float(0x42560832)); // 24.37f, 53.249f, 24.338f, 53.389f, 24.327f, 53.508f
  6043. path.cubicTo(SkBits2Float(0x41c2709f), SkBits2Float(0x4256e561), SkBits2Float(0x41c2459d), SkBits2Float(0x4257ad0f), SkBits2Float(0x41c1ed8c), SkBits2Float(0x42586874)); // 24.305f, 53.724f, 24.284f, 53.919f, 24.241f, 54.102f
  6044. path.cubicTo(SkBits2Float(0x41c1d705), SkBits2Float(0x4258cbc8), SkBits2Float(0x41c20207), SkBits2Float(0x42590e57), SkBits2Float(0x41c1c07e), SkBits2Float(0x425950e7)); // 24.23f, 54.199f, 24.251f, 54.264f, 24.219f, 54.329f
  6045. path.cubicTo(SkBits2Float(0x41c1c07e), SkBits2Float(0x42596668), SkBits2Float(0x41c1686e), SkBits2Float(0x42599270), SkBits2Float(0x41c13b5f), SkBits2Float(0x42599270)); // 24.219f, 54.35f, 24.176f, 54.393f, 24.154f, 54.393f
  6046. path.cubicTo(SkBits2Float(0x41c0ccc7), SkBits2Float(0x4259a8f7), SkBits2Float(0x41c074b7), SkBits2Float(0x42599270), SkBits2Float(0x41c00620), SkBits2Float(0x425971ab)); // 24.1f, 54.415f, 24.057f, 54.393f, 24.003f, 54.361f
  6047. path.cubicTo(SkBits2Float(0x41c00620), SkBits2Float(0x425825e4), SkBits2Float(0x41c08b3f), SkBits2Float(0x4256da1e), SkBits2Float(0x41c0f9d6), SkBits2Float(0x42558e57)); // 24.003f, 54.037f, 24.068f, 53.713f, 24.122f, 53.389f
  6048. path.cubicTo(SkBits2Float(0x41c151e6), SkBits2Float(0x425479dc), SkBits2Float(0x41c151e6), SkBits2Float(0x42534fe0), SkBits2Float(0x41c1ed8c), SkBits2Float(0x425245a3)); // 24.165f, 53.119f, 24.165f, 52.828f, 24.241f, 52.568f
  6049. path.cubicTo(SkBits2Float(0x41c22f15), SkBits2Float(0x42520f5d), SkBits2Float(0x41c22f15), SkBits2Float(0x4251d70b), SkBits2Float(0x41c25c24), SkBits2Float(0x4251ccce)); // 24.273f, 52.515f, 24.273f, 52.46f, 24.295f, 52.45f
  6050. path.cubicTo(SkBits2Float(0x41c2e143), SkBits2Float(0x4251b647), SkBits2Float(0x41c34dce), SkBits2Float(0x4251e24f), SkBits2Float(0x41c3a7eb), SkBits2Float(0x4251e24f)); // 24.36f, 52.428f, 24.413f, 52.471f, 24.457f, 52.471f
  6051. path.cubicTo(SkBits2Float(0x41c3be72), SkBits2Float(0x42525c2a), SkBits2Float(0x41c37add), SkBits2Float(0x4252e149), SkBits2Float(0x41c36662), SkBits2Float(0x42534fe0)); // 24.468f, 52.59f, 24.435f, 52.72f, 24.425f, 52.828f
  6052. path.moveTo(SkBits2Float(0x41b3105e), SkBits2Float(0x426e020d)); // 22.383f, 59.502f
  6053. path.cubicTo(SkBits2Float(0x41b2ced5), SkBits2Float(0x426dcac1), SkBits2Float(0x41b28b3f), SkBits2Float(0x426d9375), SkBits2Float(0x41b21ca8), SkBits2Float(0x426d676d)); // 22.351f, 59.448f, 22.318f, 59.394f, 22.264f, 59.351f
  6054. path.lineTo(SkBits2Float(0x41b1f1a6), SkBits2Float(0x426d676d)); // 22.243f, 59.351f
  6055. path.lineTo(SkBits2Float(0x41b1f1a6), SkBits2Float(0x426d50e6)); // 22.243f, 59.329f
  6056. path.cubicTo(SkBits2Float(0x41b1f1a6), SkBits2Float(0x426d2f1b), SkBits2Float(0x41b1830e), SkBits2Float(0x426d199a), SkBits2Float(0x41b15600), SkBits2Float(0x426d0f5d)); // 22.243f, 59.296f, 22.189f, 59.275f, 22.167f, 59.265f
  6057. path.cubicTo(SkBits2Float(0x41b0e768), SkBits2Float(0x426cccce), SkBits2Float(0x41af1683), SkBits2Float(0x426bd917), SkBits2Float(0x41aefffc), SkBits2Float(0x426b8107)); // 22.113f, 59.2f, 21.886f, 58.962f, 21.875f, 58.876f
  6058. path.cubicTo(SkBits2Float(0x41aeeb81), SkBits2Float(0x426b3334), SkBits2Float(0x41af5a19), SkBits2Float(0x426acfe0), SkBits2Float(0x41af70a0), SkBits2Float(0x426a8d51)); // 21.865f, 58.8f, 21.919f, 58.703f, 21.93f, 58.638f
  6059. path.cubicTo(SkBits2Float(0x41b04dcf), SkBits2Float(0x42693647), SkBits2Float(0x41b1db1f), SkBits2Float(0x4268645b), SkBits2Float(0x41b43123), SkBits2Float(0x4267c9bc)); // 22.038f, 58.303f, 22.232f, 58.098f, 22.524f, 57.947f
  6060. path.cubicTo(SkBits2Float(0x41b472ac), SkBits2Float(0x4267a7f1), SkBits2Float(0x41b4f7cb), SkBits2Float(0x426770a5), SkBits2Float(0x41b56662), SkBits2Float(0x42676668)); // 22.556f, 57.914f, 22.621f, 57.86f, 22.675f, 57.85f
  6061. path.cubicTo(SkBits2Float(0x41b5a7eb), SkBits2Float(0x42675b24), SkBits2Float(0x41b5d4fa), SkBits2Float(0x42676668), SkBits2Float(0x41b62d0a), SkBits2Float(0x42675b24)); // 22.707f, 57.839f, 22.729f, 57.85f, 22.772f, 57.839f
  6062. path.cubicTo(SkBits2Float(0x41b69ba2), SkBits2Float(0x42674fe0), SkBits2Float(0x41b78f58), SkBits2Float(0x42671895), SkBits2Float(0x41b828f1), SkBits2Float(0x42671895)); // 22.826f, 57.828f, 22.945f, 57.774f, 23.02f, 57.774f
  6063. path.cubicTo(SkBits2Float(0x41b8ae10), SkBits2Float(0x42671895), SkBits2Float(0x41b8c497), SkBits2Float(0x42672f1c), SkBits2Float(0x41b91ca7), SkBits2Float(0x4267449d)); // 23.085f, 57.774f, 23.096f, 57.796f, 23.139f, 57.817f
  6064. path.lineTo(SkBits2Float(0x41b91ca7), SkBits2Float(0x42675b24)); // 23.139f, 57.839f
  6065. path.cubicTo(SkBits2Float(0x41b91ca7), SkBits2Float(0x42674fe0), SkBits2Float(0x41b9332e), SkBits2Float(0x426770a5), SkBits2Float(0x41b9332e), SkBits2Float(0x4267872c)); // 23.139f, 57.828f, 23.15f, 57.86f, 23.15f, 57.882f
  6066. path.cubicTo(SkBits2Float(0x41b91ca7), SkBits2Float(0x4267df3c), SkBits2Float(0x41b90620), SkBits2Float(0x42685918), SkBits2Float(0x41b8db1e), SkBits2Float(0x4268bc6b)); // 23.139f, 57.968f, 23.128f, 58.087f, 23.107f, 58.184f
  6067. path.cubicTo(SkBits2Float(0x41b855ff), SkBits2Float(0x426a29fc), SkBits2Float(0x41b7d0e1), SkBits2Float(0x426bc290), SkBits2Float(0x41b76249), SkBits2Float(0x426d2f1b)); // 23.042f, 58.541f, 22.977f, 58.94f, 22.923f, 59.296f
  6068. path.cubicTo(SkBits2Float(0x41b720c0), SkBits2Float(0x426e0d50), SkBits2Float(0x41b720c0), SkBits2Float(0x426ed3f8), SkBits2Float(0x41b69ba1), SkBits2Float(0x426f79dc)); // 22.891f, 59.513f, 22.891f, 59.707f, 22.826f, 59.869f
  6069. path.cubicTo(SkBits2Float(0x41b64391), SkBits2Float(0x426f645b), SkBits2Float(0x41b62d09), SkBits2Float(0x426f79dc), SkBits2Float(0x41b5eb80), SkBits2Float(0x426f645b)); // 22.783f, 59.848f, 22.772f, 59.869f, 22.74f, 59.848f
  6070. path.cubicTo(SkBits2Float(0x41b5a7ea), SkBits2Float(0x426f5917), SkBits2Float(0x41b57adc), SkBits2Float(0x426f374d), SkBits2Float(0x41b53953), SkBits2Float(0x426f1688)); // 22.707f, 59.837f, 22.685f, 59.804f, 22.653f, 59.772f
  6071. path.lineTo(SkBits2Float(0x41b53953), SkBits2Float(0x426f0107)); // 22.653f, 59.751f
  6072. path.cubicTo(SkBits2Float(0x41b472ab), SkBits2Float(0x426ea7f0), SkBits2Float(0x41b3ac03), SkBits2Float(0x426e5a1e), SkBits2Float(0x41b3105d), SkBits2Float(0x426e020d)); // 22.556f, 59.664f, 22.459f, 59.588f, 22.383f, 59.502f
  6073. testSimplify(reporter, path, filename);
  6074. }
  6075. static void joel_5(skiatest::Reporter* reporter, const char* filename) {
  6076. SkPath path;
  6077. path.setFillType((SkPath::FillType) 0);
  6078. path.moveTo(SkBits2Float(0x43c5145a), SkBits2Float(0x43dc82f2)); // 394.159f, 441.023f
  6079. path.lineTo(SkBits2Float(0x43c5145a), SkBits2Float(0x43dc82f2)); // 394.159f, 441.023f
  6080. path.close();
  6081. path.moveTo(SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604)); // 350.612f, 439.547f
  6082. path.lineTo(SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604)); // 350.612f, 439.547f
  6083. path.close();
  6084. path.moveTo(SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604)); // 350.612f, 439.547f
  6085. path.cubicTo(SkBits2Float(0x43b64a5e), SkBits2Float(0x43dc9604), SkBits2Float(0x43be0958), SkBits2Float(0x43dbb604), SkBits2Float(0x43c5145a), SkBits2Float(0x43dc8312)); // 364.581f, 441.172f, 380.073f, 439.422f, 394.159f, 441.024f
  6086. path.cubicTo(SkBits2Float(0x43be0958), SkBits2Float(0x43dbb604), SkBits2Float(0x43b64a5e), SkBits2Float(0x43dc9604), SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604)); // 380.073f, 439.422f, 364.581f, 441.172f, 350.612f, 439.547f
  6087. path.close();
  6088. path.moveTo(SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604)); // 338.144f, 450.172f
  6089. path.lineTo(SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604)); // 338.144f, 450.172f
  6090. path.close();
  6091. path.moveTo(SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604)); // 338.144f, 450.172f
  6092. path.cubicTo(SkBits2Float(0x43ab3c6b), SkBits2Float(0x43debc08), SkBits2Float(0x43ad1b65), SkBits2Float(0x43de18f6), SkBits2Float(0x43af4e77), SkBits2Float(0x43dbc604)); // 342.472f, 445.469f, 346.214f, 444.195f, 350.613f, 439.547f
  6093. path.cubicTo(SkBits2Float(0x43ad1b65), SkBits2Float(0x43de18f6), SkBits2Float(0x43ab3c6b), SkBits2Float(0x43debc08), SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604)); // 346.214f, 444.195f, 342.472f, 445.469f, 338.144f, 450.172f
  6094. path.close();
  6095. path.moveTo(SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8)); // 341.229f, 450.906f
  6096. path.lineTo(SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8)); // 341.229f, 450.906f
  6097. path.close();
  6098. path.moveTo(SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8)); // 341.229f, 450.906f
  6099. path.cubicTo(SkBits2Float(0x43aa0852), SkBits2Float(0x43e183f8), SkBits2Float(0x43a9be56), SkBits2Float(0x43e0d2f2), SkBits2Float(0x43a9124e), SkBits2Float(0x43e11604)); // 340.065f, 451.031f, 339.487f, 449.648f, 338.143f, 450.172f
  6100. path.cubicTo(SkBits2Float(0x43a9be56), SkBits2Float(0x43e0d2f2), SkBits2Float(0x43aa0852), SkBits2Float(0x43e183f8), SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8)); // 339.487f, 449.648f, 340.065f, 451.031f, 341.229f, 450.906f
  6101. path.close();
  6102. path.moveTo(SkBits2Float(0x43b13667), SkBits2Float(0x43dce106)); // 354.425f, 441.758f
  6103. path.lineTo(SkBits2Float(0x43b13667), SkBits2Float(0x43dce106)); // 354.425f, 441.758f
  6104. path.close();
  6105. path.moveTo(SkBits2Float(0x43b13667), SkBits2Float(0x43dce106)); // 354.425f, 441.758f
  6106. path.cubicTo(SkBits2Float(0x43aead71), SkBits2Float(0x43dd9d0e), SkBits2Float(0x43acd375), SkBits2Float(0x43dff20c), SkBits2Float(0x43aa9d71), SkBits2Float(0x43e173f8)); // 349.355f, 443.227f, 345.652f, 447.891f, 341.23f, 450.906f
  6107. path.cubicTo(SkBits2Float(0x43acd354), SkBits2Float(0x43dff20c), SkBits2Float(0x43aead50), SkBits2Float(0x43dd9d0f), SkBits2Float(0x43b13667), SkBits2Float(0x43dce106)); // 345.651f, 447.891f, 349.354f, 443.227f, 354.425f, 441.758f
  6108. path.close();
  6109. path.moveTo(SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106)); // 345.042f, 454.008f
  6110. path.lineTo(SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106)); // 345.042f, 454.008f
  6111. path.close();
  6112. path.moveTo(SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106)); // 345.042f, 454.008f
  6113. path.cubicTo(SkBits2Float(0x43adc76d), SkBits2Float(0x43e0f4fe), SkBits2Float(0x43b21a5f), SkBits2Float(0x43df7efa), SkBits2Float(0x43b13667), SkBits2Float(0x43dce106)); // 347.558f, 449.914f, 356.206f, 446.992f, 354.425f, 441.758f
  6114. path.cubicTo(SkBits2Float(0x43b21a5f), SkBits2Float(0x43df7efa), SkBits2Float(0x43adc76d), SkBits2Float(0x43e0f4fe), SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106)); // 356.206f, 446.992f, 347.558f, 449.914f, 345.042f, 454.008f
  6115. path.close();
  6116. path.moveTo(SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2)); // 358.386f, 441.023f
  6117. path.lineTo(SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2)); // 358.386f, 441.023f
  6118. path.close();
  6119. path.moveTo(SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2)); // 358.386f, 441.023f
  6120. path.cubicTo(SkBits2Float(0x43b16169), SkBits2Float(0x43ded7f0), SkBits2Float(0x43aef375), SkBits2Float(0x43e13be8), SkBits2Float(0x43ac8561), SkBits2Float(0x43e300e6)); // 354.761f, 445.687f, 349.902f, 450.468f, 345.042f, 454.007f
  6121. path.cubicTo(SkBits2Float(0x43aef355), SkBits2Float(0x43e13c09), SkBits2Float(0x43b16169), SkBits2Float(0x43ded811), SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2)); // 349.901f, 450.469f, 354.761f, 445.688f, 358.386f, 441.023f
  6122. path.close();
  6123. path.moveTo(SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000)); // 361.464f, 442.5f
  6124. path.lineTo(SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000)); // 361.464f, 442.5f
  6125. path.close();
  6126. path.moveTo(SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000)); // 361.464f, 442.5f
  6127. path.cubicTo(SkBits2Float(0x43b44959), SkBits2Float(0x43dcddf4), SkBits2Float(0x43b3e76d), SkBits2Float(0x43dc48f6), SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2)); // 360.573f, 441.734f, 359.808f, 440.57f, 358.386f, 441.023f
  6128. path.cubicTo(SkBits2Float(0x43b3e76d), SkBits2Float(0x43dc48f6), SkBits2Float(0x43b44959), SkBits2Float(0x43dcddf4), SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000)); // 359.808f, 440.57f, 360.573f, 441.734f, 361.464f, 442.5f
  6129. path.close();
  6130. path.moveTo(SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a)); // 348.995f, 459.305f
  6131. path.lineTo(SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a)); // 348.995f, 459.305f
  6132. path.close();
  6133. path.moveTo(SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a)); // 348.995f, 459.305f
  6134. path.cubicTo(SkBits2Float(0x43af945b), SkBits2Float(0x43e21d0e), SkBits2Float(0x43b3a74d), SkBits2Float(0x43e0ce14), SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000)); // 351.159f, 452.227f, 359.307f, 449.61f, 361.464f, 442.5f
  6135. path.cubicTo(SkBits2Float(0x43b3a76d), SkBits2Float(0x43e0cdf4), SkBits2Float(0x43af945b), SkBits2Float(0x43e21d0e), SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a)); // 359.308f, 449.609f, 351.159f, 452.227f, 348.995f, 459.305f
  6136. path.close();
  6137. path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106)); // 363.081f, 441.758f
  6138. path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106)); // 363.081f, 441.758f
  6139. path.close();
  6140. path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106)); // 363.081f, 441.758f
  6141. path.cubicTo(SkBits2Float(0x43b2c063), SkBits2Float(0x43dfa604), SkBits2Float(0x43b1d561), SkBits2Float(0x43e374fe), SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a)); // 357.503f, 447.297f, 355.667f, 454.914f, 348.995f, 459.305f
  6142. path.cubicTo(SkBits2Float(0x43b1d561), SkBits2Float(0x43e374fe), SkBits2Float(0x43b2c063), SkBits2Float(0x43dfa604), SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106)); // 355.667f, 454.914f, 357.503f, 447.297f, 363.081f, 441.758f
  6143. path.close();
  6144. path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000)); // 365.417f, 442.5f
  6145. path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000)); // 365.417f, 442.5f
  6146. path.close();
  6147. path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000)); // 365.417f, 442.5f
  6148. path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106)); // 363.081f, 441.758f
  6149. path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000)); // 365.417f, 442.5f
  6150. path.close();
  6151. path.moveTo(SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c)); // 352.956f, 462.266f
  6152. path.lineTo(SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c)); // 352.956f, 462.266f
  6153. path.close();
  6154. path.moveTo(SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c)); // 352.956f, 462.266f
  6155. path.cubicTo(SkBits2Float(0x43b29f5d), SkBits2Float(0x43e3e810), SkBits2Float(0x43b59667), SkBits2Float(0x43e0f916), SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000)); // 357.245f, 455.813f, 363.175f, 449.946f, 365.417f, 442.5f
  6156. path.cubicTo(SkBits2Float(0x43b59667), SkBits2Float(0x43e0f8f6), SkBits2Float(0x43b29f5d), SkBits2Float(0x43e3e7f0), SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c)); // 363.175f, 449.945f, 357.245f, 455.812f, 352.956f, 462.266f
  6157. path.close();
  6158. path.moveTo(SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa)); // 353.69f, 464.617f
  6159. path.lineTo(SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa)); // 353.69f, 464.617f
  6160. path.close();
  6161. path.moveTo(SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa)); // 353.69f, 464.617f
  6162. path.cubicTo(SkBits2Float(0x43b03a5f), SkBits2Float(0x43e934fe), SkBits2Float(0x43b1345b), SkBits2Float(0x43e7870a), SkBits2Float(0x43b07a5f), SkBits2Float(0x43e721ec)); // 352.456f, 466.414f, 354.409f, 463.055f, 352.956f, 462.265f
  6163. path.cubicTo(SkBits2Float(0x43b1345b), SkBits2Float(0x43e7870b), SkBits2Float(0x43b03a5f), SkBits2Float(0x43e934fe), SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa)); // 354.409f, 463.055f, 352.456f, 466.414f, 353.69f, 464.617f
  6164. path.close();
  6165. path.moveTo(SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106)); // 368.503f, 443.383f
  6166. path.lineTo(SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106)); // 368.503f, 443.383f
  6167. path.close();
  6168. path.moveTo(SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106)); // 368.503f, 443.383f
  6169. path.cubicTo(SkBits2Float(0x43b42667), SkBits2Float(0x43e039fc), SkBits2Float(0x43b39d71), SkBits2Float(0x43e4e000), SkBits2Float(0x43b0d873), SkBits2Float(0x43e84efa)); // 360.3f, 448.453f, 359.23f, 457.75f, 353.691f, 464.617f
  6170. path.cubicTo(SkBits2Float(0x43b39d50), SkBits2Float(0x43e4e000), SkBits2Float(0x43b42667), SkBits2Float(0x43e039fc), SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106)); // 359.229f, 457.75f, 360.3f, 448.453f, 368.503f, 443.383f
  6171. path.close();
  6172. path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa)); // 369.229f, 444.117f
  6173. path.lineTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa)); // 369.229f, 444.117f
  6174. path.close();
  6175. path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa)); // 369.229f, 444.117f
  6176. path.lineTo(SkBits2Float(0x43b84043), SkBits2Float(0x43ddb106)); // 368.502f, 443.383f
  6177. path.lineTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa)); // 369.229f, 444.117f
  6178. path.close();
  6179. path.moveTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08)); // 356.769f, 466.094f
  6180. path.lineTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08)); // 356.769f, 466.094f
  6181. path.close();
  6182. path.moveTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08)); // 356.769f, 466.094f
  6183. path.cubicTo(SkBits2Float(0x43b48d72), SkBits2Float(0x43e569fc), SkBits2Float(0x43b7897a), SkBits2Float(0x43e21d0e), SkBits2Float(0x43b89d72), SkBits2Float(0x43de0efa)); // 361.105f, 458.828f, 367.074f, 452.227f, 369.23f, 444.117f
  6184. path.cubicTo(SkBits2Float(0x43b78959), SkBits2Float(0x43e21d0e), SkBits2Float(0x43b48d51), SkBits2Float(0x43e569fc), SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08)); // 367.073f, 452.227f, 361.104f, 458.828f, 356.769f, 466.094f
  6185. path.close();
  6186. path.moveTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08)); // 358.386f, 466.094f
  6187. path.lineTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08)); // 358.386f, 466.094f
  6188. path.close();
  6189. path.moveTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08)); // 358.386f, 466.094f
  6190. path.lineTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08)); // 356.769f, 466.094f
  6191. path.lineTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08)); // 358.386f, 466.094f
  6192. path.close();
  6193. path.moveTo(SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106)); // 372.315f, 443.383f
  6194. path.lineTo(SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106)); // 372.315f, 443.383f
  6195. path.close();
  6196. path.moveTo(SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106)); // 372.315f, 443.383f
  6197. path.cubicTo(SkBits2Float(0x43b7d74d), SkBits2Float(0x43e17604), SkBits2Float(0x43b5824f), SkBits2Float(0x43e59604), SkBits2Float(0x43b33149), SkBits2Float(0x43e90c08)); // 367.682f, 450.922f, 363.018f, 459.172f, 358.385f, 466.094f
  6198. path.cubicTo(SkBits2Float(0x43b58270), SkBits2Float(0x43e59604), SkBits2Float(0x43b7d76e), SkBits2Float(0x43e17604), SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106)); // 363.019f, 459.172f, 367.683f, 450.922f, 372.315f, 443.383f
  6199. path.close();
  6200. path.moveTo(SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa)); // 374.651f, 444.117f
  6201. path.lineTo(SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa)); // 374.651f, 444.117f
  6202. path.close();
  6203. path.moveTo(SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa)); // 374.651f, 444.117f
  6204. path.cubicTo(SkBits2Float(0x43bb1853), SkBits2Float(0x43dd92f2), SkBits2Float(0x43ba9e57), SkBits2Float(0x43ddab02), SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106)); // 374.19f, 443.148f, 373.237f, 443.336f, 372.315f, 443.383f
  6205. path.cubicTo(SkBits2Float(0x43ba9e57), SkBits2Float(0x43ddab02), SkBits2Float(0x43bb1853), SkBits2Float(0x43dd92f2), SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa)); // 373.237f, 443.336f, 374.19f, 443.148f, 374.651f, 444.117f
  6206. path.close();
  6207. path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08)); // 363.081f, 466.094f
  6208. path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08)); // 363.081f, 466.094f
  6209. path.close();
  6210. path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08)); // 363.081f, 466.094f
  6211. path.cubicTo(SkBits2Float(0x43b76c6b), SkBits2Float(0x43e55d0e), SkBits2Float(0x43ba4a5f), SkBits2Float(0x43e21312), SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa)); // 366.847f, 458.727f, 372.581f, 452.149f, 374.651f, 444.117f
  6212. path.cubicTo(SkBits2Float(0x43ba4a5f), SkBits2Float(0x43e212f2), SkBits2Float(0x43b76c6c), SkBits2Float(0x43e55d0e), SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08)); // 372.581f, 452.148f, 366.847f, 458.727f, 363.081f, 466.094f
  6213. path.close();
  6214. path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08)); // 365.417f, 466.094f
  6215. path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08)); // 365.417f, 466.094f
  6216. path.close();
  6217. path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08)); // 365.417f, 466.094f
  6218. path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08)); // 363.081f, 466.094f
  6219. path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08)); // 365.417f, 466.094f
  6220. path.close();
  6221. path.moveTo(SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6)); // 377.003f, 448.695f
  6222. path.lineTo(SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6)); // 377.003f, 448.695f
  6223. path.close();
  6224. path.moveTo(SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6)); // 377.003f, 448.695f
  6225. path.cubicTo(SkBits2Float(0x43b9de57), SkBits2Float(0x43e29df4), SkBits2Float(0x43b84355), SkBits2Float(0x43e5fefa), SkBits2Float(0x43b6b561), SkBits2Float(0x43e90be8)); // 371.737f, 453.234f, 368.526f, 459.992f, 365.417f, 466.093f
  6226. path.cubicTo(SkBits2Float(0x43b84355), SkBits2Float(0x43e5fefa), SkBits2Float(0x43b9de57), SkBits2Float(0x43e29df4), SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6)); // 368.526f, 459.992f, 371.737f, 453.234f, 377.003f, 448.695f
  6227. path.close();
  6228. path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc)); // 369.229f, 466.828f
  6229. path.lineTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc)); // 369.229f, 466.828f
  6230. path.close();
  6231. path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc)); // 369.229f, 466.828f
  6232. path.cubicTo(SkBits2Float(0x43b98149), SkBits2Float(0x43e637f0), SkBits2Float(0x43bd3355), SkBits2Float(0x43e3adf4), SkBits2Float(0x43bc8043), SkBits2Float(0x43e058f6)); // 371.01f, 460.437f, 378.401f, 455.359f, 377.002f, 448.695f
  6233. path.cubicTo(SkBits2Float(0x43bd3355), SkBits2Float(0x43e3adf4), SkBits2Float(0x43b9816a), SkBits2Float(0x43e638f6), SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc)); // 378.401f, 455.359f, 371.011f, 460.445f, 369.229f, 466.828f
  6234. path.close();
  6235. path.moveTo(SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0)); // 373.05f, 467.562f
  6236. path.lineTo(SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0)); // 373.05f, 467.562f
  6237. path.close();
  6238. path.moveTo(SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0)); // 373.05f, 467.562f
  6239. path.cubicTo(SkBits2Float(0x43ba1376), SkBits2Float(0x43e90000), SkBits2Float(0x43b94270), SkBits2Float(0x43e8f1ec), SkBits2Float(0x43b89d72), SkBits2Float(0x43e969fc)); // 372.152f, 466, 370.519f, 465.89f, 369.23f, 466.828f
  6240. path.cubicTo(SkBits2Float(0x43b94270), SkBits2Float(0x43e8f20c), SkBits2Float(0x43ba1355), SkBits2Float(0x43e90000), SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0)); // 370.519f, 465.891f, 372.151f, 466, 373.05f, 467.562f
  6241. path.close();
  6242. path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2)); // 385.503f, 441.023f
  6243. path.lineTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2)); // 385.503f, 441.023f
  6244. path.close();
  6245. path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2)); // 385.503f, 441.023f
  6246. path.cubicTo(SkBits2Float(0x43be095a), SkBits2Float(0x43e0acee), SkBits2Float(0x43bd8a60), SkBits2Float(0x43e5c0e6), SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0)); // 380.073f, 449.351f, 379.081f, 459.507f, 373.05f, 467.562f
  6247. path.cubicTo(SkBits2Float(0x43bd8a60), SkBits2Float(0x43e5c107), SkBits2Float(0x43be095a), SkBits2Float(0x43e0ad0f), SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2)); // 379.081f, 459.508f, 380.073f, 449.352f, 385.503f, 441.023f
  6248. path.close();
  6249. path.moveTo(SkBits2Float(0x43c00562), SkBits2Float(0x43e23000)); // 384.042f, 452.375f
  6250. path.lineTo(SkBits2Float(0x43c00562), SkBits2Float(0x43e23000)); // 384.042f, 452.375f
  6251. path.close();
  6252. path.moveTo(SkBits2Float(0x43c00562), SkBits2Float(0x43e23000)); // 384.042f, 452.375f
  6253. path.cubicTo(SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e013f8), SkBits2Float(0x43c40668), SkBits2Float(0x43ddc2f2), SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2)); // 383.37f, 448.156f, 392.05f, 443.523f, 385.503f, 441.023f
  6254. path.cubicTo(SkBits2Float(0x43c40668), SkBits2Float(0x43ddc2f2), SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e013f8), SkBits2Float(0x43c00562), SkBits2Float(0x43e23000)); // 392.05f, 443.523f, 383.37f, 448.156f, 384.042f, 452.375f
  6255. path.close();
  6256. path.moveTo(SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a)); // 381.69f, 458.43f
  6257. path.lineTo(SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a)); // 381.69f, 458.43f
  6258. path.close();
  6259. path.moveTo(SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a)); // 381.69f, 458.43f
  6260. path.cubicTo(SkBits2Float(0x43c06562), SkBits2Float(0x43e4b4fe), SkBits2Float(0x43bf095a), SkBits2Float(0x43e2fd0e), SkBits2Float(0x43c00562), SkBits2Float(0x43e23000)); // 384.792f, 457.414f, 382.073f, 453.977f, 384.042f, 452.375f
  6261. path.cubicTo(SkBits2Float(0x43bf095a), SkBits2Float(0x43e2fdf4), SkBits2Float(0x43c06562), SkBits2Float(0x43e4b4fe), SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a)); // 382.073f, 453.984f, 384.792f, 457.414f, 381.69f, 458.43f
  6262. path.close();
  6263. path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a)); // 382.425f, 459.305f
  6264. path.lineTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a)); // 382.425f, 459.305f
  6265. path.close();
  6266. path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a)); // 382.425f, 459.305f
  6267. path.lineTo(SkBits2Float(0x43bed874), SkBits2Float(0x43e5370a)); // 381.691f, 458.43f
  6268. path.lineTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a)); // 382.425f, 459.305f
  6269. path.close();
  6270. path.moveTo(SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef)); // 377.737f, 467.562f
  6271. path.lineTo(SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef)); // 377.737f, 467.562f
  6272. path.close();
  6273. path.moveTo(SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef)); // 377.737f, 467.562f
  6274. path.cubicTo(SkBits2Float(0x43bdfb66), SkBits2Float(0x43e888f5), SkBits2Float(0x43bd6854), SkBits2Float(0x43e69ced), SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a6e9)); // 379.964f, 465.07f, 378.815f, 461.226f, 382.425f, 459.304f
  6275. path.cubicTo(SkBits2Float(0x43bd6854), SkBits2Float(0x43e69d0e), SkBits2Float(0x43bdfb66), SkBits2Float(0x43e888f5), SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef)); // 378.815f, 461.227f, 379.964f, 465.07f, 377.737f, 467.562f
  6276. path.close();
  6277. path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810)); // 382.425f, 469.188f
  6278. path.lineTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810)); // 382.425f, 469.188f
  6279. path.close();
  6280. path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810)); // 382.425f, 469.188f
  6281. path.cubicTo(SkBits2Float(0x43bebf5e), SkBits2Float(0x43e99e14), SkBits2Float(0x43bdc562), SkBits2Float(0x43e9d70a), SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c810)); // 381.495f, 467.235f, 379.542f, 467.68f, 377.737f, 467.563f
  6282. path.cubicTo(SkBits2Float(0x43bdc562), SkBits2Float(0x43e9d70a), SkBits2Float(0x43bebf5e), SkBits2Float(0x43e99df3), SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810)); // 379.542f, 467.68f, 381.495f, 467.234f, 382.425f, 469.188f
  6283. path.close();
  6284. path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000)); // 385.503f, 463
  6285. path.lineTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000)); // 385.503f, 463
  6286. path.close();
  6287. path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000)); // 385.503f, 463
  6288. path.cubicTo(SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e7f9fc), SkBits2Float(0x43bfbe58), SkBits2Float(0x43e98b02), SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810)); // 383.37f, 463.953f, 383.487f, 467.086f, 382.425f, 469.188f
  6289. path.cubicTo(SkBits2Float(0x43bfbe58), SkBits2Float(0x43e98b02), SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e7f9fc), SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000)); // 383.487f, 467.086f, 383.37f, 463.953f, 385.503f, 463
  6290. path.close();
  6291. path.moveTo(SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa)); // 386.386f, 454.742f
  6292. path.lineTo(SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa)); // 386.386f, 454.742f
  6293. path.close();
  6294. path.moveTo(SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa)); // 386.386f, 454.742f
  6295. path.cubicTo(SkBits2Float(0x43c35270), SkBits2Float(0x43e586ea), SkBits2Float(0x43beb064), SkBits2Float(0x43e561ec), SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000)); // 390.644f, 459.054f, 381.378f, 458.765f, 385.503f, 463
  6296. path.cubicTo(SkBits2Float(0x43beb064), SkBits2Float(0x43e5620c), SkBits2Float(0x43c35270), SkBits2Float(0x43e5870a), SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa)); // 381.378f, 458.766f, 390.644f, 459.055f, 386.386f, 454.742f
  6297. path.close();
  6298. path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02)); // 391.808f, 446.336f
  6299. path.lineTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02)); // 391.808f, 446.336f
  6300. path.close();
  6301. path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02)); // 391.808f, 446.336f
  6302. path.cubicTo(SkBits2Float(0x43c2ba60), SkBits2Float(0x43e07810), SkBits2Float(0x43c32a60), SkBits2Float(0x43e31106), SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa)); // 389.456f, 448.938f, 390.331f, 454.133f, 386.386f, 454.742f
  6303. path.cubicTo(SkBits2Float(0x43c32a60), SkBits2Float(0x43e31106), SkBits2Float(0x43c2ba60), SkBits2Float(0x43e07811), SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02)); // 390.331f, 454.133f, 389.456f, 448.938f, 391.808f, 446.336f
  6304. path.close();
  6305. path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000)); // 391.808f, 442.5f
  6306. path.lineTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000)); // 391.808f, 442.5f
  6307. path.close();
  6308. path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000)); // 391.808f, 442.5f
  6309. path.cubicTo(SkBits2Float(0x43c2a668), SkBits2Float(0x43ddbefa), SkBits2Float(0x43c35f7e), SkBits2Float(0x43def4fe), SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02)); // 389.3f, 443.492f, 390.746f, 445.914f, 391.808f, 446.336f
  6310. path.cubicTo(SkBits2Float(0x43c35f5e), SkBits2Float(0x43def4fe), SkBits2Float(0x43c2a668), SkBits2Float(0x43ddbefa), SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000)); // 390.745f, 445.914f, 389.3f, 443.492f, 391.808f, 442.5f
  6311. path.close();
  6312. path.moveTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106)); // 392.542f, 443.383f
  6313. path.lineTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106)); // 392.542f, 443.383f
  6314. path.close();
  6315. path.moveTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106)); // 392.542f, 443.383f
  6316. path.lineTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000)); // 391.808f, 442.5f
  6317. path.lineTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106)); // 392.542f, 443.383f
  6318. path.close();
  6319. path.moveTo(SkBits2Float(0x43c5145c), SkBits2Float(0x43dc82f2)); // 394.159f, 441.023f
  6320. path.lineTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb0e6)); // 392.542f, 443.382f
  6321. path.lineTo(SkBits2Float(0x43c5145c), SkBits2Float(0x43dc82f2)); // 394.159f, 441.023f
  6322. path.close();
  6323. testSimplify(reporter, path, filename);
  6324. }
  6325. static void joel_6(skiatest::Reporter* reporter, const char* filename) {
  6326. SkPath path;
  6327. path.moveTo(SkBits2Float(0x43c38c6a), SkBits2Float(0x43a739fc)); // 391.097f, 334.453f
  6328. path.lineTo(SkBits2Float(0x43c36168), SkBits2Float(0x43a74efa)); // 390.761f, 334.617f
  6329. path.lineTo(SkBits2Float(0x43c33666), SkBits2Float(0x43a6f7f0)); // 390.425f, 333.937f
  6330. path.lineTo(SkBits2Float(0x43c36168), SkBits2Float(0x43a6e1ec)); // 390.761f, 333.765f
  6331. path.lineTo(SkBits2Float(0x43c38c6a), SkBits2Float(0x43a739fc)); // 391.097f, 334.453f
  6332. path.close();
  6333. path.moveTo(SkBits2Float(0x43c39062), SkBits2Float(0x43a73810)); // 391.128f, 334.438f
  6334. path.lineTo(SkBits2Float(0x43c3676c), SkBits2Float(0x43a75106)); // 390.808f, 334.633f
  6335. path.lineTo(SkBits2Float(0x43c33374), SkBits2Float(0x43a6fefa)); // 390.402f, 333.992f
  6336. path.lineTo(SkBits2Float(0x43c35d70), SkBits2Float(0x43a6e3f8)); // 390.73f, 333.781f
  6337. path.lineTo(SkBits2Float(0x43c39062), SkBits2Float(0x43a73811)); // 391.128f, 334.438f
  6338. path.lineTo(SkBits2Float(0x43c39062), SkBits2Float(0x43a73810)); // 391.128f, 334.438f
  6339. path.close();
  6340. path.moveTo(SkBits2Float(0x43e38958), SkBits2Float(0x43971c08)); // 455.073f, 302.219f
  6341. path.lineTo(SkBits2Float(0x43e3824e), SkBits2Float(0x43973000)); // 455.018f, 302.375f
  6342. path.lineTo(SkBits2Float(0x43e36f5c), SkBits2Float(0x439739fc)); // 454.87f, 302.453f
  6343. path.lineTo(SkBits2Float(0x43e35a5e), SkBits2Float(0x43970df4)); // 454.706f, 302.109f
  6344. path.lineTo(SkBits2Float(0x43e38958), SkBits2Float(0x43971c08)); // 455.073f, 302.219f
  6345. path.close();
  6346. path.moveTo(SkBits2Float(0x43e36f5c), SkBits2Float(0x439739fc)); // 454.87f, 302.453f
  6347. path.lineTo(SkBits2Float(0x43c38c6a), SkBits2Float(0x43a739fc)); // 391.097f, 334.453f
  6348. path.lineTo(SkBits2Float(0x43c36168), SkBits2Float(0x43a6e1ec)); // 390.761f, 333.765f
  6349. path.lineTo(SkBits2Float(0x43e3445a), SkBits2Float(0x4396e1ec)); // 454.534f, 301.765f
  6350. path.lineTo(SkBits2Float(0x43e36f5c), SkBits2Float(0x439739fc)); // 454.87f, 302.453f
  6351. path.close();
  6352. path.moveTo(SkBits2Float(0x43e41f5c), SkBits2Float(0x43946efa)); // 456.245f, 296.867f
  6353. path.lineTo(SkBits2Float(0x43e4545a), SkBits2Float(0x439479fc)); // 456.659f, 296.953f
  6354. path.lineTo(SkBits2Float(0x43e44354), SkBits2Float(0x4394acee)); // 456.526f, 297.351f
  6355. path.lineTo(SkBits2Float(0x43e41646), SkBits2Float(0x43949efa)); // 456.174f, 297.242f
  6356. path.lineTo(SkBits2Float(0x43e41f5d), SkBits2Float(0x43946efa)); // 456.245f, 296.867f
  6357. path.lineTo(SkBits2Float(0x43e41f5c), SkBits2Float(0x43946efa)); // 456.245f, 296.867f
  6358. path.close();
  6359. path.moveTo(SkBits2Float(0x43e44354), SkBits2Float(0x4394ad0e)); // 456.526f, 297.352f
  6360. path.lineTo(SkBits2Float(0x43e38958), SkBits2Float(0x43971c08)); // 455.073f, 302.219f
  6361. path.lineTo(SkBits2Float(0x43e32b64), SkBits2Float(0x43970000)); // 454.339f, 302
  6362. path.lineTo(SkBits2Float(0x43e3e76c), SkBits2Float(0x43949106)); // 455.808f, 297.133f
  6363. path.lineTo(SkBits2Float(0x43e44353), SkBits2Float(0x4394ad0e)); // 456.526f, 297.352f
  6364. path.lineTo(SkBits2Float(0x43e44354), SkBits2Float(0x4394ad0e)); // 456.526f, 297.352f
  6365. path.close();
  6366. path.moveTo(SkBits2Float(0x43e17d50), SkBits2Float(0x4393f20c)); // 450.979f, 295.891f
  6367. path.lineTo(SkBits2Float(0x43e18e56), SkBits2Float(0x4393e810)); // 451.112f, 295.813f
  6368. path.lineTo(SkBits2Float(0x43e1a148), SkBits2Float(0x4393eb02)); // 451.26f, 295.836f
  6369. path.lineTo(SkBits2Float(0x43e19852), SkBits2Float(0x43941b02)); // 451.19f, 296.211f
  6370. path.lineTo(SkBits2Float(0x43e17d50), SkBits2Float(0x4393f20c)); // 450.979f, 295.891f
  6371. path.close();
  6372. path.moveTo(SkBits2Float(0x43e1a169), SkBits2Float(0x4393eb02)); // 451.261f, 295.836f
  6373. path.lineTo(SkBits2Float(0x43e41f5d), SkBits2Float(0x43946efa)); // 456.245f, 296.867f
  6374. path.lineTo(SkBits2Float(0x43e40b65), SkBits2Float(0x4394cefa)); // 456.089f, 297.617f
  6375. path.lineTo(SkBits2Float(0x43e18d71), SkBits2Float(0x43944b02)); // 451.105f, 296.586f
  6376. path.lineTo(SkBits2Float(0x43e1a169), SkBits2Float(0x4393eb02)); // 451.261f, 295.836f
  6377. path.close();
  6378. path.moveTo(SkBits2Float(0x43c35d50), SkBits2Float(0x43a6e3f8)); // 390.729f, 333.781f
  6379. path.lineTo(SkBits2Float(0x43e17d50), SkBits2Float(0x4393f1ec)); // 450.979f, 295.89f
  6380. path.lineTo(SkBits2Float(0x43e1b148), SkBits2Float(0x439443f8)); // 451.385f, 296.531f
  6381. path.lineTo(SkBits2Float(0x43c39042), SkBits2Float(0x43a737f0)); // 391.127f, 334.437f
  6382. path.lineTo(SkBits2Float(0x43c35d50), SkBits2Float(0x43a6e3f8)); // 390.729f, 333.781f
  6383. path.close();
  6384. testSimplify(reporter, path, filename);
  6385. }
  6386. static void joel_7(skiatest::Reporter* reporter, const char* filename) {
  6387. SkPath path;
  6388. path.moveTo(SkBits2Float(0x4321220c), SkBits2Float(0x43eac70a)); // 161.133f, 469.555f
  6389. path.lineTo(SkBits2Float(0x4321220c), SkBits2Float(0x43eac70a)); // 161.133f, 469.555f
  6390. path.lineTo(SkBits2Float(0x431f8e14), SkBits2Float(0x43eb3b02)); // 159.555f, 470.461f
  6391. path.lineTo(SkBits2Float(0x4321220c), SkBits2Float(0x43eac70a)); // 161.133f, 469.555f
  6392. path.close();
  6393. path.moveTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02)); // 158.203f, 480.461f
  6394. path.lineTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02)); // 158.203f, 480.461f
  6395. path.lineTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02)); // 158.203f, 480.461f
  6396. path.lineTo(SkBits2Float(0x431d4c08), SkBits2Float(0x43ef720c)); // 157.297f, 478.891f
  6397. path.lineTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02)); // 158.203f, 480.461f
  6398. path.close();
  6399. path.moveTo(SkBits2Float(0x431c6419), SkBits2Float(0x43eea7f0)); // 156.391f, 477.312f
  6400. path.cubicTo(SkBits2Float(0x431d6e15), SkBits2Float(0x43ee5ae2), SkBits2Float(0x431e2000), SkBits2Float(0x43ede000), SkBits2Float(0x431e69fc), SkBits2Float(0x43ed55e4)); // 157.43f, 476.71f, 158.125f, 475.75f, 158.414f, 474.671f
  6401. path.cubicTo(SkBits2Float(0x431eb3f8), SkBits2Float(0x43eccbc8), SkBits2Float(0x431e93f8), SkBits2Float(0x43ec35e4), SkBits2Float(0x431df9db), SkBits2Float(0x43ebafe0)); // 158.703f, 473.592f, 158.578f, 472.421f, 157.976f, 471.374f
  6402. path.lineTo(SkBits2Float(0x432121cb), SkBits2Float(0x43eac6ea)); // 161.132f, 469.554f
  6403. path.cubicTo(SkBits2Float(0x432355c3), SkBits2Float(0x43ecb0e6), SkBits2Float(0x432207ae), SkBits2Float(0x43ef1fe0), SkBits2Float(0x431e33b7), SkBits2Float(0x43f03ae2)); // 163.335f, 473.382f, 162.03f, 478.249f, 158.202f, 480.46f
  6404. path.lineTo(SkBits2Float(0x431c6419), SkBits2Float(0x43eea7f0)); // 156.391f, 477.312f
  6405. path.close();
  6406. path.moveTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe)); // 147.297f, 477.539f
  6407. path.lineTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe)); // 147.297f, 477.539f
  6408. path.lineTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe)); // 147.297f, 477.539f
  6409. path.lineTo(SkBits2Float(0x4314e20c), SkBits2Float(0x43ee5106)); // 148.883f, 476.633f
  6410. path.lineTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe)); // 147.297f, 477.539f
  6411. path.close();
  6412. path.moveTo(SkBits2Float(0x431673f8), SkBits2Float(0x43eddc08)); // 150.453f, 475.719f
  6413. path.cubicTo(SkBits2Float(0x43170e15), SkBits2Float(0x43ee620c), SkBits2Float(0x43180000), SkBits2Float(0x43eebb02), SkBits2Float(0x43191604), SkBits2Float(0x43eee000)); // 151.055f, 476.766f, 152, 477.461f, 153.086f, 477.75f
  6414. path.cubicTo(SkBits2Float(0x431a2c08), SkBits2Float(0x43ef04fe), SkBits2Float(0x431b5810), SkBits2Float(0x43eef4fe), SkBits2Float(0x431c6418), SkBits2Float(0x43eea7f0)); // 154.172f, 478.039f, 155.344f, 477.914f, 156.391f, 477.312f
  6415. path.lineTo(SkBits2Float(0x431e33f7), SkBits2Float(0x43f03ae2)); // 158.203f, 480.46f
  6416. path.cubicTo(SkBits2Float(0x431a620b), SkBits2Float(0x43f154de), SkBits2Float(0x4315820c), SkBits2Float(0x43f0add4), SkBits2Float(0x43134c07), SkBits2Float(0x43eec4de)); // 154.383f, 482.663f, 149.508f, 481.358f, 147.297f, 477.538f
  6417. path.lineTo(SkBits2Float(0x431673f8), SkBits2Float(0x43eddc08)); // 150.453f, 475.719f
  6418. path.close();
  6419. path.moveTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95106)); // 150.227f, 466.633f
  6420. path.lineTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95106)); // 150.227f, 466.633f
  6421. path.lineTo(SkBits2Float(0x4317220d), SkBits2Float(0x43ea19fc)); // 151.133f, 468.203f
  6422. path.lineTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95106)); // 150.227f, 466.633f
  6423. path.close();
  6424. path.moveTo(SkBits2Float(0x43180c08), SkBits2Float(0x43eae3f8)); // 152.047f, 469.781f
  6425. path.cubicTo(SkBits2Float(0x43170000), SkBits2Float(0x43eb31ec), SkBits2Float(0x43164e14), SkBits2Float(0x43ebabe8), SkBits2Float(0x43160418), SkBits2Float(0x43ec3604)); // 151, 470.39f, 150.305f, 471.343f, 150.016f, 472.422f
  6426. path.cubicTo(SkBits2Float(0x4315ba1c), SkBits2Float(0x43ecc106), SkBits2Float(0x4315d810), SkBits2Float(0x43ed570a), SkBits2Float(0x43167439), SkBits2Float(0x43eddc08)); // 149.727f, 473.508f, 149.844f, 474.68f, 150.454f, 475.719f
  6427. path.lineTo(SkBits2Float(0x43134c49), SkBits2Float(0x43eec4fe)); // 147.298f, 477.539f
  6428. path.cubicTo(SkBits2Float(0x43111851), SkBits2Float(0x43ecdb02), SkBits2Float(0x43126830), SkBits2Float(0x43ea6c08), SkBits2Float(0x43163a5d), SkBits2Float(0x43e95106)); // 145.095f, 473.711f, 146.407f, 468.844f, 150.228f, 466.633f
  6429. path.lineTo(SkBits2Float(0x43180c08), SkBits2Float(0x43eae3f8)); // 152.047f, 469.781f
  6430. path.close();
  6431. path.moveTo(SkBits2Float(0x431dfa1d), SkBits2Float(0x43ebb000)); // 157.977f, 471.375f
  6432. path.cubicTo(SkBits2Float(0x431d620d), SkBits2Float(0x43eb29fc), SkBits2Float(0x431c6e15), SkBits2Float(0x43ead20c), SkBits2Float(0x431b5811), SkBits2Float(0x43eaad0e)); // 157.383f, 470.328f, 156.43f, 469.641f, 155.344f, 469.352f
  6433. path.cubicTo(SkBits2Float(0x431a420d), SkBits2Float(0x43ea8810), SkBits2Float(0x43191605), SkBits2Float(0x43ea970a), SkBits2Float(0x43180c09), SkBits2Float(0x43eae418)); // 154.258f, 469.063f, 153.086f, 469.18f, 152.047f, 469.782f
  6434. path.lineTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95126)); // 150.227f, 466.634f
  6435. path.cubicTo(SkBits2Float(0x431a0c09), SkBits2Float(0x43e8372a), SkBits2Float(0x431eec08), SkBits2Float(0x43e8de34), SkBits2Float(0x4321220d), SkBits2Float(0x43eac72a)); // 154.047f, 464.431f, 158.922f, 465.736f, 161.133f, 469.556f
  6436. path.lineTo(SkBits2Float(0x431dfa1d), SkBits2Float(0x43ebb000)); // 157.977f, 471.375f
  6437. path.close();
  6438. testSimplify(reporter, path, filename);
  6439. }
  6440. static void joel_8(skiatest::Reporter* reporter, const char* filename) {
  6441. SkPath path;
  6442. path.moveTo(SkBits2Float(0x42d97520), SkBits2Float(0x410ac429)); // 108.729f, 8.67289f
  6443. path.cubicTo(SkBits2Float(0x42d97520), SkBits2Float(0x410ac429), SkBits2Float(0x42e9a9ce), SkBits2Float(0x41834e87), SkBits2Float(0x42e99c8c), SkBits2Float(0x41c5c960)); // 108.729f, 8.67289f, 116.832f, 16.4133f, 116.806f, 24.7233f
  6444. path.cubicTo(SkBits2Float(0x42e98f49), SkBits2Float(0x4204221c), SkBits2Float(0x42d97520), SkBits2Float(0x4223825f), SkBits2Float(0x42d97520), SkBits2Float(0x4223825f)); // 116.78f, 33.0333f, 108.729f, 40.8773f, 108.729f, 40.8773f
  6445. path.cubicTo(SkBits2Float(0x42d97520), SkBits2Float(0x4223825f), SkBits2Float(0x42dbbc54), SkBits2Float(0x42099f18), SkBits2Float(0x42d1cb74), SkBits2Float(0x41f77dc0)); // 108.729f, 40.8773f, 109.868f, 34.4054f, 104.897f, 30.9364f
  6446. path.cubicTo(SkBits2Float(0x42c7da94), SkBits2Float(0x41dbbd4f), SkBits2Float(0x42b1b1a1), SkBits2Float(0x41d802fb), SkBits2Float(0x42b1b1a1), SkBits2Float(0x41d802fb)); // 99.9269f, 27.4674f, 88.8469f, 27.0015f, 88.8469f, 27.0015f
  6447. path.cubicTo(SkBits2Float(0x42a75637), SkBits2Float(0x41d6909f), SkBits2Float(0x4296c543), SkBits2Float(0x41f1b139), SkBits2Float(0x4296c543), SkBits2Float(0x41f1b139)); // 83.6684f, 26.8206f, 75.3853f, 30.2115f, 75.3853f, 30.2115f
  6448. path.lineTo(SkBits2Float(0x42824475), SkBits2Float(0x41c69d70)); // 65.1337f, 24.8269f
  6449. path.lineTo(SkBits2Float(0x4296c543), SkBits2Float(0x419b89a8)); // 75.3853f, 19.4422f
  6450. path.cubicTo(SkBits2Float(0x4296c543), SkBits2Float(0x419b89a8), SkBits2Float(0x42a6b798), SkBits2Float(0x41b89815), SkBits2Float(0x42b1b1a1), SkBits2Float(0x41b95c48)); // 75.3853f, 19.4422f, 83.3586f, 23.0743f, 88.8469f, 23.1701f
  6451. path.cubicTo(SkBits2Float(0x42b1b1a1), SkBits2Float(0x41b95c48), SkBits2Float(0x42c80258), SkBits2Float(0x41b03f7a), SkBits2Float(0x42d1cb74), SkBits2Float(0x419340ee)); // 88.8469f, 23.1701f, 100.005f, 22.031f, 104.897f, 18.4067f
  6452. path.cubicTo(SkBits2Float(0x42db9490), SkBits2Float(0x416c84c2), SkBits2Float(0x42d97520), SkBits2Float(0x410ac42a), SkBits2Float(0x42d97520), SkBits2Float(0x410ac42a)); // 109.79f, 14.7824f, 108.729f, 8.67289f, 108.729f, 8.67289f
  6453. path.lineTo(SkBits2Float(0x42d97520), SkBits2Float(0x410ac429)); // 108.729f, 8.67289f
  6454. path.close();
  6455. testSimplify(reporter, path, filename);
  6456. }
  6457. static void joel_9(skiatest::Reporter* reporter, const char* filename) {
  6458. #if DEBUG_UNDER_DEVELOPMENT
  6459. // fails with image mismatch
  6460. SkPath path;
  6461. path.moveTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604)); // 144.859f, 285.172f
  6462. path.lineTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604)); // 144.859f, 285.172f
  6463. path.lineTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604)); // 144.859f, 285.172f
  6464. path.lineTo(SkBits2Float(0x430f21ca), SkBits2Float(0x438e4efa)); // 143.132f, 284.617f
  6465. path.lineTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604)); // 144.859f, 285.172f
  6466. path.close();
  6467. path.moveTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08)); // 135.922f, 286.844f
  6468. path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08)); // 135.922f, 286.844f
  6469. path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08)); // 135.922f, 286.844f
  6470. path.lineTo(SkBits2Float(0x43075df4), SkBits2Float(0x43904916)); // 135.367f, 288.571f
  6471. path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08)); // 135.922f, 286.844f
  6472. path.close();
  6473. path.moveTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08)); // 135.922f, 286.844f
  6474. path.cubicTo(SkBits2Float(0x430911eb), SkBits2Float(0x438f9c08), SkBits2Float(0x430a3df4), SkBits2Float(0x438f8b02), SkBits2Float(0x430b3df4), SkBits2Float(0x438f49fc)); // 137.07f, 287.219f, 138.242f, 287.086f, 139.242f, 286.578f
  6475. path.cubicTo(SkBits2Float(0x430c3be8), SkBits2Float(0x438f09fc), SkBits2Float(0x430d07f0), SkBits2Float(0x438e99fc), SkBits2Float(0x430d67f0), SkBits2Float(0x438e070a)); // 140.234f, 286.078f, 141.031f, 285.203f, 141.406f, 284.055f
  6476. path.lineTo(SkBits2Float(0x4310dbe8), SkBits2Float(0x438e9604)); // 144.859f, 285.172f
  6477. path.cubicTo(SkBits2Float(0x430f7df4), SkBits2Float(0x4390b000), SkBits2Float(0x430afdf4), SkBits2Float(0x4391d3f8), SkBits2Float(0x4306cc09), SkBits2Float(0x43912604)); // 143.492f, 289.375f, 138.992f, 291.656f, 134.797f, 290.297f
  6478. path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08)); // 135.922f, 286.844f
  6479. path.close();
  6480. path.moveTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa)); // 129.68f, 280.242f
  6481. path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa)); // 129.68f, 280.242f
  6482. path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa)); // 129.68f, 280.242f
  6483. path.lineTo(SkBits2Float(0x43036831), SkBits2Float(0x438c66ea)); // 131.407f, 280.804f
  6484. path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa)); // 129.68f, 280.242f
  6485. path.close();
  6486. path.moveTo(SkBits2Float(0x4305220c), SkBits2Float(0x438caefa)); // 133.133f, 281.367f
  6487. path.cubicTo(SkBits2Float(0x4304c20c), SkBits2Float(0x438d4106), SkBits2Float(0x4304e20c), SkBits2Float(0x438dd7f0), SkBits2Float(0x43056418), SkBits2Float(0x438e56ea)); // 132.758f, 282.508f, 132.883f, 283.687f, 133.391f, 284.679f
  6488. path.cubicTo(SkBits2Float(0x4305e831), SkBits2Float(0x438ed6ea), SkBits2Float(0x4306c624), SkBits2Float(0x438f3be8), SkBits2Float(0x4307ec08), SkBits2Float(0x438f6be8)); // 133.907f, 285.679f, 134.774f, 286.468f, 135.922f, 286.843f
  6489. path.lineTo(SkBits2Float(0x4306cc08), SkBits2Float(0x439125e4)); // 134.797f, 290.296f
  6490. path.cubicTo(SkBits2Float(0x43029a1c), SkBits2Float(0x439076ea), SkBits2Float(0x43005021), SkBits2Float(0x438e37f0), SkBits2Float(0x4301ae14), SkBits2Float(0x438c1eda)); // 130.602f, 288.929f, 128.313f, 284.437f, 129.68f, 280.241f
  6491. path.lineTo(SkBits2Float(0x4305220c), SkBits2Float(0x438caefa)); // 133.133f, 281.367f
  6492. path.close();
  6493. path.moveTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898efa)); // 139.742f, 275.117f
  6494. path.lineTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898efa)); // 139.742f, 275.117f
  6495. path.lineTo(SkBits2Float(0x430b2e15), SkBits2Float(0x438a6c08)); // 139.18f, 276.844f
  6496. path.lineTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898efa)); // 139.742f, 275.117f
  6497. path.close();
  6498. path.moveTo(SkBits2Float(0x430a9be7), SkBits2Float(0x438b48f6)); // 138.609f, 278.57f
  6499. path.cubicTo(SkBits2Float(0x43097604), SkBits2Float(0x438b19fc), SkBits2Float(0x43084c08), SkBits2Float(0x438b29fc), SkBits2Float(0x43074c08), SkBits2Float(0x438b6b02)); // 137.461f, 278.203f, 136.297f, 278.328f, 135.297f, 278.836f
  6500. path.cubicTo(SkBits2Float(0x43064c08), SkBits2Float(0x438bac08), SkBits2Float(0x4305820c), SkBits2Float(0x438c1c08), SkBits2Float(0x4305220c), SkBits2Float(0x438caefa)); // 134.297f, 279.344f, 133.508f, 280.219f, 133.133f, 281.367f
  6501. path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa)); // 129.68f, 280.242f
  6502. path.cubicTo(SkBits2Float(0x43030c08), SkBits2Float(0x438a04fe), SkBits2Float(0x430789fb), SkBits2Float(0x4388e106), SkBits2Float(0x430bbdf3), SkBits2Float(0x43898efa)); // 131.047f, 276.039f, 135.539f, 273.758f, 139.742f, 275.117f
  6503. path.lineTo(SkBits2Float(0x430a9be7), SkBits2Float(0x438b48f6)); // 138.609f, 278.57f
  6504. path.close();
  6505. path.moveTo(SkBits2Float(0x430d67f0), SkBits2Float(0x438e070a)); // 141.406f, 284.055f
  6506. path.cubicTo(SkBits2Float(0x430dc5e4), SkBits2Float(0x438d7418), SkBits2Float(0x430da5e4), SkBits2Float(0x438cde14), SkBits2Float(0x430d25e4), SkBits2Float(0x438c5e14)); // 141.773f, 282.907f, 141.648f, 281.735f, 141.148f, 280.735f
  6507. path.cubicTo(SkBits2Float(0x430ca001), SkBits2Float(0x438bde14), SkBits2Float(0x430bc1cb), SkBits2Float(0x438b7916), SkBits2Float(0x430a9be8), SkBits2Float(0x438b4916)); // 140.625f, 279.735f, 139.757f, 278.946f, 138.609f, 278.571f
  6508. path.lineTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898f1a)); // 139.742f, 275.118f
  6509. path.cubicTo(SkBits2Float(0x430fefe0), SkBits2Float(0x438a3f1a), SkBits2Float(0x43123811), SkBits2Float(0x438c7d0e), SkBits2Float(0x4310dbe8), SkBits2Float(0x438e9624)); // 143.937f, 276.493f, 146.219f, 280.977f, 144.859f, 285.173f
  6510. path.lineTo(SkBits2Float(0x430d67f0), SkBits2Float(0x438e070a)); // 141.406f, 284.055f
  6511. path.close();
  6512. testSimplify(reporter, path, filename);
  6513. #endif
  6514. }
  6515. static void joel_10(skiatest::Reporter* reporter, const char* filename) {
  6516. #if DEBUG_UNDER_DEVELOPMENT
  6517. // fails with image mismatch
  6518. SkPath path;
  6519. path.moveTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000)); // 575.148f, 433
  6520. path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000)); // 575.148f, 433
  6521. path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000)); // 575.148f, 433
  6522. path.lineTo(SkBits2Float(0x44103800), SkBits2Float(0x43d8c7f0)); // 576.875f, 433.562f
  6523. path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000)); // 575.148f, 433
  6524. path.close();
  6525. path.moveTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000)); // 585.211f, 427.875f
  6526. path.lineTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000)); // 585.211f, 427.875f
  6527. path.lineTo(SkBits2Float(0x44122906), SkBits2Float(0x43d6cdf4)); // 584.641f, 429.609f
  6528. path.lineTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000)); // 585.211f, 427.875f
  6529. path.close();
  6530. path.moveTo(SkBits2Float(0x44120581), SkBits2Float(0x43d7ab02)); // 584.086f, 431.336f
  6531. path.cubicTo(SkBits2Float(0x4411bc08), SkBits2Float(0x43d77b02), SkBits2Float(0x44117083), SkBits2Float(0x43d78b02), SkBits2Float(0x44113106), SkBits2Float(0x43d7cc08)); // 582.938f, 430.961f, 581.758f, 431.086f, 580.766f, 431.594f
  6532. path.cubicTo(SkBits2Float(0x4410f189), SkBits2Float(0x43d80d0e), SkBits2Float(0x4410be87), SkBits2Float(0x43d87d0e), SkBits2Float(0x4410a687), SkBits2Float(0x43d91000)); // 579.774f, 432.102f, 578.977f, 432.977f, 578.602f, 434.125f
  6533. path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000)); // 575.148f, 433
  6534. path.cubicTo(SkBits2Float(0x441020f6), SkBits2Float(0x43d66604), SkBits2Float(0x441140f6), SkBits2Float(0x43d5420c), SkBits2Float(0x44124d71), SkBits2Float(0x43d5f000)); // 576.515f, 428.797f, 581.015f, 426.516f, 585.21f, 427.875f
  6535. path.lineTo(SkBits2Float(0x44120581), SkBits2Float(0x43d7ab02)); // 584.086f, 431.336f
  6536. path.close();
  6537. path.moveTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810)); // 590.328f, 437.938f
  6538. path.lineTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810)); // 590.328f, 437.938f
  6539. path.lineTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810)); // 590.328f, 437.938f
  6540. path.lineTo(SkBits2Float(0x44132677), SkBits2Float(0x43dab020)); // 588.601f, 437.376f
  6541. path.lineTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810)); // 590.328f, 437.938f
  6542. path.close();
  6543. path.moveTo(SkBits2Float(0x4412b800), SkBits2Float(0x43da67f0)); // 586.875f, 436.812f
  6544. path.cubicTo(SkBits2Float(0x4412d000), SkBits2Float(0x43d9d4fe), SkBits2Float(0x4412c800), SkBits2Float(0x43d94000), SkBits2Float(0x4412a77d), SkBits2Float(0x43d8befa)); // 587.25f, 435.664f, 587.125f, 434.5f, 586.617f, 433.492f
  6545. path.cubicTo(SkBits2Float(0x44128677), SkBits2Float(0x43d84000), SkBits2Float(0x44124efa), SkBits2Float(0x43d7d9fc), SkBits2Float(0x44120581), SkBits2Float(0x43d7ab02)); // 586.101f, 432.5f, 585.234f, 431.703f, 584.086f, 431.336f
  6546. path.lineTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000)); // 585.211f, 427.875f
  6547. path.cubicTo(SkBits2Float(0x441359fc), SkBits2Float(0x43d69efa), SkBits2Float(0x4413ec7b), SkBits2Float(0x43d8ddf4), SkBits2Float(0x441394fe), SkBits2Float(0x43daf7f0)); // 589.406f, 429.242f, 591.695f, 433.734f, 590.328f, 437.937f
  6548. path.lineTo(SkBits2Float(0x4412b800), SkBits2Float(0x43da67f0)); // 586.875f, 436.812f
  6549. path.close();
  6550. path.moveTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a)); // 580.266f, 443.055f
  6551. path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a)); // 580.266f, 443.055f
  6552. path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a)); // 580.266f, 443.055f
  6553. path.lineTo(SkBits2Float(0x441134fe), SkBits2Float(0x43dca9fc)); // 580.828f, 441.328f
  6554. path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a)); // 580.266f, 443.055f
  6555. path.close();
  6556. path.moveTo(SkBits2Float(0x44115979), SkBits2Float(0x43dbcd0e)); // 581.398f, 439.602f
  6557. path.cubicTo(SkBits2Float(0x4411a27f), SkBits2Float(0x43dbfc08), SkBits2Float(0x4411ed71), SkBits2Float(0x43dbed0e), SkBits2Float(0x44122d71), SkBits2Float(0x43dbac08)); // 582.539f, 439.969f, 583.71f, 439.852f, 584.71f, 439.344f
  6558. path.cubicTo(SkBits2Float(0x44126cee), SkBits2Float(0x43db6b02), SkBits2Float(0x44129ff0), SkBits2Float(0x43dafb02), SkBits2Float(0x4412b7f0), SkBits2Float(0x43da6810)); // 585.702f, 438.836f, 586.499f, 437.961f, 586.874f, 436.813f
  6559. path.lineTo(SkBits2Float(0x441394ee), SkBits2Float(0x43daf810)); // 590.327f, 437.938f
  6560. path.cubicTo(SkBits2Float(0x44133cee), SkBits2Float(0x43dd1106), SkBits2Float(0x44121df4), SkBits2Float(0x43de3604), SkBits2Float(0x441110f6), SkBits2Float(0x43dd870a)); // 588.952f, 442.133f, 584.468f, 444.422f, 580.265f, 443.055f
  6561. path.lineTo(SkBits2Float(0x44115979), SkBits2Float(0x43dbcd0e)); // 581.398f, 439.602f
  6562. path.close();
  6563. path.moveTo(SkBits2Float(0x4410a687), SkBits2Float(0x43d91000)); // 578.602f, 434.125f
  6564. path.cubicTo(SkBits2Float(0x44108f0a), SkBits2Float(0x43d9a2f2), SkBits2Float(0x44109687), SkBits2Float(0x43da37f0), SkBits2Float(0x4410b70a), SkBits2Float(0x43dab8f6)); // 578.235f, 435.273f, 578.352f, 436.437f, 578.86f, 437.445f
  6565. path.cubicTo(SkBits2Float(0x4410d78d), SkBits2Float(0x43db37f0), SkBits2Float(0x44111010), SkBits2Float(0x43db9cee), SkBits2Float(0x44115989), SkBits2Float(0x43dbccee)); // 579.368f, 438.437f, 580.251f, 439.226f, 581.399f, 439.601f
  6566. path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd86ea)); // 580.266f, 443.054f
  6567. path.cubicTo(SkBits2Float(0x4410048b), SkBits2Float(0x43dcd7f0), SkBits2Float(0x440f720c), SkBits2Float(0x43da99dc), SkBits2Float(0x440fc989), SkBits2Float(0x43d87fe0)); // 576.071f, 441.687f, 573.782f, 437.202f, 575.149f, 432.999f
  6568. path.lineTo(SkBits2Float(0x4410a687), SkBits2Float(0x43d91000)); // 578.602f, 434.125f
  6569. path.close();
  6570. testSimplify(reporter, path, filename);
  6571. #endif
  6572. }
  6573. static void joel_11(skiatest::Reporter* reporter, const char* filename) {
  6574. #if DEBUG_UNDER_DEVELOPMENT
  6575. // fails with image mismatch
  6576. SkPath path;
  6577. path.moveTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d)); // 403.625f, 582.367f
  6578. path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d)); // 403.625f, 582.367f
  6579. path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d)); // 403.625f, 582.367f
  6580. path.lineTo(SkBits2Float(0x43ca0106), SkBits2Float(0x441208f6)); // 404.008f, 584.14f
  6581. path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d)); // 403.625f, 582.367f
  6582. path.close();
  6583. path.moveTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106)); // 413.102f, 588.516f
  6584. path.lineTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106)); // 413.102f, 588.516f
  6585. path.lineTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106)); // 413.102f, 588.516f
  6586. path.lineTo(SkBits2Float(0x43cda916), SkBits2Float(0x44133989)); // 411.321f, 588.899f
  6587. path.lineTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106)); // 413.102f, 588.516f
  6588. path.close();
  6589. path.moveTo(SkBits2Float(0x43ccc4fe), SkBits2Float(0x44135179)); // 409.539f, 589.273f
  6590. path.cubicTo(SkBits2Float(0x43cca604), SkBits2Float(0x44130571), SkBits2Float(0x43cc4c08), SkBits2Float(0x4412c8f6), SkBits2Float(0x43cbd4fe), SkBits2Float(0x4412a179)); // 409.297f, 588.085f, 408.594f, 587.14f, 407.664f, 586.523f
  6591. path.cubicTo(SkBits2Float(0x43cb5c08), SkBits2Float(0x44127a7f), SkBits2Float(0x43cac7f0), SkBits2Float(0x44126af2), SkBits2Float(0x43ca3106), SkBits2Float(0x44127af2)); // 406.719f, 585.914f, 405.562f, 585.671f, 404.383f, 585.921f
  6592. path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411976d)); // 403.625f, 582.366f
  6593. path.cubicTo(SkBits2Float(0x43cbf9fc), SkBits2Float(0x44115cee), SkBits2Float(0x43ce170a), SkBits2Float(0x44120cee), SkBits2Float(0x43ce8d0e), SkBits2Float(0x441320e6)); // 407.953f, 581.452f, 412.18f, 584.202f, 413.102f, 588.514f
  6594. path.lineTo(SkBits2Float(0x43ccc4fe), SkBits2Float(0x44135179)); // 409.539f, 589.273f
  6595. path.close();
  6596. path.moveTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa)); // 406.945f, 597.984f
  6597. path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157f7d)); // 406.945f, 597.992f
  6598. path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa)); // 406.945f, 597.984f
  6599. path.lineTo(SkBits2Float(0x43cb49fc), SkBits2Float(0x44150d81)); // 406.578f, 596.211f
  6600. path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa)); // 406.945f, 597.984f
  6601. path.close();
  6602. path.moveTo(SkBits2Float(0x43cb18f6), SkBits2Float(0x44149b85)); // 406.195f, 594.43f
  6603. path.cubicTo(SkBits2Float(0x43cbb000), SkBits2Float(0x44148b85), SkBits2Float(0x43cc28f6), SkBits2Float(0x44145f0a), SkBits2Float(0x43cc76ea), SkBits2Float(0x44142302)); // 407.375f, 594.18f, 408.32f, 593.485f, 408.929f, 592.547f
  6604. path.cubicTo(SkBits2Float(0x43ccc4de), SkBits2Float(0x4413e687), SkBits2Float(0x43cce4de), SkBits2Float(0x44139cfe), SkBits2Float(0x43ccc4de), SkBits2Float(0x44135189)); // 409.538f, 591.602f, 409.788f, 590.453f, 409.538f, 589.274f
  6605. path.lineTo(SkBits2Float(0x43ce8cce), SkBits2Float(0x44132106)); // 413.1f, 588.516f
  6606. path.cubicTo(SkBits2Float(0x43cf00c6), SkBits2Float(0x44143581), SkBits2Float(0x43cda2d2), SkBits2Float(0x44154408), SkBits2Float(0x43cb78d6), SkBits2Float(0x44157f0a)); // 414.006f, 592.836f, 411.272f, 597.063f, 406.944f, 597.985f
  6607. path.lineTo(SkBits2Float(0x43cb18f6), SkBits2Float(0x44149b85)); // 406.195f, 594.43f
  6608. path.close();
  6609. path.moveTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe)); // 401.031f, 591.078f
  6610. path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe)); // 401.031f, 591.078f
  6611. path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe)); // 401.031f, 591.078f
  6612. path.lineTo(SkBits2Float(0x43c7a106), SkBits2Float(0x4413dd81)); // 399.258f, 591.461f
  6613. path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe)); // 401.031f, 591.078f
  6614. path.close();
  6615. path.moveTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe)); // 401.031f, 591.078f
  6616. path.cubicTo(SkBits2Float(0x43c8a4fe), SkBits2Float(0x44141083), SkBits2Float(0x43c8fdf4), SkBits2Float(0x44144d81), SkBits2Float(0x43c974fe), SkBits2Float(0x4414747b)); // 401.289f, 592.258f, 401.984f, 593.211f, 402.914f, 593.82f
  6617. path.cubicTo(SkBits2Float(0x43c9edf4), SkBits2Float(0x44149b75), SkBits2Float(0x43ca820c), SkBits2Float(0x4414ab75), SkBits2Float(0x43cb18f6), SkBits2Float(0x44149b75)); // 403.859f, 594.429f, 405.016f, 594.679f, 406.195f, 594.429f
  6618. path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa)); // 406.945f, 597.984f
  6619. path.cubicTo(SkBits2Float(0x43c95000), SkBits2Float(0x4415b979), SkBits2Float(0x43c732f2), SkBits2Float(0x441509fc), SkBits2Float(0x43c6bcee), SkBits2Float(0x4413f581)); // 402.625f, 598.898f, 398.398f, 596.156f, 397.476f, 591.836f
  6620. path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe)); // 401.031f, 591.078f
  6621. path.close();
  6622. path.moveTo(SkBits2Float(0x43ca3106), SkBits2Float(0x44127b02)); // 404.383f, 585.922f
  6623. path.cubicTo(SkBits2Float(0x43c999fc), SkBits2Float(0x44128b02), SkBits2Float(0x43c92000), SkBits2Float(0x4412b77d), SkBits2Float(0x43c8d20c), SkBits2Float(0x4412f408)); // 403.203f, 586.172f, 402.25f, 586.867f, 401.641f, 587.813f
  6624. path.cubicTo(SkBits2Float(0x43c88418), SkBits2Float(0x44133010), SkBits2Float(0x43c86418), SkBits2Float(0x44137989), SkBits2Float(0x43c88418), SkBits2Float(0x4413c50e)); // 401.032f, 588.751f, 400.782f, 589.899f, 401.032f, 591.079f
  6625. path.lineTo(SkBits2Float(0x43c6bd0e), SkBits2Float(0x4413f591)); // 397.477f, 591.837f
  6626. path.cubicTo(SkBits2Float(0x43c64810), SkBits2Float(0x4412e116), SkBits2Float(0x43c7a70a), SkBits2Float(0x4411d28f), SkBits2Float(0x43c9d000), SkBits2Float(0x4411978d)); // 396.563f, 587.517f, 399.305f, 583.29f, 403.625f, 582.368f
  6627. path.lineTo(SkBits2Float(0x43ca3106), SkBits2Float(0x44127b02)); // 404.383f, 585.922f
  6628. path.close();
  6629. testSimplify(reporter, path, filename);
  6630. #endif
  6631. }
  6632. static void make_joel_12(SkPath& path) {
  6633. path.moveTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec)); // 164.914f, 242.07f
  6634. path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec)); // 164.914f, 242.07f
  6635. path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec)); // 164.914f, 242.07f
  6636. path.lineTo(SkBits2Float(0x43235810), SkBits2Float(0x437129fc)); // 163.344f, 241.164f
  6637. path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec)); // 164.914f, 242.07f
  6638. path.close();
  6639. path.moveTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4)); // 154.008f, 244.992f
  6640. path.lineTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4)); // 154.008f, 244.992f
  6641. path.lineTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4)); // 154.008f, 244.992f
  6642. path.lineTo(SkBits2Float(0x431aec08), SkBits2Float(0x437369fc)); // 154.922f, 243.414f
  6643. path.lineTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4)); // 154.008f, 244.992f
  6644. path.close();
  6645. path.moveTo(SkBits2Float(0x431bd3f8), SkBits2Float(0x4371d810)); // 155.828f, 241.844f
  6646. path.cubicTo(SkBits2Float(0x431ce000), SkBits2Float(0x4372722d), SkBits2Float(0x431e0e15), SkBits2Float(0x43729020), SkBits2Float(0x431f2000), SkBits2Float(0x43724831)); // 156.875f, 242.446f, 158.055f, 242.563f, 159.125f, 242.282f
  6647. path.cubicTo(SkBits2Float(0x43203604), SkBits2Float(0x4371fe35), SkBits2Float(0x43212c08), SkBits2Float(0x43714a3d), SkBits2Float(0x4321c5e3), SkBits2Float(0x43704041)); // 160.211f, 241.993f, 161.172f, 241.29f, 161.773f, 240.251f
  6648. path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x4372122d)); // 164.914f, 242.071f
  6649. path.cubicTo(SkBits2Float(0x4322b3f8), SkBits2Float(0x4375e419), SkBits2Float(0x431dd810), SkBits2Float(0x4377322d), SkBits2Float(0x431a020c), SkBits2Float(0x4374fe35)); // 162.703f, 245.891f, 157.844f, 247.196f, 154.008f, 244.993f
  6650. path.lineTo(SkBits2Float(0x431bd3f8), SkBits2Float(0x4371d810)); // 155.828f, 241.844f
  6651. path.close();
  6652. path.moveTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604)); // 151.094f, 234.086f
  6653. path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604)); // 151.094f, 234.086f
  6654. path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604)); // 151.094f, 234.086f
  6655. path.lineTo(SkBits2Float(0x4318a9fc), SkBits2Float(0x436afdf4)); // 152.664f, 234.992f
  6656. path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604)); // 151.094f, 234.086f
  6657. path.close();
  6658. path.moveTo(SkBits2Float(0x431a4000), SkBits2Float(0x436be7f0)); // 154.25f, 235.906f
  6659. path.cubicTo(SkBits2Float(0x4319a20c), SkBits2Float(0x436cf3f8), SkBits2Float(0x431985e3), SkBits2Float(0x436e1df4), SkBits2Float(0x4319ce14), SkBits2Float(0x436f33f8)); // 153.633f, 236.953f, 153.523f, 238.117f, 153.805f, 239.203f
  6660. path.cubicTo(SkBits2Float(0x431a1a1c), SkBits2Float(0x437047f0), SkBits2Float(0x431ac831), SkBits2Float(0x43713df4), SkBits2Float(0x431bd3f7), SkBits2Float(0x4371d811)); // 154.102f, 240.281f, 154.782f, 241.242f, 155.828f, 241.844f
  6661. path.lineTo(SkBits2Float(0x431a020b), SkBits2Float(0x4374fdf4)); // 154.008f, 244.992f
  6662. path.cubicTo(SkBits2Float(0x4316322c), SkBits2Float(0x4372c5e4), SkBits2Float(0x4314e417), SkBits2Float(0x436de9fc), SkBits2Float(0x4317180f), SkBits2Float(0x436a1604)); // 150.196f, 242.773f, 148.891f, 237.914f, 151.094f, 234.086f
  6663. path.lineTo(SkBits2Float(0x431a4000), SkBits2Float(0x436be7f0)); // 154.25f, 235.906f
  6664. path.close();
  6665. path.moveTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc)); // 162, 231.164f
  6666. path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc)); // 162, 231.164f
  6667. path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc)); // 162, 231.164f
  6668. path.lineTo(SkBits2Float(0x43211810), SkBits2Float(0x4368bbe8)); // 161.094f, 232.734f
  6669. path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc)); // 162, 231.164f
  6670. path.close();
  6671. path.moveTo(SkBits2Float(0x43202e14), SkBits2Float(0x436a4fdf)); // 160.18f, 234.312f
  6672. path.cubicTo(SkBits2Float(0x431f2418), SkBits2Float(0x4369b5c2), SkBits2Float(0x431df810), SkBits2Float(0x436995c2), SkBits2Float(0x431ce20c), SkBits2Float(0x4369dfbe)); // 159.141f, 233.71f, 157.969f, 233.585f, 156.883f, 233.874f
  6673. path.cubicTo(SkBits2Float(0x431bcc08), SkBits2Float(0x436a2bc6), SkBits2Float(0x431ad810), SkBits2Float(0x436adba5), SkBits2Float(0x431a4000), SkBits2Float(0x436be7ae)); // 155.797f, 234.171f, 154.844f, 234.858f, 154.25f, 235.905f
  6674. path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a15c2)); // 151.094f, 234.085f
  6675. path.cubicTo(SkBits2Float(0x43194e14), SkBits2Float(0x436643d6), SkBits2Float(0x431e2c08), SkBits2Float(0x4364f3b6), SkBits2Float(0x43220000), SkBits2Float(0x436729ba)); // 153.305f, 230.265f, 158.172f, 228.952f, 162, 231.163f
  6676. path.lineTo(SkBits2Float(0x43202e14), SkBits2Float(0x436a4fdf)); // 160.18f, 234.312f
  6677. path.close();
  6678. path.moveTo(SkBits2Float(0x4321c5e3), SkBits2Float(0x43704000)); // 161.773f, 240.25f
  6679. path.cubicTo(SkBits2Float(0x43226000), SkBits2Float(0x436f3604), SkBits2Float(0x43228000), SkBits2Float(0x436e09fc), SkBits2Float(0x43223604), SkBits2Float(0x436cf3f8)); // 162.375f, 239.211f, 162.5f, 238.039f, 162.211f, 236.953f
  6680. path.cubicTo(SkBits2Float(0x4321ec08), SkBits2Float(0x436be000), SkBits2Float(0x43213a1d), SkBits2Float(0x436ae9fc), SkBits2Float(0x43202e14), SkBits2Float(0x436a4fdf)); // 161.922f, 235.875f, 161.227f, 234.914f, 160.18f, 234.312f
  6681. path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc)); // 162, 231.164f
  6682. path.cubicTo(SkBits2Float(0x4325d1ec), SkBits2Float(0x43696000), SkBits2Float(0x4327220c), SkBits2Float(0x436e4000), SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec)); // 165.82f, 233.375f, 167.133f, 238.25f, 164.914f, 242.07f
  6683. path.lineTo(SkBits2Float(0x4321c5e3), SkBits2Float(0x43704000)); // 161.773f, 240.25f
  6684. path.close();
  6685. }
  6686. static void joel_12(skiatest::Reporter* reporter, const char* filename) {
  6687. SkPath path;
  6688. make_joel_12(path);
  6689. testSimplify(reporter, path, filename);
  6690. }
  6691. static void joel_12x(skiatest::Reporter* reporter, const char* filename) {
  6692. SkPath path;
  6693. path.setFillType(SkPath::kEvenOdd_FillType);
  6694. make_joel_12(path);
  6695. testSimplify(reporter, path, filename);
  6696. }
  6697. static void make_joel_13(SkPath& path) {
  6698. path.moveTo(SkBits2Float(0x43b4126f), SkBits2Float(0x43c058f6)); // 360.144f, 384.695f
  6699. path.cubicTo(SkBits2Float(0x43bd7c6b), SkBits2Float(0x43c05b02), SkBits2Float(0x43c51d71), SkBits2Float(0x43b8e8f6), SkBits2Float(0x43c5276d), SkBits2Float(0x43afc1ec)); // 378.972f, 384.711f, 394.23f, 369.82f, 394.308f, 351.515f
  6700. path.cubicTo(SkBits2Float(0x43c51d71), SkBits2Float(0x43a688f6), SkBits2Float(0x43bd7c6b), SkBits2Float(0x439f16ea), SkBits2Float(0x43b4126f), SkBits2Float(0x439f16ea)); // 394.23f, 333.07f, 378.972f, 318.179f, 360.144f, 318.179f
  6701. path.cubicTo(SkBits2Float(0x43aaa979), SkBits2Float(0x439f16ea), SkBits2Float(0x43a3076d), SkBits2Float(0x43a688f6), SkBits2Float(0x43a31063), SkBits2Float(0x43afc1ec)); // 341.324f, 318.179f, 326.058f, 333.07f, 326.128f, 351.515f
  6702. path.cubicTo(SkBits2Float(0x43a3076d), SkBits2Float(0x43b8e8f6), SkBits2Float(0x43aaa959), SkBits2Float(0x43c05b02), SkBits2Float(0x43b4126f), SkBits2Float(0x43c058f6)); // 326.058f, 369.82f, 341.323f, 384.711f, 360.144f, 384.695f
  6703. path.close();
  6704. }
  6705. static void joel_13(skiatest::Reporter* reporter, const char* filename) {
  6706. SkPath path;
  6707. make_joel_13(path);
  6708. testSimplify(reporter, path, filename);
  6709. }
  6710. static void joel_13x(skiatest::Reporter* reporter, const char* filename) {
  6711. SkPath path;
  6712. path.setFillType(SkPath::kEvenOdd_FillType);
  6713. make_joel_13(path);
  6714. testSimplify(reporter, path, filename);
  6715. }
  6716. static void make_joel_14(SkPath& path) {
  6717. path.moveTo(SkBits2Float(0x43f3b354), SkBits2Float(0x43d6770a)); // 487.401f, 428.93f
  6718. path.lineTo(SkBits2Float(0x43f3b354), SkBits2Float(0x43d6770a)); // 487.401f, 428.93f
  6719. path.close();
  6720. path.moveTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a)); // 481.979f, 428.93f
  6721. path.lineTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a)); // 481.979f, 428.93f
  6722. path.close();
  6723. path.moveTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a)); // 481.979f, 428.93f
  6724. path.lineTo(SkBits2Float(0x43f3b354), SkBits2Float(0x43d6770a)); // 487.401f, 428.93f
  6725. path.lineTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a)); // 481.979f, 428.93f
  6726. path.close();
  6727. path.moveTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1)); // 447.808f, 431.148f
  6728. path.lineTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1)); // 447.808f, 431.148f
  6729. path.close();
  6730. path.moveTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1)); // 447.808f, 431.148f
  6731. path.cubicTo(SkBits2Float(0x43e51979), SkBits2Float(0x43d611eb), SkBits2Float(0x43eb8667), SkBits2Float(0x43d765e3), SkBits2Float(0x43f0fd71), SkBits2Float(0x43d676e9)); // 458.199f, 428.14f, 471.05f, 430.796f, 481.98f, 428.929f
  6732. path.cubicTo(SkBits2Float(0x43eb8667), SkBits2Float(0x43d76604), SkBits2Float(0x43e51958), SkBits2Float(0x43d6120c), SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1)); // 471.05f, 430.797f, 458.198f, 428.141f, 447.808f, 431.148f
  6733. path.close();
  6734. path.moveTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603)); // 446.933f, 429.672f
  6735. path.lineTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603)); // 446.933f, 429.672f
  6736. path.close();
  6737. path.moveTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603)); // 446.933f, 429.672f
  6738. path.lineTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d79311)); // 447.808f, 431.149f
  6739. path.lineTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603)); // 446.933f, 429.672f
  6740. path.close();
  6741. path.moveTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1)); // 442.386f, 431.148f
  6742. path.lineTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1)); // 442.386f, 431.148f
  6743. path.close();
  6744. path.moveTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1)); // 442.386f, 431.148f
  6745. path.cubicTo(SkBits2Float(0x43de376d), SkBits2Float(0x43d743f7), SkBits2Float(0x43de2873), SkBits2Float(0x43d68df3), SkBits2Float(0x43df776d), SkBits2Float(0x43d6d5e3)); // 444.433f, 430.531f, 444.316f, 429.109f, 446.933f, 429.671f
  6746. path.cubicTo(SkBits2Float(0x43de2852), SkBits2Float(0x43d68df3), SkBits2Float(0x43de376d), SkBits2Float(0x43d743f7), SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1)); // 444.315f, 429.109f, 444.433f, 430.531f, 442.386f, 431.148f
  6747. path.close();
  6748. path.moveTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603)); // 441.511f, 429.672f
  6749. path.lineTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603)); // 441.511f, 429.672f
  6750. path.close();
  6751. path.moveTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603)); // 441.511f, 429.672f
  6752. path.lineTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d79311)); // 442.386f, 431.149f
  6753. path.lineTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603)); // 441.511f, 429.672f
  6754. path.close();
  6755. path.moveTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603)); // 437.698f, 429.672f
  6756. path.lineTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603)); // 437.698f, 429.672f
  6757. path.close();
  6758. path.moveTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603)); // 437.698f, 429.672f
  6759. path.lineTo(SkBits2Float(0x43dcc149), SkBits2Float(0x43d6d603)); // 441.51f, 429.672f
  6760. path.lineTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603)); // 437.698f, 429.672f
  6761. path.close();
  6762. path.moveTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d)); // 455.589f, 455.477f
  6763. path.lineTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d)); // 455.589f, 455.477f
  6764. path.close();
  6765. path.moveTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d)); // 455.589f, 455.477f
  6766. path.lineTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603)); // 437.698f, 429.672f
  6767. path.lineTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d)); // 455.589f, 455.477f
  6768. path.close();
  6769. path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01)); // 452.354f, 456.211f
  6770. path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01)); // 452.354f, 456.211f
  6771. path.close();
  6772. path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01)); // 452.354f, 456.211f
  6773. path.cubicTo(SkBits2Float(0x43e2ba5f), SkBits2Float(0x43e3f9fb), SkBits2Float(0x43e37e57), SkBits2Float(0x43e46df3), SkBits2Float(0x43e3cb45), SkBits2Float(0x43e3bd0d)); // 453.456f, 455.953f, 454.987f, 456.859f, 455.588f, 455.477f
  6774. path.cubicTo(SkBits2Float(0x43e37e57), SkBits2Float(0x43e46df2), SkBits2Float(0x43e2ba60), SkBits2Float(0x43e3f9fb), SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01)); // 454.987f, 456.859f, 453.456f, 455.953f, 452.354f, 456.211f
  6775. path.close();
  6776. path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb)); // 452.354f, 456.953f
  6777. path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb)); // 452.354f, 456.953f
  6778. path.close();
  6779. path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb)); // 452.354f, 456.953f
  6780. path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01)); // 452.354f, 456.211f
  6781. path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb)); // 452.354f, 456.953f
  6782. path.close();
  6783. path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb)); // 454.706f, 456.953f
  6784. path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb)); // 454.706f, 456.953f
  6785. path.close();
  6786. path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb)); // 454.706f, 456.953f
  6787. path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb)); // 452.354f, 456.953f
  6788. path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb)); // 454.706f, 456.953f
  6789. path.close();
  6790. path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01)); // 454.706f, 456.211f
  6791. path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01)); // 454.706f, 456.211f
  6792. path.close();
  6793. path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01)); // 454.706f, 456.211f
  6794. path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb)); // 454.706f, 456.953f
  6795. path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01)); // 454.706f, 456.211f
  6796. path.close();
  6797. path.moveTo(SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07)); // 450.894f, 466.094f
  6798. path.lineTo(SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07)); // 450.894f, 466.094f
  6799. path.close();
  6800. path.moveTo(SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07)); // 450.894f, 466.094f
  6801. path.cubicTo(SkBits2Float(0x43e2226f), SkBits2Float(0x43e769fb), SkBits2Float(0x43e50a7f), SkBits2Float(0x43e63915), SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01)); // 452.269f, 462.828f, 458.082f, 460.446f, 454.706f, 456.211f
  6802. path.cubicTo(SkBits2Float(0x43e50a5f), SkBits2Float(0x43e638f5), SkBits2Float(0x43e2226f), SkBits2Float(0x43e769fb), SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07)); // 458.081f, 460.445f, 452.269f, 462.828f, 450.894f, 466.094f
  6803. path.close();
  6804. path.moveTo(SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709)); // 481.245f, 468.305f
  6805. path.lineTo(SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709)); // 481.245f, 468.305f
  6806. path.close();
  6807. path.moveTo(SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709)); // 481.245f, 468.305f
  6808. path.cubicTo(SkBits2Float(0x43ebbc6b), SkBits2Float(0x43ea4105), SkBits2Float(0x43e56c6b), SkBits2Float(0x43ec9fff), SkBits2Float(0x43e1724f), SkBits2Float(0x43e90c07)); // 471.472f, 468.508f, 458.847f, 473.25f, 450.893f, 466.094f
  6809. path.cubicTo(SkBits2Float(0x43e56c6c), SkBits2Float(0x43ec9fff), SkBits2Float(0x43ebbc6c), SkBits2Float(0x43ea4105), SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709)); // 458.847f, 473.25f, 471.472f, 468.508f, 481.245f, 468.305f
  6810. path.close();
  6811. path.moveTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee)); // 477.284f, 467.562f
  6812. path.lineTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee)); // 477.284f, 467.562f
  6813. path.close();
  6814. path.moveTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee)); // 477.284f, 467.562f
  6815. path.cubicTo(SkBits2Float(0x43ef0c4b), SkBits2Float(0x43ea7ef8), SkBits2Float(0x43eff355), SkBits2Float(0x43ea10e4), SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea26e8)); // 478.096f, 468.992f, 479.901f, 468.132f, 481.245f, 468.304f
  6816. path.cubicTo(SkBits2Float(0x43eff355), SkBits2Float(0x43ea1105), SkBits2Float(0x43ef0c6b), SkBits2Float(0x43ea7ef8), SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee)); // 479.901f, 468.133f, 478.097f, 468.992f, 477.284f, 467.562f
  6817. path.close();
  6818. path.moveTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709)); // 476.55f, 468.305f
  6819. path.lineTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709)); // 476.55f, 468.305f
  6820. path.close();
  6821. path.moveTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709)); // 476.55f, 468.305f
  6822. path.lineTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c80f)); // 477.284f, 467.563f
  6823. path.lineTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709)); // 476.55f, 468.305f
  6824. path.close();
  6825. path.moveTo(SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0)); // 467.894f, 461.523f
  6826. path.lineTo(SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0)); // 467.894f, 461.523f
  6827. path.close();
  6828. path.moveTo(SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0)); // 467.894f, 461.523f
  6829. path.cubicTo(SkBits2Float(0x43eb8873), SkBits2Float(0x43e7dcec), SkBits2Float(0x43eb747b), SkBits2Float(0x43ea9b00), SkBits2Float(0x43ee4667), SkBits2Float(0x43ea26e8)); // 471.066f, 463.726f, 470.91f, 469.211f, 476.55f, 468.304f
  6830. path.cubicTo(SkBits2Float(0x43eb745b), SkBits2Float(0x43ea9b01), SkBits2Float(0x43eb8853), SkBits2Float(0x43e7dd0d), SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0)); // 470.909f, 469.211f, 471.065f, 463.727f, 467.894f, 461.523f
  6831. path.close();
  6832. path.moveTo(SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07)); // 471.862f, 445.594f
  6833. path.lineTo(SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07)); // 471.862f, 445.594f
  6834. path.close();
  6835. path.moveTo(SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07)); // 471.862f, 445.594f
  6836. path.cubicTo(SkBits2Float(0x43e85f5c), SkBits2Float(0x43e04915), SkBits2Float(0x43eaa148), SkBits2Float(0x43e41c07), SkBits2Float(0x43e9f24e), SkBits2Float(0x43e6c311)); // 464.745f, 448.571f, 469.26f, 456.219f, 467.893f, 461.524f
  6837. path.cubicTo(SkBits2Float(0x43eaa169), SkBits2Float(0x43e41c07), SkBits2Float(0x43e85f5c), SkBits2Float(0x43e048f4), SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07)); // 469.261f, 456.219f, 464.745f, 448.57f, 471.862f, 445.594f
  6838. path.close();
  6839. path.moveTo(SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff)); // 469.511f, 442.5f
  6840. path.lineTo(SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff)); // 469.511f, 442.5f
  6841. path.close();
  6842. path.moveTo(SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff)); // 469.511f, 442.5f
  6843. path.cubicTo(SkBits2Float(0x43eb245a), SkBits2Float(0x43ddc7ef), SkBits2Float(0x43eaf45a), SkBits2Float(0x43dedd0d), SkBits2Float(0x43ebee76), SkBits2Float(0x43decc07)); // 470.284f, 443.562f, 469.909f, 445.727f, 471.863f, 445.594f
  6844. path.cubicTo(SkBits2Float(0x43eaf459), SkBits2Float(0x43dedd0d), SkBits2Float(0x43eb2459), SkBits2Float(0x43ddc7ee), SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff)); // 469.909f, 445.727f, 470.284f, 443.562f, 469.511f, 442.5f
  6845. path.close();
  6846. path.moveTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105)); // 472.597f, 441.758f
  6847. path.lineTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105)); // 472.597f, 441.758f
  6848. path.close();
  6849. path.moveTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105)); // 472.597f, 441.758f
  6850. path.cubicTo(SkBits2Float(0x43ebcb64), SkBits2Float(0x43dd08f5), SkBits2Float(0x43eb0c6a), SkBits2Float(0x43dc9603), SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff)); // 471.589f, 442.07f, 470.097f, 441.172f, 469.511f, 442.5f
  6851. path.cubicTo(SkBits2Float(0x43eb0c6a), SkBits2Float(0x43dc9603), SkBits2Float(0x43ebcb64), SkBits2Float(0x43dd08f5), SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105)); // 470.097f, 441.172f, 471.589f, 442.07f, 472.597f, 441.758f
  6852. path.close();
  6853. path.moveTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105)); // 473.464f, 443.383f
  6854. path.lineTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105)); // 473.464f, 443.383f
  6855. path.close();
  6856. path.moveTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105)); // 473.464f, 443.383f
  6857. path.lineTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105)); // 472.597f, 441.758f
  6858. path.lineTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105)); // 473.464f, 443.383f
  6859. path.close();
  6860. path.moveTo(SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd)); // 477.284f, 440.289f
  6861. path.lineTo(SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd)); // 477.284f, 440.289f
  6862. path.close();
  6863. path.moveTo(SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd)); // 477.284f, 440.289f
  6864. path.cubicTo(SkBits2Float(0x43eef354), SkBits2Float(0x43dd4c07), SkBits2Float(0x43ed4a5e), SkBits2Float(0x43dcfef9), SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105)); // 477.901f, 442.594f, 474.581f, 441.992f, 473.464f, 443.383f
  6865. path.cubicTo(SkBits2Float(0x43ed4a5e), SkBits2Float(0x43dcfef9), SkBits2Float(0x43eef354), SkBits2Float(0x43dd4c07), SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd)); // 474.581f, 441.992f, 477.901f, 442.594f, 477.284f, 440.289f
  6866. path.close();
  6867. path.moveTo(SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd)); // 481.245f, 440.289f
  6868. path.lineTo(SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd)); // 481.245f, 440.289f
  6869. path.close();
  6870. path.moveTo(SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd)); // 481.245f, 440.289f
  6871. path.cubicTo(SkBits2Float(0x43effc6a), SkBits2Float(0x43daeced), SkBits2Float(0x43ef6a5e), SkBits2Float(0x43dbe4fd), SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd)); // 479.972f, 437.851f, 478.831f, 439.789f, 477.284f, 440.289f
  6872. path.cubicTo(SkBits2Float(0x43ef6a5e), SkBits2Float(0x43dbe4fd), SkBits2Float(0x43effc6a), SkBits2Float(0x43daed0d), SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd)); // 478.831f, 439.789f, 479.972f, 437.852f, 481.245f, 440.289f
  6873. path.close();
  6874. path.moveTo(SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603)); // 485.933f, 439.547f
  6875. path.lineTo(SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603)); // 485.933f, 439.547f
  6876. path.close();
  6877. path.moveTo(SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603)); // 485.933f, 439.547f
  6878. path.cubicTo(SkBits2Float(0x43f24c6a), SkBits2Float(0x43dc3b01), SkBits2Float(0x43f16b64), SkBits2Float(0x43dc2311), SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd)); // 484.597f, 440.461f, 482.839f, 440.274f, 481.245f, 440.289f
  6879. path.cubicTo(SkBits2Float(0x43f16b64), SkBits2Float(0x43dc23f7), SkBits2Float(0x43f24c6a), SkBits2Float(0x43dc3b01), SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603)); // 482.839f, 440.281f, 484.597f, 440.461f, 485.933f, 439.547f
  6880. path.close();
  6881. path.moveTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d)); // 489.737f, 434.977f
  6882. path.lineTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d)); // 489.737f, 434.977f
  6883. path.close();
  6884. path.moveTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d)); // 489.737f, 434.977f
  6885. path.cubicTo(SkBits2Float(0x43f47665), SkBits2Float(0x43da020b), SkBits2Float(0x43f42851), SkBits2Float(0x43db9417), SkBits2Float(0x43f2f74b), SkBits2Float(0x43dbc603)); // 488.925f, 436.016f, 488.315f, 439.157f, 485.932f, 439.547f
  6886. path.cubicTo(SkBits2Float(0x43f42851), SkBits2Float(0x43db93f7), SkBits2Float(0x43f47666), SkBits2Float(0x43da020b), SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d)); // 488.315f, 439.156f, 488.925f, 436.016f, 489.737f, 434.977f
  6887. path.close();
  6888. path.moveTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d)); // 489.003f, 434.977f
  6889. path.lineTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d)); // 489.003f, 434.977f
  6890. path.close();
  6891. path.moveTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d)); // 489.003f, 434.977f
  6892. path.lineTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d)); // 489.737f, 434.977f
  6893. path.lineTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d)); // 489.003f, 434.977f
  6894. path.close();
  6895. path.moveTo(SkBits2Float(0x43f3b353), SkBits2Float(0x43d67709)); // 487.401f, 428.93f
  6896. path.cubicTo(SkBits2Float(0x43f39957), SkBits2Float(0x43d79ef9), SkBits2Float(0x43f3ca5d), SkBits2Float(0x43d8a603), SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d)); // 487.198f, 431.242f, 487.581f, 433.297f, 489.003f, 434.977f
  6897. path.cubicTo(SkBits2Float(0x43f3ca5d), SkBits2Float(0x43d8a603), SkBits2Float(0x43f39957), SkBits2Float(0x43d79ef9), SkBits2Float(0x43f3b353), SkBits2Float(0x43d67709)); // 487.581f, 433.297f, 487.198f, 431.242f, 487.401f, 428.93f
  6898. path.close();
  6899. }
  6900. static void joel_14(skiatest::Reporter* reporter, const char* filename) {
  6901. SkPath path;
  6902. make_joel_14(path);
  6903. testSimplify(reporter, path, filename);
  6904. }
  6905. static void joel_14x(skiatest::Reporter* reporter, const char* filename) {
  6906. SkPath path;
  6907. path.setFillType(SkPath::kEvenOdd_FillType);
  6908. make_joel_14(path);
  6909. testSimplify(reporter, path, filename);
  6910. }
  6911. static void make_joel_15(SkPath& path) {
  6912. path.moveTo(SkBits2Float(0x439e276d), SkBits2Float(0x43dad106)); // 316.308f, 437.633f
  6913. path.lineTo(SkBits2Float(0x439e276d), SkBits2Float(0x43dad106)); // 316.308f, 437.633f
  6914. path.close();
  6915. path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000)); // 312.198f, 431
  6916. path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000)); // 312.198f, 431
  6917. path.close();
  6918. path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000)); // 312.198f, 431
  6919. path.cubicTo(SkBits2Float(0x439ea45b), SkBits2Float(0x43d6d000), SkBits2Float(0x439cce57), SkBits2Float(0x43d9f3f8), SkBits2Float(0x439e274d), SkBits2Float(0x43dad106)); // 317.284f, 429.625f, 313.612f, 435.906f, 316.307f, 437.633f
  6920. path.cubicTo(SkBits2Float(0x439cce57), SkBits2Float(0x43d9f3f8), SkBits2Float(0x439ea45b), SkBits2Float(0x43d6d000), SkBits2Float(0x439c1959), SkBits2Float(0x43d78000)); // 313.612f, 435.906f, 317.284f, 429.625f, 312.198f, 431
  6921. path.close();
  6922. path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6)); // 312.198f, 433.945f
  6923. path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6)); // 312.198f, 433.945f
  6924. path.close();
  6925. path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6)); // 312.198f, 433.945f
  6926. path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000)); // 312.198f, 431
  6927. path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6)); // 312.198f, 433.945f
  6928. path.close();
  6929. path.moveTo(SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c)); // 318.94f, 459.016f
  6930. path.lineTo(SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c)); // 318.94f, 459.016f
  6931. path.close();
  6932. path.moveTo(SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c)); // 318.94f, 459.016f
  6933. path.cubicTo(SkBits2Float(0x439e1647), SkBits2Float(0x43e17106), SkBits2Float(0x439d945b), SkBits2Float(0x43dd020c), SkBits2Float(0x439c1959), SkBits2Float(0x43d8f916)); // 316.174f, 450.883f, 315.159f, 442.016f, 312.198f, 433.946f
  6934. path.cubicTo(SkBits2Float(0x439d945b), SkBits2Float(0x43dd020c), SkBits2Float(0x439e1667), SkBits2Float(0x43e17106), SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c)); // 315.159f, 442.016f, 316.175f, 450.883f, 318.94f, 459.016f
  6935. path.close();
  6936. path.moveTo(SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106)); // 319.972f, 463.883f
  6937. path.lineTo(SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106)); // 319.972f, 463.883f
  6938. path.close();
  6939. path.moveTo(SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106)); // 319.972f, 463.883f
  6940. path.cubicTo(SkBits2Float(0x439f5668), SkBits2Float(0x43e758f6), SkBits2Float(0x439fec6c), SkBits2Float(0x43e63604), SkBits2Float(0x439f7874), SkBits2Float(0x43e5820c)); // 318.675f, 462.695f, 319.847f, 460.422f, 318.941f, 459.016f
  6941. path.cubicTo(SkBits2Float(0x439fec6c), SkBits2Float(0x43e63604), SkBits2Float(0x439f5668), SkBits2Float(0x43e758f5), SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106)); // 319.847f, 460.422f, 318.675f, 462.695f, 319.972f, 463.883f
  6942. path.close();
  6943. path.moveTo(SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc)); // 322.315f, 475.828f
  6944. path.lineTo(SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc)); // 322.315f, 475.828f
  6945. path.close();
  6946. path.moveTo(SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc)); // 322.315f, 475.828f
  6947. path.cubicTo(SkBits2Float(0x43a18c4b), SkBits2Float(0x43eb7604), SkBits2Float(0x439fe45b), SkBits2Float(0x43ea4b02), SkBits2Float(0x439ffc4b), SkBits2Float(0x43e7f106)); // 323.096f, 470.922f, 319.784f, 468.586f, 319.971f, 463.883f
  6948. path.cubicTo(SkBits2Float(0x439fe45b), SkBits2Float(0x43ea4b02), SkBits2Float(0x43a18c6c), SkBits2Float(0x43eb7604), SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc)); // 319.784f, 468.586f, 323.097f, 470.922f, 322.315f, 475.828f
  6949. path.close();
  6950. path.moveTo(SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8)); // 323.784f, 478.781f
  6951. path.lineTo(SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8)); // 323.784f, 478.781f
  6952. path.close();
  6953. path.moveTo(SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8)); // 323.784f, 478.781f
  6954. path.cubicTo(SkBits2Float(0x43a20561), SkBits2Float(0x43eeb9fc), SkBits2Float(0x43a1ae57), SkBits2Float(0x43ee4be8), SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc)); // 324.042f, 477.453f, 323.362f, 476.593f, 322.315f, 475.828f
  6955. path.cubicTo(SkBits2Float(0x43a1ae57), SkBits2Float(0x43ee4c08), SkBits2Float(0x43a20561), SkBits2Float(0x43eeb9fc), SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8)); // 323.362f, 476.594f, 324.042f, 477.453f, 323.784f, 478.781f
  6956. path.close();
  6957. path.moveTo(SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2)); // 319.386f, 480.398f
  6958. path.lineTo(SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2)); // 319.386f, 480.398f
  6959. path.close();
  6960. path.moveTo(SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2)); // 319.386f, 480.398f
  6961. path.cubicTo(SkBits2Float(0x43a08063), SkBits2Float(0x43f022f2), SkBits2Float(0x43a1ec6b), SkBits2Float(0x43f078f6), SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8)); // 321.003f, 480.273f, 323.847f, 480.945f, 323.784f, 478.781f
  6962. path.cubicTo(SkBits2Float(0x43a1ec6b), SkBits2Float(0x43f078f6), SkBits2Float(0x43a08063), SkBits2Float(0x43f022f2), SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2)); // 323.847f, 480.945f, 321.003f, 480.273f, 319.386f, 480.398f
  6963. path.close();
  6964. path.moveTo(SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106)); // 316.604f, 482.758f
  6965. path.lineTo(SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106)); // 316.604f, 482.758f
  6966. path.close();
  6967. path.moveTo(SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106)); // 316.604f, 482.758f
  6968. path.cubicTo(SkBits2Float(0x439de45a), SkBits2Float(0x43f05000), SkBits2Float(0x439f445a), SkBits2Float(0x43f0b20c), SkBits2Float(0x439fb148), SkBits2Float(0x43f03312)); // 315.784f, 480.625f, 318.534f, 481.391f, 319.385f, 480.399f
  6969. path.cubicTo(SkBits2Float(0x439f445a), SkBits2Float(0x43f0b20c), SkBits2Float(0x439de45a), SkBits2Float(0x43f05000), SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106)); // 318.534f, 481.391f, 315.784f, 480.625f, 316.604f, 482.758f
  6970. path.close();
  6971. path.moveTo(SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a)); // 321.737f, 494.555f
  6972. path.lineTo(SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a)); // 321.737f, 494.555f
  6973. path.close();
  6974. path.moveTo(SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a)); // 321.737f, 494.555f
  6975. path.cubicTo(SkBits2Float(0x439f4062), SkBits2Float(0x43f5a106), SkBits2Float(0x439f2b64), SkBits2Float(0x43f33106), SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106)); // 318.503f, 491.258f, 318.339f, 486.383f, 316.604f, 482.758f
  6976. path.cubicTo(SkBits2Float(0x439f2b64), SkBits2Float(0x43f33106), SkBits2Float(0x439f4062), SkBits2Float(0x43f5a106), SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a)); // 318.339f, 486.383f, 318.503f, 491.258f, 321.737f, 494.555f
  6977. path.close();
  6978. path.moveTo(SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8)); // 327.159f, 500.156f
  6979. path.lineTo(SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8)); // 327.159f, 500.156f
  6980. path.close();
  6981. path.moveTo(SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8)); // 327.159f, 500.156f
  6982. path.cubicTo(SkBits2Float(0x43a2dc4a), SkBits2Float(0x43f8ab02), SkBits2Float(0x43a0d74c), SkBits2Float(0x43f8f4fe), SkBits2Float(0x43a0de56), SkBits2Float(0x43f746ea)); // 325.721f, 497.336f, 321.682f, 497.914f, 321.737f, 494.554f
  6983. path.cubicTo(SkBits2Float(0x43a0d76d), SkBits2Float(0x43f8f4fe), SkBits2Float(0x43a2dc6a), SkBits2Float(0x43f8ab03), SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8)); // 321.683f, 497.914f, 325.722f, 497.336f, 327.159f, 500.156f
  6984. path.close();
  6985. path.moveTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6)); // 331.112f, 501.195f
  6986. path.lineTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6)); // 331.112f, 501.195f
  6987. path.close();
  6988. path.moveTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6)); // 331.112f, 501.195f
  6989. path.cubicTo(SkBits2Float(0x43a50148), SkBits2Float(0x43fa2be8), SkBits2Float(0x43a45646), SkBits2Float(0x43fa02f2), SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8)); // 330.01f, 500.343f, 328.674f, 500.023f, 327.159f, 500.156f
  6990. path.cubicTo(SkBits2Float(0x43a45666), SkBits2Float(0x43fa02f2), SkBits2Float(0x43a50168), SkBits2Float(0x43fa2c08), SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6)); // 328.675f, 500.023f, 330.011f, 500.344f, 331.112f, 501.195f
  6991. path.close();
  6992. path.moveTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000)); // 332.573f, 497.5f
  6993. path.lineTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000)); // 332.573f, 497.5f
  6994. path.close();
  6995. path.moveTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000)); // 332.573f, 497.5f
  6996. path.lineTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6)); // 331.112f, 501.195f
  6997. path.lineTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000)); // 332.573f, 497.5f
  6998. path.close();
  6999. path.moveTo(SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c)); // 334.487f, 491.016f
  7000. path.lineTo(SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c)); // 334.487f, 491.016f
  7001. path.close();
  7002. path.moveTo(SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c)); // 334.487f, 491.016f
  7003. path.cubicTo(SkBits2Float(0x43a64d50), SkBits2Float(0x43f654fe), SkBits2Float(0x43a7174c), SkBits2Float(0x43f7de14), SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000)); // 332.604f, 492.664f, 334.182f, 495.735f, 332.573f, 497.5f
  7004. path.cubicTo(SkBits2Float(0x43a7176c), SkBits2Float(0x43f7ddf4), SkBits2Float(0x43a64d50), SkBits2Float(0x43f654fe), SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c)); // 334.183f, 495.734f, 332.604f, 492.664f, 334.487f, 491.016f
  7005. path.close();
  7006. path.moveTo(SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02)); // 333.894f, 484.086f
  7007. path.lineTo(SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02)); // 333.894f, 484.086f
  7008. path.close();
  7009. path.moveTo(SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02)); // 333.894f, 484.086f
  7010. path.cubicTo(SkBits2Float(0x43a78d71), SkBits2Float(0x43f2f810), SkBits2Float(0x43a72873), SkBits2Float(0x43f453f8), SkBits2Float(0x43a73e77), SkBits2Float(0x43f5820c)); // 335.105f, 485.938f, 334.316f, 488.656f, 334.488f, 491.016f
  7011. path.cubicTo(SkBits2Float(0x43a72852), SkBits2Float(0x43f453f8), SkBits2Float(0x43a78d50), SkBits2Float(0x43f2f810), SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02)); // 334.315f, 488.656f, 335.104f, 485.938f, 333.894f, 484.086f
  7012. path.close();
  7013. path.moveTo(SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e)); // 333.456f, 478.477f
  7014. path.lineTo(SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e)); // 333.456f, 478.477f
  7015. path.close();
  7016. path.moveTo(SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e)); // 333.456f, 478.477f
  7017. path.cubicTo(SkBits2Float(0x43a60e57), SkBits2Float(0x43f04000), SkBits2Float(0x43a82355), SkBits2Float(0x43f0fc08), SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02)); // 332.112f, 480.5f, 336.276f, 481.969f, 333.894f, 484.086f
  7018. path.cubicTo(SkBits2Float(0x43a82354), SkBits2Float(0x43f0fc08), SkBits2Float(0x43a60e56), SkBits2Float(0x43f04000), SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e)); // 336.276f, 481.969f, 332.112f, 480.5f, 333.456f, 478.477f
  7019. path.close();
  7020. path.moveTo(SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5)); // 326.722f, 479.07f
  7021. path.lineTo(SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5)); // 326.722f, 479.07f
  7022. path.close();
  7023. path.moveTo(SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5)); // 326.722f, 479.07f
  7024. path.cubicTo(SkBits2Float(0x43a4b26f), SkBits2Float(0x43efe105), SkBits2Float(0x43a5b76d), SkBits2Float(0x43ee2ef9), SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3ced)); // 329.394f, 479.758f, 331.433f, 476.367f, 333.456f, 478.476f
  7025. path.cubicTo(SkBits2Float(0x43a5b76d), SkBits2Float(0x43ee2ef9), SkBits2Float(0x43a4b26f), SkBits2Float(0x43efe106), SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5)); // 331.433f, 476.367f, 329.394f, 479.758f, 326.722f, 479.07f
  7026. path.close();
  7027. path.moveTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a)); // 321.003f, 459.305f
  7028. path.lineTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a)); // 321.003f, 459.305f
  7029. path.close();
  7030. path.moveTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a)); // 321.003f, 459.305f
  7031. path.cubicTo(SkBits2Float(0x43a15169), SkBits2Float(0x43e90312), SkBits2Float(0x43a2626f), SkBits2Float(0x43ec4312), SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef8916)); // 322.636f, 466.024f, 324.769f, 472.524f, 326.722f, 479.071f
  7032. path.cubicTo(SkBits2Float(0x43a2626f), SkBits2Float(0x43ec42f1), SkBits2Float(0x43a15169), SkBits2Float(0x43e902f1), SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a)); // 324.769f, 472.523f, 322.636f, 466.023f, 321.003f, 459.305f
  7033. path.close();
  7034. path.moveTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef)); // 320.706f, 456.062f
  7035. path.lineTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef)); // 320.706f, 456.062f
  7036. path.close();
  7037. path.moveTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef)); // 320.706f, 456.062f
  7038. path.lineTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a6e9)); // 321.003f, 459.304f
  7039. path.lineTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef)); // 320.706f, 456.062f
  7040. path.close();
  7041. path.moveTo(SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff)); // 317.62f, 442.5f
  7042. path.lineTo(SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff)); // 317.62f, 442.5f
  7043. path.close();
  7044. path.moveTo(SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff)); // 317.62f, 442.5f
  7045. path.cubicTo(SkBits2Float(0x439e9c6b), SkBits2Float(0x43dfcb01), SkBits2Float(0x439fbe57), SkBits2Float(0x43e1cc07), SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef)); // 317.222f, 447.586f, 319.487f, 451.594f, 320.706f, 456.062f
  7046. path.cubicTo(SkBits2Float(0x439fbe57), SkBits2Float(0x43e1cc08), SkBits2Float(0x439e9c6b), SkBits2Float(0x43dfcb01), SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff)); // 319.487f, 451.594f, 317.222f, 447.586f, 317.62f, 442.5f
  7047. path.close();
  7048. path.moveTo(SkBits2Float(0x439e276d), SkBits2Float(0x43dad105)); // 316.308f, 437.633f
  7049. path.cubicTo(SkBits2Float(0x439e4979), SkBits2Float(0x43dba4fd), SkBits2Float(0x439dc375), SkBits2Float(0x43dce915), SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff)); // 316.574f, 439.289f, 315.527f, 441.821f, 317.62f, 442.5f
  7050. path.cubicTo(SkBits2Float(0x439dc355), SkBits2Float(0x43dce8f5), SkBits2Float(0x439e4959), SkBits2Float(0x43dba4fd), SkBits2Float(0x439e276d), SkBits2Float(0x43dad105)); // 315.526f, 441.82f, 316.573f, 439.289f, 316.308f, 437.633f
  7051. path.close();
  7052. }
  7053. static void joel_15(skiatest::Reporter* reporter, const char* filename) {
  7054. SkPath path;
  7055. make_joel_15(path);
  7056. testSimplify(reporter, path, filename);
  7057. }
  7058. static void joel_15x(skiatest::Reporter* reporter, const char* filename) {
  7059. SkPath path;
  7060. path.setFillType(SkPath::kEvenOdd_FillType);
  7061. make_joel_15(path);
  7062. testSimplify(reporter, path, filename);
  7063. }
  7064. static void make_joel_16(SkPath& path) {
  7065. path.moveTo(SkBits2Float(0x420e6c8b), SkBits2Float(0x426bdf3b)); // 35.606f, 58.968f
  7066. path.lineTo(SkBits2Float(0x420fcccd), SkBits2Float(0x426c7ef9)); // 35.95f, 59.124f
  7067. path.cubicTo(SkBits2Float(0x420fcccd), SkBits2Float(0x426c7ef9), SkBits2Float(0x42093d71), SkBits2Float(0x426c6e97), SkBits2Float(0x42036c8b), SkBits2Float(0x426cbf7c)); // 35.95f, 59.124f, 34.31f, 59.108f, 32.856f, 59.187f
  7068. path.cubicTo(SkBits2Float(0x41fb3958), SkBits2Float(0x426d0f5b), SkBits2Float(0x41f076c8), SkBits2Float(0x426d48b3), SkBits2Float(0x41ef47ae), SkBits2Float(0x426d947a)); // 31.403f, 59.265f, 30.058f, 59.321f, 29.91f, 59.395f
  7069. path.cubicTo(SkBits2Float(0x41ee1aa0), SkBits2Float(0x426ddf3b), SkBits2Float(0x41ec6041), SkBits2Float(0x426edb22), SkBits2Float(0x41eb1aa0), SkBits2Float(0x426fee97)); // 29.763f, 59.468f, 29.547f, 59.714f, 29.388f, 59.983f
  7070. path.cubicTo(SkBits2Float(0x41eb1eb9), SkBits2Float(0x426feb85), SkBits2Float(0x41e9ba5e), SkBits2Float(0x42711eb8), SkBits2Float(0x41e9ba5e), SkBits2Float(0x42711eb8)); // 29.39f, 59.98f, 29.216f, 60.28f, 29.216f, 60.28f
  7071. path.lineTo(SkBits2Float(0x41e99999), SkBits2Float(0x42718f5c)); // 29.2f, 60.39f
  7072. path.cubicTo(SkBits2Float(0x41ea76c8), SkBits2Float(0x4271a5e3), SkBits2Float(0x4212dd2f), SkBits2Float(0x42707efa), SkBits2Float(0x4212dd2f), SkBits2Float(0x42707efa)); // 29.308f, 60.412f, 36.716f, 60.124f, 36.716f, 60.124f
  7073. path.cubicTo(SkBits2Float(0x4212dd2f), SkBits2Float(0x42707efa), SkBits2Float(0x42124395), SkBits2Float(0x42707be8), SkBits2Float(0x42131ba6), SkBits2Float(0x4270b646)); // 36.716f, 60.124f, 36.566f, 60.121f, 36.777f, 60.178f
  7074. path.cubicTo(SkBits2Float(0x42131581), SkBits2Float(0x42710000), SkBits2Float(0x42130831), SkBits2Float(0x42711688), SkBits2Float(0x4213072b), SkBits2Float(0x42711688)); // 36.771f, 60.25f, 36.758f, 60.272f, 36.757f, 60.272f
  7075. path.cubicTo(SkBits2Float(0x4212fae1), SkBits2Float(0x42711aa1), SkBits2Float(0x42127cee), SkBits2Float(0x42714eda), SkBits2Float(0x42127cee), SkBits2Float(0x42714eda)); // 36.745f, 60.276f, 36.622f, 60.327f, 36.622f, 60.327f
  7076. path.cubicTo(SkBits2Float(0x42127ae2), SkBits2Float(0x42714eda), SkBits2Float(0x41c67ae2), SkBits2Float(0x42730f5d), SkBits2Float(0x41c345a2), SkBits2Float(0x427329fd)); // 36.62f, 60.327f, 24.81f, 60.765f, 24.409f, 60.791f
  7077. path.cubicTo(SkBits2Float(0x41c247ae), SkBits2Float(0x42733e78), SkBits2Float(0x41c04396), SkBits2Float(0x42738e57), SkBits2Float(0x41bf4bc7), SkBits2Float(0x4273e45b)); // 24.285f, 60.811f, 24.033f, 60.889f, 23.912f, 60.973f
  7078. path.cubicTo(SkBits2Float(0x41bf5c29), SkBits2Float(0x4273e042), SkBits2Float(0x41be9db3), SkBits2Float(0x4274322e), SkBits2Float(0x41be9db3), SkBits2Float(0x4274322e)); // 23.92f, 60.969f, 23.827f, 61.049f, 23.827f, 61.049f
  7079. path.lineTo(SkBits2Float(0x41be26ea), SkBits2Float(0x42746c8c)); // 23.769f, 61.106f
  7080. path.cubicTo(SkBits2Float(0x41be1eb9), SkBits2Float(0x427470a5), SkBits2Float(0x41bde354), SkBits2Float(0x42748313), SkBits2Float(0x41bde354), SkBits2Float(0x42748313)); // 23.765f, 61.11f, 23.736f, 61.128f, 23.736f, 61.128f
  7081. path.lineTo(SkBits2Float(0x41bcc083), SkBits2Float(0x42751582)); // 23.594f, 61.271f
  7082. path.lineTo(SkBits2Float(0x41bcf3b6), SkBits2Float(0x427526ea)); // 23.619f, 61.288f
  7083. path.lineTo(SkBits2Float(0x41bd0e56), SkBits2Float(0x42756979)); // 23.632f, 61.353f
  7084. path.lineTo(SkBits2Float(0x41bd7cee), SkBits2Float(0x42758313)); // 23.686f, 61.378f
  7085. path.cubicTo(SkBits2Float(0x41be8107), SkBits2Float(0x427572b1), SkBits2Float(0x41bf2d0f), SkBits2Float(0x42754290), SkBits2Float(0x41bfd2f2), SkBits2Float(0x4275147b)); // 23.813f, 61.362f, 23.897f, 61.315f, 23.978f, 61.27f
  7086. path.lineTo(SkBits2Float(0x41c0ba5f), SkBits2Float(0x4274da1d)); // 24.091f, 61.213f
  7087. path.lineTo(SkBits2Float(0x41c0ef9e), SkBits2Float(0x4274de36)); // 24.117f, 61.217f
  7088. path.lineTo(SkBits2Float(0x41c13f7d), SkBits2Float(0x4274d3f9)); // 24.156f, 61.207f
  7089. path.cubicTo(SkBits2Float(0x41c13f7d), SkBits2Float(0x4274d3f9), SkBits2Float(0x41c174bc), SkBits2Float(0x4274c18a), SkBits2Float(0x41c17cee), SkBits2Float(0x4274be78)); // 24.156f, 61.207f, 24.182f, 61.189f, 24.186f, 61.186f
  7090. path.cubicTo(SkBits2Float(0x41c18107), SkBits2Float(0x4274bf7e), SkBits2Float(0x41c1e561), SkBits2Float(0x4274b022), SkBits2Float(0x41c1e561), SkBits2Float(0x4274b022)); // 24.188f, 61.187f, 24.237f, 61.172f, 24.237f, 61.172f
  7091. path.lineTo(SkBits2Float(0x41c45e36), SkBits2Float(0x42746e99)); // 24.546f, 61.108f
  7092. path.cubicTo(SkBits2Float(0x41c4624f), SkBits2Float(0x42746e99), SkBits2Float(0x41cf999a), SkBits2Float(0x42743853), SkBits2Float(0x41cf999a), SkBits2Float(0x42743853)); // 24.548f, 61.108f, 25.95f, 61.055f, 25.95f, 61.055f
  7093. path.lineTo(SkBits2Float(0x420d126f), SkBits2Float(0x4272b43a)); // 35.268f, 60.676f
  7094. path.cubicTo(SkBits2Float(0x420d0938), SkBits2Float(0x4272c084), SkBits2Float(0x420cfcee), SkBits2Float(0x4272c49c), SkBits2Float(0x420cfcee), SkBits2Float(0x4272d917)); // 35.259f, 60.688f, 35.247f, 60.692f, 35.247f, 60.712f
  7095. path.lineTo(SkBits2Float(0x420d0938), SkBits2Float(0x4272b43a)); // 35.259f, 60.676f
  7096. path.cubicTo(SkBits2Float(0x420c7be8), SkBits2Float(0x42737efb), SkBits2Float(0x420b3128), SkBits2Float(0x42743128), SkBits2Float(0x420a27f0), SkBits2Float(0x4274c18a)); // 35.121f, 60.874f, 34.798f, 61.048f, 34.539f, 61.189f
  7097. path.lineTo(SkBits2Float(0x42099eb9), SkBits2Float(0x42750c4b)); // 34.405f, 61.262f
  7098. path.cubicTo(SkBits2Float(0x420872b1), SkBits2Float(0x4275b022), SkBits2Float(0x4206fbe8), SkBits2Float(0x42764397), SkBits2Float(0x42054396), SkBits2Float(0x4276c084)); // 34.112f, 61.422f, 33.746f, 61.566f, 33.316f, 61.688f
  7099. path.cubicTo(SkBits2Float(0x42028313), SkBits2Float(0x42776b86), SkBits2Float(0x42007be8), SkBits2Float(0x4278de36), SkBits2Float(0x41fe7ae2), SkBits2Float(0x427b0f5d)); // 32.628f, 61.855f, 32.121f, 62.217f, 31.81f, 62.765f
  7100. path.cubicTo(SkBits2Float(0x41fe4fe0), SkBits2Float(0x427b21cc), SkBits2Float(0x41fdbe78), SkBits2Float(0x427b8419), SkBits2Float(0x41fdbe78), SkBits2Float(0x427b8419)); // 31.789f, 62.783f, 31.718f, 62.879f, 31.718f, 62.879f
  7101. path.cubicTo(SkBits2Float(0x41fdccce), SkBits2Float(0x427b71aa), SkBits2Float(0x41fd1cad), SkBits2Float(0x427c27f0), SkBits2Float(0x41fd1cad), SkBits2Float(0x427c27f0)); // 31.725f, 62.861f, 31.639f, 63.039f, 31.639f, 63.039f
  7102. path.lineTo(SkBits2Float(0x41fc1eb9), SkBits2Float(0x427d178e)); // 31.515f, 63.273f
  7103. path.lineTo(SkBits2Float(0x41fc7efb), SkBits2Float(0x427d020d)); // 31.562f, 63.252f
  7104. path.lineTo(SkBits2Float(0x41fbb647), SkBits2Float(0x427d3646)); // 31.464f, 63.303f
  7105. path.lineTo(SkBits2Float(0x41fbe76e), SkBits2Float(0x427d25e4)); // 31.488f, 63.287f
  7106. path.lineTo(SkBits2Float(0x41fae149), SkBits2Float(0x427d1fbf)); // 31.36f, 63.281f
  7107. path.lineTo(SkBits2Float(0x41fa5812), SkBits2Float(0x427d178e)); // 31.293f, 63.273f
  7108. path.cubicTo(SkBits2Float(0x41f88108), SkBits2Float(0x427cf9dc), SkBits2Float(0x41f73541), SkBits2Float(0x427cb646), SkBits2Float(0x41f5d70c), SkBits2Float(0x427c6d92)); // 31.063f, 63.244f, 30.901f, 63.178f, 30.73f, 63.107f
  7109. path.lineTo(SkBits2Float(0x41f5999b), SkBits2Float(0x427c6148)); // 30.7f, 63.095f
  7110. path.cubicTo(SkBits2Float(0x41f5999b), SkBits2Float(0x427c6148), SkBits2Float(0x41f2d0e7), SkBits2Float(0x427bdc29), SkBits2Float(0x41f2a9fd), SkBits2Float(0x427bd4fe)); // 30.7f, 63.095f, 30.352f, 62.965f, 30.333f, 62.958f
  7111. path.cubicTo(SkBits2Float(0x41f28d51), SkBits2Float(0x427bc49c), SkBits2Float(0x41f26667), SkBits2Float(0x427bb021), SkBits2Float(0x41f26667), SkBits2Float(0x427bb021)); // 30.319f, 62.942f, 30.3f, 62.922f, 30.3f, 62.922f
  7112. path.lineTo(SkBits2Float(0x41efed92), SkBits2Float(0x427b1db2)); // 29.991f, 62.779f
  7113. path.lineTo(SkBits2Float(0x41ec9582), SkBits2Float(0x427a624e)); // 29.573f, 62.596f
  7114. path.cubicTo(SkBits2Float(0x41eca1cc), SkBits2Float(0x427a645a), SkBits2Float(0x41eaf9dc), SkBits2Float(0x427a3021), SkBits2Float(0x41eaf9dc), SkBits2Float(0x427a3021)); // 29.579f, 62.598f, 29.372f, 62.547f, 29.372f, 62.547f
  7115. path.cubicTo(SkBits2Float(0x41eaf9dc), SkBits2Float(0x427a3021), SkBits2Float(0x41ea126f), SkBits2Float(0x427a1894), SkBits2Float(0x41e9f3b7), SkBits2Float(0x427a1687)); // 29.372f, 62.547f, 29.259f, 62.524f, 29.244f, 62.522f
  7116. path.cubicTo(SkBits2Float(0x41e9ccce), SkBits2Float(0x427a072b), SkBits2Float(0x41e99375), SkBits2Float(0x4279f1aa), SkBits2Float(0x41e99375), SkBits2Float(0x4279f1aa)); // 29.225f, 62.507f, 29.197f, 62.486f, 29.197f, 62.486f
  7117. path.lineTo(SkBits2Float(0x41e86e98), SkBits2Float(0x4279d604)); // 29.054f, 62.459f
  7118. path.lineTo(SkBits2Float(0x41e6147b), SkBits2Float(0x4279a3d7)); // 28.76f, 62.41f
  7119. path.cubicTo(SkBits2Float(0x41e00625), SkBits2Float(0x42796b85), SkBits2Float(0x41db49ba), SkBits2Float(0x427a7ae1), SkBits2Float(0x41d62b02), SkBits2Float(0x427bc8b4)); // 28.003f, 62.355f, 27.411f, 62.62f, 26.771f, 62.946f
  7120. path.cubicTo(SkBits2Float(0x41d24fdf), SkBits2Float(0x427cba5e), SkBits2Float(0x41cecccd), SkBits2Float(0x427ce872), SkBits2Float(0x41ca0e56), SkBits2Float(0x427c6872)); // 26.289f, 63.182f, 25.85f, 63.227f, 25.257f, 63.102f
  7121. path.cubicTo(SkBits2Float(0x41ca0a3d), SkBits2Float(0x427c676c), SkBits2Float(0x41c9353f), SkBits2Float(0x427c570a), SkBits2Float(0x41c9353f), SkBits2Float(0x427c570a)); // 25.255f, 63.101f, 25.151f, 63.085f, 25.151f, 63.085f
  7122. path.lineTo(SkBits2Float(0x41c73b64), SkBits2Float(0x427c26e9)); // 24.904f, 63.038f
  7123. path.lineTo(SkBits2Float(0x41c774bc), SkBits2Float(0x427c374b)); // 24.932f, 63.054f
  7124. path.lineTo(SkBits2Float(0x41c67ef9), SkBits2Float(0x427c0312)); // 24.812f, 63.003f
  7125. path.cubicTo(SkBits2Float(0x41c4df3b), SkBits2Float(0x427bc5a1), SkBits2Float(0x41c2a3d6), SkBits2Float(0x427b8d4f), SkBits2Float(0x41c0851e), SkBits2Float(0x427b6978)); // 24.609f, 62.943f, 24.33f, 62.888f, 24.065f, 62.853f
  7126. path.cubicTo(SkBits2Float(0x41bf1893), SkBits2Float(0x427b52f1), SkBits2Float(0x41bd2d0e), SkBits2Float(0x427b52f1), SkBits2Float(0x41bc020c), SkBits2Float(0x427b5e34)); // 23.887f, 62.831f, 23.647f, 62.831f, 23.501f, 62.842f
  7127. path.lineTo(SkBits2Float(0x41bac6a8), SkBits2Float(0x427b6871)); // 23.347f, 62.852f
  7128. path.cubicTo(SkBits2Float(0x41b9db23), SkBits2Float(0x427b72ae), SkBits2Float(0x41b87cee), SkBits2Float(0x427b820b), SkBits2Float(0x41b7fbe7), SkBits2Float(0x427b655f)); // 23.232f, 62.862f, 23.061f, 62.877f, 22.998f, 62.849f
  7129. path.cubicTo(SkBits2Float(0x41b7fbe7), SkBits2Float(0x427b5f3a), SkBits2Float(0x41b7dd2f), SkBits2Float(0x427b48b3), SkBits2Float(0x41b7dd2f), SkBits2Float(0x427b48b3)); // 22.998f, 62.843f, 22.983f, 62.821f, 22.983f, 62.821f
  7130. path.lineTo(SkBits2Float(0x41b7a5e3), SkBits2Float(0x427b22d0)); // 22.956f, 62.784f
  7131. path.cubicTo(SkBits2Float(0x41b7be76), SkBits2Float(0x427b3332), SkBits2Float(0x41b74395), SkBits2Float(0x427aed91), SkBits2Float(0x41b74395), SkBits2Float(0x427aed91)); // 22.968f, 62.8f, 22.908f, 62.732f, 22.908f, 62.732f
  7132. path.lineTo(SkBits2Float(0x41b70c49), SkBits2Float(0x427acfdf)); // 22.881f, 62.703f
  7133. path.cubicTo(SkBits2Float(0x41b70418), SkBits2Float(0x427ad916), SkBits2Float(0x41b6d70a), SkBits2Float(0x427a9168), SkBits2Float(0x41b6d70a), SkBits2Float(0x427a9168)); // 22.877f, 62.712f, 22.855f, 62.642f, 22.855f, 62.642f
  7134. path.lineTo(SkBits2Float(0x41b6bc6a), SkBits2Float(0x427a645a)); // 22.842f, 62.598f
  7135. path.lineTo(SkBits2Float(0x41b66e97), SkBits2Float(0x427a75c2)); // 22.804f, 62.615f
  7136. path.cubicTo(SkBits2Float(0x41b6872a), SkBits2Float(0x427a71a9), SkBits2Float(0x41b5a9fb), SkBits2Float(0x4279c6a7), SkBits2Float(0x41b5a9fb), SkBits2Float(0x4279c6a7)); // 22.816f, 62.611f, 22.708f, 62.444f, 22.708f, 62.444f
  7137. path.lineTo(SkBits2Float(0x41b59580), SkBits2Float(0x4279b645)); // 22.698f, 62.428f
  7138. path.lineTo(SkBits2Float(0x41b549b9), SkBits2Float(0x42799fbe)); // 22.661f, 62.406f
  7139. path.lineTo(SkBits2Float(0x41b53957), SkBits2Float(0x42799ba5)); // 22.653f, 62.402f
  7140. path.cubicTo(SkBits2Float(0x41b52b01), SkBits2Float(0x42798d4f), SkBits2Float(0x41b4a3d6), SkBits2Float(0x427920c4), SkBits2Float(0x41b4a3d6), SkBits2Float(0x427920c4)); // 22.646f, 62.388f, 22.58f, 62.282f, 22.58f, 62.282f
  7141. path.lineTo(SkBits2Float(0x41b43126), SkBits2Float(0x4278be76)); // 22.524f, 62.186f
  7142. path.lineTo(SkBits2Float(0x41b3ed90), SkBits2Float(0x4278ab01)); // 22.491f, 62.167f
  7143. path.lineTo(SkBits2Float(0x41b3be75), SkBits2Float(0x42789ba5)); // 22.468f, 62.152f
  7144. path.lineTo(SkBits2Float(0x41b3d0e4), SkBits2Float(0x4278b957)); // 22.477f, 62.181f
  7145. path.lineTo(SkBits2Float(0x41b351ea), SkBits2Float(0x42786353)); // 22.415f, 62.097f
  7146. path.lineTo(SkBits2Float(0x41b33957), SkBits2Float(0x42786353)); // 22.403f, 62.097f
  7147. path.cubicTo(SkBits2Float(0x41b326e8), SkBits2Float(0x42785a1c), SkBits2Float(0x41b2fbe6), SkBits2Float(0x427846a7), SkBits2Float(0x41b2fbe6), SkBits2Float(0x427846a7)); // 22.394f, 62.088f, 22.373f, 62.069f, 22.373f, 62.069f
  7148. path.lineTo(SkBits2Float(0x41b2353e), SkBits2Float(0x4277f8d4)); // 22.276f, 61.993f
  7149. path.cubicTo(SkBits2Float(0x41b26040), SkBits2Float(0x42780624), SkBits2Float(0x41b16e96), SkBits2Float(0x4277d0e4), SkBits2Float(0x41b16e96), SkBits2Float(0x4277d0e4)); // 22.297f, 62.006f, 22.179f, 61.954f, 22.179f, 61.954f
  7150. path.cubicTo(SkBits2Float(0x41b16e96), SkBits2Float(0x4277d0e4), SkBits2Float(0x41b10417), SkBits2Float(0x4277c188), SkBits2Float(0x41b0fffe), SkBits2Float(0x4277c188)); // 22.179f, 61.954f, 22.127f, 61.939f, 22.125f, 61.939f
  7151. path.cubicTo(SkBits2Float(0x41b0fffe), SkBits2Float(0x4277bf7c), SkBits2Float(0x41b03f7b), SkBits2Float(0x427778d4), SkBits2Float(0x41b03f7b), SkBits2Float(0x427778d4)); // 22.125f, 61.937f, 22.031f, 61.868f, 22.031f, 61.868f
  7152. path.lineTo(SkBits2Float(0x41ae8729), SkBits2Float(0x4276f7ce)); // 21.816f, 61.742f
  7153. path.cubicTo(SkBits2Float(0x41adb644), SkBits2Float(0x4276d0e5), SkBits2Float(0x41ad22cf), SkBits2Float(0x42768e55), SkBits2Float(0x41ac8729), SkBits2Float(0x427648b3)); // 21.714f, 61.704f, 21.642f, 61.639f, 21.566f, 61.571f
  7154. path.lineTo(SkBits2Float(0x41ab957f), SkBits2Float(0x4275e24d)); // 21.448f, 61.471f
  7155. path.cubicTo(SkBits2Float(0x41aa8f5a), SkBits2Float(0x42757df3), SkBits2Float(0x41a9b644), SkBits2Float(0x42751fbe), SkBits2Float(0x41a8a3d5), SkBits2Float(0x42747fff)); // 21.32f, 61.373f, 21.214f, 61.281f, 21.08f, 61.125f
  7156. path.cubicTo(SkBits2Float(0x41a6d708), SkBits2Float(0x4273a3d6), SkBits2Float(0x41a645a0), SkBits2Float(0x4272dd2e), SkBits2Float(0x41a58935), SkBits2Float(0x4271b126)); // 20.855f, 60.91f, 20.784f, 60.716f, 20.692f, 60.423f
  7157. path.lineTo(SkBits2Float(0x41a5851c), SkBits2Float(0x4271a7ef)); // 20.69f, 60.414f
  7158. path.lineTo(SkBits2Float(0x41a56a7c), SkBits2Float(0x42719687)); // 20.677f, 60.397f
  7159. path.lineTo(SkBits2Float(0x41a54dd0), SkBits2Float(0x4271820c)); // 20.663f, 60.377f
  7160. path.cubicTo(SkBits2Float(0x41a50209), SkBits2Float(0x42711062), SkBits2Float(0x41a4ced6), SkBits2Float(0x42707efa), SkBits2Float(0x41a4be74), SkBits2Float(0x426ff4bc)); // 20.626f, 60.266f, 20.601f, 60.124f, 20.593f, 59.989f
  7161. path.cubicTo(SkBits2Float(0x41a51478), SkBits2Float(0x427073b6), SkBits2Float(0x41a576c6), SkBits2Float(0x42710b43), SkBits2Float(0x41a576c6), SkBits2Float(0x42710b43)); // 20.635f, 60.113f, 20.683f, 60.261f, 20.683f, 60.261f
  7162. path.cubicTo(SkBits2Float(0x41a71478), SkBits2Float(0x42730418), SkBits2Float(0x41a9df39), SkBits2Float(0x42746666), SkBits2Float(0x41adc6a5), SkBits2Float(0x427526e9)); // 20.885f, 60.754f, 21.234f, 61.1f, 21.722f, 61.288f
  7163. path.cubicTo(SkBits2Float(0x41adc499), SkBits2Float(0x427525e3), SkBits2Float(0x41ae47ab), SkBits2Float(0x42754395), SkBits2Float(0x41ae47ab), SkBits2Float(0x42754395)); // 21.721f, 61.287f, 21.785f, 61.316f, 21.785f, 61.316f
  7164. path.lineTo(SkBits2Float(0x41afe55d), SkBits2Float(0x4275978d)); // 21.987f, 61.398f
  7165. path.cubicTo(SkBits2Float(0x41b27cea), SkBits2Float(0x4275e147), SkBits2Float(0x41b54dd0), SkBits2Float(0x4275d916), SkBits2Float(0x41b772ad), SkBits2Float(0x42758106)); // 22.311f, 61.47f, 22.663f, 61.462f, 22.931f, 61.376f
  7166. path.cubicTo(SkBits2Float(0x41b8df38), SkBits2Float(0x42753d70), SkBits2Float(0x41ba1684), SkBits2Float(0x4274d1eb), SkBits2Float(0x41bb4186), SkBits2Float(0x42746979)); // 23.109f, 61.31f, 23.261f, 61.205f, 23.407f, 61.103f
  7167. path.lineTo(SkBits2Float(0x41bdbc67), SkBits2Float(0x4273a1cb)); // 23.717f, 60.908f
  7168. path.cubicTo(SkBits2Float(0x41c0f1a6), SkBits2Float(0x4272cccd), SkBits2Float(0x41c3cabd), SkBits2Float(0x4272b958), SkBits2Float(0x41c71684), SkBits2Float(0x4272a3d7)); // 24.118f, 60.7f, 24.474f, 60.681f, 24.886f, 60.66f
  7169. path.lineTo(SkBits2Float(0x41ca4392), SkBits2Float(0x42728831)); // 25.283f, 60.633f
  7170. path.lineTo(SkBits2Float(0x41def9d8), SkBits2Float(0x42723f7d)); // 27.872f, 60.562f
  7171. path.cubicTo(SkBits2Float(0x41e15a1a), SkBits2Float(0x42722d0e), SkBits2Float(0x41e4105f), SkBits2Float(0x42723333), SkBits2Float(0x41e60e53), SkBits2Float(0x4271c7ae)); // 28.169f, 60.544f, 28.508f, 60.55f, 28.757f, 60.445f
  7172. path.cubicTo(SkBits2Float(0x41e87ceb), SkBits2Float(0x42715810), SkBits2Float(0x41e97ef7), SkBits2Float(0x427077cf), SkBits2Float(0x41ea9165), SkBits2Float(0x426f8a3d)); // 29.061f, 60.336f, 29.187f, 60.117f, 29.321f, 59.885f
  7173. path.lineTo(SkBits2Float(0x41ebccc9), SkBits2Float(0x426e8a3d)); // 29.475f, 59.635f
  7174. path.cubicTo(SkBits2Float(0x41ebced5), SkBits2Float(0x426e8937), SkBits2Float(0x41ec2d0b), SkBits2Float(0x426e4ccc), SkBits2Float(0x41ec2d0b), SkBits2Float(0x426e4ccc)); // 29.476f, 59.634f, 29.522f, 59.575f, 29.522f, 59.575f
  7175. path.lineTo(SkBits2Float(0x41ecae11), SkBits2Float(0x426dde34)); // 29.585f, 59.467f
  7176. path.lineTo(SkBits2Float(0x41ecdf38), SkBits2Float(0x426dde34)); // 29.609f, 59.467f
  7177. path.lineTo(SkBits2Float(0x41ed26e6), SkBits2Float(0x426dc082)); // 29.644f, 59.438f
  7178. path.cubicTo(SkBits2Float(0x41ee1ca9), SkBits2Float(0x426d5a1c), SkBits2Float(0x41eeccc9), SkBits2Float(0x426d1061), SkBits2Float(0x41f01684), SkBits2Float(0x426ce978)); // 29.764f, 59.338f, 29.85f, 59.266f, 30.011f, 59.228f
  7179. path.cubicTo(SkBits2Float(0x41f29fbb), SkBits2Float(0x426c8e55), SkBits2Float(0x420cced8), SkBits2Float(0x426bd4fd), SkBits2Float(0x420e6c8a), SkBits2Float(0x426bdf3b)); // 30.328f, 59.139f, 35.202f, 58.958f, 35.606f, 58.968f
  7180. path.moveTo(SkBits2Float(0x41b60622), SkBits2Float(0x427adb22)); // 22.753f, 62.714f
  7181. path.lineTo(SkBits2Float(0x41b60416), SkBits2Float(0x427ad709)); // 22.752f, 62.71f
  7182. path.cubicTo(SkBits2Float(0x41b60416), SkBits2Float(0x427ad603), SkBits2Float(0x41b60416), SkBits2Float(0x427ad915), SkBits2Float(0x41b60622), SkBits2Float(0x427adb22)); // 22.752f, 62.709f, 22.752f, 62.712f, 22.753f, 62.714f
  7183. path.moveTo(SkBits2Float(0x41bed2ef), SkBits2Float(0x4274cbc6)); // 23.853f, 61.199f
  7184. path.close();
  7185. path.moveTo(SkBits2Float(0x41c04fdd), SkBits2Float(0x42746560)); // 24.039f, 61.099f
  7186. path.close();
  7187. }
  7188. static void joel_16(skiatest::Reporter* reporter, const char* filename) {
  7189. SkPath path;
  7190. make_joel_16(path);
  7191. testSimplify(reporter, path, filename);
  7192. }
  7193. static void joel_16x(skiatest::Reporter* reporter, const char* filename) {
  7194. SkPath path;
  7195. path.setFillType(SkPath::kEvenOdd_FillType);
  7196. make_joel_16(path);
  7197. testSimplify(reporter, path, filename);
  7198. }
  7199. static void coincubics(skiatest::Reporter* reporter, const char* filename) {
  7200. SkPath path;
  7201. path.moveTo(SkDoubleToScalar(0.00000000000000000), SkDoubleToScalar(0.00000000000000000));
  7202. path.cubicTo(SkDoubleToScalar(0.00022939755581319332), SkDoubleToScalar(0.00022927834652364254),
  7203. SkDoubleToScalar(0.00022930106206331402), SkDoubleToScalar(0.00022929999977350235),
  7204. SkDoubleToScalar(0.00022930069826543331), SkDoubleToScalar(0.00022913678549230099));
  7205. path.lineTo(SkDoubleToScalar(0.00022930069826543331), SkDoubleToScalar(0.00022930069826543331));
  7206. path.cubicTo(SkDoubleToScalar(0.00011465034913271666), SkDoubleToScalar(0.00011465034913271666),
  7207. SkDoubleToScalar(0.00011465061106719077), SkDoubleToScalar(0.00011460937093943357),
  7208. SkDoubleToScalar(0.00014331332931760699), SkDoubleToScalar(0.00014325146912597120));
  7209. testSimplify(reporter, path, filename);
  7210. }
  7211. static void grshapearc(skiatest::Reporter* reporter, const char* filename) {
  7212. SkPath path;
  7213. path.setFillType(SkPath::kWinding_FillType);
  7214. path.moveTo(25.0098f, 23.1973f);
  7215. path.lineTo(25.5689f, 22.3682f);
  7216. path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
  7217. path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
  7218. path.lineTo(26.6678f, 24.3156f);
  7219. path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
  7220. path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
  7221. path.close();
  7222. path.moveTo(26.6873f, 20.7101f);
  7223. path.lineTo(27.2465f, 19.8811f);
  7224. path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
  7225. path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
  7226. path.lineTo(28.3454f, 21.8285f);
  7227. path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
  7228. path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
  7229. path.close();
  7230. path.moveTo(28.3649f, 18.223f);
  7231. path.lineTo(28.9241f, 17.394f);
  7232. path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
  7233. path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
  7234. path.lineTo(30.023f, 19.3414f);
  7235. path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
  7236. path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
  7237. path.close();
  7238. path.moveTo(30.0425f, 15.7359f);
  7239. path.lineTo(30.6017f, 14.9069f);
  7240. path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
  7241. path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
  7242. path.lineTo(31.7006f, 16.8543f);
  7243. path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
  7244. path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
  7245. path.close();
  7246. path.moveTo(31.7201f, 13.2488f);
  7247. path.lineTo(32.2793f, 12.4198f);
  7248. path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
  7249. path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
  7250. path.lineTo(33.3781f, 14.3672f);
  7251. path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
  7252. path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
  7253. path.close();
  7254. path.moveTo(33.3976f, 10.7617f);
  7255. path.lineTo(33.9568f, 9.93265f);
  7256. path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
  7257. path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
  7258. path.lineTo(35.0557f, 11.8801f);
  7259. path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
  7260. path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
  7261. path.close();
  7262. path.moveTo(35.0752f, 8.27457f);
  7263. path.lineTo(35.6344f, 7.44554f);
  7264. path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
  7265. path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
  7266. path.lineTo(36.7333f, 9.39296f);
  7267. path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
  7268. path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
  7269. path.close();
  7270. path.moveTo(36.7528f, 5.78746f);
  7271. path.lineTo(37.312f, 4.95842f);
  7272. path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
  7273. path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
  7274. path.lineTo(38.4109f, 6.90585f);
  7275. path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
  7276. path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
  7277. path.close();
  7278. path.moveTo(39.9447f, 3.72429f);
  7279. path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
  7280. path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
  7281. path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
  7282. path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
  7283. path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
  7284. path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
  7285. path.close();
  7286. path.moveTo(42.3194f, 5.60826f);
  7287. path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
  7288. path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
  7289. path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
  7290. path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
  7291. path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
  7292. path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
  7293. path.close();
  7294. path.moveTo(44.5406f, 7.84871f);
  7295. path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
  7296. path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
  7297. path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
  7298. path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
  7299. path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
  7300. path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
  7301. path.close();
  7302. path.moveTo(46.528f, 10.4211f);
  7303. path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
  7304. path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
  7305. path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
  7306. path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
  7307. path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
  7308. path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
  7309. path.close();
  7310. path.moveTo(48.1056f, 13.0782f);
  7311. path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
  7312. path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
  7313. path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
  7314. path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
  7315. path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
  7316. path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
  7317. path.close();
  7318. path.moveTo(49.3755f, 15.9538f);
  7319. path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
  7320. path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
  7321. path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
  7322. path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
  7323. path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
  7324. path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
  7325. path.close();
  7326. path.moveTo(50.2964f, 18.9923f);
  7327. path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
  7328. path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
  7329. path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
  7330. path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
  7331. path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
  7332. path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
  7333. path.close();
  7334. path.moveTo(50.8373f, 22.0956f);
  7335. path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
  7336. path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
  7337. path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
  7338. path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
  7339. path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
  7340. path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
  7341. path.close();
  7342. path.moveTo(50.9992f, 25.2099f);
  7343. path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
  7344. path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
  7345. path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
  7346. path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
  7347. path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
  7348. path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
  7349. path.close();
  7350. path.moveTo(50.7839f, 28.3454f);
  7351. path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
  7352. path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
  7353. path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
  7354. path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
  7355. path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
  7356. path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
  7357. path.close();
  7358. path.moveTo(50.1906f, 31.437f);
  7359. path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
  7360. path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
  7361. path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
  7362. path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
  7363. path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
  7364. path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
  7365. path.close();
  7366. path.moveTo(49.1978f, 34.5114f);
  7367. path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
  7368. path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
  7369. path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
  7370. path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
  7371. path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
  7372. path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
  7373. path.close();
  7374. path.moveTo(47.8852f, 37.3397f);
  7375. path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
  7376. path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
  7377. path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
  7378. path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
  7379. path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
  7380. path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
  7381. path.close();
  7382. path.moveTo(46.3154f, 39.8881f);
  7383. path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
  7384. path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
  7385. path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
  7386. path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
  7387. path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
  7388. path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
  7389. path.close();
  7390. path.moveTo(44.4398f, 42.2654f);
  7391. path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
  7392. path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
  7393. path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
  7394. path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
  7395. path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
  7396. path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
  7397. path.close();
  7398. path.moveTo(42.2075f, 44.4911f);
  7399. path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
  7400. path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
  7401. path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
  7402. path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
  7403. path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
  7404. path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
  7405. path.close();
  7406. path.moveTo(39.6379f, 46.488f);
  7407. path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
  7408. path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
  7409. path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
  7410. path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
  7411. path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
  7412. path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
  7413. path.close();
  7414. path.moveTo(36.9864f, 48.0722f);
  7415. path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
  7416. path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
  7417. path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
  7418. path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
  7419. path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
  7420. path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
  7421. path.close();
  7422. path.moveTo(34.1153f, 49.3498f);
  7423. path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
  7424. path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
  7425. path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
  7426. path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
  7427. path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
  7428. path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
  7429. path.close();
  7430. path.moveTo(31.08f, 50.2791f);
  7431. path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
  7432. path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
  7433. path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
  7434. path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
  7435. path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
  7436. path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
  7437. path.close();
  7438. path.moveTo(27.9769f, 50.829f);
  7439. path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
  7440. path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
  7441. path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
  7442. path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
  7443. path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
  7444. path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
  7445. path.close();
  7446. path.moveTo(24.8625f, 50.9996f);
  7447. path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
  7448. path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
  7449. path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
  7450. path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
  7451. path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
  7452. path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
  7453. path.close();
  7454. path.moveTo(21.7268f, 50.7931f);
  7455. path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
  7456. path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
  7457. path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
  7458. path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
  7459. path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
  7460. path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
  7461. path.close();
  7462. path.moveTo(18.6372f, 50.2094f);
  7463. path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
  7464. path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
  7465. path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
  7466. path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
  7467. path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
  7468. path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
  7469. path.close();
  7470. path.moveTo(15.5577f, 49.2248f);
  7471. path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
  7472. path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
  7473. path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
  7474. path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
  7475. path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
  7476. path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
  7477. path.close();
  7478. path.moveTo(12.7231f, 47.9189f);
  7479. path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
  7480. path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
  7481. path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
  7482. path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
  7483. path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
  7484. path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
  7485. path.close();
  7486. path.moveTo(10.1686f, 46.3548f);
  7487. path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
  7488. path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
  7489. path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
  7490. path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
  7491. path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
  7492. path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
  7493. path.close();
  7494. path.moveTo(7.78853f, 44.4876f);
  7495. path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
  7496. path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
  7497. path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
  7498. path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
  7499. path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
  7500. path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
  7501. path.close();
  7502. path.moveTo(5.55855f, 42.2635f);
  7503. path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
  7504. path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
  7505. path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
  7506. path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
  7507. path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
  7508. path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
  7509. path.close();
  7510. path.moveTo(3.55261f, 39.6973f);
  7511. path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
  7512. path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
  7513. path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
  7514. path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
  7515. path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
  7516. path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
  7517. path.close();
  7518. path.moveTo(1.96145f, 37.0509f);
  7519. path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
  7520. path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
  7521. path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
  7522. path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
  7523. path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
  7524. path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
  7525. path.close();
  7526. path.moveTo(0.676191f, 34.1844f);
  7527. path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
  7528. path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
  7529. path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
  7530. path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
  7531. path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
  7532. path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
  7533. path.close();
  7534. path.moveTo(-0.261658f, 31.1521f);
  7535. path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
  7536. path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
  7537. path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
  7538. path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
  7539. path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
  7540. path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
  7541. path.close();
  7542. path.moveTo(-0.820549f, 28.0495f);
  7543. path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
  7544. path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
  7545. path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
  7546. path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
  7547. path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
  7548. path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
  7549. path.close();
  7550. path.moveTo(-0.999918f, 24.9349f);
  7551. path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
  7552. path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
  7553. path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
  7554. path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
  7555. path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
  7556. path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
  7557. path.close();
  7558. path.moveTo(-0.802212f, 21.7991f);
  7559. path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
  7560. path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
  7561. path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
  7562. path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
  7563. path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
  7564. path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
  7565. path.close();
  7566. path.moveTo(-0.228066f, 18.7115f);
  7567. path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
  7568. path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
  7569. path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
  7570. path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
  7571. path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
  7572. path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
  7573. path.close();
  7574. path.moveTo(0.74831f, 15.6269f);
  7575. path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
  7576. path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
  7577. path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
  7578. path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
  7579. path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
  7580. path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
  7581. path.close();
  7582. path.moveTo(2.04744f, 12.7861f);
  7583. path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
  7584. path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
  7585. path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
  7586. path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
  7587. path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
  7588. path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
  7589. path.close();
  7590. path.moveTo(3.60589f, 10.2253f);
  7591. path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
  7592. path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
  7593. path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
  7594. path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
  7595. path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
  7596. path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
  7597. path.close();
  7598. path.moveTo(5.46482f, 7.84259f);
  7599. path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
  7600. path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
  7601. path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
  7602. path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
  7603. path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
  7604. path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
  7605. path.close();
  7606. path.moveTo(7.68062f, 5.60827f);
  7607. path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
  7608. path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
  7609. path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
  7610. path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
  7611. path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
  7612. path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
  7613. path.close();
  7614. path.moveTo(10.2392f, 3.59627f);
  7615. path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
  7616. path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
  7617. path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
  7618. path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
  7619. path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
  7620. path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
  7621. path.close();
  7622. path.moveTo(12.8847f, 1.99524f);
  7623. path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
  7624. path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
  7625. path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
  7626. path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
  7627. path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
  7628. path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
  7629. path.close();
  7630. path.moveTo(15.7467f, 0.702339f);
  7631. path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
  7632. path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
  7633. path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
  7634. path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
  7635. path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
  7636. path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
  7637. path.close();
  7638. path.moveTo(18.7758f, -0.24399f);
  7639. path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
  7640. path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
  7641. path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
  7642. path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
  7643. path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
  7644. path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
  7645. path.close();
  7646. path.moveTo(21.878f, -0.811882f);
  7647. path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
  7648. path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
  7649. path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
  7650. path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
  7651. path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
  7652. path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
  7653. path.close();
  7654. path.moveTo(24.9926f, -0.999999f);
  7655. path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
  7656. path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
  7657. path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
  7658. path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
  7659. path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
  7660. path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
  7661. path.close();
  7662. path.moveTo(28.1286f, -0.811081f);
  7663. path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
  7664. path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
  7665. path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
  7666. path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
  7667. path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
  7668. path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
  7669. path.close();
  7670. path.moveTo(31.214f, -0.246499f);
  7671. path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
  7672. path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
  7673. path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
  7674. path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
  7675. path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
  7676. path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
  7677. path.close();
  7678. path.moveTo(34.3038f, 0.721629f);
  7679. path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
  7680. path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
  7681. path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
  7682. path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
  7683. path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
  7684. path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
  7685. path.close();
  7686. path.moveTo(37.1508f, 2.01396f);
  7687. path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
  7688. path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
  7689. path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
  7690. path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
  7691. path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
  7692. path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
  7693. path.close();
  7694. path.moveTo(39.718f, 3.56681f);
  7695. path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
  7696. path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
  7697. path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
  7698. path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
  7699. path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
  7700. path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
  7701. path.close();
  7702. path.moveTo(42.1033f, 5.41741f);
  7703. path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
  7704. path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
  7705. path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
  7706. path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
  7707. path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
  7708. path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
  7709. path.close();
  7710. path.moveTo(44.3419f, 7.62498f);
  7711. path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
  7712. path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
  7713. path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
  7714. path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
  7715. path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
  7716. path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
  7717. path.close();
  7718. path.moveTo(46.3599f, 10.1759f);
  7719. path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
  7720. path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
  7721. path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
  7722. path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
  7723. path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
  7724. path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
  7725. path.close();
  7726. path.moveTo(47.9708f, 12.8204f);
  7727. path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
  7728. path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
  7729. path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
  7730. path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
  7731. path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
  7732. path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
  7733. path.close();
  7734. path.moveTo(49.2713f, 15.6778f);
  7735. path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
  7736. path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
  7737. path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
  7738. path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
  7739. path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
  7740. path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
  7741. path.close();
  7742. path.moveTo(50.2261f, 18.7037f);
  7743. path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
  7744. path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
  7745. path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
  7746. path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
  7747. path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
  7748. path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
  7749. path.close();
  7750. path.moveTo(50.803f, 21.8055f);
  7751. path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
  7752. path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
  7753. path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
  7754. path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
  7755. path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
  7756. path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
  7757. path.close();
  7758. path.moveTo(50.9999f, 24.9202f);
  7759. path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
  7760. path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
  7761. path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
  7762. path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
  7763. path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
  7764. path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
  7765. path.close();
  7766. path.moveTo(50.8198f, 28.0562f);
  7767. path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
  7768. path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
  7769. path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
  7770. path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
  7771. path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
  7772. path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
  7773. path.close();
  7774. path.moveTo(50.2647f, 31.1395f);
  7775. path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
  7776. path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
  7777. path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
  7778. path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
  7779. path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
  7780. path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
  7781. path.close();
  7782. path.moveTo(49.3049f, 34.2343f);
  7783. path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
  7784. path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
  7785. path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
  7786. path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
  7787. path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
  7788. path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
  7789. path.close();
  7790. path.moveTo(48.0194f, 37.0875f);
  7791. path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
  7792. path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
  7793. path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
  7794. path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
  7795. path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
  7796. path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
  7797. path.close();
  7798. path.moveTo(46.4721f, 39.6612f);
  7799. path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
  7800. path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
  7801. path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
  7802. path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
  7803. path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
  7804. path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
  7805. path.close();
  7806. path.moveTo(44.6298f, 42.0491f);
  7807. path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
  7808. path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
  7809. path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
  7810. path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
  7811. path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
  7812. path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
  7813. path.close();
  7814. path.moveTo(42.4305f, 44.2919f);
  7815. path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
  7816. path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
  7817. path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
  7818. path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
  7819. path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
  7820. path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
  7821. path.close();
  7822. path.moveTo(39.8873f, 46.3159f);
  7823. path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
  7824. path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
  7825. path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
  7826. path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
  7827. path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
  7828. path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
  7829. path.close();
  7830. path.moveTo(37.2437f, 47.9367f);
  7831. path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
  7832. path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
  7833. path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
  7834. path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
  7835. path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
  7836. path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
  7837. path.close();
  7838. path.moveTo(34.3909f, 49.2448f);
  7839. path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
  7840. path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
  7841. path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
  7842. path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
  7843. path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
  7844. path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
  7845. path.close();
  7846. path.moveTo(31.3682f, 50.208f);
  7847. path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
  7848. path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
  7849. path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
  7850. path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
  7851. path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
  7852. path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
  7853. path.close();
  7854. path.moveTo(28.2669f, 50.7939f);
  7855. path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
  7856. path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
  7857. path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
  7858. path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
  7859. path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
  7860. path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
  7861. path.close();
  7862. path.moveTo(25.1523f, 50.9996f);
  7863. path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
  7864. path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
  7865. path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
  7866. path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
  7867. path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
  7868. path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
  7869. path.close();
  7870. path.moveTo(22.0162f, 50.8282f);
  7871. path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
  7872. path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
  7873. path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
  7874. path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
  7875. path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
  7876. path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
  7877. path.close();
  7878. path.moveTo(18.9351f, 50.2827f);
  7879. path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
  7880. path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
  7881. path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
  7882. path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
  7883. path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
  7884. path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
  7885. path.close();
  7886. path.moveTo(15.8352f, 49.3312f);
  7887. path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
  7888. path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
  7889. path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
  7890. path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
  7891. path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
  7892. path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
  7893. path.close();
  7894. path.moveTo(12.9759f, 48.0526f);
  7895. path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
  7896. path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
  7897. path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
  7898. path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
  7899. path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
  7900. path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
  7901. path.close();
  7902. path.moveTo(10.3957f, 46.5108f);
  7903. path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
  7904. path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
  7905. path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
  7906. path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
  7907. path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
  7908. path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
  7909. path.close();
  7910. path.moveTo(8.00525f, 44.6769f);
  7911. path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
  7912. path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
  7913. path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
  7914. path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
  7915. path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
  7916. path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
  7917. path.close();
  7918. path.moveTo(5.75818f, 42.4858f);
  7919. path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
  7920. path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
  7921. path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
  7922. path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
  7923. path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
  7924. path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
  7925. path.close();
  7926. path.moveTo(3.72821f, 39.9503f);
  7927. path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
  7928. path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
  7929. path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
  7930. path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
  7931. path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
  7932. path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
  7933. path.close();
  7934. path.moveTo(2.09762f, 37.3078f);
  7935. path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
  7936. path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
  7937. path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
  7938. path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
  7939. path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
  7940. path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
  7941. path.close();
  7942. path.moveTo(0.781912f, 34.4596f);
  7943. path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
  7944. path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
  7945. path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
  7946. path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
  7947. path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
  7948. path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
  7949. path.close();
  7950. path.moveTo(-0.189761f, 31.4402f);
  7951. path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
  7952. path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
  7953. path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
  7954. path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
  7955. path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
  7956. path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
  7957. path.close();
  7958. path.moveTo(-0.784658f, 28.3394f);
  7959. path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
  7960. path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
  7961. path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
  7962. path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
  7963. path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
  7964. path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
  7965. path.close();
  7966. path.moveTo(-0.999031f, 25.2248f);
  7967. path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
  7968. path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
  7969. path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
  7970. path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
  7971. path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
  7972. path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
  7973. path.close();
  7974. path.moveTo(-0.836492f, 22.0887f);
  7975. path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
  7976. path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
  7977. path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
  7978. path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
  7979. path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
  7980. path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
  7981. path.close();
  7982. path.moveTo(-0.300548f, 19.0098f);
  7983. path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
  7984. path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
  7985. path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
  7986. path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
  7987. path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
  7988. path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
  7989. path.close();
  7990. path.moveTo(0.642658f, 15.9049f);
  7991. path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
  7992. path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
  7993. path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
  7994. path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
  7995. path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
  7996. path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
  7997. path.close();
  7998. path.moveTo(1.91434f, 13.0395f);
  7999. path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
  8000. path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
  8001. path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
  8002. path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
  8003. path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
  8004. path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
  8005. path.close();
  8006. path.moveTo(3.45073f, 10.4525f);
  8007. path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
  8008. path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
  8009. path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
  8010. path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
  8011. path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
  8012. path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
  8013. path.close();
  8014. path.moveTo(5.2763f, 8.05964f);
  8015. path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
  8016. path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
  8017. path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
  8018. path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
  8019. path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
  8020. path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
  8021. path.close();
  8022. path.moveTo(7.45913f, 5.80839f);
  8023. path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
  8024. path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
  8025. path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
  8026. path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
  8027. path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
  8028. path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
  8029. path.close();
  8030. path.moveTo(9.98688f, 3.77251f);
  8031. path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
  8032. path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
  8033. path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
  8034. path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
  8035. path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
  8036. path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
  8037. path.close();
  8038. path.moveTo(12.6283f, 2.13208f);
  8039. path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
  8040. path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
  8041. path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
  8042. path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
  8043. path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
  8044. path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
  8045. path.close();
  8046. path.moveTo(15.4718f, 0.808815f);
  8047. path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
  8048. path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
  8049. path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
  8050. path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
  8051. path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
  8052. path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
  8053. path.close();
  8054. path.moveTo(18.4879f, -0.171272f);
  8055. path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
  8056. path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
  8057. path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
  8058. path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
  8059. path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
  8060. path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
  8061. path.close();
  8062. path.moveTo(21.5882f, -0.77517f);
  8063. path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
  8064. path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
  8065. path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
  8066. path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
  8067. path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
  8068. path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
  8069. path.close();
  8070. path.moveTo(24.7026f, -0.998301f);
  8071. path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
  8072. path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
  8073. path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
  8074. path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
  8075. path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
  8076. path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
  8077. path.close();
  8078. path.moveTo(27.8388f, -0.844563f);
  8079. path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
  8080. path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
  8081. path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
  8082. path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
  8083. path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
  8084. path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
  8085. path.close();
  8086. path.moveTo(30.9153f, -0.318153f);
  8087. path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
  8088. path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
  8089. path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
  8090. path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
  8091. path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
  8092. path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
  8093. path.close();
  8094. path.moveTo(34.0252f, 0.616677f);
  8095. path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
  8096. path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
  8097. path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
  8098. path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
  8099. path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
  8100. path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
  8101. path.close();
  8102. path.moveTo(36.8967f, 1.88141f);
  8103. path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
  8104. path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
  8105. path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
  8106. path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
  8107. path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
  8108. path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
  8109. path.close();
  8110. path.moveTo(39.4914f, 3.413f);
  8111. path.lineTo(39.5381f, 3.44439f);
  8112. path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
  8113. path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
  8114. path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
  8115. path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
  8116. path.lineTo(38.3749f, 5.07232f);
  8117. path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
  8118. path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
  8119. path.close();
  8120. path.moveTo(41.8859f, 5.22965f);
  8121. path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
  8122. path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
  8123. path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
  8124. path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
  8125. path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
  8126. path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
  8127. path.close();
  8128. path.moveTo(44.1413f, 7.40421f);
  8129. path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
  8130. path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
  8131. path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
  8132. path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
  8133. path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
  8134. path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
  8135. path.close();
  8136. path.moveTo(46.183f, 9.9242f);
  8137. path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
  8138. path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
  8139. path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
  8140. path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
  8141. path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
  8142. path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
  8143. path.close();
  8144. path.moveTo(47.8333f, 12.5645f);
  8145. path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
  8146. path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
  8147. path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
  8148. path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
  8149. path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
  8150. path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
  8151. path.close();
  8152. path.moveTo(49.1641f, 15.4033f);
  8153. path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
  8154. path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
  8155. path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
  8156. path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
  8157. path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
  8158. path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
  8159. path.close();
  8160. path.moveTo(50.1526f, 18.4161f);
  8161. path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
  8162. path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
  8163. path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
  8164. path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
  8165. path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
  8166. path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
  8167. path.close();
  8168. path.moveTo(50.7655f, 21.5157f);
  8169. path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
  8170. path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
  8171. path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
  8172. path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
  8173. path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
  8174. path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
  8175. path.close();
  8176. path.moveTo(50.9974f, 24.6301f);
  8177. path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
  8178. path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
  8179. path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
  8180. path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
  8181. path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
  8182. path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
  8183. path.close();
  8184. path.moveTo(50.8524f, 27.7662f);
  8185. path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
  8186. path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
  8187. path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
  8188. path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
  8189. path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
  8190. path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
  8191. path.close();
  8192. path.moveTo(50.3355f, 30.8404f);
  8193. path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
  8194. path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
  8195. path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
  8196. path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
  8197. path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
  8198. path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
  8199. path.close();
  8200. path.moveTo(49.4091f, 33.9552f);
  8201. path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
  8202. path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
  8203. path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
  8204. path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
  8205. path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
  8206. path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
  8207. path.close();
  8208. path.moveTo(48.1514f, 36.8328f);
  8209. path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
  8210. path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
  8211. path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
  8212. path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
  8213. path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
  8214. path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
  8215. path.close();
  8216. path.moveTo(46.6245f, 39.4354f);
  8217. path.lineTo(46.5563f, 39.537f);
  8218. path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
  8219. path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
  8220. path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
  8221. path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
  8222. path.lineTo(44.9637f, 38.3211f);
  8223. path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
  8224. path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
  8225. path.close();
  8226. path.moveTo(44.8168f, 41.8314f);
  8227. path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
  8228. path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
  8229. path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
  8230. path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
  8231. path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
  8232. path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
  8233. path.close();
  8234. path.moveTo(42.6505f, 44.0908f);
  8235. path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
  8236. path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
  8237. path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
  8238. path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
  8239. path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
  8240. path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
  8241. path.close();
  8242. path.moveTo(40.1383f, 46.1384f);
  8243. path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
  8244. path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
  8245. path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
  8246. path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
  8247. path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
  8248. path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
  8249. path.close();
  8250. path.moveTo(37.4991f, 47.7985f);
  8251. path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
  8252. path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
  8253. path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
  8254. path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
  8255. path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
  8256. path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
  8257. path.close();
  8258. path.moveTo(34.6651f, 49.1368f);
  8259. path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
  8260. path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
  8261. path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
  8262. path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
  8263. path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
  8264. path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
  8265. path.close();
  8266. path.moveTo(31.6557f, 50.1337f);
  8267. path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
  8268. path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
  8269. path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
  8270. path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
  8271. path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
  8272. path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
  8273. path.close();
  8274. path.moveTo(28.5567f, 50.7556f);
  8275. path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
  8276. path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
  8277. path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
  8278. path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
  8279. path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
  8280. path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
  8281. path.close();
  8282. path.moveTo(25.4424f, 50.9962f);
  8283. path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
  8284. path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
  8285. path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
  8286. path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
  8287. path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
  8288. path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
  8289. path.close();
  8290. path.moveTo(22.3065f, 50.8601f);
  8291. path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
  8292. path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
  8293. path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
  8294. path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
  8295. path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
  8296. path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
  8297. path.close();
  8298. path.moveTo(19.2346f, 50.3527f);
  8299. path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
  8300. path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
  8301. path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
  8302. path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
  8303. path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
  8304. path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
  8305. path.close();
  8306. path.moveTo(16.1149f, 49.4347f);
  8307. path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
  8308. path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
  8309. path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
  8310. path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
  8311. path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
  8312. path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
  8313. path.close();
  8314. path.moveTo(13.2313f, 48.184f);
  8315. path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
  8316. path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
  8317. path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
  8318. path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
  8319. path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
  8320. path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
  8321. path.close();
  8322. path.moveTo(10.6208f, 46.6619f);
  8323. path.lineTo(10.4641f, 46.5571f);
  8324. path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
  8325. path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
  8326. path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
  8327. path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
  8328. path.lineTo(11.7329f, 44.9996f);
  8329. path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
  8330. path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
  8331. path.close();
  8332. path.moveTo(8.22326f, 44.8631f);
  8333. path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
  8334. path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
  8335. path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
  8336. path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
  8337. path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
  8338. path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
  8339. path.close();
  8340. path.moveTo(5.95972f, 42.705f);
  8341. path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
  8342. path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
  8343. path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
  8344. path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
  8345. path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
  8346. path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
  8347. path.close();
  8348. path.moveTo(3.90635f, 40.2006f);
  8349. path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
  8350. path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
  8351. path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
  8352. path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
  8353. path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
  8354. path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
  8355. path.close();
  8356. path.moveTo(2.23643f, 37.5626f);
  8357. path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
  8358. path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
  8359. path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
  8360. path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
  8361. path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
  8362. path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
  8363. path.close();
  8364. path.moveTo(0.890647f, 34.7334f);
  8365. path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
  8366. path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
  8367. path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
  8368. path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
  8369. path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
  8370. path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
  8371. path.close();
  8372. path.moveTo(-0.114587f, 31.7274f);
  8373. path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
  8374. path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
  8375. path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
  8376. path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
  8377. path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
  8378. path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
  8379. path.close();
  8380. path.moveTo(-0.745485f, 28.6291f);
  8381. path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
  8382. path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
  8383. path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
  8384. path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
  8385. path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
  8386. path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
  8387. path.close();
  8388. path.moveTo(-0.994901f, 25.515f);
  8389. path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
  8390. path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
  8391. path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
  8392. path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
  8393. path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
  8394. path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
  8395. path.close();
  8396. path.moveTo(-0.867571f, 22.3792f);
  8397. path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
  8398. path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
  8399. path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
  8400. path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
  8401. path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
  8402. path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
  8403. path.close();
  8404. path.moveTo(-0.369678f, 19.3097f);
  8405. path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
  8406. path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
  8407. path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
  8408. path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
  8409. path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
  8410. path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
  8411. path.close();
  8412. path.moveTo(0.539863f, 16.1851f);
  8413. path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
  8414. path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
  8415. path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
  8416. path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
  8417. path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
  8418. path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
  8419. path.close();
  8420. path.moveTo(1.78353f, 13.2955f);
  8421. path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
  8422. path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
  8423. path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
  8424. path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
  8425. path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
  8426. path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
  8427. path.close();
  8428. path.moveTo(3.30083f, 10.6771f);
  8429. path.lineTo(3.44218f, 10.4652f);
  8430. path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
  8431. path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
  8432. path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
  8433. path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
  8434. path.lineTo(4.96457f, 11.787f);
  8435. path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
  8436. path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
  8437. path.close();
  8438. path.moveTo(5.0909f, 8.27793f);
  8439. path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
  8440. path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
  8441. path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
  8442. path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
  8443. path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
  8444. path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
  8445. path.close();
  8446. path.moveTo(7.24064f, 6.0104f);
  8447. path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
  8448. path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
  8449. path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
  8450. path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
  8451. path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
  8452. path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
  8453. path.close();
  8454. path.moveTo(9.73726f, 3.95128f);
  8455. path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
  8456. path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
  8457. path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
  8458. path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
  8459. path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
  8460. path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
  8461. path.close();
  8462. path.moveTo(12.374f, 2.27153f);
  8463. path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
  8464. path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
  8465. path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
  8466. path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
  8467. path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
  8468. path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
  8469. path.close();
  8470. path.moveTo(15.1984f, 0.918296f);
  8471. path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
  8472. path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
  8473. path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
  8474. path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
  8475. path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
  8476. path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
  8477. path.close();
  8478. path.moveTo(18.201f, -0.0952874f);
  8479. path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
  8480. path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
  8481. path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
  8482. path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
  8483. path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
  8484. path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
  8485. path.close();
  8486. path.moveTo(21.2986f, -0.73518f);
  8487. path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
  8488. path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
  8489. path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
  8490. path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
  8491. path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
  8492. path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
  8493. path.close();
  8494. path.moveTo(24.4124f, -0.993361f);
  8495. path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
  8496. path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
  8497. path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
  8498. path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
  8499. path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
  8500. path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
  8501. path.close();
  8502. path.moveTo(27.5481f, -0.87484f);
  8503. path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
  8504. path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
  8505. path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
  8506. path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
  8507. path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
  8508. path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
  8509. path.close();
  8510. path.moveTo(30.6151f, -0.386432f);
  8511. path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
  8512. path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
  8513. path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
  8514. path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
  8515. path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
  8516. path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
  8517. path.close();
  8518. path.moveTo(33.7445f, 0.514616f);
  8519. path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
  8520. path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
  8521. path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
  8522. path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
  8523. path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
  8524. path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
  8525. path.close();
  8526. path.moveTo(36.6402f, 1.7512f);
  8527. path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
  8528. path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
  8529. path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
  8530. path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
  8531. path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
  8532. path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
  8533. path.close();
  8534. path.moveTo(39.2611f, 3.26012f);
  8535. path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
  8536. path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
  8537. path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
  8538. path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
  8539. path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
  8540. path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
  8541. path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
  8542. path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
  8543. path.close();
  8544. path.moveTo(41.6673f, 5.04503f);
  8545. path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
  8546. path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
  8547. path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
  8548. path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
  8549. path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
  8550. path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
  8551. path.close();
  8552. path.moveTo(43.9388f, 7.1865f);
  8553. path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
  8554. path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
  8555. path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
  8556. path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
  8557. path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
  8558. path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
  8559. path.close();
  8560. path.moveTo(46.0036f, 9.6753f);
  8561. path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
  8562. path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
  8563. path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
  8564. path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
  8565. path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
  8566. path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
  8567. path.close();
  8568. path.moveTo(47.6932f, 12.3107f);
  8569. path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
  8570. path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
  8571. path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
  8572. path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
  8573. path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
  8574. path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
  8575. path.close();
  8576. path.moveTo(49.0539f, 15.1303f);
  8577. path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
  8578. path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
  8579. path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
  8580. path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
  8581. path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
  8582. path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
  8583. path.close();
  8584. path.moveTo(50.0758f, 18.1294f);
  8585. path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
  8586. path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
  8587. path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
  8588. path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
  8589. path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
  8590. path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
  8591. path.close();
  8592. path.moveTo(50.7247f, 21.2262f);
  8593. path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
  8594. path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
  8595. path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
  8596. path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
  8597. path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
  8598. path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
  8599. path.close();
  8600. path.moveTo(50.9916f, 24.3398f);
  8601. path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
  8602. path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
  8603. path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
  8604. path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
  8605. path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
  8606. path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
  8607. path.close();
  8608. path.moveTo(50.8819f, 27.4753f);
  8609. path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
  8610. path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
  8611. path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
  8612. path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
  8613. path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
  8614. path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
  8615. path.close();
  8616. path.moveTo(50.4023f, 30.5429f);
  8617. path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
  8618. path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
  8619. path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
  8620. path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
  8621. path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
  8622. path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
  8623. path.close();
  8624. path.moveTo(49.5104f, 33.674f);
  8625. path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
  8626. path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
  8627. path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
  8628. path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
  8629. path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
  8630. path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
  8631. path.close();
  8632. path.moveTo(48.281f, 36.5756f);
  8633. path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
  8634. path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
  8635. path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
  8636. path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
  8637. path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
  8638. path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
  8639. path.close();
  8640. path.moveTo(46.7777f, 39.2033f);
  8641. path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
  8642. path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
  8643. path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
  8644. path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
  8645. path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
  8646. path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
  8647. path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
  8648. path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
  8649. path.close();
  8650. path.moveTo(44.9527f, 41.6701f);
  8651. path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
  8652. path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
  8653. path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
  8654. path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
  8655. path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
  8656. path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
  8657. path.close();
  8658. path.moveTo(42.7884f, 43.9624f);
  8659. path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
  8660. path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
  8661. path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
  8662. path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
  8663. path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
  8664. path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
  8665. path.close();
  8666. path.moveTo(40.3892f, 45.9564f);
  8667. path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
  8668. path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
  8669. path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
  8670. path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
  8671. path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
  8672. path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
  8673. path.close();
  8674. path.moveTo(37.7543f, 47.6568f);
  8675. path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
  8676. path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
  8677. path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
  8678. path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
  8679. path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
  8680. path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
  8681. path.close();
  8682. path.moveTo(34.9311f, 49.0286f);
  8683. path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
  8684. path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
  8685. path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
  8686. path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
  8687. path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
  8688. path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
  8689. path.close();
  8690. path.moveTo(31.9824f, 50.0449f);
  8691. path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
  8692. path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
  8693. path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
  8694. path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
  8695. path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
  8696. path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
  8697. path.close();
  8698. path.moveTo(28.899f, 50.706f);
  8699. path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
  8700. path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
  8701. path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
  8702. path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
  8703. path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
  8704. path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
  8705. path.close();
  8706. path.moveTo(25.8106f, 50.9874f);
  8707. path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
  8708. path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
  8709. path.lineTo(24.4251f, 49.3638f);
  8710. path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
  8711. path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
  8712. path.lineTo(26.4361f, 49.9787f);
  8713. path.lineTo(25.4363f, 49.9962f);
  8714. path.lineTo(25.4189f, 48.9963f);
  8715. path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
  8716. path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
  8717. path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
  8718. path.close();
  8719. path.moveTo(24.3902f, 47.3641f);
  8720. path.lineTo(24.3728f, 46.3643f);
  8721. path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
  8722. path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
  8723. path.lineTo(26.3899f, 47.3292f);
  8724. path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
  8725. path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
  8726. path.close();
  8727. path.moveTo(24.3378f, 44.3646f);
  8728. path.lineTo(24.3204f, 43.3648f);
  8729. path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
  8730. path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
  8731. path.lineTo(26.3375f, 44.3297f);
  8732. path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
  8733. path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
  8734. path.close();
  8735. path.moveTo(24.2855f, 41.3651f);
  8736. path.lineTo(24.268f, 40.3652f);
  8737. path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
  8738. path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
  8739. path.lineTo(26.2852f, 41.3302f);
  8740. path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
  8741. path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
  8742. path.close();
  8743. path.moveTo(24.2331f, 38.3655f);
  8744. path.lineTo(24.2157f, 37.3657f);
  8745. path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
  8746. path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
  8747. path.lineTo(26.2328f, 38.3306f);
  8748. path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
  8749. path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
  8750. path.close();
  8751. path.moveTo(24.1808f, 35.366f);
  8752. path.lineTo(24.1633f, 34.3661f);
  8753. path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
  8754. path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
  8755. path.lineTo(26.1805f, 35.3311f);
  8756. path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
  8757. path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
  8758. path.close();
  8759. path.moveTo(24.1284f, 32.3664f);
  8760. path.lineTo(24.111f, 31.3666f);
  8761. path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
  8762. path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
  8763. path.lineTo(26.1281f, 32.3315f);
  8764. path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
  8765. path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
  8766. path.close();
  8767. path.moveTo(24.0761f, 29.3669f);
  8768. path.lineTo(24.0586f, 28.367f);
  8769. path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
  8770. path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
  8771. path.lineTo(26.0758f, 29.332f);
  8772. path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
  8773. path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
  8774. path.close();
  8775. path.moveTo(24.0237f, 26.3673f);
  8776. path.lineTo(24.0063f, 25.3675f);
  8777. path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
  8778. path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
  8779. path.lineTo(26.0234f, 26.3324f);
  8780. path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
  8781. path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
  8782. path.close();
  8783. testSimplifyFail(reporter, path, filename);
  8784. }
  8785. static void bug8249(skiatest::Reporter* reporter, const char* filename) {
  8786. SkPath path;
  8787. path.setFillType(SkPath::kWinding_FillType);
  8788. path.moveTo(SkBits2Float(0x43310000), SkBits2Float(0x43810000)); // 177, 258
  8789. path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43868000)); // 200, 269
  8790. path.cubicTo(SkBits2Float(0x43480000), SkBits2Float(0x43b20000), SkBits2Float(0x437a0000), SkBits2Float(0x43cd0000), SkBits2Float(0x43c80000), SkBits2Float(0x43cd0000)); // 200, 356, 250, 410, 400, 410
  8791. path.cubicTo(SkBits2Float(0x44098000), SkBits2Float(0x43cd0000), SkBits2Float(0x44160000), SkBits2Float(0x43b20000), SkBits2Float(0x44160000), SkBits2Float(0x43868000)); // 550, 410, 600, 356, 600, 269
  8792. path.lineTo(SkBits2Float(0x44160000), SkBits2Float(0x43808000)); // 600, 257
  8793. path.cubicTo(SkBits2Float(0x44160000), SkBits2Float(0x43330000), SkBits2Float(0x44110000), SkBits2Float(0x429c0000), SkBits2Float(0x43cd0000), SkBits2Float(0x429c0000)); // 600, 179, 580, 78, 410, 78
  8794. path.cubicTo(SkBits2Float(0x43700000), SkBits2Float(0x429c0000), SkBits2Float(0x43480000), SkBits2Float(0x431f0000), SkBits2Float(0x43480000), SkBits2Float(0x438a8000)); // 240, 78, 200, 159, 200, 277
  8795. path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x4401c000)); // 200, 519
  8796. path.cubicTo(SkBits2Float(0x43480000), SkBits2Float(0x441f0000), SkBits2Float(0x43660000), SkBits2Float(0x44340000), SkBits2Float(0x43c80000), SkBits2Float(0x44340000)); // 200, 636, 230, 720, 400, 720
  8797. path.cubicTo(SkBits2Float(0x4404c000), SkBits2Float(0x44340000), SkBits2Float(0x440d0000), SkBits2Float(0x442b8000), SkBits2Float(0x44118000), SkBits2Float(0x4416c000)); // 531, 720, 564, 686, 582, 603
  8798. path.lineTo(SkBits2Float(0x442cc000), SkBits2Float(0x441c8000)); // 691, 626
  8799. path.cubicTo(SkBits2Float(0x44260000), SkBits2Float(0x443d4000), SkBits2Float(0x44114000), SkBits2Float(0x444a8000), SkBits2Float(0x43c88000), SkBits2Float(0x444a8000)); // 664, 757, 581, 810, 401, 810
  8800. path.cubicTo(SkBits2Float(0x43350000), SkBits2Float(0x444a8000), SkBits2Float(0x42c80000), SkBits2Float(0x442e0000), SkBits2Float(0x42c80000), SkBits2Float(0x4401c000)); // 181, 810, 100, 696, 100, 519
  8801. path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x438a8000)); // 100, 277
  8802. path.cubicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42cc0000), SkBits2Float(0x433e0000), SkBits2Float(0xc1200000), SkBits2Float(0x43cd0000), SkBits2Float(0xc1200000)); // 100, 102, 190, -10, 410, -10
  8803. path.cubicTo(SkBits2Float(0x441d8000), SkBits2Float(0xc1200000), SkBits2Float(0x442f0000), SkBits2Float(0x42e60000), SkBits2Float(0x442f0000), SkBits2Float(0x437a0000)); // 630, -10, 700, 115, 700, 250
  8804. path.lineTo(SkBits2Float(0x442f0000), SkBits2Float(0x43880000)); // 700, 272
  8805. path.cubicTo(SkBits2Float(0x442f0000), SkBits2Float(0x43d18000), SkBits2Float(0x44164000), SkBits2Float(0x43fa0000), SkBits2Float(0x43c88000), SkBits2Float(0x43fa0000)); // 700, 419, 601, 500, 401, 500
  8806. path.cubicTo(SkBits2Float(0x43490000), SkBits2Float(0x43fa0000), SkBits2Float(0x43160000), SkBits2Float(0x43d00000), SkBits2Float(0x43160000), SkBits2Float(0x43868000)); // 201, 500, 150, 416, 150, 269
  8807. path.lineTo(SkBits2Float(0x43310000), SkBits2Float(0x43810000)); // 177, 258
  8808. path.close();
  8809. testSimplify(reporter, path, filename);
  8810. }
  8811. static void bug8290(skiatest::Reporter* reporter, const char* filename) {
  8812. SkPath path;
  8813. path.setFillType(SkPath::kEvenOdd_FillType);
  8814. path.moveTo(-1e+09, -1e+09);
  8815. path.lineTo(1e+09, -1e+09);
  8816. path.lineTo(1e+09, 1e+09);
  8817. path.lineTo(-1e+09, 1e+09);
  8818. path.lineTo(-1e+09, -1e+09);
  8819. path.close();
  8820. path.moveTo(0, 45);
  8821. path.lineTo(270, 45);
  8822. path.lineTo(270, 45.381f);
  8823. path.lineTo(0, 45.381f);
  8824. path.lineTo(0, 45);
  8825. path.close();
  8826. path.moveTo(0, 90.381f);
  8827. path.lineTo(270, 90.381f);
  8828. path.lineTo(270, 90.7619f);
  8829. path.lineTo(0, 90.7619f);
  8830. path.lineTo(0, 90.381f);
  8831. path.close();
  8832. path.moveTo(0, 135.762f);
  8833. path.lineTo(270, 135.762f);
  8834. path.lineTo(270, 136.143f);
  8835. path.lineTo(0, 136.143f);
  8836. path.lineTo(0, 135.762f);
  8837. path.close();
  8838. path.moveTo(0, 181.143f);
  8839. path.lineTo(270, 181.143f);
  8840. path.lineTo(270, 181.524f);
  8841. path.lineTo(0, 181.524f);
  8842. path.lineTo(0, 181.143f);
  8843. path.close();
  8844. path.moveTo(0, 226.524f);
  8845. path.lineTo(270, 226.524f);
  8846. path.lineTo(270, 226.905f);
  8847. path.lineTo(0, 226.905f);
  8848. path.lineTo(0, 226.524f);
  8849. path.close();
  8850. path.moveTo(0, 271.905f);
  8851. path.lineTo(270, 271.905f);
  8852. path.lineTo(270, 272.286f);
  8853. path.lineTo(0, 272.286f);
  8854. path.lineTo(0, 271.905f);
  8855. path.close();
  8856. path.moveTo(0, 317.286f);
  8857. path.lineTo(270, 317.286f);
  8858. path.lineTo(270, 317.667f);
  8859. path.lineTo(0, 317.667f);
  8860. path.lineTo(0, 317.286f);
  8861. path.close();
  8862. SkMatrix matrix = SkMatrix::MakeAll(
  8863. 2.625, 0, 186,
  8864. 0, 2.625, 620,
  8865. 0, 0, 1);
  8866. path.transform(matrix);
  8867. testSimplify(reporter, path, filename);
  8868. }
  8869. static void (*skipTest)(skiatest::Reporter* , const char* filename) = nullptr;
  8870. static void (*firstTest)(skiatest::Reporter* , const char* filename) = nullptr;
  8871. static void (*stopTest)(skiatest::Reporter* , const char* filename) = nullptr;
  8872. static TestDesc tests[] = {
  8873. TEST(bug8290),
  8874. TEST(bug8249),
  8875. TEST(grshapearc),
  8876. TEST(coincubics),
  8877. TEST(joel_16x),
  8878. TEST(joel_16),
  8879. TEST(joel_15x),
  8880. TEST(joel_15),
  8881. TEST(joel_14x),
  8882. TEST(joel_14),
  8883. TEST(joel_13x),
  8884. TEST(joel_13),
  8885. TEST(joel_12x),
  8886. TEST(joel_12),
  8887. TEST(joel_11),
  8888. TEST(joel_10),
  8889. TEST(joel_9),
  8890. TEST(joel_8),
  8891. TEST(joel_7),
  8892. TEST(joel_6),
  8893. TEST(joel_5),
  8894. TEST(joel_4),
  8895. TEST(joel_3),
  8896. TEST(joel_2),
  8897. TEST(joel_1),
  8898. TEST(simplifyTest_1),
  8899. TEST(carsvg_1),
  8900. TEST(tiger8_393),
  8901. TEST(bug5169),
  8902. TEST(testQuads73),
  8903. TEST(testQuads72),
  8904. TEST(testQuads71),
  8905. TEST(testQuads70),
  8906. TEST(testQuads69),
  8907. TEST(testQuads68),
  8908. TEST(testQuads67),
  8909. TEST(testQuads66),
  8910. TEST(dean4),
  8911. TEST(fuzz763_4713_b),
  8912. TEST(fuzz_twister2),
  8913. TEST(fuzz_twister),
  8914. TEST(fuzz994s_3414),
  8915. TEST(fuzz994s_11),
  8916. TEST(cr514118),
  8917. TEST(fuzz864a),
  8918. TEST(testQuads65),
  8919. TEST(testIssue3838_3),
  8920. TEST(testIssue3838),
  8921. TEST(testArc),
  8922. TEST(testTriangle2),
  8923. TEST(testTriangle1),
  8924. TEST(testQuads64),
  8925. TEST(testQuads63),
  8926. TEST(testQuads62),
  8927. TEST(testRect4),
  8928. TEST(testRect3),
  8929. TEST(testQuadralateral10),
  8930. TEST(testQuads61),
  8931. TEST(testQuads60),
  8932. TEST(testQuads59),
  8933. TEST(testQuads58),
  8934. TEST(testQuads57),
  8935. TEST(testQuads56),
  8936. TEST(testQuads54),
  8937. TEST(testQuads53),
  8938. TEST(testQuads52),
  8939. TEST(testQuads51),
  8940. TEST(testQuads50),
  8941. TEST(testQuads49),
  8942. TEST(testQuads48),
  8943. TEST(testQuads47),
  8944. TEST(testQuads46x),
  8945. TEST(testQuads45),
  8946. TEST(testQuads44),
  8947. TEST(testQuads43),
  8948. TEST(testQuads42),
  8949. TEST(testQuads41),
  8950. TEST(testQuads36),
  8951. TEST(testQuads37),
  8952. TEST(testQuads38),
  8953. TEST(testQuads39),
  8954. TEST(testQuads40),
  8955. TEST(testQuads16),
  8956. TEST(testQuads17),
  8957. TEST(testQuads18),
  8958. TEST(testQuads19),
  8959. TEST(testQuads20),
  8960. TEST(testQuads21),
  8961. TEST(testQuads22),
  8962. TEST(testQuads23),
  8963. TEST(testQuads24),
  8964. TEST(testQuads25),
  8965. TEST(testQuads26),
  8966. TEST(testQuads27),
  8967. TEST(testQuads28),
  8968. TEST(testQuads29),
  8969. TEST(testQuads30),
  8970. TEST(testQuads31),
  8971. TEST(testQuads32),
  8972. TEST(testQuads33),
  8973. TEST(testQuads34),
  8974. TEST(testQuads35),
  8975. TEST(testDegenerates1),
  8976. TEST(testQuad13),
  8977. TEST(testQuad14),
  8978. TEST(testQuad15),
  8979. TEST(testQuadratic56),
  8980. TEST(testQuadralateral4),
  8981. TEST(testQuadralateral3),
  8982. TEST(testDegenerate5),
  8983. TEST(testQuad12),
  8984. TEST(testQuadratic51),
  8985. TEST(testQuad8),
  8986. TEST(testQuad11),
  8987. TEST(testQuad10),
  8988. TEST(testQuad9),
  8989. TEST(testTriangles4x),
  8990. TEST(testTriangles3x),
  8991. TEST(testRect2s),
  8992. TEST(testRect1s),
  8993. TEST(tooCloseTest),
  8994. TEST(skphealth_com76s),
  8995. TEST(testQuadLineIntersect1),
  8996. TEST(testQuadLineIntersect2),
  8997. TEST(testQuadLineIntersect3),
  8998. TEST(testQuad7),
  8999. TEST(testQuad6),
  9000. TEST(testQuad5),
  9001. TEST(testQuad4),
  9002. TEST(testQuad3),
  9003. TEST(testQuad2),
  9004. TEST(testAddTCoincident2),
  9005. TEST(testAddTCoincident1),
  9006. TEST(testTriangles2),
  9007. TEST(testTriangles1),
  9008. TEST(testQuadratic97),
  9009. TEST(testQuadratic96),
  9010. TEST(testQuadratic95),
  9011. TEST(testQuadratic94),
  9012. TEST(testQuadralateral2),
  9013. TEST(testQuad1),
  9014. TEST(testCubic2),
  9015. TEST(testCubic1),
  9016. TEST(testQuadralateral1),
  9017. TEST(testLine85),
  9018. TEST(testLine84),
  9019. TEST(testLine84x),
  9020. TEST(testLine83),
  9021. TEST(testLine82h),
  9022. TEST(testLine82g),
  9023. TEST(testLine82f),
  9024. TEST(testLine82e),
  9025. TEST(testLine82d),
  9026. TEST(testLine82c),
  9027. TEST(testLine82b),
  9028. TEST(testLine82a),
  9029. TEST(testLine82),
  9030. TEST(testQuadratic93),
  9031. TEST(testQuadratic92x),
  9032. TEST(testQuadratic91),
  9033. TEST(testQuadratic90x),
  9034. TEST(testQuadratic89x),
  9035. TEST(testQuadratic88),
  9036. TEST(testQuadratic87),
  9037. TEST(testQuadratic86),
  9038. TEST(testQuadratic85),
  9039. TEST(testQuadratic84),
  9040. TEST(testQuadratic83),
  9041. TEST(testQuadratic82),
  9042. TEST(testQuadratic81),
  9043. TEST(testQuadratic80),
  9044. TEST(testEight1),
  9045. TEST(testEight2),
  9046. TEST(testEight3),
  9047. TEST(testEight4),
  9048. TEST(testEight5),
  9049. TEST(testEight6),
  9050. TEST(testEight7),
  9051. TEST(testEight8),
  9052. TEST(testEight9),
  9053. TEST(testEight10),
  9054. TEST(testQuadratic79),
  9055. TEST(testQuadratic78),
  9056. TEST(testQuadratic77),
  9057. TEST(testQuadratic76),
  9058. TEST(testQuadratic75),
  9059. TEST(testQuadratic74),
  9060. TEST(testQuadratic73),
  9061. TEST(testQuadratic72),
  9062. TEST(testQuadratic71),
  9063. TEST(testQuadratic70x),
  9064. TEST(testQuadratic69),
  9065. TEST(testQuadratic68),
  9066. TEST(testQuadratic67x),
  9067. TEST(testQuadratic65),
  9068. TEST(testQuadratic64),
  9069. TEST(testQuadratic63),
  9070. TEST(testLine1a),
  9071. TEST(testQuadratic59),
  9072. TEST(testQuadratic59x),
  9073. TEST(testQuadratic58),
  9074. TEST(testQuadratic55),
  9075. TEST(testQuadratic53),
  9076. TEST(testQuadratic38),
  9077. TEST(testQuadratic37),
  9078. TEST(testQuadratic36),
  9079. TEST(testQuadratic35),
  9080. TEST(testQuadratic34),
  9081. TEST(testQuadratic33),
  9082. TEST(testQuadratic32),
  9083. TEST(testQuadratic31),
  9084. TEST(testQuadratic30),
  9085. TEST(testQuadratic29),
  9086. TEST(testQuadratic28),
  9087. TEST(testQuadratic27),
  9088. TEST(testQuadratic26),
  9089. TEST(testQuadratic25),
  9090. TEST(testQuadratic24),
  9091. TEST(testQuadratic23),
  9092. TEST(testQuadratic22),
  9093. TEST(testQuadratic21),
  9094. TEST(testQuadratic20),
  9095. TEST(testQuadratic19),
  9096. TEST(testQuadratic18),
  9097. TEST(testQuadratic17x),
  9098. TEST(testQuadratic15),
  9099. TEST(testQuadratic14),
  9100. TEST(testQuadratic9),
  9101. TEST(testQuadratic8),
  9102. TEST(testQuadratic7),
  9103. TEST(testQuadratic6),
  9104. TEST(testQuadratic5),
  9105. TEST(testQuadratic4x),
  9106. TEST(testQuadratic3x),
  9107. TEST(testQuadratic2x),
  9108. TEST(testQuadratic1x),
  9109. TEST(testQuadratic4),
  9110. TEST(testQuadratic3),
  9111. TEST(testQuadratic2),
  9112. TEST(testQuadratic1),
  9113. TEST(testLine4ax),
  9114. TEST(testLine3aax),
  9115. TEST(testLine2ax),
  9116. TEST(testLine1ax),
  9117. TEST(testQuadralateral9x),
  9118. TEST(testQuadralateral8x),
  9119. TEST(testQuadralateral7x),
  9120. TEST(testQuadralateral6x),
  9121. TEST(testQuadralateral6ax),
  9122. TEST(testQuadralateral9),
  9123. TEST(testQuadralateral8),
  9124. TEST(testQuadralateral7),
  9125. TEST(testQuadralateral6),
  9126. TEST(testQuadralateral6a),
  9127. TEST(testFauxQuadralateral6dx),
  9128. TEST(testFauxQuadralateral6cx),
  9129. TEST(testFauxQuadralateral6bx),
  9130. TEST(testFauxQuadralateral6ax),
  9131. TEST(testFauxQuadralateral6x),
  9132. TEST(testFauxQuadralateral6d),
  9133. TEST(testFauxQuadralateral6c),
  9134. TEST(testFauxQuadralateral6b),
  9135. TEST(testFauxQuadralateral6a),
  9136. TEST(testFauxQuadralateral6),
  9137. TEST(testQuadralateral5x),
  9138. TEST(testQuadralateral5),
  9139. TEST(testNondegenerate4x),
  9140. TEST(testNondegenerate3x),
  9141. TEST(testNondegenerate2x),
  9142. TEST(testNondegenerate1x),
  9143. TEST(testNondegenerate4),
  9144. TEST(testNondegenerate3),
  9145. TEST(testNondegenerate2),
  9146. TEST(testNondegenerate1),
  9147. TEST(testDegenerate4x),
  9148. TEST(testDegenerate3x),
  9149. TEST(testDegenerate2x),
  9150. TEST(testDegenerate1x),
  9151. TEST(testDegenerate4),
  9152. TEST(testDegenerate3),
  9153. TEST(testDegenerate2),
  9154. TEST(testDegenerate1),
  9155. TEST(testLine79x),
  9156. TEST(testLine78x),
  9157. TEST(testLine77x),
  9158. TEST(testLine76x),
  9159. TEST(testLine75x),
  9160. TEST(testLine74x),
  9161. TEST(testLine73x),
  9162. TEST(testLine72x),
  9163. TEST(testLine71x),
  9164. TEST(testLine70x),
  9165. TEST(testLine69x),
  9166. TEST(testLine68hx),
  9167. TEST(testLine68gx),
  9168. TEST(testLine68fx),
  9169. TEST(testLine68ex),
  9170. TEST(testLine68dx),
  9171. TEST(testLine68cx),
  9172. TEST(testLine68bx),
  9173. TEST(testLine68ax),
  9174. TEST(testLine67x),
  9175. TEST(testLine66x),
  9176. TEST(testLine65x),
  9177. TEST(testLine64x),
  9178. TEST(testLine63x),
  9179. TEST(testLine62x),
  9180. TEST(testLine61x),
  9181. TEST(testLine60x),
  9182. TEST(testLine59x),
  9183. TEST(testLine58x),
  9184. TEST(testLine57x),
  9185. TEST(testLine56x),
  9186. TEST(testLine55x),
  9187. TEST(testLine54x),
  9188. TEST(testLine53x),
  9189. TEST(testLine52x),
  9190. TEST(testLine51x),
  9191. TEST(testLine50x),
  9192. TEST(testLine49x),
  9193. TEST(testLine48x),
  9194. TEST(testLine47x),
  9195. TEST(testLine46x),
  9196. TEST(testLine45x),
  9197. TEST(testLine44x),
  9198. TEST(testLine43x),
  9199. TEST(testLine42x),
  9200. TEST(testLine41x),
  9201. TEST(testLine40x),
  9202. TEST(testLine38x),
  9203. TEST(testLine37x),
  9204. TEST(testLine36x),
  9205. TEST(testLine35x),
  9206. TEST(testLine34x),
  9207. TEST(testLine33x),
  9208. TEST(testLine32x),
  9209. TEST(testLine31x),
  9210. TEST(testLine30x),
  9211. TEST(testLine29x),
  9212. TEST(testLine28x),
  9213. TEST(testLine27x),
  9214. TEST(testLine26x),
  9215. TEST(testLine25x),
  9216. TEST(testLine24ax),
  9217. TEST(testLine24x),
  9218. TEST(testLine23x),
  9219. TEST(testLine22x),
  9220. TEST(testLine21x),
  9221. TEST(testLine20x),
  9222. TEST(testLine19x),
  9223. TEST(testLine18x),
  9224. TEST(testLine17x),
  9225. TEST(testLine16x),
  9226. TEST(testLine15x),
  9227. TEST(testLine14x),
  9228. TEST(testLine13x),
  9229. TEST(testLine12x),
  9230. TEST(testLine11x),
  9231. TEST(testLine10ax),
  9232. TEST(testLine10x),
  9233. TEST(testLine9x),
  9234. TEST(testLine8x),
  9235. TEST(testLine7bx),
  9236. TEST(testLine7ax),
  9237. TEST(testLine7x),
  9238. TEST(testLine6x),
  9239. TEST(testLine5x),
  9240. TEST(testLine4x),
  9241. TEST(testLine3bx),
  9242. TEST(testLine3ax),
  9243. TEST(testLine3x),
  9244. TEST(testLine2x),
  9245. TEST(testLine1x),
  9246. TEST(testLine81),
  9247. TEST(testLine80),
  9248. TEST(testLine79),
  9249. TEST(testLine78),
  9250. TEST(testLine77),
  9251. TEST(testLine76),
  9252. TEST(testLine75),
  9253. TEST(testLine74),
  9254. TEST(testLine73),
  9255. TEST(testLine72),
  9256. TEST(testLine71),
  9257. TEST(testLine70),
  9258. TEST(testLine69),
  9259. TEST(testLine68h),
  9260. TEST(testLine68g),
  9261. TEST(testLine68f),
  9262. TEST(testLine68e),
  9263. TEST(testLine68d),
  9264. TEST(testLine68c),
  9265. TEST(testLine68b),
  9266. TEST(testLine68a),
  9267. TEST(testLine67),
  9268. TEST(testLine66),
  9269. TEST(testLine65),
  9270. TEST(testLine64),
  9271. TEST(testLine63),
  9272. TEST(testLine62),
  9273. TEST(testLine61),
  9274. TEST(testLine60),
  9275. TEST(testLine59),
  9276. TEST(testLine58),
  9277. TEST(testLine57),
  9278. TEST(testLine56),
  9279. TEST(testLine55),
  9280. TEST(testLine54),
  9281. TEST(testLine53),
  9282. TEST(testLine52),
  9283. TEST(testLine51),
  9284. TEST(testLine50),
  9285. TEST(testLine49),
  9286. TEST(testLine48),
  9287. TEST(testLine47),
  9288. TEST(testLine46),
  9289. TEST(testLine45),
  9290. TEST(testLine44),
  9291. TEST(testLine43),
  9292. TEST(testLine42),
  9293. TEST(testLine41),
  9294. TEST(testLine40),
  9295. TEST(testLine38),
  9296. TEST(testLine37),
  9297. TEST(testLine36),
  9298. TEST(testLine35),
  9299. TEST(testLine34),
  9300. TEST(testLine33),
  9301. TEST(testLine32),
  9302. TEST(testLine31),
  9303. TEST(testLine30),
  9304. TEST(testLine29),
  9305. TEST(testLine28),
  9306. TEST(testLine27),
  9307. TEST(testLine26),
  9308. TEST(testLine25),
  9309. TEST(testLine24a),
  9310. TEST(testLine24),
  9311. TEST(testLine23),
  9312. TEST(testLine22),
  9313. TEST(testLine21),
  9314. TEST(testLine20),
  9315. TEST(testLine19),
  9316. TEST(testLine18),
  9317. TEST(testLine17),
  9318. TEST(testLine16),
  9319. TEST(testLine15),
  9320. TEST(testLine14),
  9321. TEST(testLine13),
  9322. TEST(testLine12),
  9323. TEST(testLine11),
  9324. TEST(testLine10a),
  9325. TEST(testLine10),
  9326. TEST(testLine9),
  9327. TEST(testLine8),
  9328. TEST(testLine7b),
  9329. TEST(testLine7a),
  9330. TEST(testLine7),
  9331. TEST(testLine6),
  9332. TEST(testLine5),
  9333. TEST(testLine4),
  9334. TEST(testLine3b),
  9335. TEST(testLine3a),
  9336. TEST(testLine3),
  9337. TEST(testLine2),
  9338. TEST(testLine1),
  9339. };
  9340. static const size_t testCount = SK_ARRAY_COUNT(tests);
  9341. static TestDesc subTests[] = {
  9342. TEST(fuzz994s_3414),
  9343. TEST(fuzz994s_11),
  9344. };
  9345. static const size_t subTestCount = SK_ARRAY_COUNT(subTests);
  9346. static void (*firstSubTest)(skiatest::Reporter* , const char* filename) = nullptr;
  9347. static bool runSubTests = false;
  9348. static bool runSubTestsFirst = false;
  9349. static bool runReverse = false;
  9350. DEF_TEST(PathOpsSimplify, reporter) {
  9351. if (runSubTests && runSubTestsFirst) {
  9352. RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
  9353. }
  9354. RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
  9355. if (runSubTests && !runSubTestsFirst) {
  9356. RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
  9357. }
  9358. }