Îõ³h-ŽõÊÁ¤      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^ _ ` a b c d e f ghij k lmnop q r s t u v w x y z { | } ~  € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª« ¬ ­ ® ¯ ° ± ² ³ ´!µ!¶!·!¸!¹!º!»!¼!½!¾!¿!À!Á!Â!Ã!Ä"Å"Æ"Ç"È"É"Ê"Ë"Ì"Í"Î#Ï#Ð#Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù%Ú%Û%Ü%Ý%Þ%ß%à%á%â%ã%ä%å%æ%ç%è%é%ê%ë%ì%í%î%ï%ð%ñ%ò%ó%ô%õ%ö%÷%ø%ù%ú&û&ü&ý&þ&ÿ&€&�&‚&ƒ&„&…&†&‡&ˆ&‰&Š&‹&Œ&�&Ž&�&�&‘&’&“&”&•&–&—&˜&™&š&›&œ&�&ž&Ÿ& &¡&¢&£&¤&¥&¦&§&¨&©&ª&«&¬&­&®&¯&°&±&²&³&´&µ&¶&·&¸&¹'º'»'¼'½'¾'¿'À'Á'Â'Ã'Ä'Å'Æ'Ç'È'É'Ê'Ë'Ì'Í'Î'Ï'Ð'Ñ'Ò'Ó'Ô'Õ'Ö'×'Ø'Ù'Ú'Û'Ü'Ý'Þ'ß'à'á'â'ã'ä'å'æ'ç'è'é'ê'ë'ì'í'î'ï'ð'ñ'ò'ó'ô'õ'ö'÷'ø'ù'ú'û'ü'ý'þ'ÿ'€'�'‚'ƒ'„'…'†'‡'ˆ'‰'Š'‹'Œ'�'Ž'�'�'‘'’'“'”'•'–'—'˜'™'š'›'œ'�'ž'Ÿ' '¡'¢'£'¤'¥'¦'§'¨'©'ª'«'¬'­'®'¯'°'±'²'³'´'µ'¶'·'¸'¹'º'»'¼'½'¾'¿'À'Á'Â'Ã'Ä'Å'Æ'Ç'È'É'Ê'Ë'Ì'Í'Î'Ï'Ð'Ñ'Ò'Ó'Ô'Õ'Ö'×'Ø'Ù'Ú'Û'Ü'Ý'Þ'ß'à(á(â(ã(ä(å(æ(ç(è(é(ê(ë(ì(í(î(ï(ð(ñ(ò(ó(ô(õ(ö)÷)ø)ù)ú)û)ü)ý)þ)ÿ)€)�)‚)ƒ)„)…)†)‡)ˆ)‰)Š)‹)Œ)�)Ž)�)�)‘)’)“)”)•)–)—)˜)™)š)›)œ)�)ž)Ÿ) )¡)¢)£)¤)¥*¦*§*¨*©*ª*«*¬*­*®*¯*°*±*²*³*´*µ*¶*·+¸+¹+º+»+¼+½+¾+¿+À+Á+Â+Ã+Ä+Å+Æ+Ç+È+É+Ê+Ë+Ì+Í+Î+Ï+Ð+Ñ+Ò+Ó+Ô+Õ+Ö+×+Ø+Ù+Ú+Û+Ü+Ý+Þ+ß+à+á+â+ã+ä+å+æ+ç+è+é+ê+ë+ì+í+î+ï+ð+ñ+ò+ó+ô+õ+ö+÷+ø+ù+ú+û+ü+ý+þ+ÿ+€ +� +‚ +ƒ +„ +… +† +‡ +ˆ +‰ +Š +‹ +Œ +� +Ž +� +� +‘ +’ +“ +” +• +– +— +˜ +™ +š +› +œ +� +ž +Ÿ +  +¡ +¢ +£ +¤ +¥ +¦ +§ +¨ +© +ª +« +¬ +­ +® +¯ +° +± +² +³ +´ +µ +¶ +· +¸ +¹ +º +» +¼ +½ +¾ +¿ ,À ,Á - à Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ .© .ª .« .¬ .­ .® .¯ .° .± .² .³ .´ .µ .¶ .· .¸ .¹ .º .» .¼ .½ .¾ /¿ /À /Á / /à /Ä /Å /Æ /Ç 0È 0É 0Ê 0Ë 0Ì 0Í 0Î 0Ï 0Ð 0Ñ 0Ò 0Ó 0Ô 0Õ 0Ö 0× 0Ø 0Ù 0Ú 0Û 0Ü 0Ý 0Þ 0ß 0à 1á 1â 1ã 2ä 3å 3æ 4ç 4è 4é 4ê 4ë 4ì 4í 4î 5ï 5ð 5ñ 5ò 5ó 5ô 5õ 5ö 5÷ 5ø 5ù 5ú 5û 5ü 5ý 5þ 5ÿ 5€ 5� 5‚ 5ƒ 5„ 5… 5† 5‡ 5ˆ 5‰ 5Š 5‹ 5Œ 5� 5Ž 5� 5� 5‘ 5’ 5“ 5” 5• 5– 5— 5˜ 5™ 5š 5› 5œ 6� 6ž 6Ÿ 6  6¡ 7¢ 7£ 7¤ 7¥ 7¦ 7§ 7¨ 7© 7ª 7« 7¬ 7­ 7® 7¯ 7° 7± 7² 7³ 7´ 7µ 7¶ 7· 7¸ 7¹ 7º 7» 7¼ 7½ 7¾ 7¿ À Á Â Ã Ä Å 8Æ 8Ç 8È 8É 8Ê 8Ë 8Ì 8Í 8Î 8Ï 8Ð 8Ñ 8Ò 8Ó 8Ô 8Õ 8Ö 8× 8Ø 8Ù 8Ú 8Û 8Ü 8Ý 8Þ 8ß 8à 8á 8â 8ã 8ä 8å 8æ 8ç 8è 8é 8ê 8ë 8ì 8í 8î 8ï 8ð 8ñ 8ò 8ó 8ô 8õ 8ö 8÷ 8ø 8ù 8ú 8û 8ü 8ý 8þ 8ÿ 8€ 8� 8‚ 8ƒ 8„ 8… 8† 8‡ 8ˆ 8‰ 8Š 8‹ 8Œ 8� 8Ž 8� 8� 8‘ 8’ 8“ 8” 8• 8– 8— 8˜ 8™ 8š 8› 8œ 8� 8ž 8Ÿ 8  8¡ 8¢ 8£ 8¤ 8¥ 8¦ 8§ 8¨ 8© 8ª 8« 8¬ 8­ 8® 8¯ 8° 8± 8² 8³ 8´ 8µ 8¶ 8· 8¸ 8¹ 8º 8» 8¼ 8½ 8¾ 8¿ 8À 8Á 8 8à 8Ä 8Å 8Æ 8Ç 9È 9É 9Ê 9Ë 9Ì 9Í 9Î 9Ï 9Ð 9Ñ 9Ò 9Ó 9Ô 9Õ 9Ö 9× 9Ø 9Ù 9Ú 9Û 9Ü 9Ý 9Þ 9ß 9à :á :â :ã :ä :å :æ :ç :è :é :ê ;ë ;ì ;í ;î ;ï ;ð ;ñ ;ò ;ó ;ô ;õ ;ö ;÷ ;ø ;ù ;ú ;û ;ü ;ý ;þ ;ÿ ;€ ;� ;‚ ;ƒ ;„ ;… ;† ;‡ ;ˆ ;‰ ;Š ;‹ ;Œ ;� ;Ž ;� ;� ;‘ ;’ ;“ ;” ;• ;– ;— ;˜ ;™ ;š ;› ;œ ;� ;ž ;Ÿ ;  ;¡ ;¢ ;£ ;¤ ;¥ ;¦ ;§ ;¨ ;© ;ª ;« ;¬ ;­ ;® ;¯ ;° ;± ;² ;³ ;´ ;µ ;¶ ;· ;¸ ;¹ ;º ;» ;¼ ;½ ;¾ ;¿ ;À ;Á ; ;à ;Ä ;Å ;Æ ;Ç ;È ;É ;Ê ;Ë ;Ì ;Í ;Î ;Ï ;Ð ;Ñ ;Ò ;Ó ;Ô ;Õ ;Ö ;× ;Ø ;Ù ;Ú ;Û ;Ü ;Ý ;Þ ;ß ;à ;á <â <ã <ä <å <æ <ç <è <é <ê <ë <ì <í <î <ï <ð <ñ <ò <ó <ô <õ <ö <÷ <ø <ù <ú =û =ü =ý =þ =ÿ =€=�=‚=ƒ=„=…=†=‡=ˆ=‰=Š=‹=Œ=�=Ž=�=�=‘=’=“=”=•=–=—=˜=™=š=›=œ=�=ž=Ÿ= =¡=¢=£=¤=¥=¦=§=¨=©>ª>«>¬>­>®>¯>°?±?²@³@´@µ@¶@·@¸@¹@º@»@¼@½@¾@¿@À@Á@Â@Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@Ð@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@á@â@ã@ä@å@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@ò@ó@ô@õ@ö@÷AøAùAúAûAüAýAþAÿA€A�A‚AƒA„A…A†A‡AˆA‰AŠA‹AŒA�AŽA�A�A‘A’A“A”A•A–A—A˜A™AšA›AœA�AžAŸA A¡A¢A£A¤A¥A¦A§A¨A©AªA«A¬A­A®A¯A°A±A²A³A´AµA¶A·A¸A¹AºA»A¼A½A¾A¿AÀAÁAÂAÃAÄAÅAÆAÇAÈAÉAÊAËAÌAÍAÎAÏAÐAÑAÒAÓAÔAÕAÖA×AØAÙAÚAÛAÜAÝAÞAßAàAáAâAãAäAåAæAçAèAéAêAëAìAíAîAïAðAñAòAóAôAõAöA÷AøAùAúAûAüAýAþAÿA€A�A‚AƒA„A…A†A‡AˆA‰AŠA‹AŒA�AŽA�A�A‘A’A“A”A•A–A—A˜A™AšA›AœA�AžAŸA A¡A¢A£A¤A¥A¦A§A¨A©AªA«A¬A­A®A¯A°A±A²A³A´AµA¶A·A¸A¹AºA»A¼A½A¾A¿AÀAÁAÂAÃAÄAÅAÆAÇAÈAÉAÊAËAÌAÍAÎAÏAÐAÑAÒAÓAÔAÕAÖA×AØAÙAÚAÛAÜAÝAÞAßAàAáAâAãAäAåAæAçAèAéAêAëAìAíAîAïAðAñAòAóAôAõAöA÷AøAùAúAûAüAýAþAÿA€A�A‚AƒA„A…A†A‡AˆA‰AŠA‹AŒA�AŽA�A�A‘A’A“A”A•A–A—A˜A™AšA›AœA�AžAŸA A¡A¢B£B¤B¥B¦B§B¨B©BªB«B¬B­B®B¯B°B±B²B³B´BµB¶B·B¸B¹BºB»B¼B½B¾B¿BÀBÁBÂBÃBÄBÅBÆBÇBÈBÉBÊBËBÌBÍBÎBÏBÐBÑBÒBÓBÔBÕBÖB×BØBÙBÚBÛBÜBÝBÞBßBàBáBâBãBäBåBæBçBèBéBêBëBìBíBîBïCðCñCòCóCôCõCöC÷CøCùCúCûCüCýCþCÿC€C�C‚CƒC„C…C†C‡CˆC‰CŠC‹CŒC�CŽC�C�C‘C’C“C”C•C–C—C˜C™CšC›CœC�CžCŸC C¡C¢C£C¤C¥C¦C§C¨C©CªC«C¬C­C®C¯C°C±C²C³C´CµC¶C·C¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌDÍDÎDÏDÐDÑDÒDÓDÔDÕDÖD×DØDÙDÚDÛDÜDÝDÞDßDàDáDâDãDäDåDæDçDèDéDêDëDìDíDîDïDðEñFòGóGôGõGöG÷GøGùGúGûGüGýGþGÿG€G�G‚GƒG„G…G†H‡HˆI‰IŠJ‹JŒJ�JŽJ�J�J‘J’J“J”J•J–J—J˜J™JšK›KœK�KžKŸK K¡K¢K£K¤K¥K¦K§K¨K©KªK«K¬K­L®L¯L°L±L²L³A´AµA¶A·A¸A¹AºA»A¼A½A¾A¿AÀAÁAÂAÃAÄAÅAÆAÇAÈAÉAÊAËAÌAÍAÎAÏAÐAÑAÒAÓAÔAÕAÖA×AØAÙAÚAÛAÜAÝAÞAßAàAáAâAãAäAåAæAçAèAéAêAëAìMíMîMïMðMñMòMóMôMõMöM÷NøNùNúNûNüNýNþNÿN€N�N‚NƒN„N…N†N‡NˆN‰NŠN‹NŒN�NŽN�N�N‘N’N“N”N•N–N—N˜N™NšN›NœN�NžNŸN N¡N¢N£N¤N¥N¦N§N¨N©NªO«O¬O­O®O¯O°O±O²O³O´OµO¶O·O¸O¹OºO»O¼O½O¾O¿OÀOÁOÂOÃOÄOÅOÆOÇOÈOÉOÊOËOÌOÍOÎOÏOÐOÑOÒOÓOÔOÕPÖP×PØPÙPÚPÛPÜQÝQÞQßQàQáQâRãSäSåSæSçSèSéSêSëSìSíSîSïSðSñSòSóSôSõSöS÷SøSùSúSûSüSýSþSÿS€S�S‚SƒS„S…S†S‡SˆS‰SŠS‹SŒS�SŽS�S�S‘S’S“S”S•S–S—S˜S™SšS›SœS�SžSŸS S¡S¢S£S¤S¥S¦S§S¨S©SªS«S¬S­S®S¯S°S±S²S³S´SµS¶S·S¸S¹SºS»S¼S½S¾S¿SÀSÁSÂSÃSÄSÅSÆSÇSÈSÉSÊSËSÌSÍSÎSÏSÐSÑSÒSÓSÔSÕSÖS×SØSÙSÚSÛSÜSÝSÞSßSàSáSâSãSäSåSæTçTèTéTêTëTìTíTîTïTðTñTòTóTôTõTöT÷TøTùTúTûTüTýTþTÿT€T�U‚:ƒ:„:…:†:‡:ˆ:‰:Š:‹:Œ:�:Ž:�U�:‘:’:“:”:•:–:—:˜:™:š:›:œ:�:ž:Ÿ: :¡:¢:£:¤:¥:¦:§:¨:©:ªU«U¬U­U®U¯U°U±U²U³U´UµU¶U·U¸U¹UºU»U¼U½U¾U¿UÀUÁUÂVÃVÄVÅVÆWÇWÈWÉXÊXË Ì Í Î Ï Ð ÑYÒZÓ[Ô[Õ[Ö[×[Ø[Ù[Ú[Û[Ü[Ý[Þ[ß[à[á[â[ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô]õ]ö]÷]ø]ù]ú]û]ü]ý]þ]ÿ]€]�]‚]ƒ]„]…]†]‡]ˆ]‰]Š]‹]Œ]�]Ž]�]�]‘]’]“]”]•]–]—]˜]™]š]›]œ]�]ž]ŸI I¡I¢I£I¤I¥I¦I§I¨I©IªI«I¬I­I®I¯I°I±I²I³I´IµI¶I·I¸I¹IºI»I¼I½I¾I¿IÀIÁIÂIÃIÄIÅIÆIÇIÈIÉIÊIËIÌIÍIÎIÏIÐIÑIÒIÓIÔIÕIÖI×^Ø^Ù^Ú^Û^Ü^Ý^Þ^ß^à^á_â_ã_ä_å_æ_ç_è_é_ê_ë_ì_í_î_ï_ð_ñ_ò_ó_ô_õ_ö_÷`øaùaúaûaüaýaþaÿa€a�a‚aƒa„a…a†a‡aˆb‰cŠc‹cŒc�cŽc�c�c‘c’c“c”c•c–c—c˜c™cšc›cœc�cžcŸc c¡c¢c£cd3.18.2.0”None?BCDEFEFDBCGeHe NoneÅÇ=I2Applying module substitutions to semantic objects.IJIJKf1 1$Lf/ /*Mf Nf# #Of' '#Pf3 3'gNone<=>¤ An empty ¥.¦Every Module in scope at a § is annotated with the ¨ it comes from.©ÈINVARIANT: entries for ModuleName m, have msrc_module is OpenModuleVar m¥A ¥ì describes the modules and requirements that are in-scope as we are processing a Cabal package. Unlike a  ModuleShape6, there may be multiple modules in scope at the same §Ö; this is only an error if we attempt to use those modules to fill a requirement. A ¥ can influence the  ModuleShape via a reexport.ªÈDescription of where a module participating in mixin linking came from.«An ¬4, annotated with where it came from in a Cabal file.­¤®¯¦©¥°±²ª³´µ¶·¸«¹ºhüü»hü ü¼h„ „/½hü ü+None?ÂQÁThe default module shape, with no provisions and no requirements.SA SÌ describes the provisions and requirements of a library. We can extract a S from an ¾.QRSTUVSTUVQRWi# #Xi! !Yi!!Zi& &[i!!\i$ $ None?]^_`abc`abc_^]dj ejfjkNoneï¿The exception thrown by À to terminate a thread.ÁAsync, but based on Â, as we don't depend on stm.à Returns the Ä" of the thread running the given Å.ÆÁSpawn an asynchronous action in a separate thread, and pass its AsyncÖ handle to the supplied function. When the function returns or throws an exception, Ç is called on the Async. ‚withAsync action inner = mask $ \restore -> do a <- async (restore action) restore (inner a) `finally` uninterruptibleCancel aThis is a useful variant of async that ensures an Async( is never left running unintentionally.ÇNote: a reference to the child thread is kept alive until the call to Æ returns, so nesting many Æ calls requires linear memory.ȘWait for an asynchronous action to complete, and return its value. If the asynchronous action threw an exception, then the exception is re-thrown by È. wait = atomically . waitSTMÉÀWait for an asynchronous action to complete, and return either Left e# if the action raised an exception e, or Right a if it returned a value a. %waitCatch = atomically . waitCatchSTMÀ.Cancel an asynchronous action by throwing the AsyncCancelled' exception to it, and waiting for the Å' thread to quit. Has no effect if the Å has already completed. Âcancel a = throwTo (asyncThreadId a) AsyncCancelled <* waitCatch a Note that À) will not terminate until the thread the Å, refers to has terminated. This means that ÀÕ will block for as long said thread blocks when receiving an asynchronous exception.For example, it could block if:ÓIt's executing a foreign call, and thus cannot receive the asynchronous exception;æIt's executing some cleanup handler after having received the exception, and the handler is blocking.ÇCancel an asynchronous actionThis is a variant of À, but it is not interruptible. ÀÇÈÉÆÊ¿ËÁÃÌl� �"ÍlŒŒ Îl�� mNone™Ï:Copies a file to a new destination. Often you should use Ð instead.ÐLike Ï©, but does not touch the target if source and destination are already byte-identical. This is recommended as it is useful for time-stamp based recompilation avoidance.ÑþChecks if two files are byte-identical. Returns False if either of the files do not exist or if files are of different size.ÒÏÐÓÑÔhg Safe-InferredAAn Safe-InferredZÕsetEnv name value, sets the specified environment variable to value.ÖÕרo Safe-InferredÙpNoneiÚÛÜq Safe-InferredüÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ  Safe-InferredªjßEnable process jobs to ensure accurate determination of process completion in the presence of exec(3) on Windows.9Unfortunately the process job support is badly broken in process‘ releases prior to 1.6.9, so we disable it in these versions, despite the fact that this means we may see sporadic build failures without jobs.ÙOn Windows 7 or before the jobs are disabled due to the fact that processes on these systems can only have one job. This prevents spawned process from assigning jobs to its own children. Suppose process A spawns process B. The B process has a job assigned (call it J1) and when it tries to spawn a new process C the C automatically inherits the job. But at it also tries to assign a new job J2 to C since it doesn™@t have access J1. This fails on Windows 7 or before.krs= with process jobs enabled when appropriate, and defaulting  delegate_ctlc to Ð.jkkj Safe-Inferred€l$This is a more elaborate version of tu, which not only substitute @foo with the contents of file fooï, but performs such substitution recursively. In doing so we keep closer to the reference implementation of  expandargv in argv.c from binutilsÓ, although this additional functionality likely remains unused by Haskell tooling.l@l@ Safe-InferredÛàÎn™Give the *parent* of the person who invoked this; so it's most suitable for being called from a utility function. You probably want to call this using ="; otherwise it's not very useful.no?>=mm=o?>n  Safe-Inferredpp None?ÕqReturn the current time as t.r!Return age of given file in days.s+Return modification time of the given file.téFile's modification time, represented internally as a 64-bit unsigned integer in the Windows UTC format.×Convert Ø to t.qrsttsrquv vv%wv')xvyv+.zv {v |v w(c) Sven Panne 2002-2005/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.orgportable Safe-Inferred(Ø8 ÙñProcess the command-line, and return the list of values that matched (and those that didn't). The arguments are:The order requirements (see Ú)The option descriptions (see Û):The actual command line arguments (presumably got from xy).Ùë returns a triple consisting of the option arguments, a list of non-options, and a list of error messages.ÜThis is almost the same as Ù”, but returns a quadruple consisting of the option arguments, a list of non-options, a list of unrecognized options, and a list of error messages.Ý�Return a string describing the usage of a command, derived from the header (first argument) and the options described by the second argument.ÞïDescribes whether an option takes an argument or not, and if so how the argument is parsed to a value of type a.=Compared to System.Console.GetOpt, we allow for parse errors.ßno argument expectedàoptional argumentáoption requires argumentÚ-What to do with options following non-optionsâ*freely intersperse options and non-optionsã+no option processing after first non-optionäÑPretty printing of long options. * With required arguments can be given as: 3--with-compiler=PATH (but not --with-compiler PATH) This is displayed as: --with-compiler=PATH= * With optional but default arguments can be given as: )--jobs or --jobs=NUM (but not --jobs NUM) This is displayed as:  --jobs[=NUM]åÒPretty printing of short options. * With required arguments can be given as: #-w PATH or -wPATH (but not -w=PATH) This is displayed as: -w PATH or -wPATH= * With optional but default arguments can be given as: &-j or -jNUM (but not -j=NUM or -j NUM) This is displayed as: -j[NUM] ÙÜÝÞßàáÚâãÛæçzÉ Éèz: :{Ben Gamari 2015-2019cabal-devel@haskell.orgportable Safe-Inferredué*A simple parser supporting quoted strings.ëPlease be aware that this will only split strings when seeing whitespace outside of quotation marks, i.e, "foo"bar baz"qux quux" will be converted to ["foobar bazqux", "quux"].4This behavior can be useful when parsing text like ,"ghc-options: -Wl,"some option with spaces"", for instance.é|Francesco Ariis 2022BSD3cabal-devel@haskell.orgportableNone3àçb}+Filter Package Check by CheckExplanationID.~*Filter Package Check by Check explanation string.5Would Hackage refuse a package because of this error?€A one-word identifier for each CheckExplanation.�Pretty printing •.êWhich stanza does ‚ refer to?‚Explanations of  PackageCheck's errors/warnings.“Identifier for the specific ‚í. This ensures `--ignore` can output a warning on unrecognised values. žL N.B.: should be kept in sync with ‚.•-Results of some kind of failed package check.ÿThere are a range of severities, from merely dubious to totally insane. All of them come with a human readable explanation. In future we may augment them with more machine readable explanations, for example to help an IDE suggest automatic corrections.–ÿThis package description is no good. There's no way it's going to build sensibly. This should give an error at configure time.—¤A problem that is likely to affect building the package, or an issue that we'd like every package author to be aware of, even if the package is never distributed.˜ÒAn issue that is OK in the author's environment but is almost certain to be a portability problem for other environments. We can quite legitimately refuse to publicly distribute packages with these problems.™¤An issue that might not be a problem for the package author but might be annoying or detrimental when the package is distributed to users. We should encourage distributed packages to be free from these issues, but occasionally there are justifiable reasons so we cannot ban them entirely.šøLike PackageDistSuspicious but will only display warnings rather than causing abnormal exit when you run 'cabal check'.ë:Which language are we referring to in our warning message?ìBroken ¯Ê instance (not bijective with Read), alas external packages depend on it.íPretty printing ê.îPretty printing ‚.ïPretty printing ë.}Original checks. IDs to omit.~Original checks.IDs to omit, in String format.ªð}~€�êñòóôõö‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›ë÷øù}Ç"Ç)ú}ÇÇ û}† †ü}Ÿ Ÿý}Ç Çþ}Ø Øÿ}— —€}††�}ŸŸ‚}Çǃ}ØØ„}——…}†††}ŸŸ‡}ÇÇì}å åˆ}——Jose Iborra 2008BSD3cabal-devel@haskell.orgportableNoneç.œ"Parser with simple error reporting ¡¢Ÿ£œ�žœ�žŸ ¡¢£¤~) )None_¥ÏDesugar a "build-tools" entry into a proper executable dependency if possible.*An entry can be so desugared in two cases: ŒThe name in build-tools matches a locally defined executable. The executable dependency produced is on that exe in the current package.×The name in build-tools matches a hard-coded set of known tools. For now, the executable dependency produced is one an executable in a package of the same, but the hard-coding could just as well be per-key.The first cases matches first.¦Same as ¥×, but requires atomic information (package name, executable names) instead of a whole ‰.§ÄGet internal "build-tool-depends", along with internal "build-tools"ÞThis is a tiny function, but used in a number of places. The same restrictions that apply to © also apply to this function.¨íGet everything from "build-tool-depends", along with entries from "build-tools" that we know how to desugar.ÁThis should almost always be used instead of just accessing the Š field directly.©ÁDoes the given executable dependency map to this current package?8This is a tiny function, but used in a number of places.'This function is only sound to call on ‹�s from the given package description. This is because it just filters the package names of each dependency, and does not check whether version bounds in fact exclude the current package, or the referenced components in fact exist in the current package.ÀThis is OK because when a package is loaded, it is checked (in €ý) that dependencies matching internal components do indeed have version bounds accepting the current package, and any depended-on component in the current package actually exists. In fact this check is performed by gathering the internal tool dependencies of each component of the package according to this module, and ensuring those properties on each so-gathered dependency.œversion bounds and components of the package are unchecked. This is because we sanitize exe deps so that the matching name implies these other conditions.¥¦§¨©¦¥¨©§ Safe-Inferredçd«ÇReturns the object extension for the given build way (e.g. "dyn_o" for ­ on ELF)ª«¬­®¯°¬­®¯°«ª±� " &²� ³�  ´�  µ�  2011, Dan Knappcabal-devel@haskell.orgportable Safe-Inferredʶ™Takes a dialect of C and whether code is intended to be passed through the preprocessor, and returns a filename extension for containing that code.·¬A list of all file extensions which are recognized as possibly containing some dialect of C code. Note that this list is only for source files, not for header files.¸‹Infers from a filename's extension the dialect of C which it contains, and whether it is intended to be passed through the preprocessor.¹¢Represents a dialect of C. The Monoid instance expresses backward compatibility, in the sense that 'mappend a b' is the least inclusive dialect which both a and b! can be correctly interpreted as.¶·¸¹º»¼½¹º»¼½·¶¸¾‚À À¿‚ ÂÀ‚Æ ÆÁ‚ÀÀ8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-InferredÆïZ Â#Types that represent boolean flags.Ä1All flags are monoids, they come in two flavours:  list flags eg !--ghc-option=foo --ghc-option=bar&gives us all the values ["foo", "bar"] singular value flags, eg: --enable-foo --disable-foogives us Just False So, this Äó type is for the latter singular kind of flag. Its monoid instance gives us the behaviour where it starts out as Å' and later flags override earlier ones.Isomorphic to Ë a.ÇWraps a value in Ä.ÈExtracts a value from a Ä, and throws an exception on Å.ÉExtracts a value from a Ä#, and returns the default value on Å.Ê Converts a Ä value to a Ë value.ËCabalPushes a function through a Ä& value, and returns a default if the Ä value is Å.Ì Converts a Ä value to a list.ÍReturns Ð only if every Ä Î value is Flag True, else Ï.Î Converts a Ë value to a Ä value.ÏMerge the elements of a list Ä with another list Ä.ÆÅÍËÌÊÈÉÎÏÇÂÃÄÄÆÅÍÇÈÉËÊÌÎÏÂÃЃü ü#Isaac Jones, Simon Marlow 2003-2004=BSD3 portions Copyright (c) 2007, Galois Inc.cabal-devel@haskell.orgportableNone?a ÑA piece of a globbing patternÒ A wildcard *ÓA literal string dirABCÔA union of patterns, e.g. dir {a,*.txt,c}...Õ6A single directory or file component of a globbed pathÖ!A filepath specified by globbing.×  dirGlob/ globØ**/ glob, where **Ë denotes recursively traversing all directories and matching filenames on  glob.Note that the  globÁ portion can only match on filenames, not paths, so for example **foo*.txt is not supported.Ù A file glob.ÚTrailing dir; a glob ending in /. ÛÜÖרÚÙÑÓÔÒÕ ÖרÚÙÕÑÓÔÒÛÜ Ý„= =Þ„< <ß„Í Íà„ Âá„- -â„, ,ã„* *ä„**å„**æ„: :ç„::è„::None? ²òÁA description of a file (or set of files) to monitor for changes.ŠWhere file paths are relative they are relative to a common directory (e.g. project root), not necessarily the process current directory.ûe.g. "/", "c:" or result of  takeDriveýÄA file path specified by globbing, relative to some root directory.ÿµMonitor a single file for changes, based on its modification time. The monitored file is considered to have changed if it no longer exists or if its modification time has changed.€ÙMonitor a single file for changes, based on its modification time and content hash. The monitored file is considered to have changed if it no longer exists or if its modification time and content hash have changed.�ïMonitor a single non-existent file for changes. The monitored file is considered to have changed if it exists.‚óMonitor a single file for existence only. The monitored file is considered to have changed if it no longer exists.ƒ¿Monitor a single directory for changes, based on its modification time. The monitored directory is considered to have changed if it no longer exists or if its modification time has changed.„úMonitor a single non-existent directory for changes. The monitored directory is considered to have changed if it exists.…ýMonitor a single directory for existence. The monitored directory is considered to have changed only if it no longer exists.†ÂMonitor a single file or directory for changes, based on its modification time. The monitored file is considered to have changed if it no longer exists or if its modification time has changed.‡œMonitor a set of files (or directories) identified by a file glob. The monitored glob is considered to have changed if the set of files matching the glob changes (i.e. creations or deletions), or for files if the modification time and content hash of any matching file has changed.ˆÕMonitor a set of files (or directories) identified by a file glob for existence only. The monitored glob is considered to have changed if the set of files matching the glob changes (i.e. creations or deletions).‰ÞCreates a list of files to monitor when you search for a file which unsuccessfully looked in notFoundAtPaths before finding it at  foundAtPath.Š Similar to ‰?, but also instructs us to monitor the hash of the found file.þwhat the glob is relative tothe glob#ƒ…ÿ‚‡ˆ€Š†‰„�ùüúûòóôö÷õøéêëìíîðïñýþÖ#ýþùüúûÖòóôö÷õøíîðïñéêëìÿ€�‚ƒ„…†‡ˆ‰Š‹…Ñ ÑŒ…Ì Ì�…Æ Æ!Ž…Å Å�…Å Å�… ‘…< <’…; ;“…ï ï$”…ë ë •…ð ð#–…ì ì—…î î$˜…ê ê ™…Û Ûš…ÛÛ›…ÛÛœ…è è�…èèž…è蟅â â …ââ¡…â⢅9 9£…99¤…99¥…à æ…Ãç…Ãà Safe-Inferred?D©The $prefix path variableªThe $bindir path variable«The $libdir path variable¬The  $libsubdir path variable­The  $dynlibdir path variable®The $bytecodelibdir path variable¯The $datadir path variable°The  $datasubdir path variable±The $docdir path variable²The $htmldir path variable³The $pkg package name path variable´The $version package version path variableµThe $pkgid package Id path variable, eg foo-1.0¶The $libname path variable·"The compiler name and version, eg  ghc-6.6.1¸The operating system name, eg windows or linux¹The CPU architecture name, eg i386 or x86_64ºThe compiler's ABI identifier,»%The optional ABI tag for the compiler¼+The executable name; used in shell wrappers½$The name of the test suite being run¾,The result of the test suite being run, eg pass, fail, or error.¿#The name of the benchmark being runÀÁ¨»º¹¿ª®·¯°±­¼²¶«¬¸µ³´©½¾ÀÁ¨»º¹¿ª®·¯°±­¼²¶«¬¸µ³´©½¾Ã†å å#Ä†Ì Ì#Å†Ê Ê)Æ†É É%Ç†È È%Ȇ� �ɆРŠÊ† "ˆ ̆ ͆ Î†Ï†Ð†Æ ÆÑ†ÆÆÒ†ÆÆIsaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableNone#Determine if the parallelism strategy enables parallel builds.£àUsed by Cabal to indicate that we want to use this specific semaphore (created by cabal-install)¤ÈUsed by cabal-install to say we want to create a semaphore with N slots.¥×How to control parallelism, e.g. a fixed number of jobs or by using a system semaphore.¦ÂCompile in parallel with the given number of jobs (`-jN` or `-j`).§ÅNo parallelism (neither `-jN` nor `--semaphore`, but could be `-j1`).¨=`--semaphore`: use a system semaphore to control parallelism.¢£¤¥¦§¨¥¦§¨£¤¢©� .ª�  None ?ÐÞ!«The «Ô contains all the information necessary to build a specific target (e.g., componentmodule4file) in a package. In principle, one can get the 3 from a á and LocalBuildInfoÀ, but it is much more convenient to have the component in hand.«¬­®«¬­®¯�! !°� ±�$ $²�³�" "! Safe-Inferred+,ÛÝÞà6 ´Cabal1Phantom-typed GADT representation of the mode of », containing no other data.·Cabal¸» Wrapper for ‘’Note$: This operation uses lazy I/O. Use Œ× to force all data to be read and consequently the internal file handle to be closed.»CabaláRepresents either textual or binary data passed via I/O functions which support binary/text mode¼2How Text gets encoded is usually locale-dependent.½2Raw binary which gets read/written in binary mode.¾$Applies a function polymorphic over ´ to an » value.¿ Test whether » is emptyÀCabal» Wrapper for ‘“ and ‘”This is the dual operation to ¸., and consequently the handle is closed with ¢.Note: this performs lazy-IO. À¿¾»½¼´¶µ·¸º¹ »½¼´¶µ·¸º¹¾¿ÀÁ•) )奃 É(ÕÁ Á)" Safe-Inferred#ÛàÕÄA shorthand for building up Ëös >>> JsonObject [ "a" .= JsonNumber 42, "b" .= JsonBool True ] JsonObject [("a",JsonNumber 42),("b",JsonBool True)]Å Convert a Æ into a  ByteString ÄÅÆÇÈÉÊËÌ ÆÇÈÉÊËÌÄÅÍ– # Safe-Inferred0ÎMonadic variant of  mapAccumL.ÎÎÏ— -З +$ Safe-Inferred<ÑFail the computation.Ò Consume a Ô calculation. Much like ¸Ð for lists but with two base cases, one for a final result and one for failure.Eg to convert into a simple ° result use: $foldProgress (flip const) Left RightÓEmit a step and then continue.ÔüA type to represent the unfolding of an expensive long running calculation that may fail (or maybe not expensive, but complicated!) We may get intermediate steps before the final result which may be used to indicate progress and/or logging messages.ÀTODO: Apply Codensity to avoid left-associativity problem. See  4http://comonad.com/reader/2011/free-monads-for-less/ and Èhttp://blog.ezyang.com/2012/01/problem-set-the-codensity-transformation/ÑÒÓÔÔÓÑÒÕ˜à Ã9Ö˜? ?*ט ؘ; ;$™ Safe-Inferredäç0 £5Test if two points are in the same equivalence class.¤6Return the canonical element of an equivalence class ¥.¦2Create a fresh equivalence class with one element.§çUnify two equivalence classes, so that they share a canonical element. Keeps the descriptor of point2.¥‚A variable which can be unified; alternately, this can be thought of as an equivalence class with a distinguished representative.¨"The internal data structure for a ¥Þ, which either records the representative element of an equivalence class, or a link to the ¥. that actually stores the representative type.©Read the current value of ¥.ª)Flatten any chains of links, returning a ¥8 which points directly to the canonical representation.«Mutable write to a ¥£¤¦§¥¬š % Safe-Inferred?ßCabal ÙÛÚÝàÜßÞáåãâä áåãâäÙÛÚÝàÜßÞæ› #ç› è› é› "ê› ë› ì› í›î› ï›"$ð›&)ñ›+/ò›18ó› ô›  õ›  ö› " $÷› & )ø› + /ù› 1 8&Ian Lynagh 2007BSD3cabal-devel@haskell.orgportableNone?ó ž%ú5Verbosity information which can be passed by the CLI.üÂHandles to use for logging (e.g. log to stdout, or log to a file).€5Rich verbosity, used for the Cabal library interface.†"The handle used for normal output. With the +stderr* verbosity flag, this is the error handle.‡+The verbosity handle used for error output.ŒIn Œ mode, we should not print anything unless an error occurs.�&Print stuff we want to see by default.Ž&Be more verbose about what's going on.�ÉNot only are we verbose ourselves (perhaps even noisier than when being Ž3), but we tell everything we run to be verbose too.�#Increase verbosity level, but stay Œ if we are.‘*Make sure the verbosity level is at least Ž , but stay Œ if we are.’#Decrease verbosity level, but stay � if we are.“Numeric verbosity level 0..3: 0 is Œ, 3 is �.—/Turn on verbose call-site printing when we log.˜0Turn on verbose call-stack printing when we log.™Turn on -----BEGIN CABAL OUTPUT-----É markers for output from Cabal (as opposed to GHC, or system dependent).šÁTurn off marking; useful for suppressing nondeterministic output.›'Disable line-wrapping for log messages.­Mark the verbosity as quiet.œ$Turn on timestamps for log messages.�%Turn off timestamps for log messages.žCabalSwitch logging to ®.ŸCabalSwitch logging to ¯. #Turn off warnings for log messages.°,Helper function for flag enabling functions.±-Helper function for flag disabling functions.¡Turn off all flags.£0Test if we should output call sites when we log.¤1Test if we should output call stacks when we log.¥!Test if we should output markers.¦3Test if line-wrapping is disabled for log messages.§Test if we had called ’ on the verbosity.¨0Test if we should output timestamps when we log.©CabalTest if we should output to ® when we log.ª.Test if we should output warnings when we log.²+Helper function for flag testing functions.®Parser verbosity-explicitEitherParsec parsecVerbosity "normal"ÎRight (VerbosityFlags {vLevel = Normal, vFlags = fromList [], vQuiet = False})6explicitEitherParsec parsecVerbosity "normal+nowrap "ÕRight (VerbosityFlags {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False})ÀexplicitEitherParsec parsecVerbosity "normal+nowrap +markoutput"áRight (VerbosityFlags {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})ÁexplicitEitherParsec parsecVerbosity "normal +nowrap +markoutput"áRight (VerbosityFlags {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})?explicitEitherParsec parsecVerbosity "normal+nowrap+markoutput"áRight (VerbosityFlags {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})ØexplicitEitherParsec parsecVerbosity "deafening+nowrap+stdout+stderr+callsite+callstack"õRight (VerbosityFlags {vLevel = Deafening, vFlags = fromList [VCallStack,VCallSite,VNoWrap,VStderr], vQuiet = False})Note:& this parser will eat trailing spaces.6�„”“£¤¥ª¦§©¨’‘‰‹Š��ˆ•–ŒŽ—˜¢™¡Ÿ� ›žœš†‡…€�ƒ‚úûüýþÿáåãâä6€�ƒ‚üýþÿ„áåãâä…†‡Š‰ˆúû‹‘Œ�Ž��’§“”•–¡¢—˜£¤™¥š›¦œ¨�ž©Ÿ ª«œ± ±%¬œ¯ ¯!­œ“ “®œ� �¯œ« «#°œª ª±œ© ©²œÃ óœÂ ´œï ﵜ„ „¶œ„„·œ„„ ¸œ„"„$'None !+,12359?ÁÃÅÆÇÐÕÛÝÞàçèïóø¯>³#A token constructor used to define …= instances on types that involve existential quantification.¹ÅA wrapper used to pass evidence of a constraint as an explicit value.»ÜThe rule command together with the result of the (optional) dynamic dependency computation.¼/Only the (optional) dynamic dependency command.½ÄBoth the rule command and the (optional) dynamic dependency command.¾/The result of a dynamic dependency computation.ÁA dynamic dependency command.´‘A placeholder for a command that has been omitted, e.g. when we don't care about serialising/deserialising one particular command in a datatype.ÄCommands to execute a rule:6for a rule with static dependencies, a single command,þfor a rule with dynamic dependencies, a command for computing dynamic dependencies, and a command for executing the rule. Prefer using ÿ and €, instead of the (internal) constructors of Ä.Å*A rule with statically-known dependencies.ÇA Í for arg.È The command to execute the rule.ÉA Í for the triple (depsArg,depsRes,arg).ÊãThe command to execute the rule. It will receive the result of the dynamic dependency computation.ËÀA dynamic dependency computation. The resulting dependencies will be injected into the build graph, and the result of the computation will be passed on to the command that executes the rule.Ì>A rule with dynamic dependencies, which consists of two parts:�a dynamic dependency computation, that returns additional edges to be added to the build graph together with an additional piece of data,ÿthe command to execute the rule itself, which receives the additional piece of data returned by the dependency computation.Í=Internal datatype used for commands, both for the Hooks API (Ò) and for the build system.ÏÅStatic evidence that the argument can be serialised and deserialised.Ð6The (possibly dynamic) argument to pass to the action.Ñ)The (statically-known) action to execute.ÒìA command consists of a statically-known action together with a (possibly dynamic) argument to that action.ÇFor example, the action can consist of running an executable (such as happy or c2hsè), while the argument consists of the variable component of the command, e.g. the specific file to run happy on.Ó>A static pointer (in user scope) or its key (in system scope).ÔA collection of ðs.Use the ƒ1 smart constructor instead of directly using the Õ constructor.Rules are registered using  registerRule,2Monitored files or directories are declared using addRuleMonitorsÅ; a change in these will trigger the recomputation of all rules.The envì type parameter represents an extra argument, which usually consists of information known to Cabal such as LocalBuildInfo and ComponentLocalBuildInfo.×8Monad transformer for defining rules. Usually wraps the Ä monad, allowing IO actions to be performed using liftIO.Ú'The environment within the monadic API.ÞMonad for constructing rules.ß)A reference to an output of another rule.á%which particular output of that rule?â)which rule's outputs are we referring to?ãA dependency of a rule.ä*A dependency on an output of another rule.å?A direct dependency on a file at a particular location on disk.ÊThis should not be used for files that are generated by other rules; use ä instead.æšA (fully resolved) location of a dependency or result of a rule, consisting of a base directory and of a file path relative to that base directory path.)In practice, this will be something like æ dir (moduleNameSymbolicPath mod  . "hs") , where:for a file dependency, dir( is one of the Cabal search directories,for an output, dir is a directory such as autogenComponentModulesDir or componentBuildDir.èÀFile path relative to base directory (including file extension).éBase directory.êA rule consists of:%an action to run to execute the rule,-a description of the rule inputs and outputs.Use ÿ or €Ò to construct a rule, overriding specific fields, rather than directly using the ð constructor.ëPlease use the ÿ or €ð smart constructors instead of this constructor, in order to avoid relying on internal implementation details.ìResults of this rule.í!Static dependencies of this rule.îTo run this rule, which Òs should we execute?ôð-s are defined with rich types by the package.ÑThe build system only has a limited view of these; most data consists of opaque  ByteStrings.The ô9 data-type describes which side of this divide we are on.õUser space (with rich types).ö.Build-system space (manipulation of raw data).÷A unique identifier for a ð.µInternal function: create a ¶ from a ·.ÿ A rule with static dependencies./Prefer using this smart constructor instead of ë whenever possible. See also €- which adds support for dynamic dependencies.€>A rule with dynamic dependencies, which consists of two parts:Ža dynamic dependency computation, that returns additional edges to be added to the build graph, together with an additional piece of data,ÿthe command to execute the rule itself, which receives the additional piece of data returned by the dependency computation./Prefer using this smart constructor instead of ë whenever possible.Use ÿ- if you do not have any dynamic dependencies.�6Get a (relative or absolute) un-interpreted path to a æ.‚An empty collection of rules.ƒ3Construct a collection of rules with a given label.3A label for the rules can be constructed using the static keyword, using the StaticPointers# extension. NB: separate calls to ƒ should have different labels.Example usage: ámyRules :: Rules env myRules = rules (static ()) $ \ env -> do { .. } -- use the monadic API here¸2Internal function to create a collection of rules. API users should go through the ƒ function instead.„#Internal function: run the monadic Ô* computations in order to obtain all the ð s with their ÷s.…Construct a command./Prefer using this smart constructor instead of Î whenever possible.†Run a Ò.‡ûProject out the (optional) dependency computation command, so that it can be serialised without serialising anything else.ˆObtain the (optional) Ä+ action that computes dynamic dependencies.‰ôProject out the command for running the rule, passing in the result of the dependency computation if there was one.Š Obtain the Ä action that executes a rule.”ÁSerialise and deserialise a raw ByteString, leaving it untouched.•ÂSerialise/deserialise, always including the length of the payload.  Trimmed down ¯% instance, mostly for error messages.£Warning: this © instance is not commutative.ÿcommand to execute the rulestatic dependencies of the rule rule results€Ëevidence that the result of the dynamic dependency command is serialisable‡dynamic dependency computation, returning dynamic dependencies and an additional piece of data to be consumed by the main rule commandÏmain rule command; takes in the piece of data returned by the dyn-deps commandstatic dependencies of the rule rule resultsƒ)unique label for this collection of rulesthe computation of rules¸rule namespacethe computation of rulesã„€�…‚‹‡‰ƒ†ˆŠÿòóôö÷õøéêëìíîðïñÒÍÎÐÑÏãå便À¹ºÁÂÃæçéèðï½ÄÆÅËÊÌÉÇÈêëìîí¼»÷øùúßàáâÔÕÖÚÛÜÝÞרÙñóòôöõÓûýüþãðêëìîí÷øùúÿ€ÄÆÅËÊÌÉÇÈÒÍÎÐÑφ…¹º½¼»ÁÂþ¿À‡ˆ‰ŠÔÕÖãåäßàá⃂æçéè�òóôö÷õøíîðïñéêëìÞרÙÚÛÜÝ„ôöõñóòÓûýüþï‹ÔŒ�š š��‚ ‚Ž�ý ý��ù ù��Í Í#‘�Ë Ë ’�É É“�Ç Ç!”�ÿ ÿÄ•�ö ö8–�÷ú/—��’-˜�„‡+™�çê)š�ÉÌ+›�¼ ¼Åœ�© ©+��¥ ¥Áž�œ œ'Ÿ�� �) �’ ’¡�Þ Þ¢�÷ ÷£�ð ð¤�ÚÛ2¥�… …¦�Üܧ�ÜÜ)¨�Ü+Ü0©�Ü2Ü9ª�Ü;Üë�‡‡¬�žž­�žž®�žž"¯�††°�††±�† †#²�†%†)³�‡‡´�óóµ�óó¶�óó"·�¸�¹�ÂÂ"º�Â$Â*»�··¼�··½�·· ¾�·"·)¿�¸¸À�¸¸(Á�ÁÁÂ�ÁÁÃ�ÁÁ Ä�Á"Á)Å�ÂÂÆ�ÂÂ(Ç�ÈÈÈ�ÈÈÉ�ÈÈ Ê�È"È)Ë�ÉÉÌ�ÉÉ(Í�ÐÐÎ�ÐÐÏ�ÐÐ Ð�Ð"Ð)Ñ�ÑÑÒ�ÑÑ(Ó� ¢,Ô�•—,Õ�’”(Ö�‘‘Ã×���?Ø���ÁÙ���8Ú�ŽŽ6Û���4Ü�ŒŒ2Ý�‹‹-Þ�ŠŠ+ß�‰‰-(None+,9ç¢ çAN error involving the Rules in the  SetupHooks0 module of a package with the Hooks build-type.è?There are cycles in the dependency graph of fine-grained rules.éùWhen executing fine-grained rules compiled into the external hooks executable, we failed to find dependencies of a rule.êŠWhen executing fine-grained rules compiled into the external hooks executable, a rule failed to generate the outputs it claimed it would.ëÃAn invalid reference to a rule output, e.g. an out-of-range index.ì A duplicate ÷( in the construction of pre-build rules.íAn error involving the  SetupHooks, module of a package with Hooks build-type.îÅCannot apply a diff to a component in a per-component configure hook.ïAn error with pre-build rules.émissing dependenciesêmissing outputsërule dependencyoutputs of dependencythe invalid indexðñäæåàãâáçéèìëêíîïíîïäæåàãâáçéèìëêðñòž+ +óžÒ ÒôžØ ØõžÍÍ&))Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportableNone?ÆÛàRö&The full path of a configured program.÷Make a simple ù. 2simpleConfiguredProgram "foo" (FoundOnSystem path)ø/Suppress any extra arguments added by the user.ùËRepresents a program which has been configured and is thus ready to be run.(These are usually made by configuring a „=, but if you have to construct one directly then start with ÷ and override any extra fields.û�Default command-line args for this program. These flags will appear first on the command line, so they can be overridden by subsequent flags.üJust the name againýLocation of the program. eg. /usr/bin/ghc-6.4þIn addition to the ý£ where the program was found, these are additional locations that were looked at. The combination of this found location and these not-found locations can be used to monitor to detect when the re-configuring the program might give a different result (e.g. found in a different location).ÿ„Override command-line args for this program. These flags will appear last on the command line, so they override all earlier flags.€­Override environment variables for this program. These env vars will extend/override the prevailing environment of the current to form the environment for the new process.�­A key-value map listing various properties of the program, useful for feature detection. Populated during the configuration step, key names depend on the specific program.‚,The version of this program, if it is known.„-Represents a program which can be configured.9Note: rather than constructing this directly, start with  simpleProgram and override any extra fields.†úA function to search for the program if its location was not specified by the user. Usually this will just be a call to findProgramOnSearchPath.‚It is supplied with the prevailing search path which will typically just be used as-is, but can be extended or ignored as needed.‘For the purpose of change monitoring, in addition to the location where the program was found, it returns all the other places that were tried.‡�Try to find the version of the program. For many programs this is not possible or is not necessary so it's OK to return Nothing.ˆ'The simple name of the program, eg. ghc‰ A function that filters any arguments that don't impact the output from a commandline. Used to limit the volatility of dependency hashes when using new-build.Š«A function to do any additional configuration after we have located the program (and perhaps identified its version). For example it could add args, or environment vars.‹‹Where a program was found. Also tells us whether it's specified by user or not. This includes not just the path, but the program as well.Œ$The program was found automatically.�ÉThe user gave the path to this program, eg. --ghc-path=/usr/bin/ghc-6.6�ÏA search path to use when locating executables. This is analogous to the unix $PATH or win32 %PATH%Ñ but with the ability to use the system default method for finding executables (findExecutable) which on unix is simply looking on the $PATH* but on win32 is a bit more complicated).The default to use is [ProgSearchPathDefault]‹ but you can add extra dirs either before, after or instead of the default, e.g. here we add an extra dir to search after the usual ones. 8['ProgramSearchPathDefault', 'ProgramSearchPathDir' dir]ÊWe also use this path to set the environment when running child processes.The  ProgramDb is created with a ProgramSearchPath to which we prependProgramSearchPathŸ to add the ones that come from cli flags and from configurations. Then each of the programs that are configured in the db inherits the same path as part of configureProgram.‘The system default’A specific dirö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’„…†‡ˆ‰Š��‘’ùúûüýþÿ€�‚öøƒ‹Œ�Ž÷“Ÿ— —"”Ÿ¤ ¤ •Ÿï ï'–Ÿ• •—Ÿ¢ ¢˜Ÿí홟••šŸ¢¢›Ÿí휟••�Ÿ¢¢žŸ• •$ŸŸÏ Ï Ÿ¢ ¢$¡Ÿí í¢Ÿ˜ ˜&£Ÿ¥ ¥$¤Ÿð ð+*+(c) 2003-2005, Isaac Jones, Malcolm WallaceBSD3cabal-devel@haskell.orgportableNone3?ÆÕÛà {¥A suffix (or file extension).ÈMostly used to decide which preprocessor to use, e.g. files with suffix "y" are usually processed by the "happy" build tool.§>A command to run a given preprocessor on a single source file.žThe input and output file paths are passed in as arguments, as it is the build system and not the package author which chooses the location of source files.¨¡The interface to a preprocessor, which may be implemented using an external program, but need not be. The arguments are the name of the input file, the name of the output file and a verbosity level. Here is a simple example that merely prepends a comment to the given source file: ŒppTestHandler :: PreProcessor ppTestHandler = PreProcessor { platformIndependent = True, ppOrdering = \_ _ -> return, runPreProcessor = mkSimplePreProcessor $ \inFile outFile verbosity -> do info verbosity (inFile++" has been preprocessed to "++outFile) stuff <- readFile inFile writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff) return ()�We split the input and output file names into a base directory and the rest of the file name. The input base dir is the path in the list of search dirs that this file was found in. The output base dir is the build dir where all the generated source files are put.²The reason for splitting it up this way is that some pre-processors don't simply generate one output .hs file from one input file but have dependencies on other generated files (notably c2hs, where building one .hs file may require reading other .chi files, and then compiling the .hs file may require reading a generated .h file). In these cases the generated files need to embed relative path names to each other (eg the generated .hs file mentions the .h file in the FFI imports). This path must be relative to the base directory where the generated files are located, it cannot be relative to the top level of the build tree because the compilers do not look for .h files relative to there, ie we do not use "-I .", instead we use "-I dist/build" (or whatever dist dir has been set by the user)€Most pre-processors do not care of course, so mkSimplePreProcessor and runSimplePreProcessor functions handle the simple case.«CabalThis function can reorder all® modules, not just those that the require the preprocessor in question. As such, this function should be well-behaved and not reorder modules it doesn't have dominion over!§2Location of the source file relative to a base dir0Output file name, relative to an output base dir ®­§¨©¬«ª¥¦ ¥¦¨©¬«ª§­®¯ ú ú° ù ù± ö ö² ô ô³ ôô´ ôôµ ôô#¶ ô%ô-+Nonee¼NoLibraryFoundÆ has been downgraded to a warning, and is therefore no longer emitted.†» ¼ ·ê� ± ºÚ„ ¾òÝïš ëí— ù™ Š ‰ ˆ ½ÿþ® üž œ § ȹ‡ ä… – åÕÜÇÉË¡ ¢ † ÷øàáîÑÓŽ › • ˜ ‹ Êâã³ ¥ µ £ Ò»¸” ¤ ÐÏÁú¼ÂÖ“ � ° ­ ÙØÅÍñðÎôó« ý’ æÆ� ÛÌ×  é ª ¦ èŒ ¯ ö� € û´ ¶ Ä� Ÿ ¬ é‘ Ô² õçÀƒ ‚ ¿ìßÞ¨ · ¹ º ¸ †·ê� ± ºÚ„ ¾òÝïš ëí— ù™ Š ‰ ˆ ½ÿþ® üž œ § ȹ‡ ä… – åÕÜÇÉË¡ ¢ † ÷øàáîÑÓŽ › • ˜ ‹ Êâã³ ¥ µ £ Ò»¸” ¤ ÐÏÁú¼ÂÖ“ � ° ­ ÙØÅÍñðÎôó« ý’ æÆ� ÛÌ×  é ª ¦ èŒ ¯ ö� € û´ ¶ Ä� Ÿ ¬ é‘ Ô² õçÀƒ ‚ ¿ìßÞ¨ · ¹ º ¸ » ¼ ½ ¡­ ­¾ ¡) ),...cabal-devel@haskell.orgportableNone¬¿ No unliteration.À À „ takes a filename (for error reports), and transforms the given string, to eliminate the literate comments from the program text.¿ À À ¿ ¢NoneÛà p!¹)Add a fixed message to the error context.ºÁAdd a message to the error context. It may make monadic queries.» Convert a S into a ¼", so we can do unification on it.½ Convert a ¦ to a ¾¿ Convert a ¾ to a ¦À Convert a ¼ to a ¥.ÁConversion of  ModuleSubst to ÂÃConversion of  to  ModuleSubstÄ An empty ¼.Å(Get the current unification environment.ÆLift a computation from Ç monad to È monad. Internal use only.É+Run a computation in the unification monad.¼The mutable counterpart of ¥.ÂThe mutable counterpart of a  ModuleSubst (not defined here).ÊA mutable version of Ë# which can be imperatively unified.ÌContents of a mutable Ê reference.ÍThe unification environment.ÎThe error reporting contextÏ0The package index for expanding unit identifiersÐAccumulated errorsѱThe set of requirements in scope. When a provision is brought into scope, we unify with the requirement at the same module name to fill it. This mapping grows monotonically.Ò¶Component id of the unit we're linking. We use this to detect if we fill a requirement with a local module, which in principle should be OK but is not currently supported by GHC.Ó%A supply of unique integers to label Ôè cells. This is used to determine loops in unit identifiers (which can happen with mutual recursion.)Õ'How verbose the error message should beÈÇThe unification monad, this monad encapsulates imperative unification.ÔA mutable version of �# which can be imperatively unified.ÖContents of a mutable Ô reference.¾The mutable counterpart of ¦×ÃA convenient alias for mutable references in the unification monad.Ø!An integer for uniquely labeling ÔÁ nodes. We need these labels in order to efficiently serialize Ôs into �™s (we use the label to check if any parent is the node in question, and if so insert a deBruijn index instead.) These labels must be unique across all �s/Ë$s which participate in unification!ÙReturns Úë if there is no a mutually recursive unit. | Otherwise returns a list of signatures instantiated by given Ô.ÛImperatively read a ×.ÜImperatively write a ×.)ݹº»Þ½¿ÀÁÃßàáÄâãÅÆÉä¼ÂÊÌåæçÍèÎÏÐÑÒÓÕÈÔÖéê룎 Ž ì£‹ ‹í£š š¤Noneä1îÃGiven to scopes of provisions and requirements, link them together.ïµLink a list of possibly provided modules to a single requirement. This applies a side-condition that all of the provided modules at the same name are *actually* the same module.ðImperatively unify two modules.î¥NoneØñòóôõ¨ö„÷¦ ø¦ ù¦# #§None?úûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�ލ©None?��‘’“”•–—ª -cabal-devel@haskell.orgportableNoneÁ Á «None?˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±¬²¬³¬­ÓData file location, and package version and installation directories. Safe-Inferred„´The package version.µžIf the argument is a filename, the result is the name of a corresponding file on the system on which the program is running, if the file were listed in the  data-filesÿ field of the package's Cabal package description file. No check is performed that the given filename is listed in that field.¶3The location of the directory specified by Cabal's --bindir– option (where executables that the user might invoke are installed). This can be overridden at runtime using the environment variable Cabal_bindir.·3The location of the directory specified by Cabal's --libdir€ option (where object libraries are installed). This can be overridden at runtime using the environment variable Cabal_libdir.¸3The location of the directory specified by Cabal's  --dynlibdir„ option (where dynamic libraries are installed). This can be overridden at runtime using the environment variable Cabal_dynlibdir.¹3The location of the directory specified by Cabal's  --datadir” option (where architecture-independent data files are installed). This can be overridden at runtime using the environment variable Cabal_datadir.º3The location of the directory specified by Cabal's  --libexedir¸ option (where executables that are not expected to be invoked directly by the user are installed). This can be overridden at runtime using the environment variable Cabal_libexedir.»3The location of the directory specified by Cabal's  --sysconfdir‡ option (where configuration files are installed). This can be overridden at runtime using the environment variable Cabal_sysconfdir.¶¹µ¸·º»´#Isaac Jones, Simon Marlow 2003-2004=BSD3 portions Copyright (c) 2007, Galois Inc.cabal-devel@haskell.orgportableNone+,35ÅÆÇÛàç=Ïèà žGiven a block of IO code that may raise an exception, annotate it with the metadata from the current scope. Use this as close to external code that raises IO exceptions as possible, since this function unconditionally wraps the error message with a trace (so it is NOT idempotent.)Ä CabalÊ compiler information, reported by `--version-full` but otherwise unused.Å Cabalï Git information. Only filled in if built in a Git tree in development mode and Template Haskell is available.Ç ØPerform an IO action, catching any IO exceptions and printing an error if one occurs.È ?Recursively copy the contents of one directory to another path.É �Given a relative path to a file, copy it to the given directory, preserving the relative path and creating the parent directories if needed.Ê �Given a relative path to a file, copy it to the given directory, preserving the relative path and creating the parent directories if needed.Ë ‹Copies a file without copying file permissions. The target file is created with default permissions. Any existing target file is replaced.3At higher verbosity levels it logs an info message.Ì ¤Copies a bunch of files to a target directory, preserving the directory structure in the target location. The target directories are created if they do not exist.›The files are identified by a pair of base directory and a path relative to that base. It is only the relative part that is preserved in the destination. For example: ÒcopyFiles normal "dist/src" [("", "src/Foo.hs"), ("dist/build/", "src/Bar.hs")]ñThis would copy "src/Foo.hs" to "dist/src/src/Foo.hs" and copy "dist/build/src/Bar.hs" to "dist/src/src/Bar.hs".üThis operation is not atomic. Any IO failure during the copy (including any missing source files) leaves the target in an unknown state so it is best to use it with a freshly created directory so that it can be simply deleted if anything goes wrong.Í Same as createDirectoryIfMissing% but logs at higher verbosity levels.Î 'Detailed internal debugging information6We display these messages when the verbosity level is �Ï  A variant of Î Ù that doesn't perform the automatic line wrapping. Produces better output in some cases.Ð Package description file (pkgname.cabal$) in the current working directory.× Like ¼., but also checks that the file is executable.Ø "Drop the extension if it's one of Û  , or return the path unchanged.Ù 7Append a call-site and/or call-stack based on VerbosityÚ /Add all necessary metadata to a logging messageÛ ËList of possible executable file extensions on the current build platform.Ü Like ý -, but also checks that the first file exists.Ý Cabalß CabalÊFind a file by looking in a search path. The file path must match exactly.à CabalØFind a file by looking in a search path with one of a list of possible file extensions.á Like à ø but returns which element of the search path the file was found in, and the file path relative to that base directory.â ÊFind a file by looking in a search path. The file path must match exactly.ã ÑFind a file by looking in a search path with one of a list of possible file extensions. The file base name should be given and it will be tried with each of the extensions in each element of the search path.ä Like ã ø but returns which element of the search path the file was found in, and the file path relative to that base directory.æ ÇFind auxiliary package information in the given directory. Looks for  .buildinfo files.ç 5Find the file corresponding to a Haskell module name.This is similar to á ê but specialised to a module name. The function fails if the file corresponding to the module is missing.è 5Find the file corresponding to a Haskell module name.This is similar to ä ê but specialised to a module name. The function fails if the file corresponding to the module is missing.é ÀFinds the files corresponding to a list of Haskell module names.As ç  but for a list of module names.ê ÀFinds the files corresponding to a list of Haskell module names.As findModuleFile but for a list of module names.ë ÅFind a package description file in the given directory. Looks for .cabal files.ì ¸Look for a program and try to find it's version number. It can accept either an absolute path or the name of a program binary, in which case we will look for the program on the path.í ÁfromJust for dealing with 'Maybe Handle' values as obtained via r®. Creating a pipe using  CreatePipe guarantees a Ì$ value for the corresponding handle.î 9List all the files in a directory and all subdirectories.ÓThe order places files in sub-directories after all the files in their parent directories. The list is generated lazily so is not well defined if the source directory structure changes before the list is used.ï !Run an IO computation, returning e- if it raises a "file does not exist" error.ð #Ignore SIGPIPE in a subcomputation.ñ ,More detail on the operation of some action.6We display these messages when the verbosity level is Žó ªThis installs all the files in a directory to a target location, preserving the directory layout. All the files are assumed to be ordinary rather than executable files.ô ÝInstall an executable file. This is like a file copy but the permissions are set appropriately for an installed file. On Unix it is "-rwxr-xr-x" while on Windows it uses the default permissions for the target directory.õ  This is like Ì  but uses ô .ö ÅInstall a file that may or not be executable, preserving permissions.÷  This is like Ì  but uses ö .ø ÛInstall an ordinary file. This is like a file copy but the permissions are set appropriately for an installed file. On Unix it is "-rw-r--r--" while on Windows it uses the default permissions for the target directory.ù  This is like Ì  but uses ø .ú ,Is this directory in the system search path?û ÇCheck that the type of the exception matches the given user error type.ü Helper to use with one of the  rawSystem? variants, and exit unless the command completes successfully.ý ¨Compare the modification times of two files to see if the first is newer than the second. The first file must exist but the second need not. The expected use case is when the second file is generated using the first. In this use case, if the result is True then the second file is out of date.þ Useful status messages.We display these at the � verbosity level.“This is for the ordinary helpful status messages that users see. Just enough information to know that things are working but not floods of detail.ÿ Pretty-print a ¯° status message at �: verbosity level. Use this if you need fancy formatting.€ Display a message at �( verbosity level, but without wrapping.� êExecute the given command with the given arguments, exiting with the same exit code if the command fails.‚ ×Execute the given command with the given arguments, returning the command's exit code.ƒ úExecute the given command with the given arguments and environment, exiting with the same exit code if the command fails.„ Like ƒ ", but setting a working directory.… ×Execute the given command with the given arguments, returning the command's exit code.ÞOptional arguments allow setting working directory, environment and input and output handles.† ØExecute the given command with the given arguments, returning the command's exit code. action÷ is executed while the command is running, and would typically be used to communicate with the process through pipes.ÞOptional arguments allow setting working directory, environment and input and output handles.‡ ×Execute the given command with the given arguments, returning the command's exit code.!Create the process argument with  s* to ensure consistent options with other  rawSystem functions in this module.ˆ ØExecute the given command with the given arguments, returning the command's exit code. action÷ is executed while the command is running, and would typically be used to communicate with the process through pipes.!Create the process argument with  s* to ensure consistent options with other  rawSystem functions in this module.‰ êExecute the given command with the given arguments, returning the command's output, errors and exit code.ÓOptional arguments allow setting working directory, environment and command input.ÃProvides control over the binary/text mode of the input and output.Š ûExecute the given command with the given arguments, returning the command's output. Exits if the command exits with error.9Provides control over the binary/text mode of the output.‹ ‹A robust helper to remove an existing file, which does not throw an exception if such file never existed, thus akin to removePathForcibly.Œ ¾Write a file but only if it would have new content. If we would be writing the same as the existing content then leave the file as is so that we do not update the file's modification time.�NB: Before Cabal-3.0 the file content was assumed to be ASCII-representable. Since Cabal-3.0 the file is assumed to be UTF-8 encoded.� Same as Œ  but for  ByteStrings.Ž ËDisplay a "setup status message". Prefer using setupMessage' if possible.� stripCommonPrefix xs ys gives you ys without the common prefix with xs.“ Like ë  , but calls die in case of error.” ÃNon fatal conditions that may be indicative of an error or problem.We display these at the � verbosity level.• Like ” , but prepend Error: ¦@ instead of  Warning: ¦@ÿ before the the message. Useful when you want to highlight the condition is an error but do not want to quit the program yet.– (Hold an exclusive cross-process lock on lockPath for the duration of action., creating the lock file if it does not exist.— Wrap output with a marker if  +markoutput verbosity flag is set.’NB: Why is markoutput done with start/end markers, and not prefixes? Markers are more convenient to add (if we want to add prefixes, we have to ¦ and then ÿ…; here's it's just some concatenates). Note that even in the prefix case, we can't guarantee that the markers are unambiguous, because some of Cabal's output comes straight from external programs, where we don't have the ability to interpose on the output.This is used by ½˜ %Create and use a temporary directory.�Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: 4withTempDirectory "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.™ %Create and use a temporary directory.�Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: 4withTempDirectory "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.š  A version of ™  that additionally takes a    argument.›  A version of ˜  that additionally takes a    argument.œ 3Use a temporary filename that doesn't already exist� 4Use a temporary filename that doesn't already exist.ž  A version of œ  that additionally takes a    argument.Ÿ ÒLike the Unix xargs program. Useful for when we've got very long command lines that might overflow an OS limit on command line length and so you need to invoke a command multiple times to get all the args in.ÀUse it with either of the rawSystem variants above. For example: Àxargs (32*1024) (rawSystemExit verbosity) prog fixedArgs bigArgs  Advanced options for œ  and ˜ .¢ Keep temporary files?¾ÖAppend a trailing newline to a string if it does not already have a trailing newline.¿/When should we output the marker? Things like die always get marked, but a À5 will only be output if we're not a quiet verbosity.ÁÀWhen should we emit the call stack? We always emit for internal errors, emit the trace for errors when we are in verbose mode, and otherwise only emit it if explicitly asked for using the  +callstack# verbosity flag. (At the moment,  is not used.ÃÂPrefixing a message to indicate that it is a fatal error, if the Ä is not already present.Ä4A prefix indicating that a message is a fatal error.Å,Annotate an error string with timestamp and ½.½/Add all necessary metadata to a logging messageÆ A version of ±²5 that is careful to not close the handles stored in €.ÇCommon implementation of Ì , ù , õ  and ÷ .ÈBC wrapper around ³´.É'A lens for the error message inside an ‰.Ê Check if an ‰% should be output verbatim to screen.Ë2A semantic editor for the error message inside an ‰.ÌTag an ‰= whose error string should be output to the screen verbatim.ÍœLog a command execution (that's typically about to happen) at info level, and log working directory and environment overrides at debug level if specified.Î.Prefix an error string with program name from ÏÐâDetermine if we should emit a call stack. If we trace, it also emits any prefix we should append.Ñ Create a ½) whose error text will be output verbatimÒ%Warning message, with a custom label.Ó8Prepend a call-site and/or call-stack based on VerbosityÔPrepends a timestamp if  +timestamp verbosity flag is setThis is used by ½ÕWraps text unless the +nowrap verbosity flag is activeÇ .a description of the action we were attemptingthe action itselfÍ Create its parents too?Ý working directory extensionsrelative search locationsbasenameß working directorysearch directories File Nameâ search directories File Nameæ Working directoryDirectory to searchdir/pkgname .buildinfo , if presentç "build prefix (location of objects)search suffixesmoduleè "build prefix (location of objects)search suffixesmoduleé "build prefix (location of objects)search suffixesmodulesê "build prefix (location of objects)search suffixesmodulesë package directoryì  version args8function to select version number from program outputlocation… New working dir or inheritNew environment or inheritstdinstdoutstderr†  argumentsNew working dir or inheritNew environment or inherit7action to perform after process is created, but before waitForProcess.stdinstdoutstderr‰ Program location ArgumentsNew working dir or inheritNew environment or inheritinput text and binary modeiodata mode, acts as proxyoutput, errors, exit’ Binary instance for 'NubList a' is the same as for '[a]'. For ˆ6, we just pull off constructor and put the list. For ‡, we get the list and make a ¬  out of it using ª .´ ŽMonoid operations on NubLists. For a valid Monoid instance we need to satisfy the required monoid laws; identity, associativity and closure.'Identity : by inspection: mempty ¤ NubList xs == NubList xs ¤ mempty1Associativity : by inspection: (NubList xs ¤ NubList ys) ¤ NubList zs == NubList xs ¤ (NubList ys ¤ NubList zs)äClosure : appending two lists of type a and removing duplicates obviously does not change the type.Ö1Helper used by NubList/NubListR's Read instances.¨ © ª « ¬ ­ ® ¯ ¬ ª ­ ¨ ® « ¯ © ° ¶È È1± ¶ ² ¶Ö Ö³ ¶´ ¶4 4%µ ¶8 8(¶ ¶à à&· ¶ä ä)¸ ¶Î Î(¹ ¶> >-º ¶ê ê.» ¶; ;$¼ ¶ç ç%½ ¶Ì Ì0/NoneÆÛൾ +Add a message to the error/warning context.¿ +Fail the computation with an error message.À )Output an informational trace message in à .Á Run à !, outputting traces according to €, die if there is an error. "Output a warning trace message in à .à The Ô4 monad with specialized logging and error messages.×:Format a message with context. (Something simple for now.)¾ ¿ À Á  à à Á  À ¿ ¾ Ä ·& &!Å ·# #Æ ·* *0Duncan Coutts 2009cabal-devel@haskell.orgportableNone+,3ÆÛà�È åReturn the current environment extended with the given overrides. If an entry is specified twice in  overrides%, the second entry takes precedence. getEffectiveEnvironment returns ÍÛ when there are no overrides. It returns an argument that is suitable to pass directly to  CreateProcess… to override the environment. If you need the full environment to manipulate further, even when there are no overrides, then call É .É Like È Ð, but when no overrides are specified, returns the full environment instead of Í.Î ÒLike the unix xargs program. Useful for when we've got very long command lines that might overflow an OS limit on command line length and so you need to invoke a command multiple times to get all the args in.äIt takes four template invocations corresponding to the simple, initial, middle and last invocations. If the number of args given is small enough that we can get away with just a single invocation then the simple one is used:  $ simple args•If the number of args given means that we need to use multiple invocations then the templates for the initial, middle and last invocations are used: É$ initial args_0 $ middle args_1 $ middle args_2 ... $ final args_nÖ 7Represents a specific invocation of a specific program.�This is used as an intermediate type between deciding how to call a program and actually doing it. This provides the opportunity to the caller to adjust how the program will be called. These invocations can either be run directly or turned into shell or batch scripts.Ü 6TODO: remove this, make user decide when constructing Û .Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß Ö × Ø Ù Ú Û Ü Ý Þ ß Ó Ô Õ Ç Ò Ï Ð Î Ñ Ì Ê Í Ë È É 1Duncan Coutts 2009cabal-devel@haskell.orgportableNone+,òà 5Generate a Windows batch file that invokes a program.á 5Generate a POSIX shell script that invokes a program.â ïGenerate a system script, either POSIX shell script or Windows batch file as appropriate for the given system.à á â â á à 2(c) Sergey Vinokurov 2017 BSD3-stylecabal-devel@haskell.orgNone3ÆÛà‡ã  Template for response file name.+Encoding to use for response file contents.$Arguments to put into response file.ã ã 3Thomas Tuegel 2011cabal-devel@haskell.orgportableNone3ÆÛàsä %Invoke hpc with the given parameters.ÔPrior to HPC version 0.7 (packaged with GHC 7.8), hpc did not handle multiple .mix paths correctly, so we print a warning, and only pass it the first path in the list. This means that e.g. test suites that import their library as a dependency can still work, but those that include the library modules directly (in other-modules) don't.ä Path to .tix filePaths to .mix file directories(Path where html output should be located(List of modules to include in the reportå Paths to .tix filesPath to resultant .tix file%List of modules to exclude from unionØPath to .tix filePaths to .mix file directories)Path where html output should be locatedList of modules to includeÙPaths to .tix filesPath to resultant .tix file%List of modules to exclude from unionä å ä å 4Duncan Coutts 2013cabal-devel@haskell.orgportableNoneÆÛàèè Adds some paths to the PATHÌ entry in the key-value environment provided or if there is none, looks up $PATH in the real environment.é =Get the system search path. On Unix systems this is just the $PATH6 env var, but on windows it's a bit more complicated.ì  Interpret a � to construct a new $PATHø env var. Note that this is close but not perfect because on Windows the search algorithm looks at more than just the %PATH%.í Make a simple named program.ŠBy default we'll just search for it in the path and not try to find the version name. You can override these behaviours if necessary, eg: Ì(simpleProgram "foo") { programFindLocation = ... , programFindVersion ... } æ ç è é ê ë ì í ��‘’ ��‘’æ ç ì ë ê é è í 5ð(c) David Himmelstrup 2005, Bjorn Bringert 2007, Duncan Coutts 2008-2009cabal-devel@haskell.orgportableNone?ÅÆÇH!î $Get all the packages from the index.ï $Get all the packages from the index.4They are grouped by package name (case-sensitively).$(Doesn't include private libraries.)ð $Get all the packages from the index.ÁThey are grouped by source package id (package name and version).#(Doesn't include private libraries)ñ $Get all the packages from the index.7They are grouped by source package id and library name.%This DOES include internal libraries.ò ÈAll packages that have immediate dependencies that are not in the index.ÇReturns such packages along with the dependencies that they're missing.ó ÄRemoves all packages with this (case-sensitive) name from the index.9NB: Does NOT delete internal libraries from this package.ô &Removes all packages with this source Ú from the index.õ 2Removes a single installed package from the index.ö ÁTries to take the transitive closure of the package dependencies.€If the transitive closure is complete then it returns that subset of the index. Otherwise it returns the broken packages as in ò .Note that if the result is Right []3 it is because at least one of the original given Ús do not occur in the index.÷ ÜFind if there are any cycles in the dependency graph. If there are no cycles the result is [].¶This actually computes the strongly connected components. So it gives us a list of groups of packages where within each group they all depend on each other, directly or indirectly.ø +Builds a graph of the package dependencies.ÿDependencies on other packages that are not in the index are discarded. You can check if there are any such dependencies with ò .ù ÌGiven a package index where we assume we want to use all the packages (use ö Ø if you need to get such a index subset) find out if the dependencies within it use consistent versions of each package. Return all cases where multiple packages depend on different versions of some other package.œEach element in the result is a package name along with the packages that depend on it and the versions they require. These are guaranteed to be distinct.ú ÄFilter a set of installed packages to ones eligible as dependencies.ÈWhen we select for dependencies, we ONLY want to pick up indefinite packages, or packages with no instantiations. We'll do mix-in linking to improve any such package into an instantiated one later.INVARIANT: List of eligible ¸¹ is non-empty.û *Build an index out of a bunch of packages.If there are duplicates by �$ then later ones mask earlier ones.ü (Inserts a single package into the index.8This is equivalent to (but slightly quicker than) using ¤ or †  with a singleton index.ý ÔDoes a lookup by component identifier. In the absence of Backpack, this is just a „ .þ =Does a lookup by source package name and a range of versions.ïWe get back any number of versions of the specified package name, all satisfying the version range constraint.ÖThis does NOT work for internal dependencies, DO NOT use this function on those; use ÿ  instead.INVARIANT: List of eligible ¸¹ is non-empty.ÿ =Does a lookup by source package name and a range of versions.ïWe get back any number of versions of the specified package name, all satisfying the version range constraint.INVARIANT: List of eligible ¸¹ is non-empty.€ 6Does a lookup by source package name and library name. Also looks up internal packages.� Convenient alias of ƒ 0, but assuming only one package per package ID.‚ %Does a lookup by source package name.ƒ 4Does a lookup by source package id (name & version).>There can be multiple installed packages with the same source Ú but different �Ë. They are returned in order of preference, with the most preferred first.„ !Does a lookup by unit identifier..Since multiple package DBs mask each other by �(, then we get back at most one package.… 2Get eligible dependencies from a list of versions.)This can be used to filter the output of ‚  or € .INVARIANT: List of eligible ¸¹ is non-empty.† Merge two indexes.ÓPackages from the second mask packages from the first if they have the exact same �."For packages with the same source Ú�, packages from the second are "preferred" over those from the first. Being preferred means they are top result when we do a lookup by source ÚÍ. This is the mechanism we use to prefer user packages over global packages.‡ 7A rough approximation of GHC's module finder, takes a Ž ã and turns it into a map from module names to their source packages. It's used to initialize the  build-deps field in  cabal init.ˆ ÂTakes the transitive closure of the packages reverse dependencies. The given Ús must be in the index.Š /Does a case-insensitive search by package name.óIf there is only one package that compares case-insensitively to this name then the search is unambiguous and we get back all versions of that package. If several match case-insensitively but one matches exactly then it is also unambiguous.‰If however several match case-insensitively and none match exactly then we have an ambiguous result, and we get back all the versions of all the packages. The list of ambiguous results is split by exact package name. So it is a non-empty list of non-empty lists.‹ 9Does a case-insensitive substring search by package name.ÂThat is, all packages that contain the given string in their name.Œ CabalŽ )The default package index which contains InstalledPackageInfo. Normally use this.� >The collection of information about packages from one or more  PackageDB8s. These packages generally should have an instance of Û-Packages are uniquely identified in by their �Ñ, they can also be efficiently looked up by package name or by name and version.Ü(We maintain the invariant that, for any Ü=, there is only one instance of the package in our database.&î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ &Ž � û † ü õ ô ó „ ý ƒ � ‚ € þ ÿ Š � ‘ ’ “ ‹ Œ î ï ð ñ ò ö ˆ � ‰ ù ÷ ø ‡ ú … ” º— —-• º• •– º••— ºž ž8˜ º¦ ¦;™ º• •$š º••› º˜ ˜56Isaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone3œ äCollapse duplicate experimental feature warnings into single warning, with a count of further sitesž 3Helper combinator to do parsing plumbing for files.àGiven a parser and a filename, return the parse of the file, after checking if the file exists.:Argument order is chosen to encourage partial application.� #File contents to final value parserVerbosity level File namež #File contents to final value parserVerbosity levelWorking directory File to read  working directoryœ � ž Ÿ   Ÿ   � ž œ 7#Isaac Jones, Simon Marlow 2003-2004=BSD3 portions Copyright (c) 2007, Galois Inc.cabal-devel@haskell.orgportableNone3<Ûàç Å ¢ ÈHow/does the glob match the given filepath, according to the cabal version? Since this is pure, we don't make a distinction between matching on directories or files (i.e. this function won't return ­ )£ Cabal #Extract the matches from a list of « s.Note: throws away the ® Ù results; chances are that you want to check for these and error out if any are present.¤ ÌIs the root of this relative glob path a directory-recursive wildcard, e.g. **/*.txt ?¥  This will die'î when the glob matches no files, or if the glob refers to a missing directory, or if the glob fails to parse.The Version‘ argument must be the spec version of the package description being processed, as globs behave slightly differently in different spec versions. The first …´ argument is the directory that the glob is relative to. It must be a valid directory (and hence it can't be the empty string). The returned values will not include this prefix. The second … is the glob itself.¦ CabalLike ¥  but with customizable die§ Cabal Match a Öð against the file system, starting from a given root directory. The results are all relative to the given root.¨ 6Match a globbing pattern against a file path componentª ?Match files against a pre-parsed glob, starting in a directory.The Version‘ argument must be the spec version of the package description being processed, as globs behave slightly differently in different spec versions.The …³ argument is the directory that the glob is relative to. It must be a valid directory (and hence it can't be the empty string). The returned values will not include this prefix.¬ $The glob matched the value supplied.­ Cabal ÚThe glob matched a directory when we were looking for files only. It didn't match a file!® ¤The glob couldn't match because the directory named doesn't exist. The directory will be as it appears in the glob (i.e., relative to the directory passed to ¥ 4, and, for 'data-files', relative to 'data-dir').¯ ©The glob did not match the value supplied because the cabal-version is too low and the extensions on the file did not precisely match the glob's extensions, but rather the glob was a proper suffix of the file's extensions; i.e., if not for the low cabal-version, it would have matched.Ý>Check how the string matches the glob under this cabal versionª ÒIf the glob we are running should care about the cabal spec, and warnings such as ¯ „, then this should be the version. If you want to run a glob but don't care about any of the cabal-spec restrictions on globs, use Í!¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ÖÖ« ¬ ­ ® ¯ £ ¢ § ¨ ¥ ¦ ª © ° ± ² ³ ´ µ ¶ · ¸ ¡ ¤ ¹ »ÙÙº »• •» »ÙÙ#¼ »ÙÙ½ »Ù Ù¾ »••¼Francesco Ariis 2022BSD3cabal-devel@haskell.orgportableNoneÕà JÞask( (from Control.Monad.Reader) for CheckM.ß0Pure check not requiring IO or other interfaces.àLike áÀ, except performs the check when our spec version >= the param.âØExecute a CheckM monad, leaving `m [PackageCheck]` which can be run in the appropriate m environment (IO, pure, ¦@).ãAdds useful bits to äÆ (as now, whether we are operating under a user off-by-default flag).åÅLift a monadic action via an interface. Missing interface, no action.ælocal( (from Control.Monad.Reader) for CheckM.çCreates a pristing äà. With pristine we mean everything that can be deduced by GPD but *not* user flags information.èAs ß but always succeeding.äÂContext to perform checks (will be the Reader part in your monad).éøWhich interface to we have available/should we use? (to perform: pure checks, package checks, pre-distribution checks.)ê,Check monad, carrying a context, collecting •žs. Using Set for writer (automatic sort) is useful for output stability on different platforms. It is nothing more than a monad stack with Reader+Writer. m; is the monad that could be used to do package/file checks.¿ ÒA record of operations needed to check the contents of packages. Abstracted over m< to provide flexibility (could be IO, a .tar.gz file, etc).ëÕA record of operations needed to check contents *of the work tree* (compare it with ¿ ). This is still më abstracted in case in the future we can obtain the same infos other than from IO (e.g. a VCS work tree).ì:A collection os names, shipping tuples around is annoying.ííÒ collects contextual information on the target we are realising: a buildup of the various slices of the target (a library, executable, etc. ”@ is a monoid) whether we are under an off-by-default package flag.îŽMost basic check function. You do not want to export this, rather export œ@smart�@ functions (checkP, checkPkg) to enforce relevant properties.ïAs ð, but •- does not depend on the monadic computation.ðúGeneralised version for checks that need an interface. We pass a Reader accessor to such interface ˜@i™@, a check function.ñInit names from a GPD.ò!Lift a monadic computation to CM.ó4Add a package warning withoutu performing any check.ÒÞßôáàâãåæçè�äõö÷øùúéûüýþêÿ¿ À Á Â Ã Ä ë€�‚샄…†‡ˆí‰Š‹êñòóôõö‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’•–—˜™š›ë÷øŒ½ËË!�½Ë ËŽ½¦¦�½Ë#Ë(�½¦¦‘½¦ ¦¾+Lennart Kolmodin 2008, Francesco Ariis 2023BSD3cabal-devel@haskell.orgportableNoneØàèA’©A conditional target is a library, exe, benchmark etc., destructured in a CondTree. Traversing method: we render the branches, pass a relevant context, collect checks.“Before walking a target ”È, we need to annotate it with information relevant to the checks (read TaraAnn and ’ doc for more info).•7Condvar checking (misspelled OS in if conditions, etc).–nfñ function is needed to appropriately name some targets which need to be spoonfed (otherwise name appears as "").—)We œ@build up�@ target from various slices.’˜8Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableNone3<=>?€/Æ Make package paths absoluteÇ ¢Does this compiler's "ar" command support llvm-ar's -L flag, which compels the archiver to add an input archive's members rather than adding the archive itself.È áDoes this compiler's "ar" command supports response file arguments (i.e. @file-style arguments).É $Does this compiler support Backpack?Ê ÌDoes the compiler support producing bytecode objects and bytecode libraries?Ë ÆTransform a package db using a FilePath into one using symbolic paths.Í ÊIs this compiler compatible with the compiler flavour we're interested in?’For example this checks if the compiler is actually GHC or is another compiler that claims to be compatible with some version of GHC, e.g. GHCJS. 6if compilerCompatFlavor GHC compiler then ... else ...Î ‡Is this compiler compatible with the compiler flavour we're interested in, and if so what version does it claim to be compatible with.‹For example this checks if the compiler is actually GHC-7.x or is another compiler that claims to be compatible with some GHC-7.x version. æcase compilerCompatVersion GHC compiler of Just (Version (7:_)) -> ... _ -> ...Ò 4Does this compiler support Haskell program coverage?Ó 2Is the compiler distributed with dynamic librariesÔ ÆFor the given compiler, return the flags for the supported extensions.Ú ,Does this compiler support the -jsem option?Û 7What semaphore protocol version does this compiler use?Returns NothingÁ for compilers that don't report a "Semaphore version" field in  ghc --info# (i.e. GHC 9.8“@9.14, which use v1).Þ ÒDoes this compiler support a package database entry with: "dynamic-library-dirs"?ß ÈDoes this compiler support a package database entry with: "visibility"?à (Does this compiler support package keys?á 0Does this compiler support parallel --make mode?â Does this compiler support thinning/renaming on package flags?ï :Does this compiler have unified IPIDs (so no package keys)ð $Does this compiler support unit IDs?ñ ÂFor the given compiler, return the extensions it does not support.õ ÇTag for distinguishing incompatible ABI's on the same architecture/os.ö ÇOther implementations that this compiler claims to be compatible with.÷ Supported extensions.ø Compiler flavour and version.ù Supported language standards.ú ?A key-value map for properties not covered by the above fields.û �‰s that the compiler doesn't support reinstalling. For instance, when using GHC plugins, one wants to use the exact same version of the ghc6 package as the one the compiler was linked against. Íæ indicates that the compiler hasn't supplied this information and that we should act pessimistically.ý ›Some compilers support emitting debug info. Some have different levels. For compilers that do not the level is just capped to the level they do support.‚ ‘Some compilers support optimising. Some have different levels. For compilers that do not the level is just capped to the level they do support.Œ £We typically get packages from several databases, and stack them together. This type lets us be explicit about that stacking. For example typical stacks include: î[GlobalPackageDB] [GlobalPackageDB, UserPackageDB] [GlobalPackageDB, SpecificPackageDB "package.conf.inplace"]Note that the Ž ë is invariably at the bottom since it contains the rts, base and other special compiler-specific packages.’We are not restricted to using just the above combinations. In particular we can use several custom package dbs and the user package db together.>When it comes to writing, the top most (last) package is used.� ÷Some compilers have a notion of a database of available packages. For some there is just one global db of packages, other compilers support a per-user or an arbitrary db specified at some location in the file system. This can be used to build isolated environments of packages, for example to build a collection of related packages without installing them globally.Abstracted over� 6NB: the path might be relative or it might be absolute‘ îSome compilers (notably GHC) support profiling and can instrument programs so the system can account costs to different functions. There are different levels of detail that can be used for this accounting. For compilers that do not support this notion or the particular detail levels, this is either ignored or just capped to some similar level they do support.™çReturns Just if we can certainly determine whether a way is supported if we don't know, return NothingšÿLooks up the flag for a given extension, for a given compiler. Ignores the subtlety of extensions which lack associated flags.›œLooks up the flag for a given extension, for a given compiler. However, the extension may be valid for the compiler but not have a flag. For example, NondecreasingIndentation is enabled by default on GHC 7.0.4, hence it is considered a supported extension but not an accepted flag.»The outer layer of Maybe indicates whether the extensions is supported, while the inner layer indicates whether it has a flag. When building strings, it is often more convenient to use š , which ignores the difference.œ&Utility function for GHC only featuresùÅ Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò �žŸ ¡¢£¤ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÔó ô õ ö ÷ ø ù ú û ì í Ï Ñ Í Î Ð † ‰ ‡ Š � Ž � � Œ ˆ ‹ ê Æ Å Ø Ù Ë Ì ç ‚ ƒ „ … Ö ý þ ÿ € � Õ ü Ý ò Ô ñ á é ë ï à ð Ò ä â ã å æ Ó Ê É È Ç Þ ß Ú Û è ‘ ’ “ ” • – — ˜ Ü × î .™ ¿Ž Žš ¿ò ò› ¿À À"œ ¿Û Û-� ¿ø ø ž ¿ð 🠿¾ ¾  ¿ðð¡ ¿¾¾¢ ¿Œ Œ£ ¿ð𤠿¾¾¥ ¿Ù Ù¦ ¿ö ö§ ¿Ù4Ù<¨ ¿Ù+Ù2© ¿ŒŒª ¿ð ð'« ¿¾ ¾'¬ ¿ÙÙ­ ¿öö® ¿� �¯ ¿ó ó° ¿Á Á"± ¿Ü Ü-² ¿ù ù ³ ¿ÙÙ´ ¿ö öµ ¿Ä Ä"¶ ¿ü ü · ¿Œ Œ$¸ ¿ð)ð-¹ ¿¾)¾-º ¿Ù%Ù)» ¿öö¼ ¿ŒŒ½ ¿ð/ð3¾ ¿¾/¾3¿ ¿ÙÙ#À ¿ö ö$Á ¿� � ¿ô ô#à ¿Â Â&Ä ¿Ý Ý5Å ¿ú ú$Æ ¿Ù>ÙÉ9Duncan Coutts 2009, 2013cabal-devel@haskell.orgportableNone#3ÆÛà\Ç  Defaults are True, False and FalseÈ Call hc-pkg to retrieve a specific package :hc-pkg describe [pkgid] [--user | --global | --package-db]Ê Call hc-pkgË to get all the details of all the packages in the given package database.Ì Call hc-pkg to expose a package. 8hc-pkg expose [pkgid] [--user | --global | --package-db]Î Call hc-pkg to hide a package. 6hc-pkg hide [pkgid] [--user | --global | --package-db]Ð Call hc-pkg9 to initialise a package database at the location {path}. hc-pkg init {path}Ò Run hc-pkgà using a given package DB stack, directly forwarding the provided command-line arguments to it.Ó Call hc-pkgÑ to get the source package Id of all the packages in the given package database.(This is much less information than with Ê Ì, but also rather quicker. Note in particular that it does not include the UnitId, just the source Ú3 which is not necessarily unique in any package db.Õ Call hc-pkg$ to recache the registered packages. 1hc-pkg recache [--user | --global | --package-db]× Call hc-pkg to register a package. Áhc-pkg register {filename | -} [--user | --global | --package-db]Ù Call hc-pkg to unregister a package )Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportableNone3ÆÛà~©?Looks up the given program in the program database and runs it.ª?Looks up the given program in the program database and runs it.«6Runs the given configured program and gets the output.¬?Looks up the given program in the program database and runs it.­?Looks up the given program in the program database and runs it.®"Runs the given configured program.¯"Runs the given configured program.© verbosityThe program to runlook up the program hereAny extra arguments to addª verbosityworking directoryThe program to runlook up the program hereAny extra arguments to add« VerbosityThe program to runAny extra arguments to add¬ verbosityThe program to runlook up the program hereAny extra arguments to add­ verbosityworking directoryThe program to runlook up the program hereAny extra arguments to add® VerbosityThe program to runAny extra arguments to add¯ VerbosityWorking directoryThe program to runAny extra arguments to add詪«¬­®¯á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ÷ ø ù ú û ý þ �‚ƒ„…†ˆŠ�Ž��‘•—˜™š›œæ ç í Ç Ê Ì Ï Ñ Ò öøì žÖ × Ø Ù Ú Û Ü Ý Þ ß ùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’è„…†‡ˆ‰Š��‘’í ç æ ì ùúûüýþÿ€�‚öƒ‹Œ�Ž®¯«øÖ × Ø Ù Ú Û Ü Ý Þ ß Ç Ò Ï Ñ Ì Ê ã ž�‚�ú û …„ƒ‘›œ—™š˜†ˆ•þ ý �Ž�Ь­©ªê é ì ë ó ù è í â ÷ ï á ñ ä æ ò ç î ô ø å õ ð ?cabal-devel@haskell.orgportableNoneÆÛà°±±°@Duncan Coutts 2007BSD3cabal-devel@haskell.org(non-portable (ExistentialQuantification)NoneÆÍÛà矴create a Choice optionµ¹create a Choice option out of an enumeration type. As long flags, the Show output is used. As short flags, the first character which does not conflict with a previous one is used.¸'Parse a bunch of command line arguments¹:Show flags in the standard long option command line format¾6Helper function for creating globalCommand descriptionÀêMark command as hidden. Hidden commands don't show up in the 'progname help' or 'progname --help' output.ÂCabalÃMake a Command from standard GetOpt options.ÄŠCreate an option taking several OptDescrs. You will have to give the flags and description individually to the OptDescr constructor.Æ�Utility function, many commands do not accept additional flags. This action fails with a helpful error message if the user supplies any extra.ÇÃCreate a string-valued command line interface with a default value.È!(String -> a) variant of "optArg"ÊúCreate an option taking a single OptDescr. No explicit Name is given for the Option, the name is the first LFlag given. Example: Ê sf lf d get set * sf": Short option name, for example: ['d']. No hyphen permitted. * lf!: Long option name, for example:  ["debug"]. No hyphens permitted. * dÄ: Description of the option, shown to the user in help messages. * get(: Get the current value of the flag. * setÙ: Set the value of the flag. Gets the current value of the flag as a parameter.ËÑCreate a string-valued command line interface. Usually called in the context of Ê or Ä. Example: Ë ad mkflag showflagad&: Placeholder shown to the user, e.g. FILES+ if files are expected parameters.mkflag,: How to parse the argument into the option.showflagÓ: If parsing goes wrong, display a useful error message to the user.Ì!(String -> a) variant of "reqArg"ÍÈCreate "usage" documentation from a list of parameter configurations.Î0Default "usage" documentation text for commands.Öwraps a  CommandUI/ together with a function that turns it into a CommandÝ. By hiding the type of flags for the UI allows construction of a list of all UIs at the top level of the program. That list can then be used for generation of manual page as well as for executing the selected command.ÝInitial / empty flagsÞ;Additional explanation of the command to use in help texts.ßÑThe name of the command as it would be entered on the command line. For example "build".à+Post-Usage notes and examples in help textsá&All the Option fields for this commandâÂA short, one line description of the command to use in help texts.ãÉA function that maps a program name to a usage summary for this command.å Long command line option stringsèáAn OptionField takes one or more OptDescrs, describing the command line interface for the field.îÌWe usually have a data type for storing configuration values, where every field stores a configuration option, and the user sets the value either via command line flags or a configuration file. An individual OptionField models such a field, and we usually build a list of options associated to a configuration data type.ò!Short command line option stringsË(Common flags that apply to every commandÌÄThe help text for this command with descriptions of all the options.¸&Is the command a global or subcommand?Ãnamesynopsisusage alternativesinitial/empty flagsoptionsÄÅMkOptDescr constructors partially applied to flags and description.IJ³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõÄÛÜÝÞßàáâã¹ÑÒÓÔÕ¸¾¿óôõÎÍÃÀÐ¶ÆØÙÚÖ×·º»¼îïðñçÊÄÁÂèéêëì½äòåíÏæËÌÇÈÉŲ³´µöÃç çÄ8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone3?ÆÛàï³ùGet    that respect the Š flag.ÍçThe name of the directory where optional compilation artifacts go, such as ghc plugins and .hie files.ÎFor each known program PROG in progDb , produce a  PROG-option î.�For each known program PROG in progDb , produce a  PROG-options î.ÏFor each known program PROG in progDb , produce a  with-PROG î.‚Like Ï*, but allows to customise the option name.„ðHelper function to split a string into a list of arguments. It's supposed to handle quoted things sensibly, eg: ÜsplitArgs "--foo=\"C:/Program Files/Bar/" --baz" = ["--foo=C:/Program Files/Bar", "--baz"] ÓsplitArgs "\"-DMSGSTR=\\\"foo bar\\\"\" --baz" = ["-DMSGSTR=\"foo bar\"","--baz"]ÐHelp text for test and bench commands.†ÄA datatype that stores common flags for different invocations of a Setup, executable, e.g. configure, build, install.ˆ"Which Cabal file to use (optional)‰Build directoryŠÃWhen this flag is set, temporary files will be kept after building.ÎNote: Keeping temporary files is important functionality for HLS, which runs  cabal repl� with a fake GHC to get CLI arguments. It will need the temporary files (including multi unit repl response files) to stay, even after the  cabal repl command exits.‹3Which targets is this Setup invocation relative to?ôTODO: this one should not be here, it's just that the silly UserHooks stop us from passing extra info in other waysŒ Verbosity�Working directory (optional)ÐEither "test" or  "benchmark". Help text..ÆÅÌÊÈÉÎÇ÷øùúûüýÍþÿÑ€Î�Ï‚ƒÒÓ„Ð…ÔÂÃÄÕרֆ‡ˆ‰Š‹Œ�ÕÅá á!ÖÅß ß×Åßß$ØÅç ç!ÙÅä ä$ÚÅßßÛÅßßÜÅâ â%Æ8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàïŽ��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§ÝÇ€ €ÞÇ> > ßÇ<<#àÇ<<áÇ< <âÇææãÇ<%<,äǘ ˜åÇœ œæÇÔ Ô çÇØ Ø#èÇ? ? éÇ<<êÇÈ È ëÇÅ Å ìÇæ æíÇ<.<2îÇ� �ïÇÀ À$È8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàï8« Flags to sdist: (snapshot, verbosity)¨©ª«¬­®¯°±²³´µ¶ðÉ88ñɈ ˆòÉŒ ŒóÉ8 8Ê8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàï·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌ ôËè èõËÕ ÕöËææ÷Ë;;øËõ õùËù ùúËØ ØûËÜ ÜüËæ æýË; ;þËé éÿËÖ Ö Ì8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàïlÑ Flags to register and  unregister2: (user package, gen-script, in-place, verbosity)ÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞ€Í==�ÍÔ Ô‚ÍØ Ø!ƒÍ= =Î8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàçï<â Flags to install: (package db, verbosity)ßàáâãäåæçèéêëìíî„Ï>>…ϳ ³†Ï· · ‡Ï> >Ð8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàïïðñòóôõö÷øùúûüýþÿˆÑÓ Ó‰Ñ99ŠÑä ä‹Ñè è!ŒÑ9 9�ÑÔ Ô"Ò8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàïT«Âoutput directory of combined haddocks, the default is './haddocks'®âa shortcut option which builds documentation linked to hackage. It implies: * `--html-location=' 7https://hackage.haskell.org/package/$prg-$version/docs'Ð * `--quickjump` * `--gen-index` * `--gen-contents` * `--hyperlinked-source`²haddocksInterfaces is inferred by the haddocksAction%; currently not exposed to the user.º9When we build haddock documentation, there are two cases: «We build haddocks only for the current development version, intended for local use and not for distribution. In this case, we store the generated documentation in  distdochtml/ packagename.®We build haddocks for intended for uploading them to hackage. In this case, we need to follow the layout that hackage expects from documentation tarballs, and we might also want to use different flags than for development builds, so in this case we store the generated documentation in  distdochtml/ packageid-docs.½´Governs whether modules from a given interface should be visible or hidden in the Haddock generated content page. We don't expose this functionality to the user, but simply use ¿Ä for only local packages. Visibility of modules is available since haddock-2.26.1.À€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ŽÓŽ Ž�ÓÍ Í�ÓË<Ë>‘Ó‘ ‘’Óôô“Óºº”ÓËÆËÍ•Óÿ ÿ–Óƒ ƒ —Óû û$˜Óÿ ÿ'™ÓΠΚÓÕ Õ›ÓÑ ÑœÓô ô�Óº ºžÓËÀËÄŸÓ‘‘ Ó� �!¡ÓÏ Ï"Ô8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone3?ÆÛàFÃ:Flags that apply at the top level, not to any sub-command. ÀÁÂÃÄÅÆÇÈ¢Õ3 3£Õ… …¤Õ‰ ‰Ö8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàçïVÌ Flags to copy6: (destdir, copy-prefix (backwards compat), verbosity) ÉÊËÌÍÎÏÐÑÒÓÔÕ¥×Ô Ô¦×::§×« «¨×¯ ¯©×: :ª×Õ ÕØ8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone )3?ÆÛàçïª=ÖMore convenient version of Ö. Results in an ¶# if internal invariant is violated.×Arguments to pass to a  configure script, e.g. generated by autoconf.ÞCabalShow a PackageDB stack entryà Flags to  configure command.+IMPORTANT: every time a new flag is added, ÙÚæ should be updated. IMPORTANT: every time a new flag is added, it should be added to the Eq instanceãÇAllow depending on private sublibraries. This is used by external tools (like cabal-install) so they can add multiple-public-libraries compatibility to older ghcs by checking visibility externally.äEnable benchmark compilationåBuild bytecode libraryæexplicit CID to be usedêExtra arguments to  configureë*Additional constraints for dependencies.ìEnable program coverageíÙThe list of libraries to be included in the hpc coverage report for testsuites run with --enable-coverageþ. Notably, this list must exclude indefinite libraries and instantiations because HPC does not support backpack (Nov. 2023).îEmit debug info.ï,The packages depended on which already existðäbe as deterministic as possible (e.g., invariant over GHC, database, etc). Used by the test suiteòÅShould we dump available build information on build? Dump build information to disk before attempting to build, tooling can parse these files and use them to compile the source files themselves.ó,Enable dynamic linking of the executables.ôþAll direct dependencies and flags are provided on the command line by the user via the '--dependency' and '--flags' options.õ0path to search for extra frameworks (OS X only)öpath to search for header files÷"path to search for extra librariesøÎpath to search for extra libraries when linking fully static executablesùÅHalt and show an error message indicating an error in flag assignmentú1Enable fully static linking of the executables.û!Enable compiling library for GHCiü)The "flavor" of the compiler, e.g. GHC.ýgiven compiler locationþgiven hc-pkg locationÿexplicit IPID to be used€ÊWhen this flag is set, all tools declared in `build-tool`s and `build-tool-depends` will be ignored. This allows a Cabal package with build-tool-dependencies to be built even if the tool is not found.�Installation paths‚’The requested Backpack instantiation. If empty, either this package does not use Backpack, or we just want to typecheck the indefinite package.ƒ$Enable program coverage (deprecated)„Enable optimization.…Which package DBs to use†2Enable profiling in the library and executables.‡9Profiling detail level in the library and executables.ˆ&Enable profiling in the executables.‰Enable profiling in the libraryŠ(Profiling detail level in the library‹Enable shared profiling objectsŒInstalled executable prefix.�Installed executable suffix.Žuser specified programs args�Extend the $PATH�user specified programs paths‘All programs that cabal may run’ÝThe packages depended on which doesn't yet exist (i.e. promised). Promising dependencies enables us to configure components in parallel, and avoids expensive builds if they are not necessary. For example, in multi-repl mode, we don't want to build dependencies that are loaded into the interactive session, since we have to build them again.“ Enable relocatable package built•Build shared library–Enable -split-objs with GHC—Enable -split-sections with GHC˜Build static library™Enable executable strippingšEnable library strippingœEnable test suite compilation�ÕWhether to use response files at all. They're used for such tools as haddock, or ld.žThe --user/--global flagŸEnable vanilla library«5Pretty-print a single entry of a module substitution.¬ Inverse to «.Íç ÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡­ÛŠ Š®Û“ “¯Ûð ð°Û¶ ¶±Ûº º²Ûðð³Ûðð ´Û‹ ‹ BNone&'3?ÆÛàìU-££Ä contains configuration options that can be controlled by the user.¥-Whether to enable executable program coverage¦*Whether to enable library program coverage§&Whether to build a relocatable package¨&Use -split-objs with GHC, if available©*Use -split-sections with GHC, if availableª+Whether to strip executables during install«)Whether to strip libraries during install¬*Whether to build bytecode versions of libs­*Whether to emit debug info (if available).®'Whether to link executables dynamically¯,Whether to link executables fully statically°1Whether to build libs suitable for use with GHCi.±2Whether to build with optimization (if available).²+Whether to build executables for profiling.³"Level of automatic profile detail.´Whether to build normal libs.µ"Level of automatic profile detail.¶,Whether to build profiling versions of libs.·)Whether to build shared versions of libs.¸ÈWhether to build static versions of libs (with all other libs rolled in)¹Whether to build normal libs.ºÛInformation about individual components in a package, determined after the configure step.¼ÙAll the components to build, ordered by topological sort, and with their INTERNAL dependencies over the intrapackage dependency graph. TODO: this is assumed to be short; otherwise we want some sort of ordered map.½ÌA map from component name to all matching components. These coincide with ¼Ò There may be more than one matching component because of backpack instantiations¾óAll the info about the installed packages that the current package depends on (directly or indirectly). The copy saved on disk does NOT include internal dependencies (because we just don't have enough information at this point to have an InstalledPackageInfoå for an internal dep), but we will often update it with the internal dependencies; see for example _Ü<. (This admonition doesn't apply for per-component builds.)¿ûThe packages we were promised, but aren't already installed. MP: Perhaps this just needs to be a Set UnitId at this stage.ÀÀì contains options that can be controlled by the user and serve as inputs to the configuration of a package.ÂõExtra args on the command line for the configuration step. Needed to re-run configuration when .cabal is out of dateÃÞOptions to control the build, e.g. whether to enable profiling or to enable program coverage.Ä"Location and args for all programsʼn'LocalBuildDescr ' contains the information Cabal determines after performing package-wide and per-component configuration of a package.;This information can no longer be changed after that point.ÇÜInformation about individual components in the package determined after the configure step.ÈíInformation that is available after configuring the package itself, before looking at individual components.ÉÉ” contains the information Cabal determines after performing package-wide configuration of a package, before doing any per-component configuration.Ë The compiler we're building withÌ;What components were enabled during configuration, and why.ÍäOptions passed to the configuration step. Needed to re-run configuration when .cabal is out of dateÎûFor per-package builds-only: an extra list of libraries to be included in the hpc coverage report for testsuites run with --enable-coverageþ. Notably, this list must exclude indefinite libraries and instantiations because HPC does not support backpack (Nov. 2023).Ï9The final set of flags which were picked for this packageÐThe platform we're building forÑùThe installation directories for the various different kinds of files TODO: inplaceDirTemplates :: InstallDirs FilePathÒ“WARNING WARNING WARNING Be VERY careful about using this function; we haven't deprecated it but using it could introduce subtle bugs related to µ.«In principle, this is supposed to contain the resolved package description, that does not contain any conditionals. However, it MAY NOT contain the description with a µ applied to it; see µã for the whole sordid saga. As much as possible, Cabal library should avoid using this parameter.Ó5the filename containing the .cabal file, if availableÔ)What package database to use, global/user3¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔ3ÉÊËÌÍÎÏÐÑÒÓÔº»¼½¾¿ÅÆÇÈÀÁÂÃÄ£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹¢ÕÝÊ ÊÖÝÄ Ä$×ÝÈ È!ØÝÆ Æ ÙÝ Â"ÚÝÀ ÀÛÝÀÀÜÝô ôÝÝ� �ÞÝ‚ ‚ßÝ× ×àÝÀÀáÝôôâÝ��ãÝ‚‚äÝ××åÝÀ À$æÝôô çÝ�� èÝ‚‚ éÝ×× êÝË Ë!ëÝÅ Å(ìÝÉ É%íÝÇ Ç$îÝà Ã&CNone &(3?ÆÛàìï 5ðReturn the list of default «ís associated with a configured package, in the order they need to be built. Has a prime because it takes a ‰# argument which may disagree with › in ‰.ó�Returns a list of ways, in the order which they should be built, and the way we build executable and foreign library components.âIdeally all this info should be fixed at configure time and not dependent on additional info but ‰ø is per package (not per component) so it's currently not possible to configure components to be built in certain ways.ô Return all ás associated with (:. In the presence of Backpack there may be more than one!ö Return all «s associated with (Û. In the presence of Backpack there may be more than one! Has a prime because it takes a ‰# argument which may disagree with › in ‰.øÎExtract the compatibility package key from the public library component of a ‰à if it exists, or make a fake package key based on the package ID.ù Extract the Œ) from the public library component of a ‰Ä if it exists, or make a fake component ID based on the package ID.ú Extract the ¶ of a ‰. This is a "safe" use of ›û Extract the �" from the library component of a ‰? if it exists, or make a fake unit ID based on the package ID.ý3Return the list of all targets needed to build the uidsÇ, in the order they need to be built. Has a prime because it takes a ‰# argument which may disagree with › in ‰.þ=The (relative or absolute) path to the package root, based onthe working directory flagthe .cabal path‚ðIs coverage enabled for test suites? In practice, this requires library and executable profiling to be enabled.†Execute f for every «÷ in the package, respecting the build dependency order. (TODO: We should use Shake!) Has a prime because it takes a ‰# argument which may disagree with › in ‰.ˆExecute f for every « needed to build uidËs, respecting the build dependency order. Has a prime because it takes a ‰# argument which may disagree with › in ‰.‰1Data cached after configuration step. See also AÞ.ŠÂThis pattern synonym is for backwards compatibility, to adapt to ‰ being split into LocalBuildDescr and LocalBuildConfig.™âInformation about a package configuration that can be modified by the user at configuration time.šÎInformation about a package determined by Cabal after the configuration step.·+Convenience function to generate a default « from a á0. The idea is to call this once, and then use «* everywhere else. Private to this module.Äïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²ʼnŠ�”�’–Œ•œŽ��—›¯©²¬®¥¦ª°±£­«¨¤§ Ÿ¡¢‘˜“ž‹š™Šùûøúñò�÷þÿ€ôö„ð†ýˆ‚óõƒï…ü‡ï Warning: ÊBy using this function, you may be introducing a bug where you retrieve a  Component which does not have µ+ applied to it. See the documentation for µ1 for an explanation of the issue. If you have a ‰ handy (NOT from the ‰Õ), try using the primed version of the function, which takes it as an extra argument.õ Warning: ÊBy using this function, you may be introducing a bug where you retrieve a  Component which does not have µ+ applied to it. See the documentation for µ1 for an explanation of the issue. If you have a ‰ handy (NOT from the ‰Õ), try using the primed version of the function, which takes it as an extra argument.ü Warning: ÊBy using this function, you may be introducing a bug where you retrieve a  Component which does not have µ+ applied to it. See the documentation for µ1 for an explanation of the issue. If you have a ‰ handy (NOT from the ‰Õ), try using the primed version of the function, which takes it as an extra argument.ƒ Warning: ÊBy using this function, you may be introducing a bug where you retrieve a  Component which does not have µ+ applied to it. See the documentation for µ1 for an explanation of the issue. If you have a ‰ handy (NOT from the ‰Õ), try using the primed version of the function, which takes it as an extra argument.… Warning: ÊBy using this function, you may be introducing a bug where you retrieve a  Component which does not have µ+ applied to it. See the documentation for µ1 for an explanation of the issue. If you have a ‰ handy (NOT from the ‰Õ), try using the primed version of the function, which takes it as an extra argument.‡ Warning: ÊBy using this function, you may be introducing a bug where you retrieve a  Component which does not have µ+ applied to it. See the documentation for µ1 for an explanation of the issue. If you have a ‰ handy (NOT from the ‰Õ), try using the primed version of the function, which takes it as an extra argument.³ßž ž´ß“ “µß““¶ß““ ·ßŸ Ÿ#Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableNone&3ÆÛàìÜ ¸See àá.ºÏBackwards compatibility function which computes the InstallDirs assuming that $libname� points to the public library (or some fake package identifier if there is no public library.) IF AT ALL POSSIBLE, please use ¸ instead.»/Absolute path to the current working directory.½ÉGet all module names that needed to be built by GHC; i.e., all of these §Çs have interface files associated with them that need to be installed.¿üDetermine the directories containing the dynamic libraries of the transitive dependencies of the component we are building.ÅWhen wanted, and possible, returns paths relative to the installDirs ìÂËInterpret a symbolic path with respect to the working directory stored in ‰.:Use this before directly interacting with the file system.-NB: when invoking external programs (such as GHCÜ), it is preferable to set the working directory of the process rather than calling this function, as this function will turn relative paths into absolute paths if the working directory is an absolute path. This can degrade error messages, or worse, break the behaviour entirely (because the program might expect certain paths to be relative).4See Note [Symbolic paths] in Distribution.Utils.PathÃ,Retrieve an optional working directory from ‰.ÄSee àâÅÏBackwards compatibility function which computes the InstallDirs assuming that $libname� points to the public library (or some fake package identifier if there is no public library.) IF AT ALL POSSIBLE, please use Ä instead.Ç%Perform the action on each buildable ¸ or ¹Ö (Component) in the PackageDescription, subject to the build order specified by the compBuildOrder field of the given ‰È#Perform the action on each enabled º in the package description.É#Perform the action on each enabled ¹3 in the package description. Extended version of »+ that also gives corresponding build info.Ê#Perform the action on each enabled ¼& in the package description with the á.¿Building for inplace?&Generate prefix-relative library pathsComponent that is being built´ûíõùîïô÷ýüøúð󸹺»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËñóøùûþÿ€/012&'"9:;<ÕרÖÙÚÛëçâáàèæÝÞãêåäéßìÜÔÓ¨»º¹¿ª®·¯°±­¼²¶«¬¸µ³´©½¾áâãäåæçèéêëìíîïðñò󉊋Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²345678()*+,-.#$%¹‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²Šùûøñþÿ€Âûó345678()*+,-.)*+.#$%"'&áâãäåæçèéêëìíîïðñòó¾21/0<;:9¼¿½ÇÊÉÈËÁÀûíõùîïô÷ýüøúðóÕרÖÙÚÛëçâáàèæÝÞãêåäéßìÜÔÓ¨»º¹¿ª®·¯°±­¼²¶«¬¸µ³´©½¾ºÅ¹¸ÄÆDNoneÆÛà Ì >‚ä>>ƒä>>„ä> >$…ä>&>*HSimon Marlow 2008cabal-devel@haskell.orgportableNone†The contents of the cabal_macros.h" for the given configured package.‡(Helper function that generates just the  VERSION_pkg and MIN_VERSION_pkgâ macros for a list of package ids (usually used with the specific deps of a configured package).†‡†‡åNoneÅÇÛà﵈øIn GHC 8.0, the string we pass to GHC to use for symbol names for a package can be an arbitrary, IPID-compatible string. However, prior to GHC 8.0 there are some restrictions on what format this string can be (due to how ghc-pkg parsed the key): ØIn GHC 7.10, the string had either be of the form foo_ABCD, where foo is a non-semantic alphanumeric/hyphenated prefix and ABCD is two base-64 encoded 64-bit integers, or a GHC 7.8 style identifier.ÏIn GHC 7.8, the string had to be a valid package identifier like foo-0.1.ÓSo, the problem is that Cabal, in general, has a general IPID, but needs to figure out a package key / package ID that the old ghc-pkg will actually accept. But there's an EVERY WORSE problem: if ghc-pkg decides to parse an identifier foo-0.1-xxx as if it were a package identifier, which means it will SILENTLY DROP the "xxx" (because it's a tag, and Cabal does not allow tags.) So we must CONNIVE to ensure that we don't pick something that looks like this.ÃSo this function attempts to define a mapping into the old formats.#The mapping for GHC 7.8 and before:ÓWe use the *compatibility* package name and version. For public libraries this is just the package identifier; for internal libraries, it's something like "z-pkgname-z-libname-0.1". See computeCompatPackageName for more details.The mapping for GHC 7.10:‹For CLibName: If the IPID is of the form foo-0.1-ABCDEF where foo_ABCDEF would validly parse as a package key, we pass ABCDEFÀ. (NB: not all hashes parse this way, because GHC 7.10 mandated that these hashes be two base-62 encoded 64 bit integers), but hashes that Cabal generated using ‰, are guaranteed to have this form.ÒIf it is not of this form, we rehash the IPID into the correct form and pass that.ÕFor sub-components, we rehash the IPID into the correct format and pass that.‰.This method computes a default, "good enough" Œì for a package. The intent is that cabal-install (or the user) will specify a more detailed IPID via the --ipid flag if necessary.ˆ‰JNonef Š+Uniquely identifies a configured component.‹The (ø of a component; this uniquely identifies a fragment of syntax within a specified Cabal file describing the component.Œ%The package this component came from.�Pretty-print a ’.’1A configured component, we know exactly what its Œ is, and the Œs of the things it depends on.”7Unique identifier of component, plus extra useful info.•ÆThe fragment of syntax from the Cabal file describing this component.–!Dependencies on executables from  build-tools and build-tool-depends.—?The mixins of this package, including both explicit (from the mixins field) and implicit (from  build-dependsÃ). Not mix-in linked yet; component configuration only looks at Œs.˜„Is this the public library component of the package? (If we invoke Setup with an instantiation, this is the component the instantiation applies to.) Note that in one-component configure mode, this is always True, because any component is the "public" one.)¿ Construct a ’, given that the Œã and library/executable dependencies are known. The primary work this does is handling implicit backpack-include fields.ÀAlso computes the ŒÕ, and sets cc_public if necessary. This is Cabal-only; cabal-install won't use this.Š‹Œ�Ž��‘’“”•–—˜™’“”•–—˜‹ŠŒ�‘�™Ž�KNone ÐÞà. œUniquely identifies a ¢. Corresponds to Š.�The instantiation of ŸÉ; this always has the invariant that it is a mapping from a module name A to  A (the hole A).žCorresponds to Œ.ŸThe Ú= of this component in the "default" instantiation. See also �. ¢-s cannot be instantiated (e.g., there is no ModSubst instance for them).¢ÊA linked component is a component that has been mix-in linked, at which point we have determined how all the dependencies of the component are explicitly instantiated (in the form of an OpenUnitId). ’ is mix-in linked into ¢#, which is then instantiated into ReadyComponent.¤$Uniquely identifies linked component¥Corresponds to •.¦ build-tools and build-tool-depends dependencies. Corresponds to –.§Corresponds to —é, but (1) this does not contain includes of signature packages (packages with no exports), and (2) the   for requirements (stored in Á+) has been removed, as it is reflected in Ú.)¨:Is this the public library of a package? Corresponds to ˜.©ËThe module shape computed by mix-in linking. This is newly computed from ’ªLike §Ë, but this specifies includes on signature packages which have no exports. ÜWhether there are any "promised" package dependencies which we won't find already installed.¡ÝWhether there are any "promised" package dependencies which we won't find already installed.š›œ�žŸ ¡¢£¤¥¦§¨©ª«¢£¤¥¦§¨©ª�Ÿœž ¡š«›¬æï ï!LNoneh­ÁError message when there is a cycle; takes the SCC of components.®$Given the package description and a ‰Ù (used to determine if a package name is internal or not), sort the components in dependency order (fewest dependencies first). This is NOT necessarily the build order (although it is in the absence of Backpack.)¯ Pretty-print ².° Create a  of 3+, or report a cycle if there is a problem.±ÆA graph of source-level components by their source-level dependencies²ÑA list of components associated with the source level dependencies between them.­®¯°±²±²°®¯­ç8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàï ³´µ¶·¸¹º»¼½¾¿ÃèÏ ÏÄè55Åèö öÆèú úÇè5 5ÈèÐ Ðé8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàïÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐúûüÉê× ×Êê== Ëê³ ³Ìê· ·Íê= =Îê==ÏêØ Øë8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone)3?ÆÛàïÑÒÓÔÕÖרÙÚÛÜÝÞÐìÑ ÑÑì77Òì˜ ˜Óìœ œ"Ôì7 7ÕìÒ Ò#A8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone3?ÆÛàçï,ã3What kind of build phase are we doing/hooking into?ØIs this a normal build, or is it perhaps for running an interactive session or Haddock?ä)Build steps for generating documentation.åBuild steps for Hscolour.æA normal build.ç'Build steps for an interactive session.óç ÆÅÌÊÈÉÎÇßàáâÑÒÓÔÀÁÂó´µ÷øùúûüýþÿ€�‚ƒ„…ÖרÙÚÛÜÝÞßÉÊËÀÁ€�‚ƒ„…†‡ïðñßàáÍÎÏз¸¹¨©ªŽ��‘ÂÃÄÕרÖãäåæçÕÖרÙÚÛÜÝÞÄÅÆÇÈÉÊËÌÍÎÏж·¸¹º»¼½¾¿†‡ˆ‰Š‹Œ�àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡ÌÍÎÏÐÑÒÓÔÕÃÄÅÆÇȈ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿òóôõö÷øùúûüýþÿâãäåæçèéêëìíîÑÒÓÔÕÖרÙÚÛÜÝÞº»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌ«¬­®¯°±²³´µ¶’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§úûüÿÃÄÅÆÇÈÁÀ†‡ˆ‰Š‹Œ�üùàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡áÛÚØÖç ÝÞßÌÍÎÏÐÑÒÓÔÕÍËÊÉâãäåæçèéêëìíîãàßẻ¼ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥‰‚€„½¾¿¦§¨©ª«¬­®¯°±²³´µ¶·¸¹ƒ�†òóôõö÷øùúûüýþÿóðïñÄÅÆÇÈÉÊËÌÍÎÏÐÅÃÂÀúûüº»¼½¾¿ÀÁÂÃÄÅÆ»·¸ÇÈÉÊË̶·¸¹º»¼½¾¿·µ´³ÑÒÓÔÕÖרÙÚÛÜÝÞÒÎÍÏЫ¬­®¯°±²³´µ¶¬©¨ª’“”•–—˜™š›œ�žŸ ¡“�Ž�¢£¤¥¦§ÕÖרÙÚÛÜÝÞÖÔÓÑÕרÖ×ÙúûÁ…‡Ü‘Ò�‚ƒ¹„ýÿÄÆÅÇÈÉÊÌÎÂÃ÷ø…þ€ãäåæçßáâàèíú úéí¼ ¼êí¼¼ëíû û!MNoneY ìGet the ‹ of the component being built.íGet the á for the component being built.îGet the ó # being used to build the component.ïGet the 3 being built.ðIs the 3 being built a Library?ñGet the €2 from the context the component being built is in.ò�The information required for a build computation which is available right before building each component, i.e. the pre-build component inputs.ô What kind of build are we doing?õInformation about the packageö)Information about an individual componentÂìíîïðñßàáâòóôõöãäåæç‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²«¬­®Ãòóôõöñïðíìîãäåæç‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²Š«¬­®ßáâàN(c) Duncan Coutts 2012BSD-likeduncan@community.haskell.orgNone &39?ÆØÛàìøÇRead a list of user-supplied build target strings and resolve them to €s according to a ‰æ. If there are problems with any of the targets e.g. they don't exist or are misformatted, throw an Š.ùTake a list of Ê9 build targets, and parse and validate them into actual « s to be built registered whatever.ýÒGiven a bunch of user-specified targets, try to resolve what it is they refer to.þUnambiguously render a €., so that it can be parsed in all situations.€A fully resolved build target.�A specific component‚,A specific file within a specific component.ƒ.A specific module within a specific component.† expected thing(actually got)‡ (no such thing, actually got)Œ4Various ways that a user may specify a build target.ÖœCombine two matchers. Exact matches are used over inexact matches but if we have multiple exact, or inexact then the we collect all the ambiguous matches.×ÏA target specified by a single name. This could be a component module or file. Êcabal build foo cabal build Data.Foo cabal build Data/Foo.hs Data/Foo.hscجA target specified by a qualifier and name. This could be a component name qualified by the component namespace kind, or a module or file qualified by the component name. Ðcabal build lib:foo exe:foo cabal build foo:Data.Foo cabal build foo:Data/Foo.hsÙóA fully qualified target, either a module or file qualified by a component name with the component namespace kind. ácabal build lib:foo:Data/Foo.hs exe:foo:Data/Foo.hs cabal build lib:foo:Data.Foo exe:foo:Data.Foo�CabalŸCabalÚ‰A matcher embodies a way to match some input as being some recognised value. In particular it deals with multiple and ambiguous matches.&There are various matcher primitives ( matchExactly, Û), ways to combine matchers ( ambiguousWith, shadows;) and finally we can run a matcher against an input using Ü.ÝreadUserBuildTarget "comp"$Right (UserBuildTargetSingle "comp")readUserBuildTarget "lib:comp"*Right (UserBuildTargetDouble "lib" "comp")"readUserBuildTarget "pkg:lib:comp"0Right (UserBuildTargetTriple "pkg" "lib" "comp")readUserBuildTarget "\"comp\""$Right (UserBuildTargetSingle "comp")"readUserBuildTarget "lib:\"comp\""*Right (UserBuildTargetDouble "lib" "comp")&readUserBuildTarget "pkg:lib:\"comp\""0Right (UserBuildTargetTriple "pkg" "lib" "comp")'readUserBuildTarget "pkg:lib:comp:more"6Left (UserBuildTargetUnrecognised "pkg:lib:comp:more")&readUserBuildTarget "pkg:\"lib\":comp"5Left (UserBuildTargetUnrecognised "pkg:\"lib\":comp")ÜæGiven a matcher and a key to look up, use the matcher to find all the possible matches. There may be Þ , a single ß match or you may have an à" match with several possibilities.Û6A primitive matcher that looks up a value in a finite ж. It checks for an exact or inexact match. We get an inexact match if the match is not exact, but the canonical forms match. It takes a canonicalisation function for this purpose.¿So for example if we used string case fold as the canonicalisation function, then we would get case insensitive matching (but it will still report an exact match when the case matches too).áÄCheck that the given build targets are valid in the current context.)Also swizzle into a more convenient form.â)Lift a list of matches to an exact match.ã)Lift a list of matches to an exact match.ä)Combine two matchers. This is similar to  ambiguousWith“ with the difference that an exact match from the left matcher shadows any exact match on the right. Inexact matches are still collected however.åUnless you use ‰!, this function is PARTIAL; use þ instead.÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Žùø€�‚ƒþˆ‰Š‹÷Œúÿ�Žüý„…†‡û�îá á�î‹ ‹‘î† †’î‹ ‹“î½"½)”î½½ •îú ú–î† †—î½ ½˜îÜÜ™îööšî††›î� �œîå å�"žî½½Ÿîßß! îöö¡î††¢îÚ Ú£î½½¤îÕ Õ¥îÜ Ü¦îà à§îúú¨îö ö©îú úO9Isaac Jones 2003-2004, Duncan Coutts 2008BSD3cabal-devel@haskell.orgportableNone3ÆØÛà .ªÑThe directory in which we put auto-generated modules for a particular component.«ÍThe name of the auto-generated PackageInfo_* module associated with a package¬ÙThe directory in which we put auto-generated modules for EVERY component in the package.­ÇThe name of the auto-generated Paths_* module associated with a package®>The directory where we put build results for a benchmark suite¯.Build info json file, generated in every build±ÃExtension for dynamically linked (or shared) libraries (typically "so" on Unix and "dll" on Windows)²:The directory where we put build results for an executable³ÌDefault extension for executable files on the current platform. (typically "" on Unix and "exe" on Windows or OS/2)´>The directory where we put build results for a foreign library¼íThis is the name of the directory in which the generated haddocks should be stored. It does not include the  distdochtml prefix.ÌIt is also used by `haddock-project` when constructing its output directory.½€This is the name of the directory in which the generated haddocks for a (sub)library should be stored. It does not include the  distdochtml prefix.ÌIt is also used by `haddock-project` when constructing its output directory.¾)A name of a (sub)library used by haddock.¿!File path of the ".haddock" file.À8A name of a (sub)library used by haddock, in the form ` package: library` if it is a sublibrary, or ` package` if it is the main library.Used by `haddock-project` and cï.ÃÉThe directory to which generated haddock documentation should be written.Ç‚Create a library name for a bundled shared library from a given name. This matches the naming convention for shared libraries as implemented in GHC's packageHsLibs function in the Packages module. If the given name is prefixed with HS, then this prepends lib¶ and appends the compiler flavour/version and shared library extension e.g.: "HSrts-1.0" -> "libHSrts-1.0-ghc8.7.20190109.so" Otherwise the given name should be prefixed with C, then this strips the C , prepends lib5 and appends the shared library extension e.g.: Cffi -> "libffi.so"ÈÈCreate a library name for a shared library from a given name. Prepends lib and appends the #-* as well as the shared library extension.ÉÈCreate a library name for a static library from a given name. Prepends lib+ and appends the static library extension (.a).Ï5Extension for object files. For GHC the extension is "o".ÐèThe path to the pre-build rules cache file for a component, used to compute rule staleness across runs.ÒExtension for static librariesîTODO: Here, as well as in dllExtension, it's really the target OS that we're interested in, not the build OS.Ó:The name of the stub executable associated with a library æ.Ô9The directory where we put build results for a test suite,ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔý,ýѯ¼½Ä»ÅìªÐ­«°ÂÀÁ¾¿ÉÊËÈÍÌÎÆÇ³Ï±Ò¹¸¶ºµ·²´ÓÔ®PAndres Loeh 2009BSD3cabal-devel@haskell.orgportableNone3ÆÛàèáç'The flags for the supported extensions.èìHack to add version numbers to UHC-built-in packages. This should sooner or later be fixed on the UHC side.é*Name of the installed package config file.êÊCheck if a certain dir contains a valid package. Currently, we are looking only for the presence of an installed package configuration. TODO: Actually make use of the information provided in the file.ë4Create a trivial package info from a directory name.ÕÖרÙÚÛרÖÕÚÛÙQNone3ÆÛà–Ý2Source code for library test suite stub executableÞÓThe filename of the source file for the stub executable associated with a library  TestSuite.ßÅMain function for test stubs. Once, it was written directly into the stub, but minimizing the amount of code actually in the stub maximizes the number of detectable errors when Cabal is compiled.àFrom a test stub, write the â: to temporary file for the calling Cabal process to read.á$Write the source file for a library  TestSuite stub executable.ì The test runner used in library  TestSuite$ stub executables. Runs a list of ´çs. An executable calling this function is meant to be invoked as the child of a Cabal process during  ./setup test. A â‰, provided by Cabal, is read from the standard input; it supplies the name of the test suite and the location of the machine-readable test suite log file. Human-readable log information is written to the standard output for capture by the calling Cabal process.álibrary  TestSuite# for which a stub is being created6path to directory where stub source should be locatedÓÜÝÞßàáÜÝÞßÓàáRNoneÆÛàââSNone&(+,39?ÃÆÕØÛàçìóa,æRun all pre-build rules.6This function should only be called internally within CabalÕ, as it is used to implement the (legacy) Setup.hs interface. The build tool (e.g.  cabal-install or hls¡) should instead go through the separate hooks executable, which allows us to only rerun the out-of-date rules (instead of running all of these rules at once).çLike æÎ, except it can be used when communicating with an external hooks executable.ëEmpty build hooks.ìEmpty configure phase hooks.íEmpty copy/install hooks.îŽUse this smart constructor to declare an empty set of changes by a per-component pre-configure hook, and override the fields you care about.Use this rather than £Ä to avoid relying on internal implementation details of the latter.ï�Use this smart constructor to declare an empty set of changes by the package-wide pre-configure hook, and override the fields you care about.Use this rather than ­Ä to avoid relying on internal implementation details of the latter.ð Empty hooks.òBuild-time hooks.ôPer-component post-build hook.õ+Per-component fine-grained pre-build rules.÷A diff to a Cabal 32, that gets combined monoidally into an existing 3.úConfigure-time hooks.Order of execution:þ,configure the package,ü,ý,configure the components.ü&Package-wide post-configure hook. See ‘.ý&Per-component pre-configure hook. See œ.þ%Package-wide pre-configure hook. See ¥.�ØA per-component install hook, which can only perform side effects (e.g. copying files).‡Copy/install hooks.‰Per-component install hook.‘!Package-wide post-configure step.ìPerform side effects. Last opportunity for any package-wide logic; any subsequent hooks work per-component.’/Inputs to the package-wide post-configure step.˜-what kind of build phase are we hooking into?™information about the packageš)information about an individual componentœ!Per-component pre-configure step.¨For each component of the package, this hook can perform side effects, and return a diff to the passed in component, e.g. to declare additional autogenerated modules.�/Inputs to the per-component pre-configure step.¢0Outputs of the per-component pre-configure step. Prefer using noPreComponentOutputsë and overriding the fields you care about, to avoid depending on implementation details of this datatype.¦.Inputs to the package-wide pre-configure step.ª Warning: the ž in the ¯3 field will not contain any unconfigured programs.¬/Outputs of the package-wide pre-configure step. Prefer using ïë and overriding the fields you care about, to avoid depending on implementation details of this datatype.°Hooks into the cabal build phases.Usage:In your .cabal file, declare build-type: Hooks (with a  cabal-version greater than or equal to 3.14),In your .cabal file, include a  custom-setup4 stanza which declares the dependencies of your  SetupHooks; module; this will usually contain a dependency on the  Cabal-hooks package. Provide a  SetupHooks.hs module next to your .cabal file; it must export setupHooks :: SetupHooks.²Hooks into the build phase.ËThese hooks are relevant to any build-like phase, such as repl or haddock.³Hooks into the configure phase.´"Hooks into the copy/install phase.а… can be combined monoidally. This is useful to combine setup hooks defined by another package with your own package-specific hooks.Warning: this © instance is not commutative.íÿCollects why certain rules were not demanded (and thus not run), in order to construct an error message to report to the user.î The rules that were not demandedïÒRules that generate Haskell files that are not declared as autogenerated modules.ðÌRules that generate files that aren't in the appropriate autogen directory.ñA newtype to hang off the Semigroup PreConfComponentHook instance.òA newtype to hang off the Semigroup PreConfPackageHook instance.ó!Is the file we depend on missing?ô;Is the rule up to date (so that we can skip re-running it)?>As per the SetupHooks documentation, a rule must be re-run if:[N] the rule is new, or2[S] the rule matches with an old rule, and either:È[S1] an input to the rule has changed (either a file or rule dependency) [S2] the rule itself has changedõTraverse the components of a ‰.:The function must preserve the component type, i.e. map a 7 to a 7, a 5 to a 5, etc.ôworking directory!old rules from the previous buildrules that have been re-run!dynamic dependencies of this ruleÛàáâãäåæçèéêëìíîïðãäåæçñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µÛ°±²³´ðúûüýþ즧¨©ª«¬­®¯ï¥’“”•‘�žŸ ¡¢£¤îœ÷øùå䊀ÿµñöòóôõëãäåæçáâà–—˜™š›Œ�Ž��‹‡ˆ‰í‚ƒ„…†�ãèæçêé0¶ðú ú /·ð� � '¸ð� � )¹ð‚ ‚ &ºðŠ Š (»ð… … '¼ð‡ ‡ (½ðý ý %¾ðÿ ÿ &¿ðí íÀðµ µÁðÿ ÿÂ𬠬ÃðŽ ŽÄ𘠘ÅðÚ ÚÆðå åÇðÚ ÚÈðÌ ÌÉð× ×Êð½ ½"Ëð„ „Ìðù ù ÍðÀ À/Îð¾ ¾2ÏðÀ ÀÐ即Ñð› ›Òð� �-Óðæ æ'Ôð››ÕðííÖðµµ×ðÿÿØð¬¬ÙðŽŽÚð˜˜ÛðÚÚÜðååÝðû û 3Þð‘ ‘ +ßðŽ Ž -àðƒ ƒ *áð‹ ‹ ,âð† † +ãðˆ ˆ ,äðþ þ )åð€ € *TNone&'159?ÁÃÅÇàçìóæCreate a hooks executable main given the package's °.4The executable expects three command-line arguments: ÈA reference to an input communication handle (to read hook inputs from).ÉA reference to an output communication handle (to write hook outputs to).The hook type to run.ŽThe hook reads binary-encoded data from the input handle, runs the requested hook, and writes the binary-encoded result to the output handle.çÊThe version of the Hooks API built into this version of the Cabal library.ÀUsed for handshake before beginning inter-process communication.èÃTracks the parts of the Cabal API relevant to its binary interface.ëÃTracks the parts of the Hooks API relevant to its binary interface.ð$The version of the Hooks API in use.ÀUsed for handshake before beginning inter-process communication.öMissing hook type argument.÷0Could not parse a communication handle argument.ø3Incorrect arguments passed to the hooks executable.ù Unknown hook type was requested.ú,Failed to decode the binary input to a hook.û8The rule does not have a dynamic dependency computation.üÅAn error describing an invalid argument passed to a hooks executable.ý/The verbosity used inside the hooks executable.–The hooks executable is always invoked as a separate process, so stdout and stderr are available for verbosity output and can be redirected via the System.Process API.þæRun a hook by reading its input from a handle, invoking it, and writing its output to another handle.ø hook nameú hook input that failed to decode$byte offset at which decoding faileddecoding error messageþ&Input and output communication handles"Hook name (used in error messages)The hook to runæçèéêëìíîïðñòóôæðñòóôçèéêëìíîï õñ��öñ€€÷ñû û=øñµ µùñ’’úñ¤¤ûñ€"€)üñ€€ýñÆ Æþñ€€ ÿñ””/€ñ¦¦/òIsaac Jones 2003-2007cabal-devel@haskell.orgportableNone3ÆÛàmÿ/Adjust the way we find and configure gcc and ld€ .Strip out flags that are not supported in ghci� &GHC's rendering of its host or target ‚ à as used in its platform strings and certain file locations (such as user package db location).ƒ The .ghc.environment-$arch-$os-$ver file name„ &GHC's rendering of its host or target … à as used in its platform strings and certain file locations (such as user package db location).‚�GHC's rendering of its platform and compiler version string as used in certain file locations (such as user package db location). For example x86_64-linux-7.10.4† šCreate the required packaged arguments, but filtering out package arguments which aren't yet built, but promised. This filtering is used when compiling CCxxÉAsm files, and is a hack to avoid passing bogus `-package` arguments to GHC. The assumption being that in 99% of cases we will include the right `-package` so that the C file finds the right headers.ƒ.Render a bunch of GHC environment file entries‡ /Render an individual GHC environment file entry„3Make entries for a GHC environment file based on a ‰ $ and a bunch of package (unit) ids.‰If you need to do anything more complicated then either use this as a basis and add more entries, or just make all the entries directly.…Write a .ghc.environment-$arch-$os-$ver file in the given directory.The ˆ  and GHC ö% are needed as part of the file name.%Returns the name of the file written.†'The kinds of entries we can stick in a .ghc.environment file.‡ clear-package-dbˆ  -- a comment‰global-package-db, user-package-db or package-db blahpackage.conf.dŠ package-id foo-1.0-4fe301a...…directory in which to put itthe GHC target platformthe GHC version the content$‰ �ÿ€ Š ‹ Œ � � ƒ Ž � „ ‚� ‘ ’ † “ ” ƒ‡ „• – — ˜ …†‡ˆ‰Š™ š › œ ó” ”� 󔔞 ó””ôNoneÆÛà‹Œ�ŽŸ õ. .!  õ, ,öNone3Ûà *¡ —Returns True if the modification date of the given source file is newer than the object file we last compiled for it, or if no object file exists yet.¢ Decode argument to '-main-is'Returns Í( if argument set only the function name.ÅThis code has been stolen/refactored from GHC's DynFlags.setMainIs function. The logic here is deliberately imperfect as it is intended to be bug-compatible with GHC's parser. See discussion in  Àhttps://github.com/haskell/cabal/pull/4539#discussion_r118981753.£ Main module name when overridden by ghc-options: -main-is ... or Í if no -main-is flag could be found. In case of Í, ÷ø can be assumed.¤ æGets the target name (name of actual executable file) from the name of an executable-like component (¹, æ, º).¥ 7Is the extension of the file in the list of extensions?¦ ËFind the path to the entry point of an executable (typically specified in main-is, and found in hs-source-dirs -- yes, even when main-is is not a Haskell file).§ #Name for the library when building.¡If the `lib-version-info` field or the `lib-version-linux` field of a foreign library target is set, we need to incorporate that version into the SONAME field.©If a foreign library foo has lib-version-info 5:1:2, it should be built as libfoo.so.3.2.1. We want it to get soname libfoo.so.3. However, GHC does not allow overriding soname by setting linker options, as it sets a soname of its own (namely the output filename), after the user-supplied linker options. Hence, we have to compile the library with the soname as its filename. We rename the compiled binary afterwards.ìThis method allows to adjust the name of the library at build time such that the correct soname can be set.¨ 8Target name for a foreign library (the actual file name)ÅWe do not use mkLibName and co here because the naming for foreign libraries is slightly different (we don't use "_p" or compiler version suffices, and we don't want the "lib" prefix on Windows).TODO: We do use ±» and co here, but really that's wrong: they use the OS used to build cabal to determine which extension to use, rather than the target OS (but this is wrong elsewhere in Cabal as well).© 3Finds the object file name of the given source fileª +Is this a C source file, i.e. ends with .c?« ÃIs this file a C++ source file, i.e. ends with .cpp, .cxx, or .c++?¬ *Is this compiler's RTS dynamically linked?­ -FilePath has a Haskell extension: .hs or .lhs® öGiven the path to a source file (Haskell, C, JS...), return the corresponding object file path (input to the linker).¯ Does this compiler support the  -dynamic-too option° =Should we dynamically link the foreign library, based on its ± ?£ ÂThe build info of the executable-like component (Exe, Test, Bench)¦ Build directoryÑThe build info and module path of an executable-like component (Exe, Test, Bench)!The path to the main source file.© Package directory Symbolic path to the source fileGHC compilation optionsPath to the object file® Objects build directory (-odir)Object file extension'Source file path (relative or absolute)Resulting object file path¡ �¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ² ® ¯ ° ùNone(3Ûàç.³ 9Compile the Haskell modules of the component being built.´ ðReturns a pair of the main file and Haskell modules of the component being built. The main file is not necessarily a Haskell file. It could also be e.g. a C source, or, a Haskell repl script (that does not necessarily have an extension).String describing the extra sources being built, for printing.Function to determine the „ > for the invocation of GHC when compiling these extra sourcesÌView the extra sources of a component, typically from the build info (e.g. ½ , ¾ ).  Executable= components might additionally add the program entry point (main-isË file) to the extra sources, if it should be compiled as the rest of them.The GHC configured program#The build directory for this targetNeeded build waysHandles for logging,The context and component being built in it.1Returns the list of extra sources that were built¿ !An optional non-Haskell Main fileThe GHC configured program#The build directory for this targetNeeded build waysLogging handles,The context and component being built in it.1Returns the list of extra sources that were built· ¹ º » ¼ ¸ ¿ ýNone3Ûàç fÀ 7Extract (and compute) information about the RTS library!TODO: This hardcodes the name as  HSrts-ghc versionÍ. I don't know if we can find this information somewhere. We can lookup the  hsLibraries field of ¾ but it will tell us [HSrts, Cffi], which doesn't really help.Á 7Calculate the RPATHs for the component we are building. Calculates relative RPATHs when ž is set. Determine whether the given ‹¤ is intended to link against the threaded RTS. This is used to determine which RTS to link against when building a foreign library with a GHC without support for  -flink-rts.à ïLink the executable resulting from building this component, be it an executable, test, or benchmark component.Ä  Link a foreign library componentÅ Link a library componentÆ ‚Links together the object files of the Haskell modules and extra sources using the context in which the component is being built.If the build kind is ç5, we load the component into GHCi instead of linking.Ç šLoad a target component into a repl, or write to disk a script which runs GHCi with the GHC options Cabal elaborated to load the component interactively.Á ,The context and component being built in it.à The linker-specific GHC optionsæThe wanted build ways and corresponding GhcOptions that were used to compile the modules in that way.ŒThe target dir (2024-01:note: not the same as build target dir, see Note [Build Target Dir vs Target Dir] in Distribution.Simple.GHC.Build)Name of executable-like targetRun the configured GHC programÄ The linker-specific GHC optionsæThe wanted build ways and corresponding GhcOptions that were used to compile the modules in that way.ŒThe target dir (2024-01:note: not the same as build target dir, see Note [Build Target Dir vs Target Dir] in Distribution.Simple.GHC.Build)Run the configured GHC programÅ "The library target build directory5The list of extra lib dirs that exist (aka "cleaned")Run the configured Ghc program3Extra build sources (that were compiled to objects)ËA list with the runtime-paths (rpaths), or empty if not linking dynamically 1Wanted build ways and corresponding build optionsÆ 8The configured GHC program that will be used for linkingHandles used for loggingChecks GHC options for commonly misused or non-portable flags.‘!’!“!”!•!–!ƒŽ Ž—!ƒŽŽ +Lennart Kolmodin 2008, Francesco Ariis 2022BSD3cabal-devel@haskell.orgportableNone3à 5 Ë™This function is an oddity due to the historical GenericPackageDescription/PackageDescription split. It is only maintained not to break interface, use Ì if possible.Ì?Check for common mistakes and problems in package descriptions.“This is the standard collection of checks covering all aspects except for checks that require looking at files within the package. For those see Î.ÍåSanity check things that requires looking at files in the package. This is a generalised version of Î7 that can work in any monad for which you can provide ¿  operations.úThe point of this extra generality is to allow doing checks in some virtual file system, for example a tarball in memory.Î Same as Ï, but working with ‰.2This function is included for legacy reasons, use Ï if you are working with ˜!.ÏSanity checks that require IO. Îä looks at the files in the package and expects to find the package unpacked at the given filepath.ÐWraps ò into •.™!4Issue a warning if the text contains any "dotlines".š!˜!Ñ checks. Remember that for historical quirks in the cabal codebase we have both ˜! and ‰÷ and that PD is both a *field* of GPD and a concept of its own (i.e. a fully realised GPD). In this case we are checking (correctly) GPD, so for target info/checks you should walk condLibrary_ etc. and *not* the (empty) target info in PD. See ›!+ for a convenient hack when you only have ‰.›!»August 2022: this function is an oddity due to the historical GenericPackageDescription/PackageDescription split (check Distribution.Types.PackageDescription for a description of the relationship between GPD and PD. It is only maintained not to break interface, should be deprecated in the future in favour of Ì) when PD and GPD are refactored sensibly.œ!?Checks for matchless globs and too strict matching (<2.4 spec).�!�!Ï is the most general way to invoke package checks. We pass to it two interfaces (one to check contents of packages, the other to inspect working tree for orphan files) and before that a Boolean to indicate whether we want pure checks or not. Based on these parameters, some checks will be performed, some omitted. Generality over m� means we could do non pure checks in monads other than IO (e.g. a virtual filesystem, like a zip file, a VCS filesystem, etc).ž!ÄFind a package description file in the given directory. Looks for .cabal files. Like „, but generalized over monads.«ËÌÍÎÏÐ}~€�¿ À Á Â Ã Ä ‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›«‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›ÌËÐ�€}~ÎÏÍ¿ À Á Â Ã Ä …None ÐØÞ ZŸ!Compute the dependencies of a  !! that should be recorded in the depends field of InstalledPackageInfo.¡!Corresponds to ž.¢!The final, string �É that will uniquely identify the compilation products of this component.£!Given a list of ¢‚s, expand the module graph so that we have an instantiated graph containing all of the instantiated components we need to build.:Instantiation intuitively follows the following algorithm:Ùinstantiate a definite unit id p[S]: recursively instantiate each module M in S recursively instantiate modules exported by this unit recursively instantiate dependencies substituted by SßThe implementation is a bit more involved to memoize instantiation if we have done it already. We also call  improveUnitIdÇ during this process, so that fully instantiated components are given  HashedUnitId.¤!An ¤!> is a library with requirements which we will typecheck only.¥!âThe dependencies which need to be passed to the compiler to bring modules into scope. These are Ú> because these may refer to partially instantiated libraries.¦!0The modules exported/reexported by this library.§! The requirements of the library.¨!An ¨!Ö is a library which is fully instantiated (or, possibly, has no requirements at all.)©!–The dependencies which need to be passed to the compiler to bring modules into scope. These always refer to installed fully instantiated libraries.ª!"How this library was instantiated.«!Dependencies induced by ª!×. These are recorded here because there isn't a convenient way otherwise to get the Ú we need to fill componentPackageDeps as needed.¬!0The modules exported/reexported by this library. !A  !é is one that we can actually generate build products for. We have a ready component for the typecheck-only products of every indefinite package, as well as a ready component for every way these packages can be fully instantiated.­!Corresponds to œ. Invariant: if ®! records a Œ, it coincides with this one.¯!Corresponds to ¥.°!Corresponds to ¦Î. Build-tools don't participate in mix-in linking. (but what if they could?)±!�Extra metadata depending on whether or not this is an indefinite library (typechecked only) or an instantiated component (can be compiled).®!The Ú· for this package. At the moment, this is used in only one case, which is to determine if an export is of a module from this library (indefinite libraries record these exports as ¬); ®!9 can be conveniently used to test for equality, whereas �% cannot always be used in this case.²!Corresponds to ¨.³!ëA state monad for doing instantiations (can't use actual State because that would be an extra dependency.)´! The state of ³!; a mapping from � s to their ready component, or NothingÀ if its an external component which we don't know how to build.µ!Get the ¶! of a  ! IF it is a library.·!Ÿ!¡!¢!£!¤!¸!¥!¦!§!¨!¹!©!ª!«!¬! !º!»!­!¯!°!±!®!²!¼!†Õ Õ½!†Ð о!†¤ ¤"¿!†§ §À!†Ü ÜÁ!†¡ ¡ YNone #ÐÞàäSÂ!;Pretty-print a missing dependency, resolving opaque hashed �Çs to their human-readable package id and signature info when possible.ÎWhen an indefinite Backpack package is installed separately (e.g. via nix callCabal2nix), only the indefinite variant (with unfilled signatures) exists in the package DB. The consumer needs an instantiated variant which was never built. The fix is to add both packages to the same cabal project so cabal can fill the signatures.Â!all installed packages+dep UnitId to its PackageId (from includes)the missing dependencyÑÑZNoneÆÛàLÒšPrint a Setup message stating (1) what operation we are doing, for (2) which component (with enough details to uniquely identify the build in question.)Ò'Operation being done (capitalized), on:PackageComponent name3Instantiation, if available. Polymorphic to take  OpenModule or ModuleÒÒ[Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableNone3ÆÛà-Ó Compute the Ã!$ of a library that we built inplace.Ô Construct ¾6 for the final install location of a library package.;This function knows about the layout of installed packages.Õ5Create an empty package DB at the specified location.Ø Construct ¾Æ for a library in a package, given a set of installation directories.Û Construct ¾3 for a library that is in place in the build tree.:This function knows about the layout of in place packages.ÝRun hc-pkgà using a given package DB stack, directly forwarding the provided command-line arguments to it.Ø8Translate relative include dir paths to absolute paths.Ûlocation of the dist treeÞ(Install in the user's database?; verboseà(Install in the user's database?; verboseÇ ÓÔÕÖרÙÚÛÜÝÞßàáâÛ Ü Ý Þ ß ÞàáâÜÚ×ÕÖÓÝßÛ Ü Ý Þ ß Ç ÙÛÔØ\+(c) 2003-2005, Isaac Jones, Malcolm WallaceBSD3cabal-devel@haskell.orgportableNone3ÆÛà ãConvenience function; get the suffixes of these preprocessors.î(Apply preprocessors to the sources from Ä!2 for a given component (lib, exe, or test suite).XXX: This is terribleïóFind any extra C sources generated by preprocessing that need to be added to the component (addresses issue #238).ðÑFind the first extension of the file that exists, and preprocess it if required.ò¦Just present the modules in the order given; this is the default and it is appropriate for preprocessors which do not have any sort of dependencies between modules.óOver-ride this hook to get different behavior during hscolour.�=Over-ride this hook to get different behavior during install.‚ Hook to run after bench command.ƒÇHook to run after build command. Second arg indicates verbosity level.„ÇHook to run after clean command. Second arg indicates verbosity level.…#Hook to run after configure command†Hook to run after copy command‡ÉHook to run after haddock command. Second arg indicates verbosity level.ˆÊHook to run after hscolour command. Second arg indicates verbosity level.‰åHook to run after install command. postInst should be run on the target, not on the build machine.Š"Hook to run after register command‹ÆHook to run after repl command. Second arg indicates verbosity level.ŒHook to run after test command.�$Hook to run after unregister commandŽ!Hook to run before bench command.�ÈHook to run before build command. Second arg indicates verbosity level.�ÈHook to run before clean command. Second arg indicates verbosity level.‘$Hook to run before configure command’Hook to run before copy command“ÊHook to run before haddock command. Second arg indicates verbosity level.”ËHook to run before hscolour command. Second arg indicates verbosity level.•"Hook to run before install command–#Hook to run before register command—ÇHook to run before repl command. Second arg indicates verbosity level.˜ Hook to run before test command.™%Hook to run before unregister commandšRead the description file›ÂOver-ride this hook to get different behavior during registration.œÄOver-ride this hook to get different behavior during interpretation.�:Over-ride this hook to get different behavior during test.žÄOver-ride this hook to get different behavior during unregistration.+ôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�ž+ö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žõôIIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone #&'(3ÆØÛà&,<ŸAdjust ‡ˆ! to be compatible with the given ó  and ž. See also  Þ, which additionally informs the user of unavailable requested features via warning messages. Like Ÿ6, but includes warnings for downgraded build options.¡#Warnings to emit after downgrading ‡ˆ× when the compiler (or another toolchain program) doesn't support a requested feature.¢Makes a ‹" from C compiler and linker flags.©This can be used with the output from configuration programs like pkg-config and similar package-specific programs like mysql-config, freealut-config etc. For example: ¦ccflags <- getDbProgramOutput verbosity prog progdb ["--cflags"] ldflags <- getDbProgramOutput verbosity prog progdb ["--libs"] ldflags_static <- getDbProgramOutput verbosity prog progdb ["--libs", "--static"] return (ccldOptionsBuildInfo (words ccflags) (words ldflags) (words ldflags_static))¤ÍCheck that localBuildInfoFile is up-to-date with respect to the .cabal file.¦4Compute the effective value of the profiling flags --enable-library-profiling and --enable-executable-profiling from the specified àÔ. This may be useful for external Cabal tools which need to interact with Setup in a backwards-compatible way: the most predictable mechanism for enabling profiling across many legacy versions is to NOT use --enable-profiling! and use those two flags instead. Note that --enable-executable-profilingÆ also affects profiling of benchmarks and (non-detailed) test suites.¨Like § but takes a given Ž " instead of needing to query the hc-pkg program to obtain it.©Configure the compiler ONLY.«7Configure the compiler and associated programs such as hc-pkg, haddock and toolchain program such as ar, ld.¬7Configure programs associated to the compiler, such as hc-pkg, haddock and toolchain program such as ar, ld.­ Perform the "./setup configure " action. Returns the LocalBuildInfo, also writing it to the  setup-config file.±Run the Cabal library configure phase.NB: this function does not persist the resulting ‰ to the  setup-config- file; that is the responsibility of callers.³ÎReturn the "dist/" prefix, or the default prefix. The prefix is taken from (in order of highest to lowest preference) the override prefix, the "CABAL_BUILDDIR" environment variable, or the default prefix.´»Return the "dist/" prefix, or the default prefix. The prefix is taken from (in order of highest to lowest preference) the override prefix, the "CABAL_BUILDDIR" environment variable, or ý+ is used. Call this function to resolve a  *DistPref0 flag whenever it is not known to be set. (The  *DistPref; flags are always set to a definite value before invoking  UserHooks.)µ Read the ½„. Throw an exception if the file is missing, if the file cannot be read, or if the file was created by an older version of Cabal.¶åList all installed packages in the given package databases. Non-existent package databases do not cause errors, they just get skipped with a warning and treated as empty ones, since technically they do not contain any package.· Looks up the ¾ of the given � s from the ‰  in the ‰.¸ÿA set of files (or directories) that can be monitored to detect when there might have been a change in the installed packages.¹ÄCreate a PackageIndex that makes *any libraries that might be* defined internally to this package look like installed packages, in case an executable should refer to any of them as dependencies.šIt must be *any libraries that might be* defined rather than the actual definitions, because these depend on conditionals in the .cabal file, and we haven't resolved them yet. finalizePD does the resolution of conditionals, and it takes internalPackageSet as part of its input.ºLike ¶, but for a single package DB.,NB: Why isn't this always a fall through to ¶? That is because ¶– performs some sanity checks on the package database stack in question. However, when sandboxes are involved these sanity checks are not desirable.» Read the ½ƒ. Throw an exception if the file is missing, if the file cannot be read, or if the file was created by an older version of Cabal.¼ËThe user interface specifies the package dbs to use with a combination of --global, --user and $--package-db=global|user|clear|$fileò. This function combines the global/user flag and interprets the package-db flag into a single package db stack.½Get the path of dist/setup-config.¾Try to read the ½.¿8Adds the extra program paths from the flags provided to  configureÙ as well as specified locations for certain known programs and their default arguments.Ä Read the ½5, returning either an error or the local build info.ÅTry to read the ½.Æ$After running configure, output the ‰ to the ½.Ç/The errors that can be thrown when reading the  setup-config file.ÈIncorrect header.ÉMismatched version.ÊNo file!ËNo header found.ÌCannot parse file contents.ÑInstalled packagesÒ!Libraries internal to the packageÓËCollection of components that are promised, i.e. are not installed already.See Ç! for more details.Ô:Packages for which we have been given specific deps to useÈ! Format a Ç as a user-facing error message.É!ýAn external dependency from the package database, OR an internal dependency which we are getting from the package database.Ç!ÚA promised dependency, which doesn't yet exist, but should be provided at the build time.óWe have these such that we can configure components without actually building its dependencies, if these dependencies need to be built later again. For example, when launching a multi-repl, we need to build packages in the interactive ghci session, no matter whether they have been built before. Building them in the configure phase is then redundant and costs time.Ê!An internal dependency (ÚÈ should be a library name) which we are going to have to build. (The ÚÓ here is a hack to get a modest amount of polymorphism out of the Pkg' typeclass.)Ë!Compute a default ‡ˆ from àÔ, applying compiler-specific defaults but without compiler capability checks (see   for that).Ì!>Check for use of Cabal features which require compiler supportÍ!,Check if the user used any deprecated flags.Î!€Sanity check: if '--exact-configuration' was given, ensure that the complete flag assignment was specified on the command line.Ï!=Output package check warnings and errors. Exit if any errors.Ð!0Preform checks if a relocatable build is allowedÑ!2Perform checks if a shared executable can be builtÒ!?Select and apply coverage settings for the build based on the à and ó .Ó!ÀSelect and apply profiling settings for the build based on the à and ó .Ô!¤Configure a required program, ensuring that it exists in the PATH (or where the user has specified the program must live) and making it available for use via the ž; interface. If the program is known (exists in the input ž ), we will make sure that the program matches the required version; otherwise we will accept any version of the program and assume that it is a simpleProgram.Õ!(Identifier of the current Cabal package.Ö!+Identifier of the current compiler package.×!«Returns true if a dependency is satisfiable. This function may report a dependency satisfiable even when it is not, but not vice versa. This is to be passed to finalizeØ!'Finalize a generic package description.The workhorse is Ù!.Ú! Parse the  setup-configÌ file header, returning the package identifiers for Cabal and the compiler.Û!$Select dependencies for the package.Ü!ÇTest for a package dependency and record the version we have installed.Ý! Generate the  setup-config file header.¡original optionsadjusted options (result of Ÿ)¥installed dependencies©user-specified hc path (optional)«user-specified hc path (optional)user-specified hc-pkg path (optional)¬(program database containing the compileruser-specified hc-pkg path (optional)³default "dist" prefixoverride "dist" prefix´override "dist" prefixµThe file path of the  setup-config file.¶The stack of package databases.·þConstruct an exception that is thrown if a unit-id is not found in the installed packages, from the unit-id that is missing.0The unit ids to lookup in the installed packages»Working directory.The dist directory path.½The dist directory path.¾Working directory.The dist directory path.ÄWorking directory.The file path of the  setup-config file.ÅWorking directory.The dist directory path.ÆWorking directoryThe dist directory path.The ‰ to write.Ï! Path to the .cabal file's directory×!use external internal deps?exact configuration? allow depending on private libs?Ø!Ðtests if a dependency is satisfiable. Might say it's satisfiable even when not.Ú!The file contents.Ü!Package id of current package'Are we configuring a single component?Ý!The processed package.9ˆ‰Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆåÇÈÉÊËÌÍÎÏÐÑÒÓÔ9­±§¨¯ÃÁ°ÏÐÑÒÓÔ¿²®À¥Æµ»¤Å¾³´¹‰ˆ½¶¸·º©«ª¬¦Ÿ¡ ¢£¼ÇÈÉÊËÌÍÎÄåÕ‰� �(Ö‰þ þ#^Simon Marlow 2004BSD3cabal-devel@haskell.orgportableNone3ÆØÛà ×ÅCreate an archive from a tree of source files, and clean up the tree.Ø×Given a date produce a corresponding integer representation. For example given a date 18032008 produce the number 20080318.Ù#List all source files of a package.Since  Cabal-3.4Û returns a single list. There shouldn't be any executable files, they are hardly portable.Ú A variant of Ù with configurable die.Note: may still die/ directly. For example on missing include file.Since @3.4.0.0Û²Prepare a directory tree of source files for a snapshot version. It is expected that the appropriate snapshot version has already been set in the package description, eg using ß or à.Ü)Prepare a directory tree of source files.ÝÕNote: must be called with the CWD set to the directory containing the '.cabal' file.ÞCreate a source distribution.ß Modifies a ‰Á by appending a snapshot number corresponding to the given date.à Modifies a öÁ by appending a snapshot number corresponding to the given date.Þ!ßRemove the auto-generated modules (like 'Paths_*') from 'exposed-modules' and 'other-modules'.ß!8Given a buildinfo, return the names of all source files.à!ÃGiven a list of include paths, try to find the include file named fÝ. Return the name of the file and the full path, or exit with error if there's no such file.á!Find the main executable file.â!Find a module definition file#TODO: I don't know if this is rightã!)Find the setup script file, if it exists.ä!/Find the setup hooks script file, if it exists.å!ËCreate a default setup script in the target directory, if it doesn't exist.æ!)The name of the tarball without extension × verbosityinfo from cabal filesource tree to archivename of archive to createÙ verbositydirectory with cabal fileinfo from the cabal file&extra preprocessors (include suffixes)Ú verbosityÒ  alternative. Since Ò ! prefixes the error message with  errorPrefixÔ, whatever is passed in here and wants to die should do the same. See issue #7331.directory with cabal fileinfo from the cabal file&extra preprocessors (include suffixes)Û verbosityworking directoryinfo from the cabal filesource tree to populate'extra preprocessors (includes suffixes)Ü verbosityworking directoryinfo from the cabal filesource tree to populate'extra preprocessors (includes suffixes)Þinformation from the tarballverbosity & snapshotbuild prefix (temp dir)'extra preprocessors (includes suffixes)ß!Ò  alternative. Since Ò ! prefixes the error message with  errorPrefixÔ, whatever is passed in here and wants to die should do the same. See issue #7331.working directoryExtra preprocessorsExposed modulesá!working directorymain-isç! verbosityÒ  alternative. Since Ò ! prefixes the error message with  errorPrefixÔ, whatever is passed in here and wants to die should do the same. See issue #7331.directory with cabal fileinfo from the cabal file&extra preprocessors (include suffixes)è! verbosityinfo from the cabal file source tree רÙÚÛÜÝÞßà ÞÝÜ×ÛßàØÙÚŠIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone3ÆÛàçBé!!Convert Windows path to Unix onesê! host platformê!_èIsaac Jones 2003-2005, Ross Paterson 2006, Duncan Coutts 2007-2008, 2012BSD3cabal-devel@haskell.orgportableNone &3ÆØÛàçì¨áÖUpdate the program database to include any build-tool-depends specified in the given ‹0 on build tools internal to the current package.This function:'adds these internal build tools to the ž;, including paths to their respective data directories, adds their paths to the current ¢â, and adds the data directory environment variable for the current package to the current ¡Û, so that any programs configured from now on will be able to invoke these build tools.â4Build the libraries and executables in this package.åBuilt-in pre-build  SetupHooks for a given ë!.æÆCreates the autogenerated files for a particular configured component.�Legacy function: does not run pre-build hooks or pre-processors. This function is insufficient on its own to prepare the build for a component.öConsumers wanting to prepare the sources of a component, e.g. in order to launch a REPL session, are advised to run  Setup repl  compName --repl-multi-file= fn instead.çÒInitialize a new package db file for libraries defined internally to the package.èRuns æ on every configured component.ŽLegacy function: does not run pre-build hooks or pre-processors. This function is insufficient on its own to prepare the build for a package.óConsumers wanting to prepare the sources of a package, e.g. in order to launch a REPL session, are advised to run Setup repl --repl-multi-file= fn instead.éäCreates the autogenerated files for a particular configured component, and runs the pre-build hook.ìCompute and execute PreBuildComponentRules7, returning the monitored files declared by the rules.í7Start an interpreter without loading any package files.îÞWrite the given autogenerated files in the autogenerated modules directory for the component.ï²Generate and write to disk all built-in autogenerated files for the specified component. These files will be put in the autogenerated module directory for this component (see autogenComponentsModuleDir).This includes:Paths_ pkg.hs, PackageInfo_ pkg.hs,ÈBackpack signature files for components that are not fully instantiated,cabal_macros.h.ó:A representation of the contents of an autogenerated file.ì!ÇAdd extra ASM sources generated by preprocessing to build information.í!ÅAdd extra C sources generated by preprocessing to build information.î!ÇAdd extra C-- sources generated by preprocessing to build information.ï!ÇAdd extra C++ sources generated by preprocessing to build information.ð!ÆAdd extra JS sources generated by preprocessing to build information.ñ!ÆAdd extra HS modules generated by preprocessing to build information.ò!+Add extra source dir for generated modules.ó!Translate a exe-style º# component into an exe for buildingô!Build a foreign libraryåNOTE: We assume that we already checked that we can actually build the foreign library in configure.õ!?Built-in autogenerated files and their contents. This includes:Paths_ pkg.hs, PackageInfo_ pkg.hs,ÈBackpack signature files for components that are not fully instantiated,cabal_macros.h.ö!ÂCheck for conditions that would prevent the build from succeeding.÷!&Write available build information for ‰ to disk.›Dumps detailed build information 'build-info.json' to the given directory. Build information contains basics such as compiler details, but also lists what modules a component contains and how to compile the component, assuming lib:Cabal made sure that dependencies are up-to-date.ø! An empty ".hsig"Ì Backpack signature module for each requirement, so that GHC has a source file to look at it when it needs to typecheck a signature. It's harmless to generate these modules, even when there is a real hsigÎ file written by the user, since include path ordering ensures that the real hsig= file will always be picked up before the autogenerated one.ù!Translate a exe-style æ# component into an exe for buildingú!Translate a lib-style æ( component into a lib + exe for building â'Mostly information from the .cabal fileConfiguration information#Flags that the user passed to build%preprocessors to run before compilingä build hooks'Mostly information from the .cabal fileConfiguration information#Flags that the user passed to build%preprocessors to run before compilingæ "dist" prefix'mostly information from the .cabal fileConfiguration informationBuild info about the componentThe verbosity to useè "dist" prefix'mostly information from the .cabal fileConfiguration informationThe verbosity to useépre-build hookConfiguration informationê'Mostly information from the .cabal fileConfiguration information#Flags that the user passed to build%preprocessors to run before compilingëpre-build hook'Mostly information from the .cabal fileConfiguration information#Flags that the user passed to build%preprocessors to run before compiling÷!3To which directory should the build-info be dumped?=Should we dump detailed build information for this component?'Mostly information from the .cabal fileConfiguration information#Flags that the user passed to buildú!absolute inplace diráâãäåæçèéêëìíîïðñòóâäãêëíéìåðñòóïîæèçáæ Deprecated: ÝThis function does not prepare all source files for a component. Suggestion: use 'Setup repl  compName --repl-multi-file= fn'.è Deprecated: íThis function does not prepare all source files for a package. Suggestion: use 'Setup repl --repl-multi-file= fn'.ô‹î î õ‹î î ö‹î î `Thomas Tuegel 2010BSD3cabal-devel@haskell.orgportableNone &()3ÆØÛàìÂ÷ Perform the " ./setup test " action.÷!positional command-line arguments information from the .cabal file#information from the configure stepflags sent to test÷÷aIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone &(3?ÆÛàçì �!øExecute Haddock configured with  HaddocksFlagsÒ. It is used to build index and contents for documentation of multiple packages.úGiven a list of ¾ðs, return a list of interfaces and HTML paths, and an optional warning for packages with missing documentation.û!1The FilePath of a directory, it's a monoid under ü!.ý!ÔA record that represents the arguments to the haddock executable, a product monoid.þ!?Path to the interface file, relative to argOutputDir, required.ÿ!Package name, required.€"ýOptional name used to construct haddock's `--package-name` option for various components (tests suites, sublibriaries, etc).�"!(Hide modules ?, modules to hide)‚"Ignore export lists in modules?ƒ"Á(Template for modules, template for symbols, template for lines).„"Generate hyperlinked sources…"Generate quickjump index†"Optional custom CSS file.‡"Optional URL to contents page.ˆ"Generate contents‰"Optional URL to index page.Š"Generate index‹"9Optional base url from which static files will be loaded.Œ"%HTML or Hoogle doc or both? Required.�" Ç(Interface file, URL to the HTML docs and hyperlinked-source for links).Ž"$Where to generate the documentation.�"Page title, required.�"Prologue text, required for ù , ignored by haddocks.‘"Prologue file name, ignored by ù, optional for haddocks.’" Additional flags to pass to GHC.“""To find the correct GHC, required.”"Re-exported modules•"Modules to process.–"#haddock's static / auxiliary files.—"haddock's `--use-unicode` flag˜"7Get Haddock program and check if it matches the request™"ÃIf Hi Haddock is supported, this function creates temporary directories and copies existing interface and object files produced by GHC into them, then passes them off to the given continuation.·If Hi Haddock is _not_ supported, we can't re-use GHC's compilation files. Instead, we use a clean temporary directory to the continuation, with no hope for recompilation avoidance.-See Note [Hi Haddock Recompilation Avoidance]š"*Call haddock with the specified arguments. ûpre-build hookýpre-build hook˜"quickjump feature™"Working directoryHaddock's version Continuationš"require targets›"òDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]template for HTML location common argsœ"òDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]template for HTML location common args�"òDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]template for HTML location common argsž"òDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]template for HTML location common argsŸ"òDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]template for HTML location common args "template for HTML location¡"pre-build hookCalled when the ü exe is not found.¢"òDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]template for HTML location øùúûüý½¾¿ ùûøüýú½¾¿ þŒ¡Ä¡ÆÿŒ« «€Œž ž�Œð ð ‚Œô ô ƒŒé é „Œí í …Œ¡È¡ˆŒ¡8¡<‡Œ¡>¡ÂbJohan Tibell 2011BSD3cabal-devel@haskell.orgportableNone&ÆÛàìȈ Perform the " ./setup bench " action.ˆ!positional command-line arguments information from the .cabal file#information from the configure stepflags sent to benchmarkˆˆcIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone #&3ÆÛàìó�ŠBasic autoconf ö:… runs  ./configure , if present.Îthe pre-hooks, except for pre-conf, read additional build information from package .buildinfo , if present.Thus  configure/ can use local system information to generate package .buildinfo and possibly other files.�A simple implementation of mainƒ for a Cabal setup script. It reads the package description file using IO, and performs the action specified on the command line.‘ A version of �Û that is passed the command line arguments, rather than getting them from the environment.’ A version of ‘0 that allows passing explicit verbosity handles.“Like �Ð, but accepts the package description as input rather than using IO to read it.”A customizable version of �.•A customizable version of �- that also takes the command line arguments.–A customizable version of “.—CabalA customizable version of “- that also takes the command line arguments. ÌHooks that correspond to a plain instantiation of the "simple" build system¡ A version of  , that allows setting custom logging handles.£"ÖCombine the preprocessors in the given hooks with the preprocessors built into cabal.¤"ÿThe central command chooser of the Simple build system, with other defaultMain functions acting as exposed callers, and with ‘ $ operating as an exceptions handler. This uses lÍ to read response files, preprocessing response files given by "@" prefixes. Given hooks and args, this runs º onto the args, getting Ñï data back, which is then pattern-matched into IO actions for execution, with arguments applied by the parser.¥" A version of ¤") that allows setting the logging handles.¦" Read the ½ or throw an exception.§"Try to read the ½ø‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ô�žŸ ¡¢£¤¨"©"ª"«"¬"­"®"¯"°"±"²"³"´"µ"¶"·"¸"¹"º"»"¼"½"¾"¿"À"Á"Â"Ã"Ä"Å"Æ"Ç"È"¡É"Ê"Ë"Ì"Í"Î"Ï"Ð"Ñ"Ò"Ó"Ô"Õ"Ö"×"Ø"Ù"Ú"Û"Ü"Ý"Þ"ß"à"á"â"ã"ä"Æå"æ"ç"è"é"ê"ë"ì"í"î"ï"ð"ñ"ò"ó"ô"õ"ö"ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ õö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�ž¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁ÷"ø"ù"ú"û"ü"ý"þ"ÿ"€#�#‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ#Û�#Ã!ŒŽ#�#Ë�#Ú¶‘#’#“#¨”#•#–#�ö—#˜#™#š#›#œ#�#ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#€$�$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$�$Ž$�$�$‘$’$“$”$•$–$—$˜$™$š$›$œ$�$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Æ�“‘’ö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žõ”˜™•–— ¡Š‰ôŽŒžœ�š�Ÿ›�£¢‹Ö$�Ž���‘�’“�’”•–—•–˜•–™•–š•–›•–œ•–�•–ž•–Ÿ•– •–¡•–¢•–£•–¤•–¥•–¦•–§•–¨•–©•–ª•–«•–¬•–­•–®•–¯•–°•–±•–²•–³•–´•µ¶•µ·•µ¸•µ¹•º»•º¼•º½•º¾•º¿•ºÀ•ºÁ•ºÂ•ºÃ•Äŕį•ÄÇ•ÄÈ•ÄÉ•ÄÊ•ÄË•ÄÌ•ÄÍ•ÄΕÏЕÏÑ•ÏÒ•ÏÓ�ÔÕ�ÔÖ�Ô×�ØÙÚÛÜÝÞßààáâãäåæçèéêëìíííîíïðñòóôõ ö ÷ ø ù ù ùú ùû ü ý þmÿm€p� ‚ suƒ„… † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’|“|”|•|–|—|˜|™|š|›|œ|�|ž|Ÿ| |¡|¢|£|¤|¥|¦|§|¨|©|ª|«|¬|­|®|¯|°|±|²|³|´|µ|¶|·|¸|¹|º|»|¼|½|¾|¿|À|Á|Â|Ã|Ä|Å|Æ|Ç|È|É|Ê|Ë|Ì|Í|Î|Ï|Ð|Ñ|Ò|Ó|Ô|Õ|Ö|×|Ø|Ù|Ú|Û|Ü|Ý|Þ|ß|à|á|â|ã|ä|å|æ|ç|è|é|ê|ë|ì|í|î|ï|ð|ñ|ò|ó|ô|õ|ö|÷|ø|ù|ú|û|ü|ý|þ|ÿ|€|�|‚|ƒ|„|…|†|‡|ˆ|‰|Š|‹|Œ|�|Ž|�|�|‘|’|“|”|•|–|—|˜|™|š|›|œ|�|ž|Ÿ| |¡|¢|£|¤|¥|¦|§|¨|©|ª|«|¬|­|®|¯|°|¬±²²²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÙÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‡‰‡Š‡‹‡Œ�Ž����‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëàààìàíàîàïàðàñàòàóàôàõàöà÷àøàùàúàûàüýþÿ€áâ�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦¦¦§¦¨¦©¦ª«¬­®¯°±²®³®´®µ®¶®·®¸¹º»º¼½¾¿ÀÁÂÀÀÃÀÄÀÅÆÆÆÇÆÈÆÉÆÊÆËÌÍÎÏÐÑÒÓÔÕÕÕÖÕ×ÕØÙÚÛÜÝÞßàáááâáãáäåæçèéêëìíîíïíðíñíòíóíôíõíöí÷íøíùíúíûüýþÿ€�‚‚ƒ„…†‡ˆ‰Š‹Œ�Ž�����‘�’“““”“•“–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯ ° ° °± °² ³ ´ µ ¶ ·!¸!¹!º!»!¼!½!¾!¿!À!Á!Â!Ã!Ä!Å!Æ!Ç"È"É"Ê"Ë"Ì"Í"Î"Ï"Ð"Ñ#Ò#Ó#Ô$Õ$Ö$×$º$Ø$Ù$Ú$Û%Ü%Ý%Þ%ß%à%á%â%ã%ä%å%æ%ç%è%é%ê%ë%ì%í%î%ï%ð%ñ%ò%ó%ô%õ%ö%÷%ø%ù%ú%û%ü&ý&ýþ&ÿ&ÿ&ÿ€&ÿ�&‚&‚&‚ƒ&‚„&…&†&‡&ˆ&‰&Š&‹&Œ&�&Ž&�&�&‘&’&“&”&•&–&—&˜&™&š&›&œ&�&ž&Ÿ& &¡&¢&£&¤&¥&¦&§&¨&©&ª&«&¬&­&®&¯&°&±&²&³&´&µ&¶&·&¸&¹'º'º'»'¼'½'¾'¾'¾¿'À'À'ÀÁ'Â'Ã'Ä'ÃÅ'ÃÆ'ÃÇ'ÃÈ'ÃÉ'ÃÊ'Ë'Ì'ÌÍ'ÌÎ'ÌÏ'Ì'Ð'Ñ'Ñ'ÑÒ'Ó'Ó'ÓÔ'Õ'Õ'ÕÖ'Õ×'Ø'Ù'Ù'ÙÚ'ÙÛ'Ü'Ý'Þ'ß'ß'ßà'ßá'â'ã'ãä'ãå'ãæ'ç'ã'è'é'ê'ë'ì'í'î'î'îï'îð'ñ'ñò'ó'óô'õ'ö'÷'ø'ù'ú'û'ü'ý'þ'ÿ'€ '� '‚ 'ƒ '„ '… '† '‡ 'ˆ '‰ 'Š '‹ 'Œ '� 'Ž '� '� '‘ '’ '“ '” '• '– '— '˜ '™ 'š '› 'œ '� 'ž 'Ÿ '  '¡ '¢ '£ '¤ '¥ '¦ '§ '¨ '© 'ª '« '¬ '­ '® '¯ '° '± '² '³ '´ 'µ '¶ '· '¸ '¹ 'º '» '¼ '½ '¾ '¿ 'À 'Á ' 'à 'Ä 'Å 'Æ 'Ç 'È 'É 'Ê 'Ë 'Ì 'Í 'Î 'Ï 'Ð 'Ñ 'Ò 'Ó 'Ô 'Õ (Ö (× (Ø (Ù (Ú (Û (Ü (Ý (Þ (ß (à (á (â (ã (ä (Ý (å (æ (ç (è (é (ê )ë )ì )í )î )î )î ï )î ð )î ñ )î ò )î ó )î ô )î õ )î ö )÷ )ø )ø )ø ù )ø ú )ø û )ø ü )ø ý )þ )ÿ )€ )€ � )‚ )ƒ )„ )… )† )‡ )ˆ )‰ )Š )‹ )Œ )� )Ž )� )� )‘ )’ )“ )” )• )– )— *˜ *˜ *™ *š *š *š › *š œ *š � *ž *Ÿ *  *¡ *¢ *£ *¤ *¥ *¦ *§ +¨ +© +ª +« +¬ +­ +® +¯ +° +± +² +³ +´ +µ +¶ +· +¸ +¹ +º +» +¼ +½ +¾ +¿ +À +Á + +à +Ä +Å +Æ +Ç +È +É +Ê +Ë +Ì +Í +Î +Ï +Ð +Ñ +Ò +Ó +Ô +Õ +Ö +× +Ø +Ù +Ú +Û +Ü +Ý +Þ +ß +à +á +â +ã +ä +å +æ +ç +è +é +ê +ë +ì +í +î +ï +ð +ñ +ò +ó +ô +õ +ö +÷ +ø +ù +ú +û +ü +ý +þ +ÿ +€ +� +‚ +ƒ +„ +… +† +‡ +ˆ +‰ +Š +‹ +Œ +� +Ž +� +� +‘ +’ +“ +” +ë+ç+• +– +— +˜ +™ +š +› +œ +� +ž +Ÿ +  +¡ +¢ +ã +£ +¤ +¥ +¦ +§ +¨ +© +ª +« +¬ ,­ ,® -¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø „Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � � � Ž � � � ‘ ’ .“ .” .• .– .— .— ˜ .™ .™ š .› .œ .� .ž .Ÿ .  .¡ .¢ .£ .¤ .¥ .¦ .§ .¨ /© /ª /« /¬ /­ /® /¯ /° /± 0² 0³ 0´ 0µ 0¶ 0· 0¸ 0¹ 0º 0» 0¼ 0½ 0¾ 0¿ 0À 0Á 0Á 0Á  0Á à 0Á Ä 0Á Å 0Á Æ 0Á Ç 0Á È 0Á É 1Ê 1Ë 1Ì 2Í 3Î 3Ï 4Ð 4Ñ 4Ò 4Ó 4Ô 4Õ 4Ö 4× 5Ø 5Ù 5Ú 5Û 5Ü 5Ý 5Þ 5ß 5à 5á 5â 5ã 5ä 5å 5æ 5ç 5è 5é 5ê 5ë 5ì 5í 5î 5ï 5ð 5ñ 5ò 5ó 5ô 5õ 5ö 5÷ 5ø 5ù 5ú 5û 5ü 5ý 5þ 5ÿ 5€ 5� 5‚ 5ƒ 5„ 5… 6† 6‡ 6ˆ 6‰ 6Š 7‹ 7Œ 7� 7Ž 7� 7� 7‘ 7’ 7“ 7” 7• 7– 7— 7˜ 7™ 7Ì7š 7› 7œ 7� 7ž 7Ÿ 7  7¡ 7¢ 7£ 7¤ 7¥ 7¦ 7§ ¼¨ ¼¨ ¼¨ © ¼¨ ª ¼¨ « ¼¨ ¬ 8­ 8® 8¯ 8° 8± 8² 8³ 8´ 8µ 8¶ 8· 8¸ 8¹ 8º 8» 8¼ 8½ 8¾ 8¿ 8À 8Á 8 8à 8Ä 8Å 8Æ 8Ç 8È 8É 8Ê 8Ë 8Ì 8Í 8Î 8Ï 8Ð 8Ñ 8Ò 8Ó 8Ô 8Õ 8Ö 8× 8Ø 8Ù 8Ú 8Û 8Û 8Û Ü 8Û Ý 8Û Þ 8Û ß 8Û à 8Û á 8Û â 8ã 8ä 8å 8æ 8ç 8è 8é 8ê 8ë 8ì 8í 8î 8ï 8ð 8ñ 8ò 8ó 8ô 8õ 8ö 8÷ 8ø 8ù 8ú 8û 8ü 8ý 8þ 8ÿ 8€8�8‚8ƒ8„8…8†8‡8ˆ8‰8Š8‹8Œ8�8Ž8�8�8‘8’8“8”8•8–8—8˜8™8š8›8œ8�8ž8Ÿ8 8¡8¢8£8¤8¥8¦8§8¨8©8ª8«8¬8­9®9¯9°9±9²9³9´9µ9¶9·9¸9¹9º9»9¼9½9¾9¿9À9Á9Â9Â9ÂÃ9ÂÄ9ÂÅÀÆÀÇÀÇÀÇÈÀÇÉÀÇÊÀÇËÀÇÌÀÇÍÀÇÎ;Ï;Ð;Ñ;Ò;Ó;Ô;Õ;Ö;×;Ø;Ù;Ú;Û;Ü;Ý;Þ;ß;à;á;â;ã;ä;å;æ;ç;è;é;é;éê;éë;éì;éí;éî;éï;éð;éñ;éò;éó;éô;éõ;éö;é÷;éø;éù;éú;éû;éü;éý;éþ;éÿ;é€;é�;é‚;éƒ;é„;é…;é†;é‡;éˆ;é‰;éŠ;é‹;éŒ;é�;éŽ;é�;é�;é‘;é’;é“;é”;é•;é–;é—;é˜;é™;éš;é›;éœ;é�;éž;éŸ;é ;é¡;é¢;é£;é¤;é¥;é¦;é§;é¨;é©;éª;é«;é¬;é­;é®;é¯;é°;é±;²;³;´;µ;¶;·;¸;¹;º;»;¼;½;¾;¿;À;Á;Â;Ã;Ä<Å<Æ<Ç<È<É<Ê<Ë<Ì<Í<Î<Ï<Ð<Ñ<Ò<Ó<Ô<Õ<Ö<×<Ø<Ù<Ú<Û<Ü<Ý=Þ=ß=à=á=â=ã=ä=å=æ=ç=è=é=ê=ë=ì=í=î=ï=ð=ñ=ò=ó=ô=õ=ö=÷=ø=ù=ú=û=ü=ý=þ=ÿ=€=�=‚=‚=‚ƒ=‚„=‚…=‚†=‡=ˆ=‰=Š=‹>Œ>�>Ž>�>�>‘>’?“?”@•@–@—@˜@™@š@›@œ@�@ž@Ÿ@ @¡@¢@£@¤@¥@¦@§@¨@©@ª@«@¬@­@®@¯@°@±@²@Ì@³@´@µ@¶@·@¸@¸@¹@º@»@¼@¼@¼½@¼¾@¼¿@¼À@¼Á@¼Â@¼Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Î@ÎÏ@Ω@Ð@Ñ@Ò@Ó@ÔĕĖÄÕÄÖÄ×ÄØÄÙÄÚÄÛÄÜÄÝÄÞÄßÄàÄáÄâÄâÄâãÄâäÄâåÄâæÄâçÄâèÆéÆêÆëÆìÆíÆîÆíÆîïÆíðÆîñÆíòÆíóÆíôÆíõÆíöÆí÷ÆîøÆîùÆîúÆíûÆüÆýÆþÆÿÆ€Æ�ȂȃȄȅȆȅȆ‡È…ˆÈ…‰È†ŠÈ…‹È…ŒÈ†�ȆŽÈ†�Ê�ʑʒʓʔʓʔ•Ê“–Ê”—Ê“˜Ê“™Ê“šÊ“›Ê”œÊ”�Ê”žÊŸÊŸÊŸ ÊŸ¡ÊŸ¢ÊŸ£Ì¤Ì¥Ì¦Ì§Ì¨Ì©Ì¨Ì¨ªÌ¨«Ì¨¬Ì¨­Ì¨®Ì©¯Ì¨°Ì©±Ì©²Ì©³Ì©´ÎµÎ¶Î·Î¸Î¹Î¸Î¹ºÎ¸»Î¸¼Î¹½Î¸¾Î¸¿Î¹ÀθÁιÂιÃÐÄÐÅÐÆÐÇÐÈÐÇÐÇÉÐÇÊÐÈËÐÇÌÐÈÍÐÇÎÐÇÏÐÈÐÐÇÑÐÈÒÐÈÓÒÔÒÕÒÖÒ×ÒØÒÙÒÚÒÛÒÜÒÝÒÜÒÜÞÒÜßÒÝàÒÜáÒÜâÒÜãÒÝäÒÜåÒÜæÒÜçÒÜèÒÜéÒÜêÒÜëÒÜìÒÜíÒÜîÒÜïÒÜðÒÜñÒÜòÒÜóÒÝôÒÜõÒÜöÒÝ÷ÒÝøÒùÒùÒùúÒùûÒùüÒùýÒùþÒùÿÒù€Òù�Òù‚ÒùƒÒù„Òù…Òù†Òù‡ÒùˆÒù‰ÒùŠÒù‹ÒŒÒ�ÒŽÒ�Ò�Ò‘Ô’Ô“Ô”Ô•Ô•Ô•–Ô•—Ô•˜Ô•™ÖšÖ›ÖœÖ�ÖžÖ�ÖžŸÖ� Ö�¡Öž¢Öž£Öž¤Öž¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬Ø­Ø®Ø¯ØÞذØÞØÞ±ØÞ²ØÞ³ØÞ´Ø°µØÞ¶ØÞ·ØÞ¸ØÞ¹ØÞºØÞ»ØÞ¼ØÞ½ØÞ¾Ø°¿ØÞÀØÞÁØÞÂØÞÃØÞÄØÞÅØÞÆØÞÇØÞÈØÞÉØÞÊØÞËØÞÌØÞÍØÞÎØÞÏØÞÐØÞÑØÞÒØÞÓØÞÔØÞÕØÞÖØÞ×ØÞØØÞÙØÞÚØÞÛØÞÜØÞÝØÞÞØÞߨÞàØÞáØÞâØÞãØÞäØÞåØÞæØÞçØÞèØ°éØÞêØÞëØÞìØÞíØ°îØ°ïBðBˆBˆBˆñBˆòBˆóBˆôBˆõBˆöBˆ÷BˆøBˆùBˆúBˆûBˆüBˆýBˆþBˆÿBˆ€Bˆ�Bˆ‚BˆƒBˆ„Bˆ…B†B†B†‡B†ˆB†‰B†ŠB‹B‹B‹ŒB‹�B‹ŽB�B�B��B�‘B’B’B’“B’”B’•B’–B’—B’˜B’™B’šB’›B’œB�BžBŸB B¡B¢B£B¤B¥B¦B§B¨B©BªB«B¬B­B®B¯B°B±B²B³B´BµB¶C·C¸C¹CºC»C¼C½C¾C¿CÀCÁCÂCÃCÄCÅCÆCÇCÈCÉCÊCËCÌCÍCÎCÏCÐCÑCÑCÒCÑ“CÑ”CчCшCÑ•CÑñCÑŒCÑ–CÑ—CјCÑ™CщCÑòCÒÓCÒÔCÑšCÑ›CÑŠCÑóCÑôCÑõCÑöCÑ÷CÑøCÑùCÑúCÑûCÑüCÑýCÑœCÑþCÑÿCÑ€CÑ�CÑ‚CÑŽCуCÑ„CÑ…CÕCÖC×CØCÙÚÛáÜÝÞßàáâãäåâ„æçèéêDëDìDíDîDïDðDñDòDóDôDõDõDõ“DõöDõ÷DõøDùDúDûDûüDûýDûþDÿDÿDÿ€Dÿ�Dÿ‚DƒD„D…D†D‡DˆD‰DŠD‹EŒF�GŽG�G�G‘G’G“G”G”G”•G”–GûG—G˜G™GšG›GœG�GžGŸH H¡å¢å£J¤J¥J¦J§J¨J©JªJ«J¬J¬J¬­J¬®J¬¯J¬°J¬±J²K³K´KµK¶K·K¸K¹KºK»K»K»¼K»½K»¾K»¿K»ÀK»ÁK»ÂKÃKÄLÅLÆLÇLÈLÉLÊçËçÌçÍçÎçÏçÎçÏÐçÎÑçÏÒçÎÓçÏÔçÏÕçÏÖé×éØéÙéÚéÛéÜéÛéÜÝéÛÞéÜßéÛàéÛáéÛâéÜãéÛäéÜåéÜæëçëèëéëêëëëìëëëìíëëîëìïëëðëìñëìòëìóAôAõAöA÷AøAùAúAûAüAýAþAÿA€M�M‚MƒM„M…MåM†M†M†‡M†ˆM†‰NŠN‹NŒN�NŽN�N�N‘N’N“N”N•N–N—N˜N™NšN›NœN�NžNŸN N¡N¢N£N¤N¥N¦N§N¨N©NªN«N¬N­N®N¯N°N±N²N³N´NµN¶N·N¸N¹NºN»N¼O½O¾O¿OÀOÁOÂOÃOÄOÅOÆOÇOÈOÉOÊOËOÌOÍOÎOÏOÐOÑOÒOÓOÔOÕOÖO×OØOÙOÚOÛOÜOÝOÞOßOàOáOâOãOäOåOæOçPèPéPêPëPìPíPîQïQðQñQòQóQôRïSõSöS÷SøSùSúSûSüSýSþSÿS€S�S‚SƒS„S„S„…S„†S‡SˆSˆSˆ‰SŠSŠSŠ‹SŠŒSŠ�SŽS�S�S‘S‘S‘’S‘ˆS‘‰S“S“S“”S•S–S—S—S—˜S—ˆS—‰S™SšSšSšÓSš‘S†S†S†‡S†ˆS†‰S›SœS�S�S�žS�ÓS�‘SŸSŸSŸ‰S S¡S¡S¡“S¡•S¡ÓS¡÷S¢S¢S¢ØS¢£S¤S¤S¤¥S¤¦S¤§S¨S©SªS«S¬S­S®S¯S°S±S²S³S´SµS¶S·S¸S¹SºS»S¼S½S¾S¿SÀSÁSÂSÃSÄSÅSÆSÇSÈSÉSÊSËSÌSÍSÎSÏSÐSÑSÒSÓSÔSÕSÖS×SØTÙTÚTÛTÛTÛÜTÝTÝTÝ¥TÝÞTݧTßTßTßàTßáTßâTãTäT‘ TåTæTçTèTéTêTëTìTíòîòïòðòñòòòóòôòõòöò÷ôøôùôúôúöû:è:ü:é:ý:î:ê:þ:ÿ:€:ë:�:‚:ƒ:„:…:†:í:‡:ˆ:‰:î:Š:‹:Œ:�:ŽUèUüUéUýUêUþU�UÿU€UëU�U‚UƒU„U…U†UíUˆU‰UîUŠU‹UŒUŽV�V‘V’V“W”W•W–X—X˜ ™ š › œ � žYŸZ [¡[¢[£[¤[¥[¦[§[¨[©[ª[«[¾[î[¬[À[­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾]¿]À]Á]Á]ÁÂ]ÁÃ]ÁÄ]ÁÅ]ÁÆ]ÁÇ]ÁÈ]ÁÉ]ÁÊ]ÁË]ÁÌ]ÁÍ]ÁÎ]ÁÏ]ÁÐ]ÁÑ]ÁÒ]ÁÓ]ÁÔ]ÁÕ]ÁÖ]Á×]ÁØ]ÁÙ]ÁÚ]ÁÛ]ÁÜ]ÁÝ]ÁÞ]Áß]Áà]Áá]Áâ]Áã]Áä]Áå]Áæ]Áç]ÁèIéIêIëIìIíIîIïIðIñIòIóIôIõIöIêI÷IøIùIúIûIüIýIþIëIÿI�I€IƒI�I‚IƒI„I…I†I‡IˆI‰IŠI‹IŒI�IŽI�I�I‘I’I‘“I‘”I•I•I•–I•—I•˜I•™IšI›^œ^�^ž^Ÿ^ ^¡^¢^£^¤^¥_¦_Ü_„_§_¨_©_ª_«_¬_­_®_¯_Ž_°_±_²_²_³_´_µ_¶_·`¸a¹aºa»a¼a½a¾a¿aÀaÁaÂaÃaÄaÅaÆaÇaÈbÉcÊcËcÌcÍcÎcÏcÐcÑcÒcÓcÔcÕcÖc×cØcÙcÚcÛcÜcÝcÞcßcàcácâcãcägågægç•÷è•éêgëgìgí•îïgðgñgògægæógæôgõgög÷gøgùgúgígûgügýgþ•ÿ¹k€k�k‚�ƒ„k…†�‡ˆk…k‰kŠk‹kŒk�k€kŽk�k�m‘m’m“m”m•m–n—n˜�™š�™›oœp��žŸ�ž •¡¢•¡£•¡¤•¥¦•¥§•¥¨•¥©•¥ª•¥«•¥¬•¥­•®¯•®°±²³±²·±²´±²µ±²¶·¸¹·¸º�»¼�»½�»¾�»¿�»À�»Á�»Â�»Ã�»Ä�»Å�»Æ�»Ç�»È�»É�»Ê�»Ë�»Ì�»Í�»Î�»Ï�ÐÑ�ÒÓ�ÒÔ�ÒÕ�ÒÖ�ר�×Ù�ÚÛ�ÚÜ�ÚÝ�ÚÞ�Úß�Úà�Úá�Úâ�Úã�Úä�Úå�æç�èé�èê�ëì�ëí�ëî�ëï�ëð�ëñ�ëò�ëó�’ô�’õ�’ö�’÷�’ø�’ù�’ú�’û�’ü�’ý�’þ�’ÿ�’€�’��‚ƒ�„…�„†�„‡�„ˆ�‰Š�‹Œ�‹��‹Ž�����‘��’�“”�“•�–—�–˜�–™�–š�–›�–œ�–��–ž�–Ÿ�– �–¡�–¢�–£�–¤�–¥�–¦�–§�–¨�–©�–ª�–«�–¬�–­�–®�–¯�°±�²³�²´�µ¶�µ·�µ¸�µ¹�µº�µ»�µ¼�µ½�¾¿�¾À�¾Á�¾Â�ÃÄ�ÃÅ�ÃÆ�žÇ�žÈ�žÉ�žÊ�žË�žÌ�žÍ�žÎ�žÏ�žÐ�žÑ�žÒ�žÓ�ÔÕ�ÔÖ�ר�×Ù�×Ú�×Û�×Ü�×Ý�×Þßàáßàâßàãäåæßçè•éê•ëìíîïíîðíîñíîòóôõóö÷·¸ø·¸ù�»ú�»û�»ü�»ý�»þ�»ÿ�»€�»��»‚�»ƒ�»„�»…�»†�»‡�»ˆ�»‰�»Š�»‹�»Œ�»��»Ž�»��»��»‘�»’�»“�»”�»•�»–�»—�˜™�š›�šœ��ž�ן�× �ס�Ú¢�Ú£�Ú¤�Ú¥�Ú¦�Ú§�Ú¨�Ú©�Úª�ÚÃ�Ú«�Ú¬�Ú­�®¯�®¯�®¯°�±²�±²�±²³�´µ�´µ�¶·�¶¸�‚¹�‚º�‚»�‰¼�½¾�¿À�¿Á�¿Â�¿Ã�¿Ä�¿Å�¿Æ�¿Ç�¿È�¿É�¿Ê�¿Ë�̳�ÌÍ�Ì´�ÌÎ�ÌÏ�ÌÐ�ÌÐ�ÑÒ�ÑÓ�ÑÔ�ÑÕ�ÑÖ�Ñ×�ÑØ�ÑÙ�ÑÚ�ÑÛ�ÑÜ�ÑÝ�ÑÞ�Ñß�Ñà�Ñá�Ñâ�Ñã�Ñä�Ñå�Ñæ�Ñç�Ñè�Ñé�Ñê�Ñë�Ñì�Ñí�Ñî�Ñï�Ñð�Ññ�Ñò�Ñó�ôõ��ö�“÷�“ø�“ù�“ú�“û�üý�üþ�üÿ�ü€�°��°‚�°ƒ�°„�°…�°†�°‡�°ˆ�²‰�²Š�²‹�µŒ�µ��µŽ�µ��µ��µ‘�µ’�µ“�µ”�µ•�µ–�µ—�µ˜�µ™�µš�µ›�µœ�µ��µž�µŸ�µ �¾¡�¾¢�¾£�¾¤�¾¥�¦§�¨©�¨ª�¨«�¨¬ßà­ßà®ßà¯ßà°ßà±ßà²ßà³ßà´ßàµßà¶ßà·ß¸¹ß¸ºß¸»ß¸¼ß¸½¾¿À�»Á�ÂÃ�ÂÄ�ÂÅ߸Æß¸Ç߸È߸É߸Ê߸Ë߸Ì߸Í߸ΠÏÐÑÒwÓwÔwÈwÕwÖw×wØwËwÌwÙwÚwÛwÜwÝwÞwß{à|á|â|ã|ä|å|æ|ç|è|é|ê|ë|ì|í|î|ï|ð|ñ|ò|ó|ô|õ|ö|÷|ø|ù|ú|û|ü|ý|þ|ÿ•Ï€•�‚ƒ•�‚•„…•†‡ŠˆŠ‰ŠŠŠ‰‹Š‰ŒŠŠŠŠ�ŠŠŽŠ‰Š‰�Љ�Љ‘Љ’Љ“ДЕЖЗ•˜™•š›�œ”™�™à™ž™Ÿ™Ï ™ ™¡™¢™£™¤&¥�¦§�¦¨&©&ª&«'¬'­'®'¯�°±'²¢³¢´¢µ¢¶¢·¢¸¢¹¢º¢»¢¼¢½¢¾¢¿¢À�Á¢âĢŕÆÇ¢È¢É¢ÉÊ¢ÉË¢ÉÌ¢ÉÍ¢É΢ÉϢТÉÑ¢Ò¢Ó¢Ô¢Õ•î֢עآ٢ڢۢܢݢޢߢà¢Å¢á¢â¢É¢ã¢Ð¢ä¢å¢æ¤ç¤è¤é¥ê¥ë•ìí�Úî¥ï•šð¥ñ¥ò¥ó§ô§õ§õ§õö§õ÷§õø§õù§õú§õû§õü§õý§õþ§õÿ§õ€§õ�§õ‚§õƒ§õ„§õ…§õ†§‡©ô©õ©õ©õˆ©õ‰©õ‚©õŠ©õ†©‡«ô«õ«õ«õ‹«õ€«õŒ«õ�«õŽ«õ�«õ�«õ‘«’«’«’“«’”«’•«’–«’—«˜«˜«˜™«˜š«˜›«˜œ«˜�«‡«ž«Ÿ­ ­¡­¢­‚­£­¤­¥­¦§¨ª ©ª«¬­®¯°±²³´µ¶·¸¹º�™»¼½¾¿ÀÁ.Â/Ã3Ä3Å•ÆÇ•È5É7ʼ˼̼ͼμϼмѼҼӼԼռּ׼ؼټڼۼܼݼ޼߼à¼á¼Ñ¼Ñâ¼Ñã¼Ñä¼Ñå¼Ñæ¼Ö¼Öç¼Öè¼Öé¼×¼Ø¼Øê¼Øë¼Ù¼Ùì¼Ùí¼Ùî¼Ùï¼Ùð¼Ú¼Úñ¼Úò¼ó¼ô¼õ¼ö¼÷¼ø¾ù¾ú•ûü¾ý¾þ¾ÿ¾€8�8‚8ƒ8„•…†•…‡•…ˆ•…‰•…Š•…‹•…Œ•…�•…Ž•…Ž•…�•…�•…‘•…’•…“•…”•…••…–•…—•…˜•…™•…š•…›•…œ•…�•…ž•…ž•…Ÿ•…Ÿ•…Ÿ •…Ÿ¡•…Ÿ¢•…Ÿ£•…Ÿ¤•…Ÿ¥•…¦•…¦À§À¨•î©;ª•«¬=­=®=¯=°@±@²Ä³Ä´ÄµÄ¶Ä·Ä¸Ä¹ÄºÄ»Ä¼Ä½Ä¾Ä¿ÄÀÄÁÄÂÆÃÆÄÆÅÆÆÆÇÆÈÆÉÆÊÆËÆÌÆÍÆÎÆÏÆÐÆÑÆÒÆÓÆÔÆÕÈÖÈ×ÈØÈÙÊÚÊÛÊÜÊÝÊÞÊßÊàÊáÊâÊãÊäÊåÌæÌçÌèÌéÎêÎëÎìÎíÐîÐïÐðÐñÐòÐóÒôÒõÒöÒ÷ÒøÒùÒúÒûÒüÒýÒþÒÿÒ€ Ò� Ò‚ Òƒ Ò„ Ò… Ò† Ò‡ Ôˆ Ô‰ ÔŠ Ö‹ ÖŒ Ö� ÖŽ Ö� Ö� Ø‘ Ø’ Ø“ Ø” Ø• Ø– Ø— ؘ Ø™ Øš •› œ •Æ� Cž •Ÿ   •¡ ¢ •£ ¤ •Ï¥ •Ï€¦ F§ G¨ J© Jª •« ¬ •­ ® ç¯ ç° ç± ç² ç³ ç´ éµ é¶ é· é¸ é¹ éº é» ë¼ ë½ ë¾ ë¿ ëÀ ëÁ N Nà NÄ NÅ NÆ NÇ NÈ NÉ Nü Ný Nû NÊ NË NÌ NÍ NÎ •Ï Ð PÑ PÒ PÓ PÔ PÕ QÖ S× SØ Ù SØ Ú SØ Û SÜ SÝ SÞ Sß Sà Tá Tâ Tã Tä Tå Tæ Tç Tè Té òê òë òì •í î òï òð •í ñ òò òó •í ô òõ òö òÿò÷ òø òù òú òû òü òý òþ òÿ ò€!ò�!ò‚!òƒ!ò„!ò…!ò†!ò‡!òˆ!ò‰!ôŠ!ô‹!öŒ!ö�!öŽ!ö�!ö�!ö‘!ö’!ö“!ö”!ö•!ö–!ö‡ö—!ö˜!ö™!öš!•›!œ!�!öž!ùŸ!ù !ù¡!ù¢!ü£!ü¤!ü¥!ü¦!ü§!ü¨!•�‚©!•�‚ª!ü«!ý¬!ý­!ý®!ý¯!ý°!ý±!ý²!ý³!ý´!ýµ!ýµ!ýµ!¶!ýµ!·!ýµ!¸!ýµ!¹!ýµ!º!ýµ!»!ý¼!ý¼!ý¼!½!ý¼!¾!ý¼!¿!ýÀ!ýÀ!ýÀ!Á!ýÀ!Â!ýÀ!Ã!ýÀ!Ä!ýÀ!Å!ýÀ!Æ!ýÀ!Ç!ýÀ!È!:É!:Ê!:Ë!:Œ!:�!:Ž!:¬!:’!:“!:Ì!:”!:­!:Í!:Î!þÜUÏ!UÍ!UÐ!UÑ!UÒ!UÓ!UÔ!VÕ!WÖ!W×!WØ!WÙ!ÿÚ!ÿÛ!ÿÜ!ÿÝ!ÿÞ!ÿß!ÿà!ÿá!ÿâ!ÿã!ÿä!ÿå!�æ!�ç!�è!�é!�ê!�ë!�ì!�í!�î!‚ï!‚ð!‚ñ!‚ò!‚ó!‚ô!‚õ!‚ö!•÷!ø! ù! ú! û! ü! ý! „…þ!…ÿ!…€"…�"…‚"…ƒ"…ƒ"„"…ƒ"…"…ƒ"†"…‡"…‡"ˆ"…‡"‰"…‡"Š"…‡"‹"…ÿ!Œ"…ÿ!�"…ÿ!Ž"…ÿ!�"…ÿ!�"…ÿ!‘"…’"…“"…”"••"–"…—"…ƒ"…‡"…ÿ!…ÿ!˜"…™"…š"…›"…œ"…�"…ž"YŸ"• "¡"•�‚¢"\£"\¤"I¥"I¦"I§"I¨"I©"Iª"I«"I¬"I­"I®"I¯"I°"I±"I²"I³"I´"Iµ"I¶"•·"¸"I¹"Iº"I»"I¼"^½"^¾"^¿"^À"^Á"^Â"^Ã"^Ä"^Å"^Æ"^Ç"ŠÈ"ŠÉ"•Ê"Ë"_Ì"_Í"_Î"_Ï"_Ð"_Ñ"_Ò"_Ó"_ü_Ô"_Õ"_Ö"_×"_Ø"_Ù"aÚ"•Û"Ü"aÝ"aÝ"Þ"aÝ"ß"aÝ"à"aÝ"á"aÝ"â"aÝ"ã"aÝ"ä"aÝ"å"aÝ"æ"aÝ"ç"aÝ"è"aÝ"é"aÝ"ê"aÝ"ë"aÝ"ì"aÝ"í"aÝ"î"aÝ"ï"aÝ"ð"aÝ"ñ"aÝ"ò"aÝ"ó"aÝ"ô"aÝ"õ"aÝ"ö"aÝ"÷"aø"aù"aú"aû"aü"aý"aþ"aÿ"a€#a�#a‚#cƒ#c„#c…#c†#c‡#•ˆ#‰#•ˆ#Š#•ˆ#‹#•Œ#•�#•Ž#•�#• "�#• "‘#•„’#•„“#•”#•#•”#–#•”#—#•”#˜#•”#™#•”#š#•é›#•éœ#•é�#•éž#•Ÿ# #•Ÿ#¡#•†¢#•†£#•†¤#•†¥#•†¦#•†§#•š¨#•š©#•šª#•š«#•š¬#•­#®#•­#¯#•­#°#•­#±#•²#³#•²#´#•²#µ#•²#¶#•²#·#•²#¸#•²#¹#•²#º#•²#»#•²#¼#•«½#•«¾#•«¿#•«À#•«Á#•«Â#•«Ã#•«Ä#•«Å#•«Æ#•«Ç#•«È#•«É#•«Ê#•«Ë#•«Ì#•«Í#•«Î#•Ï#Ð#•Ï#Ñ#•Ï#Ò#•Ï#Ó#•Ï#Ô#•Ï#Õ#•Ï#Ö#•Ï#×#•Ø#Ù#•Ø#Ú#•Ø#Û#•Ø#Ü#•Ø#Ý#•ˆ#Þ#•ˆ#ß#•ˆ#à#•ˆ#á#•ˆ#â#•ˆ#ã#•ˆ#ä#•ˆ#å#•ˆ#æ#•ˆ#ç#•ˆ#è#•ˆ#é#•ˆ#ê#•ˆ#ë#•ˆ#ì#•ˆ#í#•î#•ï#•ð#•ñ#•ò#•ó#•ô#•”#Ü•”#Ü•ÆÇ•Æ� •Æ� õ#•Æ� ö#•Ÿ#÷#•†ø#•†ø#ù#•­#ú#•­#û#•­#ü#•­#ý#•­#ý#•­#þ#•­#ÿ#•­#þ#•­#€$•­#€$•­#�$•«‚$•«ƒ$•«„$•«…$•«†$•«‡$•«ˆ$•«‰$•«Š$•«‹$•«Œ$•«�$•«Ž$•Ø#�$•Ø#�$•Ø#‘$•Ø#’$•Ø#“$•Ø#”$•Ø#•$•Ø#–$•Ø#—$•Ø#˜$•Ø#™$•Ø#š$•Ø#›$•Ø#œ$•Ø#�$•Ø#ž$•Ø#Ÿ$•Ø# $•Ø#¡$•Ø#¢$•Ø#£$•Ø#¤$•Ø#¥$•Ø#¦$•Ø#§$•Ø#¨$•Ø#©$•Ø#ª$•Ø#«$•Ø#¬$•Ø#­$•Ø#®$•Ø#¯$•Ø#°$•Ø#±$•Ø#²$•Ø#³$•Ø#´$•Ø#µ$•Ø#¶$•Ø#·$•Ø#¸$•Ø#¹$•Ø#º$•Ø#»$•Ø#¼$•Ø#½$•Ø#¾$•Ø#¿$•Ø#À$•Ø#Á$•Ø#Â$•Ø#Ã$•Ø#Ä$•Ø#Å$•Ø#Æ$•Ø#Ç$•Ø#È$•Ø#É$•Ø#Ê$•Ø#Ë$•Ø#Ì$•Ø#Í$•Ø#Î$•Ø#Ï$•Ø#Ð$•Ø#Ñ$•Ø#Ò$•Ø#Ó$•Ø#Ô$•Ø#Õ$•Ø#Ö$•Ø#×$•Ø#Ø$•Ø#Ù$•Ø#Ú$•Ø#Û$•Ø#Ü$•Ø#Ý$•Ø#Þ$•Ø#ß$•Ø#à$•Ø#á$•Ø#â$•Ø#ã$•Ø#ä$•Ø#å$•Ø#æ$•Ø#ç$•Ø#è$•Ø#é$•Ø#ê$•Ø#ë$•Ø#ì$•Ø#í$•Ø#î$•Ø#ï$•Ø#ð$•Ø#ñ$•Ø#ò$•Ø#ó$•Ø#ô$•Ø#õ$•Ø#ö$•Ø#÷$•Ø#ø$•Ø#ù$•Ø#ú$•Ø#û$•Ø#ü$•Ø#ý$•Ø#þ$•Ø#ÿ$•Ø#€%•Ø#�%•Ø#‚%•Ø#ƒ%•Ø#„%•Ø#…%•Ø#†%•Ø#‡%•Ø#ˆ%•Ø#‰%•Ø#Š%•Ø#‹%•Ø#Œ%•Ø#�%•Ø#Ž%•Ø#�%•Ø#�%•Ø#‘%•Ø#’%•Ø#“%•Ø#”%•Ø#•%•Ø#–%•Ø#—%•Ø#˜%•Ø#™%•Ø#š%•Ø#›%•Ø#œ%•Ø#�%•Ø#ž%•Ø#Ÿ%•Ø# %•Ø#¡%•Ø#¢%•Ø#£%•Ø#¤%•Ø#¥%•Ø#¦%•Ø#§%•Ø#¨%•Ø#©%•Ø#ª%•Ø#«%•Ø#¬%•Ø#­%•Ø#®%•Ø#¯%•Ø#°%•Ø#±%•Ø#²%•Ø#³%•Ø#´%•Ø#µ%¶%Cabal-3.18.2.0-inplaceDistribution.Compat.StackDistribution.Simple.Utils"Distribution.Simple.LocalBuildInfo Distribution.Compat.ResponseFileDistribution.Compat.CreatePipe Distribution.Backpack.FullUnitIdDistribution.Backpack.ModSubst!Distribution.Backpack.ModuleShape$Distribution.Backpack.PreModuleShapeDistribution.Compat.ProcessDistribution.Compat.SysInfoDistribution.Compat.Time%Distribution.PackageDescription.CheckDistribution.ReadE$Distribution.Simple.BuildToolDependsDistribution.Simple.BuildWayDistribution.Simple.CCompilerDistribution.Simple.Flag!Distribution.Simple.Glob.Internal%Distribution.Simple.FileMonitor.Types(Distribution.Simple.InstallDirs.InternalDistribution.Simple.InstallDirs$Distribution.Simple.Program.InternalDistribution.TestSuiteDistribution.Types.AnnotatedId#Distribution.Types.ComponentInclude*Distribution.Types.ComponentLocalBuildInfo Distribution.Types.DumpBuildInfo!Distribution.Types.GivenComponent$Distribution.Types.PackageName.MagicDistribution.Types.ParStratDistribution.Types.TargetInfoDistribution.Utils.IODataDistribution.Utils.JsonDistribution.Utils.MapAccumDistribution.Utils.ProgressDistribution.Verbosity.InternalDistribution.Verbosity#Distribution.Simple.SetupHooks.Rule%Distribution.Simple.SetupHooks.Errors!Distribution.Simple.Program.Types$Distribution.Simple.PreProcess.TypesDistribution.Simple.Errors$Distribution.Simple.PreProcess.Unlit+Distribution.Simple.Build.PackageInfoModuleDistribution.Utils.NubListDistribution.Utils.LogProgressDistribution.Simple.Program.Run"Distribution.Simple.Program.Script(Distribution.Simple.Program.ResponseFileDistribution.Simple.Program.Hpc Distribution.Simple.Program.Find Distribution.Simple.PackageIndex&Distribution.Simple.PackageDescriptionDistribution.Simple.GlobDistribution.Simple.Compiler!Distribution.Simple.Program.HcPkgDistribution.Simple.GHCJSDistribution.Simple.Program.GHC#Distribution.Simple.Program.BuiltinDistribution.Simple.Program.DbDistribution.Simple.Program!Distribution.Simple.Program.StripDistribution.Simple.CommandDistribution.Simple.Setup#Distribution.Types.LocalBuildConfig!Distribution.Types.LocalBuildInfoDistribution.Simple.Test.LogDistribution.Simple.Program.LdDistribution.Simple.Program.ArDistribution.Simple.Hpc Distribution.Simple.Build.MacrosDistribution.Simple.Configure)Distribution.Backpack.ConfiguredComponent%Distribution.Backpack.LinkedComponent%Distribution.Backpack.ComponentsGraph Distribution.Simple.Build.InputsDistribution.Simple.BuildTargetDistribution.Simple.BuildPathsDistribution.Simple.UHCDistribution.Simple.Test.LibV09Distribution.Simple.Test.ExeV10'Distribution.Simple.SetupHooks.Internal(Distribution.Simple.SetupHooks.HooksMainDistribution.Simple.GHC!Distribution.Simple.ShowBuildInfoDistribution.Simple.Install%Distribution.Simple.Build.PathsModuleDistribution.Backpack.Configure$Distribution.Backpack.DescribeUnitIdDistribution.Simple.RegisterDistribution.Simple.PreProcessDistribution.Simple.UserHooksDistribution.Simple.SrcDistDistribution.Simple.BuildDistribution.Simple.TestDistribution.Simple.HaddockDistribution.Simple.BenchDistribution.SimpleCabal'src/Distribution/Backpack/FullUnitId.hs%src/Distribution/Backpack/ModSubst.hs!Distribution.Backpack.ModuleScope(src/Distribution/Backpack/ModuleScope.hs(src/Distribution/Backpack/ModuleShape.hs+src/Distribution/Backpack/PreModuleShape.hsDistribution.Compat.Async src/Distribution/Compat/Async.hsDistribution.Compat.CopyFileDistribution.Compat.Environment$Distribution.Compat.GetShortPathName%Distribution.Compat.Internal.TempFile$Distribution.Compat.Prelude.InternalSystem.ProcessprocGHC.ResponseFileexpandResponsesrc/Distribution/Compat/Time.hsDistribution.GetOptSystem.EnvironmentgetArgssrc/Distribution/GetOpt.hsDistribution.Lex-Distribution.PackageDescription.Check.Warning4src/Distribution/PackageDescription/Check/Warning.hssrc/Distribution/ReadE.hsDistribution.PackageCheck#src/Distribution/Simple/BuildWay.hs$src/Distribution/Simple/CCompiler.hssrc/Distribution/Simple/Flag.hs(src/Distribution/Simple/Glob/Internal.hs,src/Distribution/Simple/FileMonitor/Types.hs/src/Distribution/Simple/InstallDirs/Internal.hs&src/Distribution/Simple/InstallDirs.hssrc/Distribution/TestSuite.hs%src/Distribution/Types/AnnotatedId.hs*Distribution.Backpack.PreExistingComponent1src/Distribution/Backpack/PreExistingComponent.hs1src/Distribution/Types/ComponentLocalBuildInfo.hs'src/Distribution/Types/DumpBuildInfo.hs(src/Distribution/Types/GivenComponent.hs"src/Distribution/Types/ParStrat.hs$src/Distribution/Types/TargetInfo.hs System.IO hGetContentshPutStrhClose src/Distribution/Utils/IOData.hssrc/Distribution/Utils/Json.hs"src/Distribution/Utils/MapAccum.hs"src/Distribution/Utils/Progress.hsDistribution.Utils.UnionFind#src/Distribution/Utils/UnionFind.hs&src/Distribution/Verbosity/Internal.hssrc/Distribution/Verbosity.hs*src/Distribution/Simple/SetupHooks/Rule.hs,src/Distribution/Simple/SetupHooks/Errors.hs(src/Distribution/Simple/Program/Types.hs+src/Distribution/Simple/PreProcess/Types.hs!src/Distribution/Simple/Errors.hsDistribution.Backpack.UnifyM#src/Distribution/Backpack/UnifyM.hsDistribution.Backpack.MixLinkDistribution.ZinzaPrelude src/Distribution/ZinzaPrelude.hs'Distribution.Simple.Build.PathsModule.Z.src/Distribution/Simple/Build/PathsModule/Z.hs-Distribution.Simple.Build.PackageInfoModule.Z4src/Distribution/Simple/Build/PackageInfoModule/Z.hs"Distribution.Simple.Build.Macros.Z)src/Distribution/Simple/Build/Macros/Z.hs Paths_Cabal CreatePipeDispDocProcesswithCreateProcess ExceptiondisplayException src/Distribution/Simple/Utils.hs!src/Distribution/Utils/NubList.hs%src/Distribution/Utils/LogProgress.hsIPIInstalledPackageInfo'src/Distribution/Simple/PackageIndex.hssrc/Distribution/Simple/Glob.hs+Distribution.PackageDescription.Check.Monad2src/Distribution/PackageDescription/Check/Monad.hs1Distribution.PackageDescription.Check.Conditional#src/Distribution/Simple/Compiler.hs Distribution.Simple.GHC.ImplInfo&src/Distribution/Simple/Program/GHC.hs%src/Distribution/Simple/Program/Db.hs"src/Distribution/Simple/Command.hs Distribution.Simple.Setup.Common'src/Distribution/Simple/Setup/Common.hsDistribution.Simple.Setup.Test%src/Distribution/Simple/Setup/Test.hsDistribution.Simple.Setup.SDist&src/Distribution/Simple/Setup/SDist.hsDistribution.Simple.Setup.Repl%src/Distribution/Simple/Setup/Repl.hs"Distribution.Simple.Setup.Register)src/Distribution/Simple/Setup/Register.hs!Distribution.Simple.Setup.Install(src/Distribution/Simple/Setup/Install.hs"Distribution.Simple.Setup.Hscolour)src/Distribution/Simple/Setup/Hscolour.hs!Distribution.Simple.Setup.Haddock(src/Distribution/Simple/Setup/Haddock.hs Distribution.Simple.Setup.Global'src/Distribution/Simple/Setup/Global.hsDistribution.Simple.Setup.Copy%src/Distribution/Simple/Setup/Copy.hs Distribution.Simple.Setup.Config D.C.SetupfilterConfigureFlags'src/Distribution/Simple/Setup/Config.hsbuild*src/Distribution/Types/LocalBuildConfig.hs ConfigFlags(src/Distribution/Types/LocalBuildInfo.hs InstallDirsabsoluteInstallDirsprefixRelativeInstallDirs#src/Distribution/Simple/Test/Log.hssrc/Distribution/Simple/Hpc.hsDistribution.Backpack.Id,src/Distribution/Backpack/LinkedComponent.hsDistribution.Simple.Setup.Clean&src/Distribution/Simple/Setup/Clean.hsDistribution.Simple.Setup.Build&src/Distribution/Simple/Setup/Build.hs#Distribution.Simple.Setup.Benchmark*src/Distribution/Simple/Setup/Benchmark.hs src/Distribution/Simple/Setup.hs&src/Distribution/Simple/BuildTarget.hsHaddock.src/Distribution/Simple/SetupHooks/Internal.hs/src/Distribution/Simple/SetupHooks/HooksMain.hs Distribution.Simple.GHC.Internal'src/Distribution/Simple/GHC/Internal.hs)Distribution.Simple.GHC.EnvironmentParser0src/Distribution/Simple/GHC/EnvironmentParser.hs#Distribution.Simple.GHC.Build.UtilsDistribution.ModuleNamemain%Distribution.Simple.GHC.Build.ModulesHpcWay*Distribution.Simple.GHC.Build.ExtraSources"Distribution.Simple.GHC.Build.LinkDistribution.Simple.GHC.Build,Distribution.PackageDescription.Check.Common3src/Distribution/PackageDescription/Check/Common.hs+Distribution.PackageDescription.Check.Paths,Distribution.PackageDescription.Check.Target3src/Distribution/PackageDescription/Check/Target.hsfindPackageDesc$Distribution.Backpack.ReadyComponent+src/Distribution/Backpack/ReadyComponent.hsLBC BuildOptions$src/Distribution/Simple/Configure.hs#Distribution.Simple.ConfigureScript src/Distribution/Simple/Build.hs"src/Distribution/Simple/Haddock.hs ghc-internalGHC.Internal.Stack.Types CallStackGHC.Internal.Data.Ord comparingGHC.Internal.Data.OldList isInfixOf intercalateCabal-syntax-3.18.2.0-inplaceDistribution.Utils.GenericdropWhileEndLEequating fromUTF8BS fromUTF8LBS ignoreBOMisAbsoluteOnAnyPlatformisRelativeOnAnyPlatform listUnionlistUnionRight lowercasenormaliseLineEndingsordNubordNubBy ordNubRight readUTF8FilesafeHeadsafeInitsafeLastsafeTailsortNubtakeWhileEndLEtoUTF8BS toUTF8LBS uninterspersewithFileContentswithUTF8FileContentswrapLinewrapTextwriteFileAtomic writeUTF8FileDistribution.Types.LibraryNamedefaultLibName LibraryName LMainLibName LSubLibName Distribution.Types.ComponentNamecomponentNameStringshowComponentName ComponentName CBenchNameCExeName CFLibNameCLibName CNotLibName CTestNameDistribution.Types.ComponentcomponentBuildInfocomponentBuildable componentName foldComponent ComponentCBenchCExeCFLibCLibCTest%Distribution.Types.PackageDescription getComponentlookupComponentpkgBuildableComponents pkgComponentsGHC.Internal.StackwithFrozenCallStackprettyCallStack callStackGHC.Internal.ResponseFile escapeArgsÑprocess-1.6.30.0-f6acf73db8ea29915ce16942360f910a67900cbc5c2fd2265f7c0859409953f3System.Process.Internals createPipeexpandOpenUnitId expandUnitIdFullDb FullUnitId$fGenericFullUnitId$fShowFullUnitIdModSubstmodSubst$fModSubstList $fModSubstMap$fModSubstOpenModule$fModSubstOpenUnitId $fModSubstSet$fModSubstTuple2emptyModuleShapeshapeInstalledPackage ModuleShapemodShapeProvidesmodShapeRequires$fBinaryModuleShape$fEqModuleShape$fGenericModuleShape$fModSubstModuleShape$fShowModuleShape$fStructuredModuleShapemixLinkPreModuleShaperenamePreModuleShapetoPreModuleShapePreModuleShapepreModShapeProvidespreModShapeRequires$fEqPreModuleShape$fGenericPreModuleShape$fShowPreModuleShapesetFileOrdinarysetFileExecutablecreateTempDirectoryenableProcessJobs WithCallStackparentSrcLocPrefixwithLexicalCallStackfullCompilerVersion getCurTime getFileAge getModTimeModTime$fBinaryModTime$fBoundedModTime $fEqModTime$fGenericModTime $fOrdModTime $fReadModTime $fShowModTime$fStructuredModTimefilterPackageChecksByIdfilterPackageChecksByIdStringisHackageDistErrorppCheckExplanationIdppPackageCheckCheckExplanation AbsolutePathAllRightsReservedLicenseAutogenIncludesNotIncludedAutogenIncludesNotIncludedExeAutogenNoOtherAutogenNotExposedBOMStartBadRelativePathBaseNoUpperBoundsBenchmarkNotSupportedBenchmarkTypeNotKnownCOptCPP COptONumberCVAutogenPackageInfoCVAutogenPackageInfoGuardCVAutogenPaths CVCustomSetupCVDefaultExtensionsCVDefaultLanguageCVDefaultLanguageComponentCVDefaultLanguageComponentSoftCVExplicitDepsCustomSetup CVExtensionsCVExtensionsDeprecatedCVExtraDocFilesCVExtraDynamicCVExtraFrameworkDirsCVMixins CVMultiLib CVReexportedCVSourceRepository CVSources CVTestSuiteCVVirtualModulesDeclaredUsedFlagsDeprecatedExtensions DistPointDuplicateModuleDuplicateSectionsDynamicUnneededFDeferTypeErrorsUnneeded FilePathEmptyFilePathNameTooLongFilePathSplitTooLongFilePathTooLongFreeTextDotline GTLowerBounds GitProtocolGlobExactMatch GlobNoDir GlobNoMatchGlobSyntaxErrorIllegalLibraryNameImpossibleInternalDepImpossibleInternalExeInvalidNameWin InvalidOnWinInvalidTestWith JUnneeded LEUpperBoundsLanguagesAsExtensionLicenseMessParseMainCCabal1_18MissingConfigureScriptMissingExpectedDocFilesMissingFieldCategoryMissingFieldDescriptionMissingFieldMaintainerMissingFieldSynOrDescMissingFieldSynopsisMissingInternalExeMissingLocation MissingModuleMissingSetupFileMissingSourceControl MissingTag MissingTypeMissingUpperBounds MultiDesc NONELicense NoBuildType NoCustomSetupNoDesc NoHsLhsMainNoHsLhsMainBench NoLicense NoLicenseFileNoMainIsNoModulesExposed NoNameFieldNoTargetNoVersionFieldNonASCIICustomFieldNotPackageNameOptAlternativesOptExtsOptFasmOptHideOptHpcOptJSPPOptMakeOptOOptONotOptOOneOptOTwoOptProfOptRts OptSplitObjsOptSplitSections OptWithRtsOptWls ParseWarningPotentialDupModuleProfilingUnneededRebindableClashPackageInfoRebindableClashPathsRecursiveGlobInRootRelativeOutside ShortDescSignaturesCabal2SubdirGoodRelPath SubdirRelPathSuspiciousFlagNameSynopsisTooLongTestsuiteNotSupportedTestsuiteTypeNotKnownTrailingZeroUpperBounds UncommonBSD4 UnknownArchUnknownCompilerUnknownCompilersUnknownDirectoryUnknownExtensions UnknownFileUnknownLanguagesUnknownLicenseVersion UnknownOSUnnamedInternalUnrecognisedLicenseUnrecognisedSourceRepoUpperBoundSetupWErrorUnneededWrongFieldForExpectedDocFilesZPrefixCheckExplanationIDCheckExplanationIDString PackageCheckPackageBuildImpossiblePackageBuildWarningPackageDistInexcusablePackageDistSuspiciousPackageDistSuspiciousWarn explanationReadErunReadE succeedReadE failReadE parsecToReadEparsecToReadEErrunexpectMsgString$fFunctorReadEdesugarBuildTooldesugarBuildToolSimplegetAllInternalToolDependenciesgetAllToolDependencies isInternalbuildWayInterfaceExtensionbuildWayObjectExtensionBuildWayDynWay ProfDynWayProfWay StaticWay$fEnumBuildWay $fEqBuildWay $fOrdBuildWay$fReadBuildWay$fShowBuildWaycDialectFilenameExtensioncSourceExtensionsfilenameCDialectCDialectC CPlusPlus ObjectiveCObjectiveCPlusPlus $fEqCDialect$fMonoidCDialect$fSemigroupCDialect$fShowCDialect BooleanFlagasBoolFlagNoFlagtoFlagfromFlagfromFlagOrDefault flagToMaybeflagElim flagToListallFlags maybeToFlag mergeListFlag$fBooleanFlagBool GlobPieceWildCardLiteralUnion GlobPiecesGlobGlobDirGlobDirRecursiveGlobFileGlobDirTrailingdispGlobPiecesisGlobEscapedChar$fStructuredGlobPiece$fBinaryGlobPiece $fParsecGlob $fPrettyGlob$fStructuredGlob $fBinaryGlob$fEqGlob $fShowGlob $fGenericGlob $fEqGlobPiece$fShowGlobPiece$fGenericGlobPieceMonitorKindDir DirExists DirModTime DirNotExistsMonitorKindFile FileExists FileModTime FileHashed FileNotExistsMonitorFilePath MonitorFileMonitorFileGlob monitorPathmonitorKindDirmonitorKindFilemonitorPathGlob FilePathRootFilePathRelativeFilePathHomeDir RootedGlob monitorFilemonitorFileHashedmonitorNonExistentFilemonitorFileExistencemonitorDirectorymonitorNonExistentDirectorymonitorDirectoryExistencemonitorFileOrDirectorymonitorFileGlobmonitorFileGlobExistencemonitorFileSearchPathmonitorFileHashedSearchPath$fParsecFilePathRoot$fPrettyFilePathRoot$fStructuredFilePathRoot$fBinaryFilePathRoot$fParsecRootedGlob$fPrettyRootedGlob$fStructuredRootedGlob$fBinaryRootedGlob$fStructuredMonitorKindFile$fBinaryMonitorKindFile$fStructuredMonitorKindDir$fBinaryMonitorKindDir$fStructuredMonitorFilePath$fBinaryMonitorFilePath$fEqMonitorFilePath$fShowMonitorFilePath$fGenericMonitorFilePath$fEqMonitorKindDir$fShowMonitorKindDir$fGenericMonitorKindDir$fEqMonitorKindFile$fShowMonitorKindFile$fGenericMonitorKindFile$fEqRootedGlob$fShowRootedGlob$fGenericRootedGlob$fEqFilePathRoot$fShowFilePathRoot$fGenericFilePathRootPathTemplateVariable PrefixVar BindirVar LibdirVar LibsubdirVar DynlibdirVarBytecodelibdirVar DatadirVar DatasubdirVar DocdirVar HtmldirVar PkgNameVar PkgVerVarPkgIdVar LibNameVar CompilerVarOSVarArchVarAbiVar AbiTagVarExecutableNameVarTestSuiteNameVarTestSuiteResultVarBenchmarkNameVar PathComponentOrdinaryVariable$fReadPathTemplateVariable$fShowPathTemplateVariable $fStructuredPathTemplateVariable$fNFDataPathTemplateVariable$fBinaryPathTemplateVariable$fReadPathComponent$fShowPathComponent$fStructuredPathComponent$fNFDataPathComponent$fBinaryPathComponent$fEqPathComponent$fOrdPathComponent$fGenericPathComponent$fEqPathTemplateVariable$fOrdPathTemplateVariable$fGenericPathTemplateVariablePathTemplateEnv PathTemplateCopyDest NoCopyDestCopyToCopyToDbInstallDirTemplates sysconfdir haddockdirhtmldirmandirdocdir datasubdirdatadir includedir libexecsubdir libexecdirflibdirbytecodelibdir dynlibdir libsubdirlibdirbindirprefixcombineInstallDirsdefaultInstallDirsdefaultInstallDirs'substituteInstallDirTemplatestoPathTemplatefromPathTemplatecombinePathTemplatesubstPathTemplateinitialPathTemplateEnvpackageTemplateEnvcompilerTemplateEnvplatformTemplateEnvabiTemplateEnvinstallDirsTemplateEnvinstallDirsGrammar$fSemigroupInstallDirs$fMonoidInstallDirs$fStructuredInstallDirs$fNFDataInstallDirs$fBinaryInstallDirs$fStructuredCopyDest$fBinaryCopyDest$fParsecPathTemplate$fReadPathTemplate$fShowPathTemplate$fStructuredPathTemplate$fNFDataPathTemplate$fBinaryPathTemplate$fEqPathTemplate$fOrdPathTemplate$fGenericPathTemplate $fEqCopyDest$fShowCopyDest$fGenericCopyDest$fEqInstallDirs$fReadInstallDirs$fShowInstallDirs$fFunctorInstallDirs$fGenericInstallDirsstripExtractVersion testGroup OptionDescr optionDefaultoptionDescription optionName optionType OptionType OptionBool OptionEnum OptionFile OptionNumber OptionRngSeed OptionSet OptionStringoptionFileExtensionsoptionFileIsDiroptionFileMustExistoptionNumberBoundsoptionNumberIsIntoptionStringMultilineOptionsProgressFinishedResultErrorFailPassTest ExtraOptionsGroup concurrently groupName groupTests TestInstancenameoptionsrun setOptiontags$fEqOptionDescr$fEqOptionType $fEqResult$fReadOptionDescr$fReadOptionType $fReadResult$fShowOptionDescr$fShowOptionType $fShowResult AnnotatedId ann_cnameann_idann_pid$fEqAnnotatedId$fFunctorAnnotatedId$fOrdAnnotatedId$fPackageAnnotatedId$fShowAnnotatedIdci_cnameci_idci_pkgidComponentInclude ci_ann_id ci_implicit ci_renamingcomponentIsIndefinitemaybeComponentCompatPackageKeymaybeComponentExposedModulesmaybeComponentInstantiatedWithComponentLocalBuildInfoBenchComponentLocalBuildInfoExeComponentLocalBuildInfoFLibComponentLocalBuildInfoLibComponentLocalBuildInfoTestComponentLocalBuildInfocomponentCompatPackageKeycomponentCompatPackageNamecomponentComponentIdcomponentExeDepscomponentExposedModulescomponentIncludescomponentInstantiatedWithcomponentInternalDepscomponentIsIndefinite_componentIsPubliccomponentLocalNamecomponentPackageDepscomponentUnitId$fBinaryComponentLocalBuildInfo $fGenericComponentLocalBuildInfo$fIsNodeComponentLocalBuildInfo$fReadComponentLocalBuildInfo$fShowComponentLocalBuildInfo#$fStructuredComponentLocalBuildInfo DumpBuildInfoNoDumpBuildInfo$fBinaryDumpBuildInfo$fBoundedDumpBuildInfo$fEnumDumpBuildInfo$fEqDumpBuildInfo$fGenericDumpBuildInfo$fNFDataDumpBuildInfo$fOrdDumpBuildInfo$fParsecDumpBuildInfo$fReadDumpBuildInfo$fShowDumpBuildInfo$fStructuredDumpBuildInfoGivenComponentgivenComponentIdgivenComponentNamegivenComponentPackagePromisedComponentpromisedComponentIdpromisedComponentNamepromisedComponentPackage$fBinaryGivenComponent$fBinaryPromisedComponent$fEqGivenComponent$fEqPromisedComponent$fGenericGivenComponent$fGenericPromisedComponent$fReadGivenComponent$fReadPromisedComponent$fShowGivenComponent$fShowPromisedComponent$fStructuredGivenComponent$fStructuredPromisedComponentfakePackageCabalFileName fakePackageIdfakePackageName nonExistentPackageThisIsCabalBugisParallelBuildParStratParStratInstall ParStratXNumJobsSerialUseSem$fNFDataParStratX$fShowParStratX TargetInfo targetCLBItargetComponent$fBinaryTargetInfo$fGenericTargetInfo$fIsNodeTargetInfo$fShowTargetInfo$fStructuredTargetInfo IODataModeIODataModeTextIODataModeBinaryKnownIODataModehGetIODataContentstoIOData iodataModeIOData IODataText IODataBinary withIODatanull hPutContents$fNFDataIOData$fKnownIODataModeByteString$fKnownIODataModeList.= renderJsonJson JsonArrayJsonBoolJsonNull JsonNumber JsonObject JsonString $fShowJson mapAccumM$fApplicativeStateM$fFunctorStateM failProgress foldProgress stepProgress$fAlternativeProgress$fApplicativeProgress$fFunctorProgress$fMonadProgress VerbosityFlag VCallStack VCallSiteVNoWrap VMarkOutput VTimestampVStderrVNoWarnVerbosityLevelSilentNormalVerbose Deafening$fStructuredVerbosityLevel$fNFDataVerbosityLevel$fBinaryVerbosityLevel$fStructuredVerbosityFlag$fNFDataVerbosityFlag$fBinaryVerbosityFlag$fGenericVerbosityFlag$fShowVerbosityFlag$fReadVerbosityFlag$fEqVerbosityFlag$fOrdVerbosityFlag$fEnumVerbosityFlag$fBoundedVerbosityFlag$fGenericVerbosityLevel$fShowVerbosityLevel$fReadVerbosityLevel$fEqVerbosityLevel$fOrdVerbosityLevel$fEnumVerbosityLevel$fBoundedVerbosityLevelVerbosityFlagsvLevelVerbosityHandles vStderrHandle vStdoutHandle VerbosityverbosityHandlesverbosityFlagsdefaultVerbosityHandlesverbosityLevelverbosityChosenOutputHandleverbosityErrorHandlesetVerbosityHandles mkVerbositymodifyVerbosityFlagsmkVerbosityFlagssilentnormalverbose deafening moreVerbose makeVerbose lessVerboseintToVerbosityflagToVerbosity showForCabal showForGHCverboseCallSiteverboseCallStackverboseMarkOutputverboseUnmarkOutput verboseNoWrapverboseTimestampverboseNoTimestamp verboseStderrverboseNoStderr verboseNoWarnverboseNoFlagsverboseHasFlagsisVerboseCallSiteisVerboseCallStackisVerboseMarkOutputisVerboseNoWrapisVerboseQuietisVerboseTimestampisVerboseStderrisVerboseNoWarn$fStructuredVerbosityHandles$fNFDataVerbosityHandles$fPrettyVerbosityFlags$fParsecVerbosityFlags$fStructuredVerbosityFlags$fNFDataVerbosityFlags$fBinaryVerbosityFlags$fStructuredVerbosity$fNFDataVerbosity$fGenericVerbosity$fGenericVerbosityFlags$fShowVerbosityFlags$fReadVerbosityFlags$fEqVerbosityFlagsDict RuleExecCmdRuleDynDepsCmdRuleCmdsDepsResdepsRes DynDepsCmd dynDepsCmd RuleCommandsStaticRuleCommandDynamicRuleCommandsstaticRuleArgRepstaticRuleCommanddynamicRuleTypeRepdynamicRuleCommand dynamicDepsdynamicRuleInstances CommandDataCommand cmdInstances actionArg actionPtrStaticRulesrunRulesRulesT runRulesTRulesEnvrulesEnvNameSpacerulesEnvVerbosityRulesM RuleOutput outputIndex outputOfRule DependencyRuleDependencyFileDependencyLocationlocationRelPathlocationBaseDirRuleDataRuleresultsstaticDependencies ruleCommands RuleBinarySScopeSUserSSystemScopeUserSystemRuleIdruleName ruleNameSpace SystemStatic userStaticKey UserStatic userStaticPtr staticRule dynamicRulelocationnoRulesrules computeRules mkCommand runCommand ruleDepsCmdrunRuleDynDepsCmd ruleExecCmdrunRuleExecCmd ruleBinary$fShowLocation$fBinaryLocation $fOrdLocation $fEqLocation$fBinaryStatic $fOrdStatic $fEqStatic $fShowStatic$fBinaryScopedArgument$fBinaryScopedArgument0$fBinaryRuleCommands$fBinaryRuleCommands0$fEqRuleCommands$fEqRuleCommands0$fShowRuleCommands$fBinaryCommandData$fBinaryCommandData0$fEqCommandData$fEqCommandData0$fShowCommandData$fShowRuleData$fMonadTransRulesT $fMonoidRules$fSemigroupRules$fStructuredRuleCommands$fStructuredLocation$fFunctorRulesT$fApplicativeRulesT $fMonadRulesT$fMonadIORulesT$fMonadFixRulesT$fGenericRuleData $fShowDepsRes $fEqDepsRes $fOrdDepsRes$fGenericNoCmd $fEqNoCmd $fOrdNoCmd $fShowNoCmd $fBinaryNoCmd$fEqScopedArgument$fOrdScopedArgument$fShowScopedArgument $fEqStatic0 $fOrdStatic0 $fShowStatic0$fBinaryStatic0$fShowDependency$fEqDependency$fOrdDependency$fGenericDependency$fBinaryDependency$fStructuredDependency$fShowRuleOutput$fEqRuleOutput$fOrdRuleOutput$fGenericRuleOutput$fBinaryRuleOutput$fStructuredRuleOutput $fShowRuleId $fEqRuleId $fOrdRuleId$fGenericRuleId$fBinaryRuleId$fStructuredRuleId$fShowRulesNameSpace$fEqRulesNameSpace$fOrdRulesNameSpace$fGenericRulesNameSpace$fBinaryRulesNameSpace$fStructuredRulesNameSpace$fBinaryDepsRes$fBinaryDynDepsCmd$fEqDynDepsCmd$fBinaryDynDepsCmd0$fEqDynDepsCmd0$fShowDynDepsCmd$fStructuredRuleData$fStructuredRuleData0$fBinaryRuleData$fBinaryRuleData0 $fEqRuleData $fEqRuleData0$fShowRuleData0IllegalComponentDiffReasonCannotChangeNameCannotChangeComponentFieldCannotChangeBuildInfoFieldCannotApplyComponentDiffReasonMismatchedComponentTypesIllegalComponentDiffRulesExceptionCyclicRuleDependencies!CantFindSourceForRuleDependenciesMissingRuleOutputsInvalidRuleOutputIndexDuplicateRuleIdSetupHooksExceptionCannotApplyComponentDiffsetupHooksExceptionCodesetupHooksExceptionMessage$fShowSetupHooksException$$fShowCannotApplyComponentDiffReason $fShowIllegalComponentDiffReason$fShowRulesException programPathsimpleConfiguredProgramsuppressOverrideArgsConfiguredProgramprogramDefaultArgs programIdprogramLocationprogramMonitorFilesprogramOverrideArgsprogramOverrideEnvprogramPropertiesprogramVersionProgArgProgramprogramFindLocationprogramFindVersion programNameprogramNormaliseArgsprogramPostConfProgramLocation FoundOnSystem UserSpecified locationPathProgramSearchPathProgramSearchPathEntryProgramSearchPathDefaultProgramSearchPathDir$fBinaryConfiguredProgram$fBinaryProgramLocation$fBinaryProgramSearchPathEntry$fEqConfiguredProgram$fEqProgramLocation$fEqProgramSearchPathEntry$fGenericConfiguredProgram$fGenericProgramLocation$fGenericProgramSearchPathEntry$fReadConfiguredProgram$fReadProgramLocation$fShowConfiguredProgram $fShowProgram$fShowProgramLocation$fShowProgramSearchPathEntry$fStructuredConfiguredProgram$fStructuredProgramLocation"$fStructuredProgramSearchPathEntrySuffixPreProcessCommand PreProcessorrunPreProcessor ppOrderingplatformIndependentbuiltinHaskellSuffixesbuiltinHaskellBootSuffixes$fStructuredSuffix$fBinarySuffix$fPrettySuffix $fEqSuffix $fOrdSuffix $fShowSuffix$fGenericSuffix$fIsStringSuffixCabalExceptionNoBenchMarkProgramEnableBenchMarkBenchMarkNameDisabled NoBenchMarkNoLibraryFoundCompilerNotInstalledCantFindIncludeFileUnsupportedTestSuiteUnsupportedBenchMarkNoIncludeFileFound NoModuleFoundRegMultipleInstancePkgSuppressingChecksOnFileNoSupportDirStylePackageDbOnlySupportSpecificPackageDbFailedToParseOutputDescribe DumpFailedFailedToParseOutputDump ListFailedFailedToParseOutputListProgramNotFoundNoSupportForHoogleNoSupportForQuickJumpFlagNoGHCVersionFromHaddockNoGHCVersionFromCompilerHaddockAndGHCVersionDoesntMatchMustHaveSharedLibrariesHaddockPackageFlagsUnknownCompilerFlavorFailedToDetermineTargetNoMultipleTargetsREPLNotSupportedNoSupportBuildingTestSuiteNoSupportBuildingBenchMark BuildingNotSupportedWithCompiler PkgDumpFailedFailedToParseOutputCantFindSourceModuleVersionMismatchJSVersionMismatchGHCJSGlobalPackageDBLimitationGlobalPackageDBSpecifiedFirstMatchDirFileGlobMatchDirFileGlobErrorsErrorParsingFileDoesntExist FailedParsing NotFoundMsgUnrecognisedBuildTargetReportBuildTargetProblemsUnknownBuildTargetAmbiguousBuildTargetCheckBuildTargetsVersionMismatchGHCCheckPackageDbStackGlobalPackageDbSpecifiedFirstCantInstallForeignLibNoSupportForPreProcessingTest"NoSupportForPreProcessingBenchmarkCantFindSourceForPreProcessFile NoSupportPreProcessingTestExtras%NoSupportPreProcessingBenchmarkExtrasUnlitExceptionRunProgramInvocationExceptionGetProgramInvocationException GetProgramInvocationLBSExceptionCheckSemaphoreSupportNoLibraryForPackageSanityCheckHookedBuildInfoConfigureScriptNotFoundNoValidComponentConfigureEitherSingleOrAllConfigCIDValidForPreComponentSanityCheckForEnableComponents"SanityCheckForDynamicStaticLinkingUnsupportedLanguagesUnsupportedLanguageExtensionCantFindForeignLibrariesExpectedAbsoluteDirectoryFlagsNotSpecifiedEncounteredMissingDependencyCompilerDoesn'tSupportThinningCompilerDoesn'tSupportReexportsCompilerDoesn'tSupportBackpackLibraryWithinSamePackageReportFailedDependenciesNoPackageDatabaseSpecifiedHowToFindInstalledPackagesPkgConfigNotFound BadVersionUnknownCompilerException NoWorkingGcc NoOSSupportNoCompilerSupportInstallDirsNotPrefixRelative ExplainErrorsCheckPackageProblemsLibDirDepsPrefixNotRelativeCombinedConstraintsCantParseGHCOutputIncompatibleWithCabalCouldn'tFindTestProgramTestCoverageSupportCouldn'tFindTestProgLibV09TestCoverageSupportLibV09RawSystemStdoutFindFileFindModuleFileExMultipleFilesWithExtensionRelocRegistrationInfoCreatePackageDB WithHcPkgRegisMultiplePkgNotSupportedRegisteringNotImplementedNoTestSuitesEnabledTestNameDisabled NoSuchTestConfigureProgramRequireProgramNoProgramFound BadVersionDbUnknownVersionDbMissingCoveredInstalledLibrary/MultiReplDoesNotSupportComplexReexportedModules!StandaloneBytecodeNotSupportedYetFailedDependencyDependencyNotExistsDependencyMissingInternalDependencyNoVersion exceptionCodeexceptionMessage$fShowCabalException$fShowFailedDependencyplainunlitgeneratePackageInfoModuleaddLibraryPath annotateIOcabalCompilerInfo cabalGitInfo cabalVersion chattyTrycopyDirectoryRecursive copyFileTo copyFileToCwdcopyFileVerbose copyFilescreateDirectoryIfMissingVerbosedebug debugNoWrapdefaultPackageDescCwddefaultTempFileOptionsdie'dieNoVerbosity dieNoWrapdieWithExceptiondieWithLocation'doesExecutableExistdropExeExtensionexceptionWithCallStackPrefixexceptionWithMetadata exeExtensionsexistsAndIsMoreRecentThanfindAllFilesCwdWithExtensionfindAllFilesWithExtension findFileCwdfindFileCwdWithExtensionfindFileCwdWithExtension' findFileExfindFileWithExtensionfindFileWithExtension' findFirstFilefindHookedPackageDescfindModuleFileCwdfindModuleFileExfindModuleFilesCwdfindModuleFilesExfindProgramVersionfromCreatePipegetDirectoryContentsRecursivehandleDoesNotExist ignoreSigPipeinfo infoNoWrapinstallDirectoryContentsinstallExecutableFileinstallExecutableFilesinstallMaybeExecutableFileinstallMaybeExecutableFilesinstallOrdinaryFileinstallOrdinaryFilesisInSearchPathisUserException maybeExitmoreRecentFilenotice noticeDoc noticeNoWrap rawSystemExitrawSystemExitCoderawSystemExitWithEnvrawSystemExitWithEnvCwdrawSystemIOWithEnvrawSystemIOWithEnvAndAction rawSystemProcrawSystemProcActionrawSystemStdInOutrawSystemStdoutremoveFileForcibly rewriteFileExrewriteFileLBS setupMessageshortRelativePathstripCommonPrefix topHandlertopHandlerWithtryFindPackageDescwarn warnError withFileLockwithOutputMarkerwithTempDirectorywithTempDirectoryCwdwithTempDirectoryCwdExwithTempDirectoryEx withTempFilewithTempFileCwdwithTempFileExxargsTempFileOptionsoptKeepTempFilesVerboseException $fEqTraceWhen$fExceptionVerboseException$fShowVerboseException overNubList overNubListR toNubList toNubListRNubList fromNubListNubListR fromNubListR$fBinaryNubList $fEqNubList $fEqNubListR$fGenericNubList$fMonoidNubList$fSemigroupNubList$fMonoidNubListR$fSemigroupNubListR$fNFDataNubList $fReadNubList$fReadNubListR $fShowNubList$fShowNubListR$fStructuredNubListaddProgressCtx dieProgress infoProgressrunLogProgress warnProgress LogProgress$fApplicativeLogProgress$fFunctorLogProgress$fMonadLogProgressemptyProgramInvocationgetEffectiveEnvironmentgetFullEnvironmentgetProgramInvocationLBS getProgramInvocationLBSAndErrorsgetProgramInvocationOutput#getProgramInvocationOutputAndErrorsmultiStageProgramInvocationprogramInvocationprogramInvocationCwdrunProgramInvocationsimpleProgramInvocation IOEncodingIOEncodingTextIOEncodingUTF8ProgramInvocationprogInvokeArgs progInvokeCwd progInvokeEnvprogInvokeInputprogInvokeInputEncodingprogInvokeOutputEncodingprogInvokePathprogInvokeWheninvocationAsBatchFileinvocationAsShellScriptinvocationAsSystemScriptwithResponseFilemarkupuniondefaultProgramSearchPathfindProgramOnSearchPathgetExtraPathEnvgetSystemSearchPathlogExtraProgramOverrideEnvlogExtraProgramSearchPathprogramSearchPathAsPATHVar simpleProgram allPackagesallPackagesByNameallPackagesBySourcePackageId&allPackagesBySourcePackageIdAndLibNamebrokenPackagesdeletePackageNamedeleteSourcePackageId deleteUnitIddependencyClosuredependencyCyclesdependencyGraphdependencyInconsistencieseligibleDependenciesfromListinsertlookupComponentIdlookupDependencylookupInternalDependencylookupInternalPackageNamelookupPackageIdlookupPackageNamelookupSourcePackageId lookupUnitIdmatchingDependenciesmergemoduleNameIndexreverseDependencyClosurereverseTopologicalOrder searchByNamesearchByNameSubstringsearchWithPredicatetopologicalOrderInstalledPackageIndex PackageIndex SearchResult AmbiguousNone Unambiguous$fBinaryPackageIndex$fEqPackageIndex$fGenericPackageIndex$fMonoidPackageIndex$fSemigroupPackageIndex$fReadPackageIndex$fShowPackageIndex$fStructuredPackageIndex flattenDups parseStringreadAndParseFilereadGenericPackageDescriptionreadHookedBuildInfoexplainGlobSyntaxErrorfileGlobMatches globMatchesisRecursiveInRootmatchDirFileGlobmatchDirFileGlobWithDie matchGlobmatchGlobPieces parseFileGlobrunDirFileGlob GlobResult GlobMatchGlobMatchesDirectoryGlobMissingDirectoryGlobWarnMultiDot EmptyGlobLiteralFileNameGlobStarNoExtensionOnStarStarInDirectoryStarInExtensionStarInFileNameVersionDoesNotSupportGlobVersionDoesNotSupportGlobStar$fEqGlobResult$fEqGlobSyntaxError$fFunctorGlobResult$fOrdGlobResult$fShowGlobResult$fShowGlobSyntaxErrorCheckPackageContentOpsdoesDirectoryExist doesFileExistgetFileContents listDirectoryabsolutePackageDBPathabsolutePackageDBPathsarDashLSupportedarResponseFilesSupportedbackpackSupportedbytecodeArtifactsSupportedcoercePackageDBcoercePackageDBStackcompilerCompatFlavorcompilerCompatVersioncompilerFlavor compilerInfocompilerVersioncoverageSupporteddynamicSupportedextensionsToFlagsflagToDebugInfoLevelflagToOptimisationLevelflagToProfDetailLevelinterpretPackageDBinterpretPackageDBStack jsemSupported jsemVersionknownProfDetailLevelslanguageToFlagslibraryDynDirSupportedlibraryVisibilitySupportedpackageKeySupportedparmakeSupportedprofilingDynamicSupported"profilingDynamicSupportedOrUnknownprofilingSupportedprofilingVanillaSupported"profilingVanillaSupportedOrUnknown readPackageDbreexportedAsSupportedreexportedModulesSupportedregistrationPackageDBrenamingPackageFlagsSupportedshowCompilerIdshowCompilerIdWithAbishowProfDetailLevelunifiedIPIDRequiredunitIdSupportedunsupportedExtensionsunsupportedLanguagesCompilercompilerAbiTagcompilerCompatcompilerExtensions compilerIdcompilerLanguagescompilerPropertiescompilerWiredInUnitIds CompilerFlagDebugInfoLevelMaximalDebugInfoMinimalDebugInfo NoDebugInfoNormalDebugInfoOptimisationLevelMaximumOptimisationNoOptimisationNormalOptimisation PackageDB PackageDBCWD PackageDBSPackageDBStackPackageDBStackCWDPackageDBStackSPackageDBStackX PackageDBXGlobalPackageDBSpecificPackageDB UserPackageDBProfDetailLevelProfDetailAllFunctionsProfDetailDefaultProfDetailExportedFunctionsProfDetailNoneProfDetailOtherProfDetailTopLateProfDetailToplevelFunctions$fBinaryCompiler$fBinaryDebugInfoLevel$fBinaryOptimisationLevel$fBinaryPackageDBX$fBinaryProfDetailLevel$fBoundedDebugInfoLevel$fBoundedOptimisationLevel$fEnumDebugInfoLevel$fEnumOptimisationLevel $fEqCompiler$fEqDebugInfoLevel$fEqOptimisationLevel$fEqPackageDBX$fEqProfDetailLevel$fFoldablePackageDBX$fFunctorPackageDBX$fGenericCompiler$fGenericDebugInfoLevel$fGenericOptimisationLevel$fGenericPackageDBX$fGenericProfDetailLevel$fNFDataCompiler$fNFDataDebugInfoLevel$fNFDataOptimisationLevel$fNFDataPackageDBX$fNFDataProfDetailLevel$fOrdPackageDBX$fParsecDebugInfoLevel$fParsecOptimisationLevel$fParsecProfDetailLevel$fReadCompiler$fReadDebugInfoLevel$fReadOptimisationLevel$fReadPackageDBX$fReadProfDetailLevel$fShowCompiler$fShowDebugInfoLevel$fShowOptimisationLevel$fShowPackageDBX$fShowProfDetailLevel$fStructuredCompiler$fStructuredDebugInfoLevel$fStructuredOptimisationLevel$fStructuredPackageDBX$fStructuredProfDetailLevel$fTraversablePackageDBXdefaultRegisterOptionsdescribedescribeInvocationdumpdumpInvocationexposeexposeInvocationhidehideInvocationinitinitInvocationinvokelistlistInvocationrecacherecacheInvocationregisterregisterInvocation unregisterunregisterInvocationRegisterOptionsregisterAllowOverwriteregisterMultiInstanceregisterSuppressFilesCheck getImplInfo GhcImplInfoflagHie flagProfLateflagWarnMissingHomeModulessupportsGHC2021supportsGHC2024supportsPkgEnvFiles unitIdForExes ghcInvocationnormaliseGhcArgspackageDbArgsDbrenderGhcOptionsrunGHCrunGHCWithResponseFilerunReplProgramGhcDynLinkModeGhcDynamicOnlyGhcStaticAndDynamic GhcStaticOnlyGhcModeGhcModeAbiHashGhcModeCompileGhcModeInteractive GhcModeLink GhcModeMake GhcObjectMode GhcByteCodeGhcByteCodeAndObjectCode GhcObjectCodeGhcOptimisationGhcMaximumOptimisationGhcNoOptimisationGhcNormalOptimisationGhcSpecialOptimisation GhcOptionsghcOptAsmOptionsghcOptBytecodeDirghcOptBytecodeLib ghcOptCabalghcOptCcOptionsghcOptCcProgramghcOptCppIncludePathghcOptCppIncludesghcOptCppOptionsghcOptCxxOptionsghcOptDebugInfoghcOptDylibNameghcOptDynHiSuffixghcOptDynLinkModeghcOptDynObjSuffixghcOptExtensionMapghcOptExtensions ghcOptExtraghcOptExtraDefaultghcOptExtraPath ghcOptFPicghcOptFfiIncludesghcOptGHCiScriptsghcOptGppProgram ghcOptHPCDir ghcOptHiDirghcOptHiSuffixghcOptHideAllPackages ghcOptHieDirghcOptInputFilesghcOptInputModulesghcOptInputScriptsghcOptInstantiatedWithghcOptJSppOptionsghcOptLanguageghcOptLinkFrameworkDirsghcOptLinkFrameworksghcOptLinkLibPathghcOptLinkLibsghcOptLinkModDefFilesghcOptLinkNoHsMainghcOptLinkOptions ghcOptLinkRts ghcOptModeghcOptNoAutoLinkPackages ghcOptNoCode ghcOptNoLink ghcOptNumJobs ghcOptObjDirghcOptObjSuffixghcOptObjectModeghcOptOptimisationghcOptOutputDirghcOptOutputDynFileghcOptOutputFileghcOptPackageDBsghcOptPackagesghcOptProfilingAutoghcOptProfilingMode ghcOptRPaths ghcOptSharedghcOptSourcePathghcOptSourcePathClearghcOptSplitObjsghcOptSplitSectionsghcOptStaticLib ghcOptStubDirghcOptThisComponentIdghcOptThisUnitIdghcOptUnitFilesghcOptVerbosityghcOptWarnMissingHomeModules GhcProfAutoGhcProfAutoAllGhcProfAutoExportedGhcProfAutoToplevel GhcProfLate$fEqGhcDynLinkMode $fEqGhcMode$fEqGhcObjectMode$fEqGhcOptimisation$fEqGhcProfAuto$fGenericGhcOptions$fMonoidGhcOptions$fSemigroupGhcOptions$fShowGhcDynLinkMode $fShowGhcMode$fShowGhcObjectMode$fShowGhcOptimisation$fShowGhcOptions$fShowGhcProfAuto alexProgram arProgrambuiltinPrograms c2hsProgram cppProgram cpphsProgramdoctestProgram gccProgram ghcPkgProgram ghcProgramghcjsPkgProgram ghcjsProgram gppProgramhaddockProgram happyProgram hpcProgram hsc2hsProgramhscolourProgram jhcProgram ldProgrampkgConfigProgram runghcProgram stripProgram tarProgram uhcProgramaddKnownProgramaddKnownProgramsclearUnconfiguredProgramsconfigureAllKnownProgramsconfigureProgramconfigureUnconfiguredProgramconfiguredProgramsdefaultProgramDbemptyProgramDbgetProgramSearchPath knownProgramslookupKnownProgram lookupProgramlookupProgramByNamelookupProgramVersionmodifyProgramSearchPath needProgramprependProgramSearchPath!prependProgramSearchPathNoLoggingreconfigureProgramsrequireProgramrequireProgramVersionrestoreProgramDbsetProgramSearchPathunconfigureProgramupdateConfiguredProgsupdatePathProgDb updateProgramupdateUnconfiguredProgsuserMaybeSpecifyPathuserSpecifiedArgsuserSpecifyArgsuserSpecifyArgssuserSpecifyPathuserSpecifyPathsConfiguredProgs ProgramDbconfiguredProgsprogOverrideEnvprogSearchPathunconfiguredProgsUnconfiguredProgs$fBinaryProgramDb$fReadProgramDb$fShowProgramDb$fStructuredProgramDbgetDbProgramOutputgetDbProgramOutputCwdgetProgramOutput runDbProgramrunDbProgramCwd runProgram runProgramCwdstripExestripLibboolOptboolOpt' choiceOptchoiceOptFromEnumcommandAddActioncommandFromSpeccommandParseArgscommandShowOptions commandsRuncommandsRunWithFallbackdefaultCommandFallback fmapOptDescrgetNormalCommandDescriptions helpCommandUI hiddenCommand liftOption liftOptionL mkCommandUI multiOptionnoArg noExtraFlagsoptArgoptArg' optArgDef'optionreqArgreqArg'usageAlternatives usageDefaultArgPlaceHolder CommandParse CommandErrors CommandHelp CommandListCommandReadyToGo CommandSpec CommandType HiddenCommand NormalCommand CommandUIcommandDefaultFlagscommandDescription commandName commandNotescommandOptionscommandSynopsis commandUsage DescriptionLFlags MkOptDescrNameOptDescrBoolOpt ChoiceOptOptArgReqArgOptFlags OptionField optionDescrSFlagsShowOrParseArgs ParseArgsShowArgs$fFunctorCommandParsecommonSetupTempFileOptionsconfigureCCompilerconfigureLinkerdefaultCommonSetupFlagsdefaultDistPreffalseArgoptionDistPrefoptionVerbosityprogramDbOptionsprogramDbPaths'programFlagsDescription splitArgstrueArgCommonSetupFlagssetupCabalFilePath setupDistPrefsetupKeepTempFiles setupTargetssetupVerbositysetupWorkingDirdefaultTestFlagsemptyTestFlags testCommand testOptions' TestFlagsTestCommonFlagstestCabalFilePathtestCommonFlags testDistPreftestFailWhenNoTestSuites testHumanLog testKeepTixtestMachineLog testOptionstestShowDetails testTargets testVerbositytestWorkingDir testWrapperTestShowDetailsAlwaysDirectFailuresNever StreamingdefaultSDistFlagsemptySDistFlags sdistCommand SDistFlagsSDistCommonFlagssDistCabalFilePathsDistCommonFlagssDistDirectory sDistDistPrefsDistListSources sDistSnapshot sDistTargetssDistVerbositysDistWorkingDirdefaultReplFlags replCommand replOptions ReplFlagsReplCommonFlagsreplCabalFilePathreplCommonFlags replDistPrefreplProgramArgsreplProgramPaths replReloadreplReplOptions replTargets replVerbosityreplWorkingDir ReplOptionsreplOptionsFlagOutputreplOptionsFlagsreplOptionsNoLoad replWithRepldefaultRegisterFlagsemptyRegisterFlagsregisterCommandunregisterCommand RegisterFlagsRegisterCommonFlags regGenPkgConf regGenScript regInPlace regPackageDB regPrintIdregisterCabalFilePathregisterCommonFlagsregisterDistPrefregisterTargetsregisterVerbosityregisterWorkingDirdefaultInstallFlagsemptyInstallFlagsinstallCommand InstallFlagsInstallCommonFlagsinstallCabalFilePathinstallCommonFlags installDestinstallDistPrefinstallInPlaceinstallPackageDBinstallTargetsinstallUseWrapperinstallVerbosityinstallWorkingDirdefaultHscolourFlagsemptyHscolourFlagshscolourCommand HscolourFlagsHscolourCommonFlagshscolourBenchmarks hscolourCSShscolourCabalFilePathhscolourCommonFlagshscolourDistPrefhscolourExecutableshscolourForeignLibshscolourTargetshscolourTestSuiteshscolourVerbosityhscolourWorkingDirdefaultHaddockFlagsdefaultHaddockProjectFlagsemptyHaddockFlagsemptyHaddockProjectFlagshaddockCommandhaddockOptionshaddockProjectCommandhaddockProjectOptions HaddockFlagsHaddockCommonFlagshaddockBaseUrlhaddockBenchmarkshaddockCabalFilePathhaddockCommonFlagshaddockContents haddockCsshaddockDistPrefhaddockExecutableshaddockForHackagehaddockForeignLibs haddockHooglehaddockHscolourCss haddockHtmlhaddockHtmlLocation haddockIndexhaddockInternalhaddockLinkedSourcehaddockOutputDirhaddockProgramArgshaddockProgramPathshaddockQuickJumphaddockResourcesDirhaddockTargetshaddockTestSuiteshaddockUseUnicodehaddockVerbosityhaddockWorkingDirHaddockProjectFlagshaddockProjectBenchmarkshaddockProjectCommonFlagshaddockProjectCsshaddockProjectDirhaddockProjectExecutableshaddockProjectForeignLibshaddockProjectHackagehaddockProjectHooglehaddockProjectHscolourCsshaddockProjectHtmlLocationhaddockProjectInterfaceshaddockProjectInternalhaddockProjectProgramArgshaddockProjectProgramPathshaddockProjectProloguehaddockProjectResourcesDirhaddockProjectTestSuiteshaddockProjectUseUnicode HaddockTargetForDevelopment ForHackage VisibilityHiddenVisibledefaultGlobalFlagsemptyGlobalFlags globalCommand GlobalFlagsglobalFullVersionglobalNumericVersion globalVersionglobalWorkingDir copyCommanddefaultCopyFlagsemptyCopyFlags CopyFlagsCopyCommonFlagscopyCabalFilePathcopyCommonFlagscopyDest copyDistPref copyTargets copyVerbositycopyWorkingDirconfigPrograms configureArgsconfigureCommandconfigureOptionsdefaultConfigFlagsemptyConfigFlagsinstallDirsOptionsreadPackageDbList showPackageDbshowPackageDbListConfigCommonFlags!configAllowDependingOnPrivateLibsconfigBenchmarksconfigBytecodeLib configCIDconfigCabalFilePathconfigCommonFlagsconfigConfigurationsFlagsconfigConfigureArgsconfigConstraintsconfigCoverageconfigCoverageForconfigDebugInfoconfigDependenciesconfigDeterministicconfigDistPrefconfigDumpBuildInfo configDynExeconfigExactConfigurationconfigExtraFrameworkDirsconfigExtraIncludeDirsconfigExtraLibDirsconfigExtraLibDirsStaticconfigFlagErrorconfigFullyStaticExe configGHCiLibconfigHcFlavor configHcPath configHcPkg configIPIDconfigIgnoreBuildToolsconfigInstallDirsconfigInstantiateWithconfigLibCoverageconfigOptimizationconfigPackageDBs configProfconfigProfDetail configProfExe configProfLibconfigProfLibDetailconfigProfSharedconfigProgPrefixconfigProgSuffixconfigProgramArgsconfigProgramPathExtraconfigProgramPathsconfigPrograms_configPromisedDependenciesconfigRelocatableconfigScratchDirconfigSharedLibconfigSplitObjsconfigSplitSectionsconfigStaticLibconfigStripExesconfigStripLibs configTargets configTestsconfigUseResponseFilesconfigUserInstallconfigVanillaLibconfigVerbosityconfigWorkingDirbuildOptionsConfigFlags exeCoverage libCoverage relocatable splitObjs splitSections stripExes stripLibswithBytecodeLib withDebugInfo withDynExewithFullyStaticExe withGHCiLibwithOptimization withProfExewithProfExeDetail withProfLibwithProfLibDetailwithProfLibShared withSharedLib withStaticLibwithVanillaLibComponentBuildDescrcomponentGraphcomponentNameMap installedPkgs promisedPkgsLocalBuildConfigextraConfigArgswithBuildOptions withProgramsLocalBuildDescrcomponentBuildDescrpackageBuildDescrPackageBuildDescrcompilercomponentEnabledSpec configFlagsextraCoverageForflagAssignment hostPlatforminstallDirTemplates localPkgDescr pkgDescrFile withPackageDB$fBinaryBuildOptions$fBinaryComponentBuildDescr$fBinaryLocalBuildConfig$fBinaryLocalBuildDescr$fBinaryPackageBuildDescr$fEqBuildOptions$fGenericBuildOptions$fGenericComponentBuildDescr$fGenericLocalBuildConfig$fGenericLocalBuildDescr$fGenericPackageBuildDescr$fReadBuildOptions$fReadComponentBuildDescr$fReadLocalBuildConfig$fReadLocalBuildDescr$fReadPackageBuildDescr$fShowBuildOptions$fShowComponentBuildDescr$fShowLocalBuildConfig$fShowLocalBuildDescr$fShowPackageBuildDescr$fStructuredBuildOptions$fStructuredComponentBuildDescr$fStructuredLocalBuildConfig$fStructuredLocalBuildDescr$fStructuredPackageBuildDescrallTargetsInBuildOrderallTargetsInBuildOrder'buildDir buildDirPBD buildWayscomponentNameCLBIscomponentNameTargetscomponentNameTargets' distPrefLBIlocalCompatPackageKeylocalComponentId localPackage localUnitIdneededTargetsInBuildOrderneededTargetsInBuildOrder' packageRoot progPrefix progSuffixsetupFlagsBuildDir testCoverage unitIdTarget unitIdTarget'withAllTargetsInBuildOrderwithAllTargetsInBuildOrder'withNeededTargetsInBuildOrderwithNeededTargetsInBuildOrder'LocalBuildInfoNewLocalBuildInfolocalBuildConfiglocalBuildDescr$fBinaryLocalBuildInfo$fGenericLocalBuildInfo$fReadLocalBuildInfo$fShowLocalBuildInfo$fStructuredLocalBuildInfoabsoluteComponentInstallDirsabsoluteInstallCommandDirsabsoluteWorkingDirLBIallComponentsInBuildOrder allLibModulescomponentBuildDirdepLibraryPathsenabledBenchLBIsenabledTestLBIsinterpretSymbolicPathLBI mbWorkDirLBI"prefixRelativeComponentInstallDirswithAllComponentsInBuildOrder withBenchLBI withExeLBI withLibLBI withTestLBIcountTestResultslocalPackageLog suiteError suiteFailed suitePassedsummarizePackagesummarizeSuiteFinishsummarizeSuiteStart summarizeTesttestSuiteLogPath PackageLogpackageplatform testSuitesTestLogs GroupLogsTestLogtestNametestOptionsReturned testResult TestSuiteLoglogFiletestLogs testSuiteName$fEqPackageLog $fEqTestLogs$fEqTestSuiteLog$fReadPackageLog$fReadTestLogs$fReadTestSuiteLog$fShowPackageLog$fShowTestLogs$fShowTestSuiteLogcombineObjectFilescreateArLibArchiveguessWayhtmlDir markupPackagemixDirtixDir tixFilePath HPCMarkupInfolibsModulesToIncludepathsToLibsArtifactsDynProfProfDynVanilla $fBoundedWay $fEnumWay$fEqWay $fReadWay $fShowWaygenerateCabalMacrosHeadergeneratePackageVersionMacroscomputeCompatPackageKeycomputeComponentIdcc_cidcc_namecc_pkgiddispConfiguredComponentextendConfiguredComponentMapnewPackageDepsBehaviourtoConfiguredComponenttoConfiguredComponentsConfiguredComponent cc_ann_id cc_component cc_exe_deps cc_includes cc_publicConfiguredComponentMapdispLinkedComponentextendLinkedComponentMaplc_cidlc_instslc_pkgidlc_uidtoLinkedComponenttoLinkedComponentsLinkedComponent lc_ann_id lc_component lc_exe_deps lc_includes lc_publiclc_shapelc_sig_includesLinkedComponentMap$fPackageLinkedComponentcomponentCycleMsgcomponentsGraphToListdispComponentsWithDepsmkComponentsGraphComponentsGraphComponentsWithDeps cleanCommanddefaultCleanFlagsemptyCleanFlags CleanFlagsCleanCommonFlagscleanCabalFilePathcleanCommonFlags cleanDistPref cleanSaveConf cleanTargetscleanVerbositycleanWorkingDir buildCommand buildOptionsdefaultBuildFlagsemptyBuildFlags BuildFlagsBuildCommonFlagsbuildCabalFilePathbuildCommonFlags buildDistPref buildNumJobsbuildProgramArgsbuildProgramPaths buildTargetsbuildUseSemaphorebuildVerbositybuildWorkingDirbenchmarkCommandbenchmarkOptions'defaultBenchmarkFlagsemptyBenchmarkFlagsBenchmarkFlagsBenchmarkCommonFlagsbenchmarkCabalFilePathbenchmarkCommonFlagsbenchmarkDistPrefbenchmarkOptionsbenchmarkTargetsbenchmarkVerbositybenchmarkWorkingDirbuildingWhatCommonFlagsbuildingWhatDistPrefbuildingWhatVerbositybuildingWhatWorkingDir BuildingWhat BuildHaddock BuildHscolour BuildNormal BuildRepl$fBinaryBuildingWhat$fGenericBuildingWhat$fShowBuildingWhat$fStructuredBuildingWhatbuildBI buildCLBI buildCompilerbuildComponent buildIsLibPreBuildComponentInputs buildingWhatlocalBuildInfo targetInfobuildTargetComponentNamereadBuildTargetsreadTargetInfosreadUserBuildTargetsreportBuildTargetProblemsreportUserBuildTargetProblemsresolveBuildTargetsshowBuildTargetshowUserBuildTarget BuildTargetBuildTargetComponentBuildTargetFileBuildTargetModuleBuildTargetProblemBuildTargetAmbiguousBuildTargetExpectedBuildTargetNoSuch QualLevelQL1QL2QL3UserBuildTargetUserBuildTargetProblemUserBuildTargetUnrecognised$fAlternativeMatch$fApplicativeMatch$fFunctorMatch$fBinaryBuildTarget$fBoundedComponentKind$fEnumComponentKind$fEnumQualLevel$fEqBuildTarget$fEqComponentKind$fEqMatchError$fEqUserBuildTarget$fGenericBuildTarget $fMonadMatch$fMonadPlusMatch$fOrdBuildTarget$fOrdComponentKind$fOrdMatchError$fOrdUserBuildTarget$fShowBuildTarget$fShowBuildTargetProblem$fShowComponentKind $fShowMatch$fShowMatchError$fShowMaybeAmbiguous$fShowQualLevel$fShowUserBuildTarget$fShowUserBuildTargetProblemautogenComponentModulesDirautogenPackageInfoModuleNameautogenPackageModulesDirautogenPathsModuleNamebenchmarkBuildDir buildInfoPref cppHeaderName dllExtension exeBuildDir exeExtension flibBuildDirgetBenchmarkSourceFilesgetExeSourceFilesgetFLibSourceFilesgetLibSourceFilesgetSourceFilesgetTestSourceFileshaddockBenchmarkDirPathhaddockDirNamehaddockLibraryDirPathhaddockLibraryNamehaddockLibraryPathhaddockPackageLibraryNamehaddockPackageLibraryName' haddockPath haddockPrefhaddockTestDirPath hscolourPrefmkBytecodeLibNamemkGenericSharedBundledLibNamemkGenericSharedLibNamemkGenericStaticLibName mkLibName mkProfLibNamemkProfSharedLibNamemkSharedLibNamemkStaticLibName objExtensionpreBuildRulesCacheFilesrcPrefstaticLibExtensionstubName testBuildDirbuildExebuildLib configuregetInstalledPackagesinplacePackageDbPath installLibregisterPackagerunTestsimpleTestStub stubFilePathstubMain stubWriteLogwriteSimpleTestStubapplyComponentDiffsbuildInfoComponentDiffemptyComponentDiff executeRulesexecuteRulesUserOrSystemforComponents_"hookedBuildInfoComponentDiff_maybehookedBuildInfoComponents noBuildHooksnoConfigureHooksnoInstallHooksnoPreConfComponentOutputsnoPreConfPackageOutputs noSetupHooks BenchmarkDiff BuildHookspostBuildComponentHookpreBuildComponentRules BuildInfoDiff ComponentDiff componentDiffConfigureHookspostConfPackageHookpreConfComponentHookpreConfPackageHookExecutableDiffForeignLibDiffInstallComponentHookInstallComponentInputs copyFlags InstallHooksinstallComponentHook LibraryDiffPostBuildComponentHookPostBuildComponentInputs buildFlagsPostConfPackageHookPostConfPackageInputsPreBuildComponentRulesPreConfComponentHookPreConfComponentInputs componentPreConfComponentOutputsPreConfPackageHookPreConfPackageInputsPreConfPackageOutputsextraConfiguredProgs SetupHooks buildHooksconfigureHooks installHooks TestSuiteDiff$fBinaryComponentDiff$fBinaryInstallComponentInputs $fBinaryPostBuildComponentInputs$fBinaryPostConfPackageInputs$fBinaryPreBuildComponentInputs$fBinaryPreConfComponentInputs$fBinaryPreConfComponentOutputs$fBinaryPreConfPackageInputs$fBinaryPreConfPackageOutputs$fGenericInstallComponentInputs!$fGenericPostBuildComponentInputs$fGenericPostConfPackageInputs $fGenericPreBuildComponentInputs$fGenericPreConfComponentInputs $fGenericPreConfComponentOutputs$fGenericPreConfPackageInputs$fGenericPreConfPackageOutputs$fMonoidBuildHooks$fSemigroupBuildHooks$fMonoidConfigureHooks$fSemigroupConfigureHooks$fMonoidInstallHooks$fSemigroupInstallHooks$fMonoidNotDemandedRuleReasons!$fSemigroupNotDemandedRuleReasons$fMonoidSetupHooks$fSemigroupSetupHooks$fSemigroupComponentDiff$$fSemigroupPreConfComponentSemigroup$fSemigroupPreConfPkgSemigroup$fShowComponentDiff$fShowInstallComponentInputs$fShowPostBuildComponentInputs$fShowPostConfPackageInputs$fShowPreBuildComponentInputs$fShowPreConfComponentInputs$fShowPreConfComponentOutputs$fShowPreConfPackageInputs$fShowPreConfPackageOutputs$fStructuredComponentDiff"$fStructuredInstallComponentInputs$$fStructuredPostBuildComponentInputs!$fStructuredPostConfPackageInputs#$fStructuredPreBuildComponentInputs"$fStructuredPreConfComponentInputs#$fStructuredPreConfComponentOutputs $fStructuredPreConfPackageInputs!$fStructuredPreConfPackageOutputs hooksMain hooksVersionCabalABIcabalLocalBuildInfoHooksABI confHooks HooksVersion cabalABIHash hooksABIHashhooksAPIVersion$fBinaryHooksVersion$fEqHooksVersion$fShowSetupHooksExeException$fGenericCabalABI$fGenericHooksABI$fGenericHooksVersion$fOrdHooksVersion$fShowBadHooksExecutableArgs$fShowHooksVersion$fStructuredCabalABI$fStructuredHooksABIcomponentGhcOptionsghcPlatformAndVersionStringrenderGhcEnvironmentFilesimpleGhcEnvironmentFilewriteGhcEnvironmentFileGhcEnvironmentFileEntryGhcEnvFileClearPackageDbStackGhcEnvFileCommentGhcEnvFilePackageDbGhcEnvFilePackageIdparseGhcEnvironmentFilereadGhcEnvironmentFile ParseErrorExccompilerBuildWay buildFLibcompilerProgramDbconfigureCompiler getGhcInfogetGlobalPackageDB getInstalledPackagesMonitorFiles getLibDirgetPackageDBContents hcPkgInfo installExe installFLib isDynamic libAbiHashpkgRootreplExereplFLibreplLibrunCmdstartInterpreter getGhcAppDir mkBuildInfo mkBuildInfo'mkCompilerInfomkComponentInfoinstallinstallFileGlobinstall_setupHooksgeneratePathsModule pkgPathEnvVarcheckConfiguredPackage checkPackagecheckPackageContentcheckPackageFilescheckPackageFilesGPDwrapParseWarning!configureComponentLocalBuildInfos setupMessage'abiHashabsoluteInstalledPackageInfocreatePackageDBdeletePackageDBdoesPackageDBExistgeneralInstalledPackageInfogenerateRegistrationInfo initPackageDBinplaceInstalledPackageInfointernalPackageDBPath invokeHcPkgregisterWithHandlesunregisterWithHandlesknownSuffixHandlersmkSimplePreProcessorplatformDefinesppAlexppC2hsppCppppCpp'ppHappyppHsc2hs ppSuffixesppUnlitpreprocessComponentpreprocessExtraspreprocessFilerunSimplePreProcessorunsortedPPSuffixHandleremptyUserHooksArgs UserHooks benchHook buildHook cleanHookconfHookcopyHook haddockHookhookedPreProcessorshookedPrograms hscolourHookinstHook postBench postBuild postCleanpostConfpostCopy postHaddock postHscolourpostInstpostRegpostReplpostTest postUnregpreBenchpreBuildpreCleanpreConfpreCopy preHaddock preHscolourpreInstpreRegpreReplpreTestpreUnregreadDescregHookreplHooktestHook unregHookadjustBuildOptionsadjustBuildOptionsAndWarnbuildOptionsAdjustmentWarningsccLdOptionsBuildInfocheckForeignDepscheckPersistBuildConfigOutdatedcombinedConstraintscomputeEffectiveProfilingcomputePackageInfocomputePackageInfoFromIndexconfigCompilerconfigCompilerAuxExconfigCompilerExconfigCompilerProgDbconfigureComponentsconfigureFinalconfigurePackageconfigure_setupHooksfinalCheckPackage findDistPreffindDistPrefOrDefaultgetConfigStateFilegetInstalledPackagesByIdgetInternalLibrariesgetPersistBuildConfiginterpretPackageDbFlagslocalBuildInfoFilemaybeGetPersistBuildConfig mkProgramDbmkPromisedDepsSetrunPostConfPackageHookrunPreConfComponentHookrunPreConfPackageHooktryGetConfigStateFiletryGetPersistBuildConfigwritePersistBuildConfigConfigStateFileErrorConfigStateFileBadHeaderConfigStateFileBadVersionConfigStateFileMissingConfigStateFileNoHeaderConfigStateFileNoParsecfgStateFileErrorCwdcfgStateFileErrorFile PackageInfoinstalledPackageSetinternalPackageSetpromisedDepsSetrequiredDepsMap$fExceptionConfigStateFileError$fShowConfigStateFileError createArchivedateToSnapshotNumberlistPackageSourceslistPackageSourcesWithDieprepareSnapshotTree prepareTreeprintPackageProblemssdistsnapshotPackagesnapshotVersionaddInternalBuildToolsbuild_setupHooksbuiltinPreBuildHookscomponentInitialBuildStepscreateInternalPackageDBinitialBuildStepspreBuildComponentreplrepl_setupHooksrunPreBuildHookswriteAutogenFileswriteBuiltinAutogenFiles AutogenFile AutogenModuleAutogenFileContents$fEqAutogenFile$fOrdAutogenFile$fShowAutogenFiletestcreateHaddockIndexhaddockhaddockPackagePathshaddock_setupHookshscolourhscolour_setupHooks $fEqDirectory $fEqOutput$fGenericHaddockArgs$fMonoidDirectory$fSemigroupDirectory$fMonoidHaddockArgs$fSemigroupHaddockArgs$fOrdDirectory$fReadDirectory$fShowDirectorybenchautoconfSetupHooksautoconfUserHooks benchAction buildAction cleanActionconfigureAction copyAction defaultMaindefaultMainArgsdefaultMainArgsWithHandlesdefaultMainNoReaddefaultMainWithHooksdefaultMainWithHooksArgsdefaultMainWithHooksNoReaddefaultMainWithHooksNoReadArgsdefaultMainWithSetupHooksdefaultMainWithSetupHooksArgs haddockActionhscolourAction installActionregisterAction replAction sdistActionsimpleUserHookssimpleUserHooksWithHandles testActionunregisterActionemptyModuleScope ModuleScopeModuleProvides ModuleNameDistribution.Types.PackageName PackageNameModuleRequires ModuleSource WithSourceDistribution.Backpack OpenModuledispModuleSource getSource unWithSourcemodScopeProvidesmodScopeRequiresFromBuildDependsFromExposedModules FromMixinsFromOtherModulesFromSignaturesModuleWithSource$fFoldableWithSource$fFunctorWithSource$fModSubstWithSource$fTraversableWithSource'Distribution.Types.InstalledPackageInfoAsyncCancelledcancelAsyncMGHC.Internal.MVarMVarAsync asyncThreadIdGHC.Internal.Conc.SyncThreadId withAsyncuninterruptibleCancelwait waitCatch withAsyncNF$fExceptionAsyncCancelled$fShowAsyncCancelled$fEqAsyncCancelledcopyFilecopyFileChanged filesEqualcopyExecutableFilecopyOrdinaryFilesetDirOrdinarysetEnvgetEnvironmentGHC.Internal.System.Environment lookupEnvunsetEnvgetShortPathNameopenNewBinaryFileGHC.Internal.System.IOopenBinaryTempFile openTempFileDistribution.Compat.Exception catchExitcatchIOtryIODistribution.Compat.Prelude<<>>foldl1foldr1tracetraceM traceShow traceShowId traceShowMDistribution.Compat.Semigroupgmappendgmemptybase-4.21.2.0-b708Data.List.NonEmptyheadlastnonEmptytaildeepseq-1.5.1.0-ca8dControl.DeepSeqdeepseqforceGHC.Internal.Base$$!++.=<<absurdapasTypeOfconstflipidjoinliftMliftM2mapord otherwiseuntilvacuouswhenGHC.Internal.CharchrGHC.Internal.Control.MonadfilterMfoldMguardunlessGHC.Internal.Data.EithereitherpartitionEithersGHC.Internal.Data.Foldableallandanyconcat concatMapfindfor_notElemor sequence_ traverse_GHC.Internal.Data.FunctiononGHC.Internal.Data.Functor<$>voidGHC.Internal.Data.Maybe catMaybes fromMaybeisJust isNothing listToMaybemapMaybemaybe maybeToList dropWhileEnd intersperse isPrefixOf isSuffixOflinesnubnubBy partitionsortsortByunfoldrunlinesunwordswordsGHC.Internal.Data.TraversableforGHC.Internal.Data.TuplecurryfstsnduncurryGHC.Internal.Data.TypeabletypeRepGHC.Internal.ErrerrorerrorWithoutStackTrace undefinedGHC.Internal.IOcatchevaluatethrowIOGHC.Internal.IO.ExceptionioError userErrorGHC.Internal.List!!breakcycledrop dropWhilefilteriteratelookuprepeat replicatereversescanlscanl1scanrscanr1spansplitAttake takeWhileunzipunzip3zipzip3zipWithzipWith3GHC.Internal.NumsubtractGHC.Internal.Readlex readParenGHC.Internal.Real^^^even fromIntegralgcdlcmodd realToFracGHC.Internal.ShowshowChar showParen showStringshowsGHC.Internal.System.Exit exitFailure exitSuccessexitWith appendFilegetChar getContentsgetLineinteractprintputCharputStrputStrLnreadFilereadIOreadLn writeFileGHC.Internal.Text.Read readMaybereadsGHC.Internal.UnicodeisAlpha isAlphaNumisDigitisSpaceisUppertoLowertoUpperghc-prim GHC.Classes&&not||pretty-1.1.3.6-8fcbText.PrettyPrint.HughesPJ<+>GHC.PrimseqDistribution.Compat.NonEmptySet NonEmptySetDistribution.Utils.Structured Structuredbinary-0.8.9.3-4d1aData.Binary.ClassBinarygetputputListcontainers-0.7-482aData.Map.InternalMapData.Set.InternalSetNFDatarnf Alternative<|>emptymanysome Applicative*><*<*>liftA2pureFunctor<$fmapMonad>>>>=return MonadPlusmplusmzeroMonoidmappendmconcatmemptyNonEmpty:| Semigroup<>VoidGHC.Internal.Control.ArrowfirstGHC.Internal.Control.Monad.Fail MonadFailfailGHC.Internal.Data.DataDataEitherLeftRightFoldableelemfoldMapfoldlfoldl'foldrlengthmaximumminimumproductsumtoListGHC.Internal.Data.Functor.ConstConstgetConst"GHC.Internal.Data.Functor.IdentityIdentity runIdentityGHC.Internal.Data.ProxyProxyGHC.Internal.Data.StringIsString fromString Traversable sequenceAtraverseTypeRep#GHC.Internal.Data.Typeable.InternalTypeableGHC.Internal.EnumBoundedmaxBoundminBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumpredsucctoEnumGHC.Internal.Exception.TypebacktraceDesired fromException toException SomeExceptionGHC.Internal.FloatFloating**acosacoshasinasinhatanatanhcoscoshexploglogBasepisinsinhsqrttantanh RealFloatatan2 decodeFloat encodeFloatexponent floatDigits floatRadix floatRangeisDenormalizedisIEEE isInfiniteisNaNisNegativeZero scaleFloat significandGHC.Internal.GenericsGenericFilePathExitCode ExitFailure ExitSuccessIOError IOExceptionGHC.Internal.IntInt16Int32Int64Int8Num*+-abs fromIntegernegatesignumReadreadList readsPrec Fractional/ fromRationalrecipIntegraldivdivModmodquotquotRemrem toIntegerRationalReal toRationalRealFracceilingfloorproperFractionroundtruncateShowshowshowList showsPrecShowS)GHC.Internal.Text.ParserCombinators.ReadPReadSGHC.Internal.WordWord16Word32Word64Word8Eq/===Ord<<=>>=comparemaxmin GHC.TypesIOOrderingEQGTLT ghc-bignumGHC.Num.IntegerIntegerStringGHC.Internal.MaybeMaybeJustNothingBoolFalseTrueCharDoubleFloatIntWord~posixTimeToModTimetime-1.14-09f5"Data.Time.Clock.Internal.POSIXTime POSIXTimegetOptArgOrdergetOpt' usageInfoArgDescrNoArgPermute RequireOrderfmtLongfmtShortOption$fFunctorArgDescr$fFunctorOptDescrtokenizeQuotedWordsCETypeWarnLang$fShowPackageCheckppCET ppExplanation ppWarnLangextractCheckExplanation CETBenchmark CETExecutableCETForeignLibrary CETLibraryCETSetupCETTestLangC LangCPlusPlus$fBoundedCheckExplanationID$fEnumCheckExplanationID $fEqCEType$fEqCheckExplanation$fEqCheckExplanationID$fEqPackageCheck $fEqWarnLang $fOrdCEType$fOrdCheckExplanation$fOrdCheckExplanationID$fOrdPackageCheck $fOrdWarnLang $fShowCEType$fShowCheckExplanation$fShowCheckExplanationID$fShowWarnLangPackageDescriptionDistribution.Types.BuildInfo BuildInfobuildToolDependsDistribution.Types.ComponentId ComponentIdDistribution.Types.UnitIdUnitIdipiToPreExistingComponentPreExistingComponentConfiguredPromisedComponent pc_compname pc_pkgnamepr_cid pr_pkgnamepc_cid pc_munged_id pc_open_uidpc_shapepc_uid($fHasMungedPackageIdPreExistingComponent$fHasUnitIdPreExistingComponent$$fPackageConfiguredPromisedComponent$fPackagePreExistingComponent!Distribution.Types.ModuleRenamingModuleRenamingDistribution.Types.Versionversion0GHC.Internal.IO.Handle equivalentPointfreshLink readPointrepr writePoint $fEqPoint verboseQuietGHC.Internal.IO.StdHandlesstderrstdout verboseFlag verboseNoFlag isVerboseFlagTokNoCmdstaticPtrNameSpaceRulesNameSpaceGHC.Internal.StaticPtr StaticPtrInforulesInNameSpace addErrContextaddErrContextMconvertInclude ModuleScopeUconvertModuleProvidesModuleProvidesUconvertModuleProvidesUconvertModuleScopeUconvertModuleSubst ModuleSubstUconvertModuleSubstUemptyModuleScopeU getUnifEnvliftSTGHC.Internal.STSTUnifyM runUnifyMModuleUDistribution.Types.ModuleModuleModuleU'UnifEnv unify_ctxunify_db unify_errs unify_reqsunify_self_cid unify_uniqUnitIdUunify_verbosityUnitIdU'UnifRef UnitIdUniqueconvertUnitIdU' OpenUnitId readUnifRef writeUnifRefaddErr convertModuleconvertModuleU convertUnitIdconvertUnitIdU failIfErrsfailWithtryM ModuleVarUModuleWithSourceU UnitIdThunkU$fApplicativeUnifyM$fFunctorUnifyM $fMonadUnifyMmixLink linkProvision unifyModule execWritertellDistribution.Pretty prettyShowforM_WriterVersion$fApplicativeWriter$fFunctorWriter $fMonadWriterrenderZ zAbsolutezBindirzDatadir zDynlibdir zIsAArch64zIsI386 zIsWindowszIsX8664zLibdir zLibexecdirzManglePkgNamezNot zPackageNamezPrefix zRelocatable zSysconfdirzVersionDigits $fGenericZ zCopyright zHomepage zSynopsis zComponentId zMangleStrzNotNull zPackageKeyzPackageVersion zPackageszToolsZPackagezpkgName zpkgVersionzpkgXzpkgYzpkgZZTool ztoolName ztoolVersionztoolXztoolYztoolZ$fGenericZPackage$fGenericZToolversiongetDataFileName getBinDir getDynLibDir getDataDir getLibexecDir getSysconfDirdirectory-1.3.10.1-5b13System.Directory withMetadatawithTrailingNewlineMarkWhen NormalMark TraceWhen AlwaysTraceaddErrorPrefix errorPrefixannotateErrorStringcompatWithCreateProcess copyFilesWithdisplaySomeExceptionWithContextioeErrorStringioeGetVerbatimioeModifyErrorStringioeSetVerbatim logCommandprefixWithProgName getProgName traceWhenverbatimUserError warnMessagewithCallStackPrefix withTimestampwrapTextVerbosity readNubList formatMsgmarkupInvocationunionInvocationDistribution.Types.PackageId PackageIdPackageInstalled DepUniqueKeycheckNameMatchesasksCMcheckPcheckSpecVerGte checkSpecVer execCheckM initCheckCtxCheckCtxliftIntlocalCMpristineCheckCtxtellPCheckInterfaceCheckMCheckPreDistributionOpsPNamesTargetAnnotationcheckcheckInt checkIntDep initPNamesliftCMtellCMcheckPkg ccDesugarccFlag ccInterfaceccNames ccSpecVersion ciPackageOps ciPreDistOps ciPureCheckslistDirectoryMrunDirFileGlobMpnBenchspnExecs pnPackageId pnSubLibspnTests taPackageFlagtaTarget$fApplicativeCheckM$fFunctorCheckM$fEqTargetAnnotation $fMonadCheckM$fOrdTargetAnnotation$fShowTargetAnnotationcheckCondTargetannotateCondTreeDistribution.Types.CondTreeCondTree checkCondVarsinitTargetAnnotationupdateTargetAnnotationcheckDuplicateModules waySupportedextensionToFlagextensionToFlag' ghcSupportedDistribution.Compiler abiTagStringbuildCompilerFlavorbuildCompilerIdclassifyCompilerFlavordefaultCompilerFlavorknownCompilerFlavorsperCompilerFlavorToListunknownCompilerInfoAbiTagNoAbiTagCompilerFlavorEtaGHCGHCJSHBCHeliumHugsJHCLHCMHSNHC OtherCompilerUHCYHC CompilerId CompilerInfocompilerInfoAbiTagcompilerInfoCompatcompilerInfoExtensionscompilerInfoIdcompilerInfoLanguagescompilerInfoWiredInUnitIdsPerCompilerFlavorghcjsVersionImplInfoghcVersionImplInfo OpenModuleVar splitRTSArgs(Distribution.Types.VersionRange.InternalorLaterVersionconfigureProgramsupdatePathProgupdatePathProgsuserSpecifiedPath CommonFlag commandHelpextraCompilationArtifactsprogramDbOptionprogramDbPathstestOrBenchmarkHelpText optionNumJobs reqArgFlagreqSymbolicPathArgFlagwithCommonSetupOptions$fBinaryCommonSetupFlags$fEqCommonSetupFlags$fGenericCommonSetupFlags$fMonoidCommonSetupFlags$fSemigroupCommonSetupFlags$fReadCommonSetupFlags$fShowCommonSetupFlags$fStructuredCommonSetupFlags$fBinaryTestFlags$fBinaryTestShowDetails$fBoundedTestShowDetails$fEnumTestShowDetails$fEqTestShowDetails$fGenericTestFlags$fGenericTestShowDetails$fMonoidTestFlags$fSemigroupTestFlags$fMonoidTestShowDetails$fSemigroupTestShowDetails$fNFDataTestShowDetails$fOrdTestShowDetails$fParsecTestShowDetails$fPrettyTestShowDetails$fShowTestFlags$fShowTestShowDetails$fStructuredTestFlags$fStructuredTestShowDetails$fGenericSDistFlags$fMonoidSDistFlags$fSemigroupSDistFlags$fShowSDistFlags$fBinaryReplFlags$fBinaryReplOptions$fGenericReplFlags$fGenericReplOptions$fMonoidReplFlags$fSemigroupReplFlags$fMonoidReplOptions$fSemigroupReplOptions$fShowReplFlags$fShowReplOptions$fStructuredReplFlags$fStructuredReplOptions$fGenericRegisterFlags$fMonoidRegisterFlags$fSemigroupRegisterFlags$fShowRegisterFlags$fGenericInstallFlags$fMonoidInstallFlags$fSemigroupInstallFlags$fShowInstallFlags$fBinaryHscolourFlags$fGenericHscolourFlags$fMonoidHscolourFlags$fSemigroupHscolourFlags$fShowHscolourFlags$fStructuredHscolourFlags$fBinaryHaddockFlags$fBinaryHaddockTarget$fEqHaddockTarget$fEqVisibility$fGenericHaddockFlags$fGenericHaddockProjectFlags$fGenericHaddockTarget$fMonoidHaddockFlags$fSemigroupHaddockFlags$fMonoidHaddockProjectFlags$fSemigroupHaddockProjectFlags$fNFDataHaddockTarget$fParsecHaddockTarget$fPrettyHaddockTarget$fShowHaddockFlags$fShowHaddockProjectFlags$fShowHaddockTarget$fShowVisibility$fStructuredHaddockFlags$fStructuredHaddockTarget$fGenericGlobalFlags$fMonoidGlobalFlags$fSemigroupGlobalFlags$fBinaryCopyFlags$fGenericCopyFlags$fMonoidCopyFlags$fSemigroupCopyFlags$fShowCopyFlags$fStructuredCopyFlagsdispModSubstEntryparsecModSubstEntry$fBinaryConfigFlags$fEqConfigFlags$fGenericConfigFlags$fMonoidConfigFlags$fSemigroupConfigFlags$fReadConfigFlags$fShowConfigFlags$fStructuredConfigFlags"Distribution.Types.HookedBuildInfoHookedBuildInfoPackageIdentifier mkTargetInfoDistribution.Types.LibraryLibraryDistribution.Types.Executable ExecutableDistribution.Types.Benchmark BenchmarkwithExelibrary wipeMetadatahpcDirmkConfiguredComponenttoConfiguredComponent'"Distribution.Types.IncludeRenamingIncludeRenamingDistribution.Compat.GraphGraph$fBinaryCleanFlags$fGenericCleanFlags$fMonoidCleanFlags$fSemigroupCleanFlags$fShowCleanFlags$fStructuredCleanFlags$fBinaryBuildFlags$fGenericBuildFlags$fMonoidBuildFlags$fSemigroupBuildFlags$fReadBuildFlags$fShowBuildFlags$fStructuredBuildFlags$fBinaryBenchmarkFlags$fGenericBenchmarkFlags$fMonoidBenchmarkFlags$fSemigroupBenchmarkFlags$fShowBenchmarkFlags$fStructuredBenchmarkFlags matchPlusUserBuildTargetSingleUserBuildTargetDoubleUserBuildTargetTripleMatchmatchInexactly findMatchreadUserBuildTargetcheckBuildTargets exactMatchesinexactMatchesmatchPlusShadowingshowBuildTarget'Distribution.Types.TestSuite TestSuiteuhcLanguageExtensionsaddBuiltinVersionsinstalledPkgConfigisPkgDirmkInstalledPackageInfo stubRunTestsNotDemandedRuleReasonsNDRRnonDemandedRulesnonAutogenHaskellModulesfilesNotInAutogenFoldersPreConfComponentSemigroupPreConfPkgSemigroup missingDep ruleUpToDatetraverseComponents NoHookTypeNoHandleBadHooksExeArgsUnknownHookTypeCouldNotDecodeInput NoDynDepsCmdBadHooksExecutableArgshooksExeVerbosity runHookHandleconfigureToolchainfilterGhciFlags ghcArchStringDistribution.SystemArchghcEnvironmentFileName ghcOsStringOSmkGhcOptPackagesrenderGhcEnvironmentFileEntryPlatformcheckPackageDbEnvVar getExtensionsgetHaskellObjects getLanguagesghcLookupPropertyghcOptionsSincelinkGhcOptions mkGHCiLibNamemkGHCiProfLibNameoptimizationCFlagsprofDetailLevelFlagsourcesGhcOptionssplitCandCxxOptions substTopDirtargetPlatform SplitSource CcProgram CxxProgram$fEqGhcEnvironmentFileEntry$fOrdGhcEnvironmentFileEntry$fShowGhcEnvironmentFileEntry$fExceptionParseErrorExc$fShowParseErrorExccheckNeedsRecompilationdecodeMainIsArgexeMainModuleName exeTargetName extensionInfindExecutableMain flibBuildNameflibTargetNamegetObjectFileNameisCisCxx isHaskellobjectFilePathsupportsDynamicToo withDynFLibDistribution.Types.ForeignLib ForeignLibforeignLibType isProfiledbuildHaskellModulescomponentInputsbuildWayExtraHcOptionsbuildWayHpcWaybuildAllExtraSourcesbuildExtraSourcesbuildAsmSources buildCSourcesbuildCmmSourcesbuildCxxSources asmSourcescSourcesbuildJsSourcesextractRtsInfo getRPaths hasThreadedlinkExecutablelinkFLib linkLibrarylinkOrLoadComponentrunReplOrWriteFlags replNoLoadDynamicRtsInfodynRtsDebugLibdynRtsEventlogLibdynRtsThreadedDebugLibdynRtsThreadedEventlogLibdynRtsThreadedLibdynRtsVanillaLibRtsInfortsDynamicInfo rtsLibPaths rtsStaticInfo StaticRtsInfostatRtsDebugLibstatRtsEventlogLibstatRtsProfilingLibstatRtsThreadedDebugLibstatRtsThreadedEventlogLibstatRtsThreadedLibstatRtsThreadedProfilingLibstatRtsVanillaLib BuildSources GBuildModegbuild gbuildSourcesgetUserPackageDBpopThreadedFlaggetInstalledPackages'guessGhcPkgFromGhcPathguessHaddockFromGhcPathguessHsc2hsFromGhcPathguessToolFromGhcPathtoPackageIndexgetCompilerArgs copyComponent copyPackageinstallDataFilesinstallIncludeFiles CabalFieldcheckCustomFieldcheckDependencyVersionRangecheckPVP checkPVPs partitionDepsAssocDepPathKindPathKindDirectory PathKindFile PathKindGlob $fEqPathKindisGoodRelativeDirectoryPathisGoodRelativeFilePathisGoodRelativeGlob isInsideDist checkTarPath checkGlobcheckPackageFileNamesWithGlob checkPathfileExtensionSupportedLanguagecheckGHCOptionscheckBenchmarkcheckExecutablecheckForeignLib checkLibrarycheckTestSuite $fEqBITarget$fShowBITarget,Distribution.Types.GenericPackageDescriptionGenericPackageDescription checkDotlinecheckGenericPackageDescriptionpd2gpdcheckGlobResultcheckPackagePrim rc_dependsReadyComponentrc_pkgidrc_uidtoReadyComponentsIndefiniteComponentindefc_includesindefc_providesindefc_requiresInstantiatedComponentinstc_includes instc_instsinstc_insts_depsinstc_providesrc_cid rc_open_uid rc_component rc_exe_depsrc_i rc_publicInstMInstS rc_munged_id"Distribution.Types.MungedPackageIdMungedPackageIddispReadyComponent rc_ann_id$fApplicativeInstM$fFunctorInstM$fHasUnitIdReadyComponent$fIsNodeReadyComponent $fMonadInstM$fPackageReadyComponentdispMissingDepDistribution.Types.AbiHashAbiHash hsSourceDirsPreProcessorExtrasknownExtrasHandlersPromisedDependencydispConfigStateFileErrorExternalDependencyInternalDependencybuildOptionsFromConfigFlagscheckCompilerProblemscheckDeprecatedFlagscheckExactConfigurationcheckPackageProblemscheckRelocatablecheckSharedExesconfigureCoverageconfigureProfilingconfigureRequiredProgramcurrentCabalIdcurrentCompilerIddependencySatisfiablefinalizePackageDescription2-Distribution.PackageDescription.Configuration finalizePD parseHeaderselectDependenciesselectDependency showHeaderfilterAutogenModulesallSourcesBuildInfofindIncludeFilefindMainExeFilefindModDefFile findSetupFilefindSetupHooksFilemaybeCreateDefaultSetupScript tarBallNamelistPackageSources'overwriteSnapshotPackageDesctoUnixrunConfigureScriptDistribution.Types.BuildType BuildTypeaddExtraAsmSourcesaddExtraCSourcesaddExtraCmmSourcesaddExtraCxxSourcesaddExtraJsSourcesaddExtraOtherModules addSrcDirbenchmarkExeV10asExebuiltinAutogenFilescheckSemaphoreSupport dumpBuildInfoemptySignatureModulestestSuiteExeV10AsExetestSuiteLibV09AsLibAndExe DirectoryDistribution.Utils.Path HaddockArgsargInterfaceFileargPackageNameargComponentNameargHideModulesargIgnoreExports argLinkSourceargLinkedSource argQuickJump argCssFile argContentsargGenContentsargIndex argGenIndex argBaseUrl argOutput argInterfaces argOutputDirargTitle argPrologueargPrologueFile argGhcOptions argGhcLibDir argReexports argTargetsargResourcesDir argUseUnicodegetHaddockProgreusingGHCCompilationArtifacts runHaddock fromBenchmarkfromExecutablefromForeignLib fromLibraryfromTest getInterfaces hscolour' mkHaddockArgsallSuffixHandlersdefaultMainHelperdefaultMainHelperWithHandlesgetBuildConfigtryGetBuildConfigDistribution.License knownLicenseslicenseFromSPDX licenseToSPDX mungedName'mungedVersion' packageNamepackageVersion mkAbiHash unAbiHash mkComponentId unComponentIdDistribution.Types.Dependency depLibraries depPkgName depVerRange mainLibSet mkDependencysimplifyDependency mkPackageNamemkPackageNameST unPackageNameunPackageNameST Distribution.Types.PkgconfigNamemkPkgconfigNameunPkgconfigNamegetHSLibraryNamemkLegacyUnitIdmkUnitIdnewSimpleUnitIdunUnitIdunsafeMkDefUnitId alterVersion mkVersion mkVersion' nullVersionversionNumbers"Distribution.Types.VersionIntervalasVersionIntervalsfromVersionIntervalstoVersionIntervalsunVersionIntervalsDistribution.Types.VersionRangefoldVersionRangehasGTLowerBoundhasLEUpperBound hasLowerBoundhasTrailingZeroUpperBound hasUpperBound isAnyVersionnormaliseVersionRangestripParensVersionRange withinRangeanaVersionRange anyVersioncataVersionRangeearlierVersionembedVersionRangehyloVersionRangeintersectVersionRanges laterVersionmajorBoundVersionmajorUpperBound noVersionnotThisVersionorEarlierVersionprojectVersionRange thisVersionunionVersionRangeswildcardUpperBound withinVersionDistribution.Version isNoVersionisSpecificVersionremoveLowerBoundremoveUpperBoundsimplifyVersionRangetransformCarettransformCaretLowertransformCaretUpperLanguage.Haskell.ExtensionclassifyExtensionclassifyLanguagedeprecatedExtensionsknownExtensionsknownLanguagesLicenseAGPLAllRightsReservedApacheBSD2BSD3BSD4GPLISCLGPLMITMPL OtherLicense PublicDomainUnknownLicenseUnspecifiedLicenseHasMungedPackageIdmungedId HasUnitIdinstalledUnitIdPackage packageIdinstalledDependspkgName pkgVersion PkgconfigName DefUnitId unDefUnitIdBoundExclusiveBoundInclusiveBound LowerBound UpperBound NoUpperBoundVersionIntervalVersionIntervals VersionRange VersionRangeFEarlierVersionF GTLowerBoundIntersectVersionRangesF LEUpperBound LaterVersionFMajorBoundVersionFOrEarlierVersionFOrLaterVersionF TZUpperBound ThisVersionFUnionVersionRangesF ExtensionDisableExtensionEnableExtensionUnknownExtensionKnownExtensionAllowAmbiguousTypesAlternativeLayoutRule!AlternativeLayoutRuleTransitional ApplicativeDoArrowsAutoDeriveTypeable BangPatternsBinaryLiteralsBlockArgumentsCApiFFICPPCUSKsConstrainedClassMethodsConstraintKinds DataKindsDatatypeContextsDeepSubsumptionDefaultSignaturesDeriveAnyClassDeriveDataTypeableDeriveFoldable DeriveFunctor DeriveGeneric DeriveLiftDeriveTraversableDerivingStrategies DerivingViaDisambiguateRecordFieldsDoAndIfThenElseDoRecDuplicateRecordFields EmptyCaseEmptyDataDeclsEmptyDataDerivingExistentialQuantificationExplicitForAllExplicitLevelImportsExplicitNamespacesExtendedDefaultRulesExtendedLiteralsExtensibleRecordsFieldSelectorsFlexibleContextsFlexibleInstancesForeignFunctionInterfaceFunctionalDependencies GADTSyntaxGADTsGHCForeignImportPrimGeneralisedNewtypeDerivingGeneralizedNewtypeDerivingGenerics HereDocumentsHexFloatLiteralsImplicitParamsImplicitPreludeImplicitStagePersistenceImportQualifiedPostImpredicativeTypesIncoherentInstances InstanceSigsInterruptibleFFI JavaScriptFFIKindSignatures LambdaCaseLexicalNegationLiberalTypeSynonyms LinearTypes ListTuplePuns MagicHash ModifiersMonadComprehensionsMonadFailDesugaringMonoLocalBinds MonoPatBindsMonomorphismRestrictionMultiParamTypeClasses MultiWayIfMultilineStringsNPlusKPatterns NamedDefaultsNamedFieldPunsNamedWildCardsNegativeLiteralsNewQualifiedOperatorsNondecreasingIndentationNullaryTypeClasses NumDecimalsNumericUnderscores OrPatternsOverlappingInstancesOverloadedLabelsOverloadedListsOverloadedRecordDotOverloadedRecordUpdateOverloadedStringsPackageImportsParallelArraysParallelListCompPartialTypeSignatures PatternGuardsPatternSignaturesPatternSynonyms PolyKindsPolymorphicComponentsPostfixOperators QualifiedDoQualifiedStringsQuantifiedConstraints QuasiQuotes Rank2Types RankNTypesRebindableSyntax RecordPunsRecordWildCards RecursiveDoRegularPatterns RelaxedLayoutRelaxedPolyRecRequiredTypeArgumentsRestrictedTypeSynonymsRoleAnnotationsSafe SafeImportsScopedTypeVariablesStandaloneDerivingStandaloneKindSignatures StarIsTypeStaticPointersStrict StrictDataTemplateHaskellTemplateHaskellQuotesTraditionalRecordSyntaxTransformListComp Trustworthy TupleSectionsTypeAbstractionsTypeApplicationsTypeData TypeFamiliesTypeFamilyDependencies TypeInType TypeOperatorsTypeSynonymInstances UnboxedSums UnboxedTuplesUndecidableInstancesUndecidableSuperClasses UnicodeSyntaxUnliftedDatatypesUnliftedFFITypesUnliftedNewtypesUnsafe ViewPatterns XmlSyntaxLanguageGHC2021GHC2024 Haskell2010 Haskell98UnknownLanguage