h&6       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                                                            Safe-Inferred,"%&)*/135689:;< postgresql-syntaxCompose a monad, which attempts to extend a value, based on the following input. It does so recursively until the suffix alternative fails.   Safe-Inferred,"%&)*/135689:;<( postgresql-syntaxAs per the following comment from the original scanner definition:/* * Likewise, if what we have left is two chars, and * those match the tokens ">=", " =","=", "<>" or * "!=", then we must return the appropriate token * rather than the generic Op. */    Safe-Inferred,"%&)*/135689:;<( Safe-Inferred,"%&)*/135689:;<)postgresql-syntax+intersperseFoldMap ", " id (fromList ["a"])"a"5intersperseFoldMap ", " id (fromList ["a", "b", "c"]) "a, b, c"  Safe-Inferred,"%&)*/135689:;<+ postgresql-syntaxLifted megaparsec's .postgresql-syntaxLifted megaparsec's  .postgresql-syntaxLifted megaparsec's  .postgresql-syntaxLifted megaparsec's  .postgresql-syntaxLifted megaparsec's  `.postgresql-syntaxLifted megaparsec's  .postgresql-syntaxLifted megaparsec's  `.postgresql-syntaxLifted megaparsec's .postgresql-syntaxLifted megaparsec's . Safe-Inferred,"%&)*/135689:;<,n Safe-Inferred,"%&)*/135689:;<-Npostgresql-syntax)test = oneOf [(==3), (==7), (==3), (==5)]test 1Falsetest 3Truetest 5True Safe-Inferred,"%&)*/135689:;< postgresql-syntax References opt_nulls_order: | NULLS_LA FIRST_P | NULLS_LA LAST_P | EMPTY postgresql-syntax References )opt_asc_desc: | ASC | DESC | EMPTY postgresql-syntax References "opt_class: | any_name | EMPTY postgresql-syntax References ,opt_collate: | COLLATE any_name | EMPTY postgresql-syntax References  | ColId opt_collate opt_class opt_asc_desc opt_nulls_order | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order postgresql-syntax References index_elem: | ColId opt_collate opt_class opt_asc_desc opt_nulls_order | func_expr_windowless opt_collate opt_class opt_asc_desc opt_nulls_order | '(' a_expr ')' opt_collate opt_class opt_asc_desc opt_nulls_order postgresql-syntax References =index_params: | index_elem | index_params ',' index_elem postgresql-syntax References subquery_Op: | all_Op | OPERATOR '(' any_operator ')' | LIKE | NOT_LA LIKE | ILIKE | NOT_LA ILIKE postgresql-syntax References  | b_expr IS DISTINCT FROM b_expr | b_expr IS NOT DISTINCT FROM b_expr | b_expr IS OF '(' type_list ')' | b_expr IS NOT OF '(' type_list ')' | b_expr IS DOCUMENT_P | b_expr IS NOT DOCUMENT_P #postgresql-syntax References  | a_expr IS NULL_P | a_expr IS TRUE_P | a_expr IS FALSE_P | a_expr IS UNKNOWN | a_expr IS DISTINCT FROM a_expr | a_expr IS OF '(' type_list ')' | a_expr BETWEEN opt_asymmetric b_expr AND a_expr | a_expr BETWEEN SYMMETRIC b_expr AND a_expr | a_expr IN_P in_expr | a_expr IS DOCUMENT_P 5postgresql-syntax References  MathOp: |   |   |   |   |  |  |   |   | '='3 | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS Cpostgresql-syntax References all_Op: | Op | MathOp Fpostgresql-syntax References #any_operator: | all_Op | ColId  any_operator Ipostgresql-syntax References The operator name is a sequence of up to NAMEDATALEN-1 (63 by default) characters from the following list: + - * /   = ~ !  # % ^ & | ` ? There are a few restrictions on your choice of name: -- and /* cannot appear anywhere in an operator name, since they will be taken as the start of a comment. A multicharacter operator name cannot end in + or -, unless the name also contains at least one of these characters: ~ !  # % ^ & | ` ? For example, @- is an allowed operator name, but *- is not. This restriction allows PostgreSQL to parse SQL-compliant commands without requiring spaces between tokens. The use of => as an operator name is deprecated. It may be disallowed altogether in a future release. The operator != is mapped to <> on input, so these two names are always equivalent. Jpostgresql-syntax References :qual_all_Op: | all_Op | OPERATOR '(' any_operator ')' Mpostgresql-syntax References 2qual_Op: | Op | OPERATOR '(' any_operator ')' Ppostgresql-syntax References 3type_list: | Typename | type_list ',' Typename Qpostgresql-syntax References 4opt_type_modifiers: | '(' expr_list ')' | EMPTY Rpostgresql-syntax References attr_name: | ColLabel Spostgresql-syntax References  attrs: |  attr_name | attrs  attr_name Tpostgresql-syntax References GenericType: | type_function_name opt_type_modifiers | type_function_name attrs opt_type_modifiers Vpostgresql-syntax References SimpleTypename: | GenericType | Numeric | Bit | Character | ConstDatetime | ConstInterval opt_interval | ConstInterval '(' Iconst ')' ConstInterval: | INTERVAL ]postgresql-syntax References opt_array_bounds: | opt_array_bounds '[' ']' | opt_array_bounds '[' Iconst ']' | EMPTY ^postgresql-syntax References Part of the Typename specification responsible for the choice between the following: | opt_array_bounds | ARRAY '[' Iconst ']' | ARRAY apostgresql-syntaxTypename definition extended with custom question-marks for nullability specification.To match the standard Postgres syntax simply interpret their presence as a parsing error. References Typename: | SimpleTypename opt_array_bounds | SETOF SimpleTypename opt_array_bounds | SimpleTypename ARRAY '[' Iconst ']' | SETOF SimpleTypename ARRAY '[' Iconst ']' | SimpleTypename ARRAY | SETOF SimpleTypename ARRAY cpostgresql-syntax References indirection_el: |  attr_name |   . | '[' a_expr ']' | '[' opt_slice_bound := opt_slice_bound ']' opt_slice_bound: | a_expr | EMPTY hpostgresql-syntax References indirection: | indirection_el | indirection indirection_el ipostgresql-syntax References columnref: | ColId | ColId indirection qualified_name: | ColId | ColId indirection lpostgresql-syntax References type_function_name: | IDENT | unreserved_keyword | type_func_name_keyword mpostgresql-syntax References 8func_name: | type_function_name | ColId indirection ppostgresql-syntax References $any_name: | ColId | ColId attrs rpostgresql-syntax References +columnref: | ColId | ColId indirection tpostgresql-syntax References cursor_name: | name upostgresql-syntax References +name_list: | name | name_list ',' name vpostgresql-syntax References name: | ColId wpostgresql-syntax References ColLabel: | IDENT | unreserved_keyword | col_name_keyword | type_func_name_keyword | reserved_keyword xpostgresql-syntax References =ColId: | IDENT | unreserved_keyword | col_name_keyword ypostgresql-syntax References IDENT |postgresql-syntax References :interval_second: | SECOND_P | SECOND_P '(' Iconst ')' }postgresql-syntax References opt_interval: | YEAR_P | MONTH_P | DAY_P | HOUR_P | MINUTE_P | interval_second | YEAR_P TO MONTH_P | DAY_P TO HOUR_P | DAY_P TO MINUTE_P | DAY_P TO interval_second | HOUR_P TO MINUTE_P | HOUR_P TO interval_second | MINUTE_P TO interval_second | EMPTY postgresql-syntax References opt_timezone: | WITH_LA TIME ZONE | WITHOUT TIME ZONE | EMPTY postgresql-syntax References ConstDatetime: | TIMESTAMP '(' Iconst ')' opt_timezone | TIMESTAMP opt_timezone | TIME '(' Iconst ')' opt_timezone | TIME opt_timezone postgresql-syntax References character: | CHARACTER opt_varying | CHAR_P opt_varying | VARCHAR | NATIONAL CHARACTER opt_varying | NATIONAL CHAR_P opt_varying | NCHAR opt_varying postgresql-syntax References Character: | CharacterWithLength | CharacterWithoutLength ConstCharacter: | CharacterWithLength | CharacterWithoutLength CharacterWithLength: | character '(' Iconst ')' CharacterWithoutLength: | character postgresql-syntax References #opt_varying: | VARYING | EMPTY postgresql-syntax References Bit: | BitWithLength | BitWithoutLength ConstBit: | BitWithLength | BitWithoutLength BitWithLength: | BIT opt_varying '(' expr_list ')' BitWithoutLength: | BIT opt_varying postgresql-syntax References Numeric: | INT_P | INTEGER | SMALLINT | BIGINT | REAL | FLOAT_P opt_float | DOUBLE_P PRECISION | DECIMAL_P opt_type_modifiers | DEC opt_type_modifiers | NUMERIC opt_type_modifiers | BOOLEAN_P opt_float: | '(' Iconst ')' | EMPTY opt_type_modifiers: | '(' expr_list ')' | EMPTY postgresql-syntax References ConstTypename: | Numeric | ConstBit | ConstCharacter | ConstDatetime postgresql-syntax References < | func_name '(' func_arg_list opt_sort_clause ')' Sconst postgresql-syntaxAexprConst: | Iconst | FCONST | Sconst | BCONST | XCONST | func_name Sconst | func_name '(' func_arg_list opt_sort_clause ')' Sconst | ConstTypename Sconst | ConstInterval Sconst opt_interval | ConstInterval '(' Iconst ')' Sconst | TRUE_P | FALSE_P | NULL_Ppostgresql-syntax References func_application: | func_name '(' ')' | func_name '(' func_arg_list opt_sort_clause ')' | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' | func_name '(' ALL func_arg_list opt_sort_clause ')' | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' | func_name '('   ')' postgresql-syntax References func_application: | func_name '(' ')' | func_name '(' func_arg_list opt_sort_clause ')' | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')' | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')' | func_name '(' ALL func_arg_list opt_sort_clause ')' | func_name '(' DISTINCT func_arg_list opt_sort_clause ')' | func_name '('   ')' postgresql-syntax References *when_clause: | WHEN a_expr THEN a_expr postgresql-syntax References (case_default: | ELSE a_expr | EMPTY postgresql-syntax References when_clause_list: | when_clause | when_clause_list when_clause postgresql-syntax References case_arg: | a_expr | EMPTY postgresql-syntax References case_expr: | CASE case_arg when_clause_list case_default END_P postgresql-syntax References trim_list: | a_expr FROM expr_list | FROM expr_list | expr_list postgresql-syntax References  | TRIM '(' BOTH trim_list ')' | TRIM '(' LEADING trim_list ')' | TRIM '(' TRAILING trim_list ')' postgresql-syntax References substr_for: | FOR a_expr postgresql-syntax References substr_from: | FROM a_expr postgresql-syntax References  | a_expr substr_from substr_for | a_expr substr_for substr_from | a_expr substr_from | a_expr substr_for postgresql-syntax References substr_list: | a_expr substr_from substr_for | a_expr substr_for substr_from | a_expr substr_from | a_expr substr_for | expr_list | EMPTY postgresql-syntax References 0position_list: | b_expr IN_P b_expr | EMPTY postgresql-syntax References $overlay_placing: | PLACING a_expr postgresql-syntax References overlay_list: | a_expr overlay_placing substr_from substr_for | a_expr overlay_placing substr_from postgresql-syntax References extract_arg: | IDENT | YEAR_P | MONTH_P | DAY_P | HOUR_P | MINUTE_P | SECOND_P | Sconst postgresql-syntax References 4extract_list: | extract_arg FROM a_expr | EMPTY postgresql-syntax References  func_expr_common_subexpr: | COLLATION FOR '(' a_expr ')' | CURRENT_DATE | CURRENT_TIME | CURRENT_TIME '(' Iconst ')' | CURRENT_TIMESTAMP | CURRENT_TIMESTAMP '(' Iconst ')' | LOCALTIME | LOCALTIME '(' Iconst ')' | LOCALTIMESTAMP | LOCALTIMESTAMP '(' Iconst ')' | CURRENT_ROLE | CURRENT_USER | SESSION_USER | USER | CURRENT_CATALOG | CURRENT_SCHEMA | CAST '(' a_expr AS Typename ')' | EXTRACT '(' extract_list ')' | OVERLAY '(' overlay_list ')' | POSITION '(' position_list ')' | SUBSTRING '(' substr_list ')' | TREAT '(' a_expr AS Typename ')' | TRIM '(' BOTH trim_list ')' | TRIM '(' LEADING trim_list ')' | TRIM '(' TRAILING trim_list ')' | TRIM '(' trim_list ')' | NULLIF '(' a_expr ',' a_expr ')' | COALESCE '(' expr_list ')' | GREATEST '(' expr_list ')' | LEAST '(' expr_list ')' | XMLCONCAT '(' expr_list ')' | XMLELEMENT '(' NAME_P ColLabel ')' | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ')' | XMLELEMENT '(' NAME_P ColLabel ',' expr_list ')' | XMLELEMENT '(' NAME_P ColLabel ',' xml_attributes ',' expr_list ')' | XMLEXISTS '(' c_expr xmlexists_argument ')' | XMLFOREST '(' xml_attribute_list ')' | XMLPARSE '(' document_or_content a_expr xml_whitespace_option ')' | XMLPI '(' NAME_P ColLabel ')' | XMLPI '(' NAME_P ColLabel ',' a_expr ')' | XMLROOT '(' a_expr ',' xml_root_version opt_xml_root_standalone ')' | XMLSERIALIZE '(' document_or_content a_expr AS SimpleTypename ')' TODO: Implement the XML cases postgresql-syntax References over_clause: | OVER window_specification | OVER ColId | EMPTY postgresql-syntax References 9filter_clause: | FILTER '(' WHERE a_expr ')' | EMPTY postgresql-syntax References within_group_clause: | WITHIN GROUP_P '(' sort_clause ')' | EMPTY postgresql-syntax References func_expr_windowless: | func_application | func_expr_common_subexpr postgresql-syntax References func_expr: | func_application within_group_clause filter_clause over_clause | func_expr_common_subexpr postgresql-syntax References /implicit_row: | '(' expr_list ',' a_expr ')' postgresql-syntax References 8explicit_row: | ROW '(' expr_list ')' | ROW '(' ')' postgresql-syntax References row: | ROW '(' expr_list ')' | ROW '(' ')' | '(' expr_list ',' a_expr ')' postgresql-syntax References array_expr_list: | array_expr | array_expr_list ',' array_expr postgresql-syntax References array_expr: | '[' expr_list ']' | '[' array_expr_list ']' | '[' ']' postgresql-syntax References #sub_type: | ANY | SOME | ALL postgresql-syntax References 6in_expr: | select_with_parens | '(' expr_list ')' postgresql-syntax References c_expr: | columnref | AexprConst | PARAM opt_indirection | '(' a_expr ')' opt_indirection | case_expr | func_expr | select_with_parens | select_with_parens indirection | EXISTS select_with_parens | ARRAY select_with_parens | ARRAY array_expr | explicit_row | implicit_row | GROUPING '(' expr_list ')' postgresql-syntax References 4b_expr: | c_expr | b_expr TYPECAST Typename |   b_expr |   b_expr | b_expr   b_expr | b_expr   b_expr | b_expr   b_expr | b_expr   b_expr | b_expr  b_expr | b_expr  b_expr | b_expr   b_expr | b_expr   b_expr | b_expr '=' b_expr | b_expr LESS_EQUALS b_expr | b_expr GREATER_EQUALS b_expr | b_expr NOT_EQUALS b_expr | b_expr qual_Op b_expr | qual_Op b_expr | b_expr qual_Op | b_expr IS DISTINCT FROM b_expr | b_expr IS NOT DISTINCT FROM b_expr | b_expr IS OF '(' type_list ')' | b_expr IS NOT OF '(' type_list ')' | b_expr IS DOCUMENT_P | b_expr IS NOT DOCUMENT_P postgresql-syntax References a_expr: | c_expr | a_expr TYPECAST Typename | a_expr COLLATE any_name | a_expr AT TIME ZONE a_expr |   a_expr |   a_expr | a_expr   a_expr | a_expr   a_expr | a_expr   a_expr | a_expr   a_expr | a_expr  a_expr | a_expr  a_expr | a_expr   a_expr | a_expr   a_expr | a_expr '=' a_expr | a_expr LESS_EQUALS a_expr | a_expr GREATER_EQUALS a_expr | a_expr NOT_EQUALS a_expr | a_expr qual_Op a_expr | qual_Op a_expr | a_expr qual_Op | a_expr AND a_expr | a_expr OR a_expr | NOT a_expr | NOT_LA a_expr | a_expr LIKE a_expr | a_expr LIKE a_expr ESCAPE a_expr | a_expr NOT_LA LIKE a_expr | a_expr NOT_LA LIKE a_expr ESCAPE a_expr | a_expr ILIKE a_expr | a_expr ILIKE a_expr ESCAPE a_expr | a_expr NOT_LA ILIKE a_expr | a_expr NOT_LA ILIKE a_expr ESCAPE a_expr | a_expr SIMILAR TO a_expr | a_expr SIMILAR TO a_expr ESCAPE a_expr | a_expr NOT_LA SIMILAR TO a_expr | a_expr NOT_LA SIMILAR TO a_expr ESCAPE a_expr | a_expr IS NULL_P | a_expr ISNULL | a_expr IS NOT NULL_P | a_expr NOTNULL | row OVERLAPS row | a_expr IS TRUE_P | a_expr IS NOT TRUE_P | a_expr IS FALSE_P | a_expr IS NOT FALSE_P | a_expr IS UNKNOWN | a_expr IS NOT UNKNOWN | a_expr IS DISTINCT FROM a_expr | a_expr IS NOT DISTINCT FROM a_expr | a_expr IS OF '(' type_list ')' | a_expr IS NOT OF '(' type_list ')' | a_expr BETWEEN opt_asymmetric b_expr AND a_expr | a_expr NOT_LA BETWEEN opt_asymmetric b_expr AND a_expr | a_expr BETWEEN SYMMETRIC b_expr AND a_expr | a_expr NOT_LA BETWEEN SYMMETRIC b_expr AND a_expr | a_expr IN_P in_expr | a_expr NOT_LA IN_P in_expr | a_expr subquery_Op sub_type select_with_parens | a_expr subquery_Op sub_type '(' a_expr ')' | UNIQUE select_with_parens | a_expr IS DOCUMENT_P | a_expr IS NOT DOCUMENT_P | DEFAULT postgresql-syntax References 2| WHERE a_expr | WHERE CURRENT_P OF cursor_name | *EMPTY* postgresql-syntax References 7join_qual: | USING '(' name_list ')' | ON a_expr postgresql-syntax References | FULL join_outer | LEFT join_outer | RIGHT join_outer | INNER_P postgresql-syntax References | table_ref CROSS JOIN table_ref | table_ref join_type JOIN table_ref join_qual | table_ref JOIN table_ref join_qual | table_ref NATURAL join_type JOIN table_ref | table_ref NATURAL JOIN table_ref postgresql-syntax References | '(' joined_table ')' | table_ref CROSS JOIN table_ref | table_ref join_type JOIN table_ref join_qual | table_ref JOIN table_ref join_qual | table_ref NATURAL join_type JOIN table_ref | table_ref NATURAL JOIN table_ref The options are covered by the  type. postgresql-syntax References func_alias_clause: | alias_clause | AS '(' TableFuncElementList ')' | AS ColId '(' TableFuncElementList ')' | ColId '(' TableFuncElementList ')' | EMPTY postgresql-syntax References alias_clause: | AS ColId '(' name_list ')' | AS ColId | ColId '(' name_list ')' | ColId postgresql-syntax References 3opt_collate_clause: | COLLATE any_name | EMPTY postgresql-syntax References 8TableFuncElement: | ColId Typename opt_collate_clause postgresql-syntax References TableFuncElementList: | TableFuncElement | TableFuncElementList ',' TableFuncElement postgresql-syntax References 1opt_ordinality: | WITH_LA ORDINALITY | EMPTY postgresql-syntax References opt_col_def_list: | AS '(' TableFuncElementList ')' | EMPTY postgresql-syntax References rowsfrom_list: | rowsfrom_item | rowsfrom_list ',' rowsfrom_item postgresql-syntax References 9rowsfrom_item: | func_expr_windowless opt_col_def_list postgresql-syntax References func_table: | func_expr_windowless opt_ordinality | ROWS FROM '(' rowsfrom_list ')' opt_ordinality postgresql-syntax References ?opt_repeatable_clause: | REPEATABLE '(' a_expr ')' | EMPTY postgresql-syntax References tablesample_clause: | TABLESAMPLE func_name '(' expr_list ')' opt_repeatable_clause postgresql-syntax References relation_expr_opt_alias: | relation_expr | relation_expr ColId | relation_expr AS ColId postgresql-syntax References "| qualified_name | qualified_name  5 | ONLY qualified_name | ONLY '(' qualified_name ')' postgresql-syntax References | relation_expr opt_alias_clause | relation_expr opt_alias_clause tablesample_clause | func_table func_alias_clause | LATERAL_P func_table func_alias_clause | xmltable opt_alias_clause | LATERAL_P xmltable opt_alias_clause | select_with_parens opt_alias_clause | LATERAL_P select_with_parens opt_alias_clause | joined_table | '(' joined_table ')' alias_clause TODO: Add xmltable postgresql-syntax  | relation_expr opt_alias_clause | relation_expr opt_alias_clause tablesample_clause postgresql-syntax  | func_table func_alias_clause | LATERAL_P func_table func_alias_clause postgresql-syntax  | select_with_parens opt_alias_clause | LATERAL_P select_with_parens opt_alias_clause postgresql-syntax 9 | joined_table | '(' joined_table ')' alias_clause postgresql-syntax References 5from_list: | table_ref | from_list ',' table_ref postgresql-syntax References for_locking_strength: | FOR UPDATE | FOR NO KEY UPDATE | FOR SHARE | FOR KEY SHARE postgresql-syntax References for_locking_item: | for_locking_strength locked_rels_list opt_nowait_or_skip locked_rels_list: | OF qualified_name_list | EMPTY opt_nowait_or_skip: | NOWAIT | SKIP LOCKED | EMPTY postgresql-syntax References for_locking_clause: | for_locking_items | FOR READ ONLY for_locking_items: | for_locking_item | for_locking_items for_locking_item postgresql-syntax References offset_clause: | OFFSET select_offset_value | OFFSET select_fetch_first_value row_or_rows select_offset_value: | a_expr row_or_rows: | ROW | ROWS postgresql-syntax References 'select_limit_value: | a_expr | ALL postgresql-syntax References )select_fetch_first_value: | c_expr |   I_or_F_const |   I_or_F_const postgresql-syntax References limit_clause: | LIMIT select_limit_value | LIMIT select_limit_value ',' select_offset_value | FETCH first_or_next select_fetch_first_value row_or_rows ONLY | FETCH first_or_next row_or_rows ONLY select_offset_value: | a_expr first_or_next: | FIRST_P | NEXT row_or_rows: | ROW | ROWS postgresql-syntax References select_limit: | limit_clause offset_clause | offset_clause limit_clause | limit_clause | offset_clause postgresql-syntax References sortby: | a_expr USING qual_all_Op opt_nulls_order | a_expr opt_asc_desc opt_nulls_order postgresql-syntax'sort_clause: | ORDER BY sortby_list6sortby_list: | sortby | sortby_list ',' sortbypostgresql-syntax References values_clause: | VALUES '(' expr_list ')' | values_clause ',' '(' expr_list ')' postgresql-syntax References opt_window_exclusion_clause: | EXCLUDE CURRENT_P ROW | EXCLUDE GROUP_P | EXCLUDE TIES | EXCLUDE NO OTHERS | EMPTY postgresql-syntax References frame_bound: | UNBOUNDED PRECEDING | UNBOUNDED FOLLOWING | CURRENT_P ROW | a_expr PRECEDING | a_expr FOLLOWING postgresql-syntax References frame_extent: | frame_bound | BETWEEN frame_bound AND frame_bound postgresql-syntax References opt_frame_clause: | RANGE frame_extent opt_window_exclusion_clause | ROWS frame_extent opt_window_exclusion_clause | GROUPS frame_extent opt_window_exclusion_clause | EMPTY postgresql-syntax References opt_frame_clause: | RANGE frame_extent opt_window_exclusion_clause | ROWS frame_extent opt_window_exclusion_clause | GROUPS frame_extent opt_window_exclusion_clause | EMPTY postgresql-syntax window_specification: | '(' opt_existing_window_name opt_partition_clause opt_sort_clause opt_frame_clause ')' opt_existing_window_name: | ColId | EMPTY opt_partition_clause: | PARTITION BY expr_list | EMPTY postgresql-syntax 6window_definition: | ColId AS window_specification postgresql-syntax window_clause: | WINDOW window_definition_list | EMPTY window_definition_list: | window_definition | window_definition_list ',' window_definition postgresql-syntax -having_clause: | HAVING a_expr | EMPTY postgresql-syntax References group_by_item: | a_expr | empty_grouping_set | cube_clause | rollup_clause | grouping_sets_clause empty_grouping_set: | '(' ')' rollup_clause: | ROLLUP '(' expr_list ')' cube_clause: | CUBE '(' expr_list ')' grouping_sets_clause: | GROUPING SETS '(' group_by_list ')' postgresql-syntax References OptTempTableName: | TEMPORARY opt_table qualified_name | TEMP opt_table qualified_name | LOCAL TEMPORARY opt_table qualified_name | LOCAL TEMP opt_table qualified_name | GLOBAL TEMPORARY opt_table qualified_name | GLOBAL TEMP opt_table qualified_name | UNLOGGED opt_table qualified_name | TABLE qualified_name | qualified_name postgresql-syntax References common_table_expr: | name opt_name_list AS opt_materialized '(' PreparableStmt ')' opt_materialized: | MATERIALIZED | NOT MATERIALIZED | EMPTY postgresql-syntax References with_clause: | WITH cte_list | WITH_LA cte_list | WITH RECURSIVE cte_list postgresql-syntax References  | select_clause UNION all_or_distinct select_clause | select_clause INTERSECT all_or_distinct select_clause | select_clause EXCEPT all_or_distinct select_clause postgresql-syntax References target_el: | a_expr AS ColLabel | a_expr IDENT | a_expr |   postgresql-syntax References 9target_list: | target_el | target_list ',' target_el postgresql-syntaxCovers these parts of spec: References simple_select: | SELECT opt_all_clause opt_target_list into_clause from_clause where_clause group_clause having_clause window_clause | SELECT distinct_clause target_list into_clause from_clause where_clause group_clause having_clause window_clause distinct_clause: | DISTINCT | DISTINCT ON '(' expr_list ')' postgresql-syntax References simple_select: | SELECT opt_all_clause opt_target_list into_clause from_clause where_clause group_clause having_clause window_clause | SELECT distinct_clause target_list into_clause from_clause where_clause group_clause having_clause window_clause | values_clause | TABLE relation_expr | select_clause UNION all_or_distinct select_clause | select_clause INTERSECT all_or_distinct select_clause | select_clause EXCEPT all_or_distinct select_clause postgresql-syntax :select_clause: | simple_select | select_with_parens postgresql-syntaxCovers the following cases: select_no_parens: | simple_select | select_clause sort_clause | select_clause opt_sort_clause for_locking_clause opt_select_limit | select_clause opt_sort_clause select_limit opt_for_locking_clause | with_clause select_clause | with_clause select_clause sort_clause | with_clause select_clause opt_sort_clause for_locking_clause opt_select_limit | with_clause select_clause opt_sort_clause select_limit opt_for_locking_clause postgresql-syntax References select_with_parens: | '(' select_no_parens ')' | '(' select_with_parens ')' postgresql-syntax References :SelectStmt: | select_no_parens | select_with_parens postgresql-syntax References ,using_clause: | USING from_list | EMPTY postgresql-syntax References DeleteStmt: | opt_with_clause DELETE_P FROM relation_expr_opt_alias using_clause where_or_current_clause returning_clause postgresql-syntax References set_target_list: | set_target | set_target_list ',' set_target postgresql-syntax References &set_target: | ColId opt_indirection postgresql-syntax References set_clause: | set_target '='$ a_expr | '(' set_target_list ')' '=' a_expr postgresql-syntax References set_clause_list: | set_clause | set_clause_list ',' set_clause postgresql-syntax References UpdateStmt: | opt_with_clause UPDATE relation_expr_opt_alias SET set_clause_list from_clause where_or_current_clause returning_clause postgresql-syntax References 6returning_clause: | RETURNING target_list | EMPTY postgresql-syntax References opt_conf_expr: | '(' index_params ')' where_clause | ON CONSTRAINT name | EMPTY postgresql-syntax References opt_on_conflict: | ON CONFLICT opt_conf_expr DO UPDATE SET set_clause_list where_clause | ON CONFLICT opt_conf_expr DO NOTHING | EMPTY postgresql-syntax References opt_on_conflict: | ON CONFLICT opt_conf_expr DO UPDATE SET set_clause_list where_clause | ON CONFLICT opt_conf_expr DO NOTHING | EMPTY postgresql-syntax References .insert_column_item: | ColId opt_indirection postgresql-syntax References insert_column_list: | insert_column_item | insert_column_list ',' insert_column_item postgresql-syntax References %override_kind: | USER | SYSTEM_P postgresql-syntax References insert_rest: | SelectStmt | OVERRIDING override_kind VALUE_P SelectStmt | '(' insert_column_list ')' SelectStmt | '(' insert_column_list ')' OVERRIDING override_kind VALUE_P SelectStmt | DEFAULT VALUES postgresql-syntax References >insert_target: | qualified_name | qualified_name AS ColId postgresql-syntax References InsertStmt: | opt_with_clause INSERT INTO insert_target insert_rest opt_on_conflict returning_clause postgresql-syntax References PreparableStmt: | SelectStmt | InsertStmt | UpdateStmt | DeleteStmt | CallStmt bpostgresql-syntaxSETOFpostgresql-syntax Question markpostgresql-syntax5Array dimensions possibly followed by a question markpostgresql-syntaxName.postgresql-syntaxIs asterisk present?postgresql-syntaxName.postgresql-syntaxAre parentheses present? "! #-,+*)('&%$.10/2435BA@?>=<;:9876CEDFHGIJLKMONPQRSTUV\[ZYXW]^`_abcgfedhikjlmonpqrstuvwxy{z|}~}~|y{zxwvutrspqmonlikjhcgfedab^`_]V\[ZYXWTUSRQPMONJLKIFHGCED5BA@?>=<;:9876243.10/#-,+*)('&%$"!   Safe-Inferred,"%&)*/135689:;<   Safe-Inferred,"%&)*/135689:;<   Safe-Inferred,"%&)*/135689:;< postgresql-syntax)testParser (quotedString '\'') "'abc''d'""abc'd" postgresql-syntaxtest = testParser selectStmttest "select id from as"... |1 | select id from as | ^Reserved keyword "as" used as an identifier. If that's what you intend, you have to wrap it in double quotes. postgresql-syntax'The one that doesn't start with "WITH". References  | simple_select | select_clause sort_clause | select_clause opt_sort_clause for_locking_clause opt_select_limit | select_clause opt_sort_clause select_limit opt_for_locking_clause postgresql-syntaxtestParser targetEl "a.b as c"AliasedExprTargetEl (CExprAExpr (ColumnrefCExpr (Columnref (UnquotedIdent "a") (Just (AttrNameIndirectionEl (UnquotedIdent "b") :| []))))) (UnquotedIdent "c") postgresql-syntax References OptTempTableName: | TEMPORARY opt_table qualified_name | TEMP opt_table qualified_name | LOCAL TEMPORARY opt_table qualified_name | LOCAL TEMP opt_table qualified_name | GLOBAL TEMPORARY opt_table qualified_name | GLOBAL TEMP opt_table qualified_name | UNLOGGED opt_table qualified_name | TABLE qualified_name | qualified_name postgresql-syntax References window_specification: | '(' opt_existing_window_name opt_partition_clause opt_sort_clause opt_frame_clause ')' postgresql-syntax References opt_frame_clause: | RANGE frame_extent opt_window_exclusion_clause | ROWS frame_extent opt_window_exclusion_clause | GROUPS frame_extent opt_window_exclusion_clause | EMPTY postgresql-syntax References  | UNBOUNDED PRECEDING | UNBOUNDED FOLLOWING | CURRENT_P ROW | a_expr PRECEDING | a_expr FOLLOWING postgresql-syntax2testParser tableRef "a left join b on (a.i = b.i)".JoinTableRef (MethJoinedTable (QualJoinMeth... postgresql-syntax References  | '(' joined_table ')' postgresql-syntax References  | table_ref CROSS JOIN table_ref | table_ref join_type JOIN table_ref join_qual | table_ref JOIN table_ref join_qual | table_ref NATURAL join_type JOIN table_ref | table_ref NATURAL JOIN table_ref postgresql-syntaxNotice that the tree constructed by this parser does not reflect the precedence order of Postgres. For the purposes of this library it simply doesn't matter, so we're not bothering with that.Composite on the right: testParser aExpr "a = b :: int4"SymbolicBinOpAExpr (CExprAExpr (ColumnrefCExpr (Columnref (UnquotedIdent "a") Nothing))) (MathSymbolicExprBinOp EqualsMathOp) (TypecastAExpr (CExprAExpr (ColumnrefCExpr (Columnref (UnquotedIdent "b") Nothing))) (Typename False (GenericTypeSimpleTypename (GenericType (UnquotedIdent "int4") Nothing Nothing)) False Nothing))Composite on the left:&testParser aExpr "a = b :: int4 and c"SymbolicBinOpAExpr (CExprAExpr (ColumnrefCExpr (Columnref (UnquotedIdent "a") Nothing))) (MathSymbolicExprBinOp EqualsMathOp) (AndAExpr (TypecastAExpr (CExprAExpr (ColumnrefCExpr (Columnref (UnquotedIdent "b") Nothing))) (Typename False (GenericTypeSimpleTypename (GenericType (UnquotedIdent "int4") Nothing Nothing)) False Nothing)) (CExprAExpr (ColumnrefCExpr (Columnref (UnquotedIdent "c") Nothing)))) postgresql-syntax References func_arg_expr: | a_expr | param_name COLON_EQUALS a_expr | param_name EQUALS_GREATER a_expr param_name: | type_function_name postgresql-syntax&testParser aexprConst "32948023849023"IAexprConst 32948023849023!testParser aexprConst "'abc''de'"SAexprConst "abc'de" testParser aexprConst "23.43234"FAexprConst 23.43234*testParser aexprConst "32423423.324324872" FAexprConst 3.2423423324324872e7testParser aexprConst "NULL"NullAexprConst References AexprConst: Iconst | FCONST | Sconst | BCONST | XCONST | func_name Sconst | func_name '(' func_arg_list opt_sort_clause ')' Sconst | ConstTypename Sconst | ConstInterval Sconst opt_interval | ConstInterval '(' Iconst ')' Sconst | TRUE_P | FALSE_P | NULL_P postgresql-syntax References ConstDatetime: | TIMESTAMP '(' Iconst ')' opt_timezone | TIMESTAMP opt_timezone | TIME '(' Iconst ')' opt_timezone | TIME opt_timezone postgresql-syntax References select_limit: | limit_clause offset_clause | offset_clause limit_clause | limit_clause | offset_clause postgresql-syntax References limit_clause: | LIMIT select_limit_value | LIMIT select_limit_value ',' select_offset_value | FETCH first_or_next select_fetch_first_value row_or_rows ONLY | FETCH first_or_next row_or_rows ONLY postgresql-syntax References 'select_limit_value: | a_expr | ALL postgresql-syntax References for_locking_clause: | for_locking_items | FOR READ ONLY for_locking_items: | for_locking_item | for_locking_items for_locking_item postgresql-syntax References for_locking_item: | for_locking_strength locked_rels_list opt_nowait_or_skip locked_rels_list: | OF qualified_name_list | EMPTY opt_nowait_or_skip: | NOWAIT | SKIP LOCKED | EMPTY postgresql-syntax References for_locking_strength: | FOR UPDATE | FOR NO KEY UPDATE | FOR SHARE | FOR KEY SHARE postgresql-syntax References ident_start [A-Za-z200-377_] ident_cont [A-Za-z200-377_0-9$] identifier {ident_start}{ident_cont}* postgresql-syntax References ColId: | IDENT | unreserved_keyword | col_name_keyword postgresql-syntax References ColLabel: | IDENT | unreserved_keyword | col_name_keyword | type_func_name_keyword | reserved_keyword postgresql-syntaxtestParser qualifiedName "a.b"IndirectedQualifiedName (UnquotedIdent "a") (AttrNameIndirectionEl (UnquotedIdent "b") :| [])testParser qualifiedName "a.-"...+expecting '*', column label, or white space References 0qualified_name: | ColId | ColId indirection postgresql-syntax References 8func_name: | type_function_name | ColId indirection postgresql-syntax References type_function_name: | IDENT | unreserved_keyword | type_func_name_keyword postgresql-syntax References ?indirection: | indirection_el | indirection indirection_el postgresql-syntax References indirection_el: |  attr_name |   , | '[' a_expr ']' | '[' opt_slice_bound :; opt_slice_bound ']' opt_slice_bound: | a_expr | EMPTY postgresql-syntax References attr_name: | ColLabel postgresql-syntaxExpected keyword postgresql-syntaxConsume a keyphrase, ignoring case and types of spaces between words.   !"#$%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcddefghijklmnoppqrstuvwxyz{|}~~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     0postgresql-syntax-0.4.1.1-1agduNP8gtd9DXmzqkx25kPostgresqlSyntax.KeywordSetPostgresqlSyntax.AstPostgresqlSyntax.RenderingPostgresqlSyntax.ValidationPostgresqlSyntax.ParsingPostgresqlSyntax.Prelude#PostgresqlSyntax.Extras.TextBuilder PostgresqlSyntax.Extras.NonEmpty(PostgresqlSyntax.Extras.HeadedMegaparsec Megaparsecspacespace1charstringPostgresqlSyntax.CharSetPostgresqlSyntax.PredicatekeywordunreservedKeywordcolNameKeywordtypeFuncNameKeywordreservedKeyword symbolicBinOp lexicalBinOpcolIdtypeFunctionNamenonOpmathOp NullsOrderFirstNullsOrderLastNullsOrderAscDesc AscAscDesc DescAscDescClassCollate IndexElemDefIdIndexElemDefFuncIndexElemDefExprIndexElemDef IndexElem IndexParams SubqueryOp AllSubqueryOp AnySubqueryOpLikeSubqueryOpIlikeSubqueryOp BExprIsOpDistinctFromBExprIsOp OfBExprIsOpDocumentBExprIsOpAExprReversableOpNullAExprReversableOpTrueAExprReversableOpFalseAExprReversableOpUnknownAExprReversableOpDistinctFromAExprReversableOpOfAExprReversableOpBetweenAExprReversableOp!BetweenSymmetricAExprReversableOpInAExprReversableOpDocumentAExprReversableOpVerbalExprBinOpLikeVerbalExprBinOpIlikeVerbalExprBinOpSimilarToVerbalExprBinOpSymbolicExprBinOpMathSymbolicExprBinOpQualSymbolicExprBinOpMathOp PlusMathOp MinusMathOpAsteriskMathOp SlashMathOp PercentMathOp ArrowUpMathOpArrowLeftMathOpArrowRightMathOp EqualsMathOpLessEqualsMathOpGreaterEqualsMathOpArrowLeftArrowRightMathOpExclamationEqualsMathOpAllOpOpAllOp MathAllOp AnyOperatorAllOpAnyOperatorQualifiedAnyOperatorOp QualAllOp AllQualAllOp AnyQualAllOpQualOpOpQualOpOperatorQualOpTypeList TypeModifiersAttrNameAttrs GenericTypeSimpleTypenameGenericTypeSimpleTypenameNumericSimpleTypenameBitSimpleTypenameCharacterSimpleTypenameConstDatetimeSimpleTypenameConstIntervalSimpleTypename ArrayBoundsTypenameArrayDimensionsBoundsTypenameArrayDimensionsExplicitTypenameArrayDimensionsTypename IndirectionElAttrNameIndirectionElAllIndirectionElExprIndirectionElSliceIndirectionEl Indirection QualifiedNameSimpleQualifiedNameIndirectedQualifiedNameTypeFunctionNameFuncName TypeFuncNameIndirectedFuncNameAnyName Columnref CursorNameNameListNameColLabelColIdIdent QuotedIdent UnquotedIdentIntervalSecondInterval YearInterval MonthInterval DayInterval HourIntervalMinuteIntervalSecondIntervalYearToMonthIntervalDayToHourIntervalDayToMinuteIntervalDayToSecondIntervalHourToMinuteIntervalHourToSecondIntervalMinuteToSecondIntervalTimezone ConstDatetimeTimestampConstDatetimeTimeConstDatetime CharacterCharacterCharacter CharCharacterVarcharCharacterNationalCharacterCharacterNationalCharCharacterNcharCharacterConstCharacter OptVaryingConstBitBitNumeric IntNumericIntegerNumericSmallintNumeric BigintNumeric RealNumeric FloatNumericDoublePrecisionNumericDecimalNumeric DecNumericNumericNumericBooleanNumeric ConstTypenameNumericConstTypenameConstBitConstTypenameConstCharacterConstTypenameConstDatetimeConstTypename FuncConstArgs AexprConst IAexprConst FAexprConst SAexprConst BAexprConst XAexprConstFuncAexprConstConstTypenameAexprConstStringIntervalAexprConstIntIntervalAexprConstBoolAexprConstNullAexprConstXconstBconstFconstIconstSconst FuncArgExprExprFuncArgExprColonEqualsFuncArgExprEqualsGreaterFuncArgExprFuncApplicationParamsNormalFuncApplicationParamsVariadicFuncApplicationParamsStarFuncApplicationParamsFuncApplication WhenClause CaseDefaultWhenClauseListCaseArgCaseExprTrimListExprFromExprListTrimListFromExprListTrimListExprListTrimList TrimModifierBothTrimModifierLeadingTrimModifierTrailingTrimModifier SubstrFor SubstrFromSubstrListFromForFromForSubstrListFromForForFromSubstrListFromForFromSubstrListFromForForSubstrListFromFor SubstrListExprSubstrListExprListSubstrList PositionListOverlayPlacing OverlayList ExtractArgIdentExtractArgYearExtractArgMonthExtractArg DayExtractArgHourExtractArgMinuteExtractArgSecondExtractArgSconstExtractArg ExtractListFuncExprCommonSubexpr!CollationForFuncExprCommonSubexpr CurrentDateFuncExprCommonSubexpr CurrentTimeFuncExprCommonSubexpr%CurrentTimestampFuncExprCommonSubexprLocalTimeFuncExprCommonSubexpr#LocalTimestampFuncExprCommonSubexpr CurrentRoleFuncExprCommonSubexpr CurrentUserFuncExprCommonSubexpr SessionUserFuncExprCommonSubexprUserFuncExprCommonSubexpr#CurrentCatalogFuncExprCommonSubexpr"CurrentSchemaFuncExprCommonSubexprCastFuncExprCommonSubexprExtractFuncExprCommonSubexprOverlayFuncExprCommonSubexprPositionFuncExprCommonSubexprSubstringFuncExprCommonSubexprTreatFuncExprCommonSubexprTrimFuncExprCommonSubexprNullIfFuncExprCommonSubexprCoalesceFuncExprCommonSubexprGreatestFuncExprCommonSubexprLeastFuncExprCommonSubexpr OverClauseWindowOverClauseColIdOverClause FilterClauseWithinGroupClauseFuncExprWindowlessApplicationFuncExprWindowlessCommonSubexprFuncExprWindowlessFuncExprApplicationFuncExprSubexprFuncExpr ImplicitRow ExplicitRowRowExplicitRowRowImplicitRowRow ArrayExprList ArrayExprExprListArrayExprArrayExprListArrayExprEmptyArrayExprSubType AnySubType SomeSubType AllSubTypeInExpr SelectInExprExprListInExprCExprColumnrefCExprAexprConstCExpr ParamCExpr InParensCExpr CaseCExpr FuncCExprSelectWithParensCExpr ExistsCExpr ArrayCExprExplicitRowCExprImplicitRowCExpr GroupingCExprBExpr CExprBExpr TypecastBExpr PlusBExpr MinusBExprSymbolicBinOpBExpr QualOpBExpr IsOpBExprAExpr CExprAExpr TypecastAExpr CollateAExprAtTimeZoneAExpr PlusAExpr MinusAExprSymbolicBinOpAExprPrefixQualOpAExprSuffixQualOpAExprAndAExprOrAExprNotAExprVerbalExprBinOpAExprReversableOpAExpr IsnullAExpr NotnullAExpr OverlapsAExpr SubqueryAExpr UniqueAExpr DefaultAExprExprListWhereOrCurrentClauseExprWhereOrCurrentClauseCursorWhereOrCurrentClause WhereClauseJoinQual UsingJoinQual OnJoinQualJoinType FullJoinType LeftJoinType RightJoinType InnerJoinTypeJoinMeth CrossJoinMeth QualJoinMethNaturalJoinMeth JoinedTableInParensJoinedTableMethJoinedTableFuncAliasClauseAliasFuncAliasClauseAsFuncAliasClauseAsColIdFuncAliasClauseColIdFuncAliasClause AliasClause CollateClauseTableFuncElementTableFuncElementList OptOrdinality ColDefList RowsfromList RowsfromItem FuncTableFuncExprFuncTableRowsFromFuncTableRepeatableClauseTablesampleClauseRelationExprOptAlias RelationExprSimpleRelationExprOnlyRelationExprTableRefRelationExprTableRef FuncTableRefSelectTableRef JoinTableRefFromListForLockingStrengthUpdateForLockingStrengthNoKeyUpdateForLockingStrengthShareForLockingStrengthKeyForLockingStrengthForLockingItemForLockingClauseItemsForLockingClauseReadOnlyForLockingClause OffsetClauseExprOffsetClauseFetchFirstOffsetClauseSelectLimitValueExprSelectLimitValueAllSelectLimitValueSelectFetchFirstValueExprSelectFetchFirstValueNumSelectFetchFirstValue LimitClauseLimitLimitClauseFetchOnlyLimitClause SelectLimitLimitOffsetSelectLimitOffsetLimitSelectLimitLimitSelectLimitOffsetSelectLimitSortBy UsingSortBy AscDescSortBy SortClause ValuesClauseWindowExclusionClauseCurrentRowWindowExclusionClauseGroupWindowExclusionClauseTiesWindowExclusionClauseNoOthersWindowExclusionClause FrameBoundUnboundedPrecedingFrameBoundUnboundedFollowingFrameBoundCurrentRowFrameBoundPrecedingFrameBoundFollowingFrameBound FrameExtentSingularFrameExtentBetweenFrameExtentFrameClauseModeRangeFrameClauseModeRowsFrameClauseModeGroupsFrameClauseMode FrameClausePartitionClauseExistingWindowNameWindowSpecificationWindowDefinition WindowClause HavingClause GroupByItemExprGroupByItemEmptyGroupingSetGroupByItemRollupGroupByItemCubeGroupByItemGroupingSetsGroupByItem GroupClause FromClauseOptTempTableNameTemporaryOptTempTableNameTempOptTempTableNameLocalTemporaryOptTempTableNameLocalTempOptTempTableNameGlobalTemporaryOptTempTableNameGlobalTempOptTempTableNameUnloggedOptTempTableNameTableOptTempTableNameQualifedOptTempTableName IntoClauseCommonTableExpr WithClause SelectBinOpUnionSelectBinOpIntersectSelectBinOpExceptSelectBinOpTargetElAliasedExprTargetElImplicitlyAliasedExprTargetEl ExprTargetElAsteriskTargetEl TargetList TargetingNormalTargeting AllTargetingDistinctTargeting SimpleSelectNormalSimpleSelectValuesSimpleSelectTableSimpleSelectBinSimpleSelect SelectClauseSelectNoParensSelectWithParensNoParensSelectWithParensWithParensSelectWithParens SelectStmt UsingClause DeleteStmt SetTargetList SetTarget SetClauseTargetSetClauseTargetListSetClause SetClauseList UpdateStmtReturningClauseConfExpr WhereConfExprConstraintConfExpr OnConflictDoUpdateOnConflictDoNothingOnConflictDo OnConflictInsertColumnItemInsertColumnList OverrideKindUserOverrideKindSystemOverrideKind InsertRestSelectInsertRestDefaultValuesInsertRest InsertTarget InsertStmtCallStmtPreparableStmtSelectPreparableStmtInsertPreparableStmtUpdatePreparableStmtDeletePreparableStmtCallPreparableStmt $fShowSortBy$fGenericSortBy $fEqSortBy $fOrdSortBy $fShowAExpr$fGenericAExpr $fEqAExpr $fOrdAExpr$fShowAExprReversableOp$fGenericAExprReversableOp$fEqAExprReversableOp$fOrdAExprReversableOp$fShowTypename$fGenericTypename $fEqTypename $fOrdTypename$fShowSimpleTypename$fGenericSimpleTypename$fEqSimpleTypename$fOrdSimpleTypename$fShowGenericType$fGenericGenericType$fEqGenericType$fOrdGenericType $fShowBit $fGenericBit$fEqBit$fOrdBit $fShowNumeric$fGenericNumeric $fEqNumeric $fOrdNumeric $fShowInExpr$fGenericInExpr $fEqInExpr $fOrdInExpr$fShowSelectWithParens$fGenericSelectWithParens$fEqSelectWithParens$fOrdSelectWithParens$fShowSelectNoParens$fGenericSelectNoParens$fEqSelectNoParens$fOrdSelectNoParens$fShowForLockingClause$fGenericForLockingClause$fEqForLockingClause$fOrdForLockingClause$fShowForLockingItem$fGenericForLockingItem$fEqForLockingItem$fOrdForLockingItem$fShowQualifiedName$fGenericQualifiedName$fEqQualifiedName$fOrdQualifiedName$fShowIndirectionEl$fGenericIndirectionEl$fEqIndirectionEl$fOrdIndirectionEl$fShowSelectLimit$fGenericSelectLimit$fEqSelectLimit$fOrdSelectLimit$fShowOffsetClause$fGenericOffsetClause$fEqOffsetClause$fOrdOffsetClause$fShowSelectFetchFirstValue$fGenericSelectFetchFirstValue$fEqSelectFetchFirstValue$fOrdSelectFetchFirstValue $fShowCExpr$fGenericCExpr $fEqCExpr $fOrdCExpr$fShowColumnref$fGenericColumnref $fEqColumnref$fOrdColumnref$fShowAexprConst$fGenericAexprConst$fEqAexprConst$fOrdAexprConst$fShowFuncName$fGenericFuncName $fEqFuncName $fOrdFuncName$fShowConstTypename$fGenericConstTypename$fEqConstTypename$fOrdConstTypename$fShowFuncConstArgs$fGenericFuncConstArgs$fEqFuncConstArgs$fOrdFuncConstArgs$fShowFuncArgExpr$fGenericFuncArgExpr$fEqFuncArgExpr$fOrdFuncArgExpr$fShowCaseExpr$fGenericCaseExpr $fEqCaseExpr $fOrdCaseExpr$fShowWhenClause$fGenericWhenClause$fEqWhenClause$fOrdWhenClause$fShowFuncExpr$fGenericFuncExpr $fEqFuncExpr $fOrdFuncExpr$fShowFuncApplication$fGenericFuncApplication$fEqFuncApplication$fOrdFuncApplication$fShowFuncApplicationParams$fGenericFuncApplicationParams$fEqFuncApplicationParams$fOrdFuncApplicationParams$fShowFuncExprCommonSubexpr$fGenericFuncExprCommonSubexpr$fEqFuncExprCommonSubexpr$fOrdFuncExprCommonSubexpr$fShowTrimList$fGenericTrimList $fEqTrimList $fOrdTrimList$fShowSubstrList$fGenericSubstrList$fEqSubstrList$fOrdSubstrList$fShowSubstrListFromFor$fGenericSubstrListFromFor$fEqSubstrListFromFor$fOrdSubstrListFromFor$fShowPositionList$fGenericPositionList$fEqPositionList$fOrdPositionList $fShowBExpr$fGenericBExpr $fEqBExpr $fOrdBExpr$fShowBExprIsOp$fGenericBExprIsOp $fEqBExprIsOp$fOrdBExprIsOp$fShowOverlayList$fGenericOverlayList$fEqOverlayList$fOrdOverlayList$fShowExtractList$fGenericExtractList$fEqExtractList$fOrdExtractList$fShowOverClause$fGenericOverClause$fEqOverClause$fOrdOverClause$fShowWindowSpecification$fGenericWindowSpecification$fEqWindowSpecification$fOrdWindowSpecification$fShowFrameClause$fGenericFrameClause$fEqFrameClause$fOrdFrameClause$fShowFrameExtent$fGenericFrameExtent$fEqFrameExtent$fOrdFrameExtent$fShowFrameBound$fGenericFrameBound$fEqFrameBound$fOrdFrameBound$fShowImplicitRow$fGenericImplicitRow$fEqImplicitRow$fOrdImplicitRow$fShowArrayExpr$fGenericArrayExpr $fEqArrayExpr$fOrdArrayExpr$fShowLimitClause$fGenericLimitClause$fEqLimitClause$fOrdLimitClause$fShowSelectLimitValue$fGenericSelectLimitValue$fEqSelectLimitValue$fOrdSelectLimitValue$fShowWithClause$fGenericWithClause$fEqWithClause$fOrdWithClause$fShowCommonTableExpr$fGenericCommonTableExpr$fEqCommonTableExpr$fOrdCommonTableExpr$fShowPreparableStmt$fGenericPreparableStmt$fEqPreparableStmt$fOrdPreparableStmt$fShowDeleteStmt$fGenericDeleteStmt$fEqDeleteStmt$fOrdDeleteStmt$fShowWhereOrCurrentClause$fGenericWhereOrCurrentClause$fEqWhereOrCurrentClause$fOrdWhereOrCurrentClause$fShowRelationExprOptAlias$fGenericRelationExprOptAlias$fEqRelationExprOptAlias$fOrdRelationExprOptAlias$fShowRelationExpr$fGenericRelationExpr$fEqRelationExpr$fOrdRelationExpr$fShowTableRef$fGenericTableRef $fEqTableRef $fOrdTableRef$fShowJoinedTable$fGenericJoinedTable$fEqJoinedTable$fOrdJoinedTable$fShowJoinMeth$fGenericJoinMeth $fEqJoinMeth $fOrdJoinMeth$fShowJoinQual$fGenericJoinQual $fEqJoinQual $fOrdJoinQual$fShowFuncAliasClause$fGenericFuncAliasClause$fEqFuncAliasClause$fOrdFuncAliasClause$fShowTableFuncElement$fGenericTableFuncElement$fEqTableFuncElement$fOrdTableFuncElement$fShowFuncTable$fGenericFuncTable $fEqFuncTable$fOrdFuncTable$fShowFuncExprWindowless$fGenericFuncExprWindowless$fEqFuncExprWindowless$fOrdFuncExprWindowless$fShowRowsfromItem$fGenericRowsfromItem$fEqRowsfromItem$fOrdRowsfromItem$fShowTablesampleClause$fGenericTablesampleClause$fEqTablesampleClause$fOrdTablesampleClause$fShowTargetEl$fGenericTargetEl $fEqTargetEl $fOrdTargetEl$fShowUpdateStmt$fGenericUpdateStmt$fEqUpdateStmt$fOrdUpdateStmt$fShowSetClause$fGenericSetClause $fEqSetClause$fOrdSetClause$fShowSetTarget$fGenericSetTarget $fEqSetTarget$fOrdSetTarget$fShowInsertStmt$fGenericInsertStmt$fEqInsertStmt$fOrdInsertStmt$fShowOnConflict$fGenericOnConflict$fEqOnConflict$fOrdOnConflict$fShowConfExpr$fGenericConfExpr $fEqConfExpr $fOrdConfExpr$fShowIndexElem$fGenericIndexElem $fEqIndexElem$fOrdIndexElem$fShowIndexElemDef$fGenericIndexElemDef$fEqIndexElemDef$fOrdIndexElemDef$fShowOnConflictDo$fGenericOnConflictDo$fEqOnConflictDo$fOrdOnConflictDo$fShowInsertRest$fGenericInsertRest$fEqInsertRest$fOrdInsertRest$fShowInsertColumnItem$fGenericInsertColumnItem$fEqInsertColumnItem$fOrdInsertColumnItem$fShowInsertTarget$fGenericInsertTarget$fEqInsertTarget$fOrdInsertTarget$fShowCallStmt$fGenericCallStmt $fEqCallStmt $fOrdCallStmt$fShowSimpleSelect$fGenericSimpleSelect$fEqSimpleSelect$fOrdSimpleSelect$fShowWindowDefinition$fGenericWindowDefinition$fEqWindowDefinition$fOrdWindowDefinition$fShowGroupByItem$fGenericGroupByItem$fEqGroupByItem$fOrdGroupByItem$fShowOptTempTableName$fGenericOptTempTableName$fEqOptTempTableName$fOrdOptTempTableName$fShowTargeting$fGenericTargeting $fEqTargeting$fOrdTargeting $fShowRow $fGenericRow$fEqRow$fOrdRow$fShowNullsOrder$fGenericNullsOrder$fEqNullsOrder$fOrdNullsOrder$fEnumNullsOrder$fBoundedNullsOrder $fShowAscDesc$fGenericAscDesc $fEqAscDesc $fOrdAscDesc $fEnumAscDesc$fBoundedAscDesc$fShowSubqueryOp$fGenericSubqueryOp$fEqSubqueryOp$fOrdSubqueryOp$fShowVerbalExprBinOp$fGenericVerbalExprBinOp$fEqVerbalExprBinOp$fOrdVerbalExprBinOp$fEnumVerbalExprBinOp$fBoundedVerbalExprBinOp$fShowSymbolicExprBinOp$fGenericSymbolicExprBinOp$fEqSymbolicExprBinOp$fOrdSymbolicExprBinOp$fShowQualAllOp$fGenericQualAllOp $fEqQualAllOp$fOrdQualAllOp $fShowQualOp$fGenericQualOp $fEqQualOp $fOrdQualOp$fShowAnyOperator$fGenericAnyOperator$fEqAnyOperator$fOrdAnyOperator $fShowAllOp$fGenericAllOp $fEqAllOp $fOrdAllOp $fShowMathOp$fGenericMathOp $fEqMathOp $fOrdMathOp $fEnumMathOp$fBoundedMathOp $fShowAnyName$fGenericAnyName $fEqAnyName $fOrdAnyName$fShowTypenameArrayDimensions $fGenericTypenameArrayDimensions$fEqTypenameArrayDimensions$fOrdTypenameArrayDimensions$fShowAliasClause$fGenericAliasClause$fEqAliasClause$fOrdAliasClause$fShowExtractArg$fGenericExtractArg$fEqExtractArg$fOrdExtractArg $fShowIdent$fGenericIdent $fEqIdent $fOrdIdent$fShowInterval$fGenericInterval $fEqInterval $fOrdInterval$fShowConstDatetime$fGenericConstDatetime$fEqConstDatetime$fOrdConstDatetime$fShowConstCharacter$fGenericConstCharacter$fEqConstCharacter$fOrdConstCharacter$fShowCharacter$fGenericCharacter $fEqCharacter$fOrdCharacter$fShowTrimModifier$fGenericTrimModifier$fEqTrimModifier$fOrdTrimModifier$fEnumTrimModifier$fBoundedTrimModifier $fShowSubType$fGenericSubType $fEqSubType $fOrdSubType $fEnumSubType$fBoundedSubType$fShowJoinType$fGenericJoinType $fEqJoinType $fOrdJoinType$fShowForLockingStrength$fGenericForLockingStrength$fEqForLockingStrength$fOrdForLockingStrength$fShowWindowExclusionClause$fGenericWindowExclusionClause$fEqWindowExclusionClause$fOrdWindowExclusionClause$fShowFrameClauseMode$fGenericFrameClauseMode$fEqFrameClauseMode$fOrdFrameClauseMode$fShowSelectBinOp$fGenericSelectBinOp$fEqSelectBinOp$fOrdSelectBinOp$fShowOverrideKind$fGenericOverrideKind$fEqOverrideKind$fOrdOverrideKind$fEnumOverrideKind$fBoundedOverrideKind toByteStringtoText commaNonEmpty spaceNonEmptylexemes optLexemesinParens inBrackets prefixMaybe suffixMaybepreparableStmtcallStmt insertStmt insertTarget insertRestinsertRestOverriding overrideKindinsertColumnListinsertColumnItem onConflict onConflictDoconfExprreturningClause updateStmt setClauseList setClause setTarget setTargetList deleteStmt usingClause selectStmtselectNoParensselectWithParens withClausecommonTableExprmaterialization selectLimit limitClause firstOrNext rowOrRowsselectFetchFirstValue intOrFloatselectLimitValue offsetClauseforLockingClauseforLockingItemforLockingStrengthlockedRelsList nowaitOrSkip selectClause simpleSelect selectBinOp targeting targetListonExpressionsClausetargetEl intoClauseoptTempTableName fromClausefromListtableRef relationExprrelationExprOptAliasoptAliastablesampleClauserepeatableClause funcTable rowsfromItem rowsfromList colDefListtableFuncElementListtableFuncElement collateClause aliasClausefuncAliasClause joinedTablejoinTypejoinQual whereClausewhereOrCurrentClause groupClause groupByItem havingClause windowClausewindowDefinitionwindowSpecificationpartitionClause frameClauseframeClauseMode frameExtent frameBoundwindowExclusionCause sortClausesortBy valuesClauseexprListaExprbExprcExpraExprReversableOpverbalExprBinOp subqueryOp bExprIsOpsymbolicExprBinOpqualOp qualAllOpop anyOperatorallOpinExprcaseExpr whenClause caseDefault arrayExpr arrayExprListrow explicitRow implicitRowfuncApplicationfuncApplicationParams allOrDistinct funcArgExprfuncExprfuncExprWindownlesswithinGroupClause filterClause overClausefuncExprCommonSubexpr extractList extractArg overlayListoverlayPlacing positionList substrListsubstrListFromFor substrFrom substrFor trimModifiertrimList aexprConsticonstfconstsconstfuncAexprConstArgList constTypenamenumericbitconstBitconstCharacter character constDatetimetimezoneintervalintervalSecond columnrefident qualifiedName indirection indirectionElname cursorNamecolLabelattrNamefuncNameanyNametypename'typenameArrayDimensionsWithQuestionMarktypenameArrayDimensions arrayBoundssimpleTypename genericTypeattrs typeModifierstypeListsubType indexParams indexElem indexElemDefcollateclass_ascDesc nullsOrderParserruncommaSeparator dotSeparatorinBracketsCont inParensContinParensWithLabelinParensWithClause trueIfPresent quotedStringatEndsharedSelectNoParenssimpleSelectNoParenswithSelectNoParensbaseSimpleSelectextensionSimpleSelect materializedpartitionByClausewindowExclusionClausenonTrailingTableReftrailingTableRef optOrdinalityinParensJoinedTabletrailingJoinedTableexprListInParens filteredAExprcustomizedAExprcustomizedBExprcustomizedCExprsymbolicBinOpExpr typecastExpr plusedExpr minusedExpr qualOpExpr arrayExprCont elseClausefuncExprWindowlessnormalFuncApplicationParams#singleVariadicFuncApplicationParams!listVariadicFuncApplicationParamsstarFuncApplicationParamslexicalExprBinOpiconstOrFconstoffsetClauseParams plusOrMinus quotedName filteredColIdfilteredColumnrefcustomizedColumnreffilteredAnyNamecustomizedAnyNamenameListkeywordNameFromSetkeywordNameByPredicate anyKeyword keyphrase suffixRecbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip GHC.Stable newStablePtr System.IOprint Data.Tuplefstsnd otherwiseassert GHC.MagiclazyGHC.IO.Exception assertError Debug.TracetraceinlinemapGHC.Exts groupWith$coerceGHC.Real fromIntegral realToFrac Control.MonadguardIsListItem Data.DynamictoDyn Unsafe.CoerceunsafeEqualityProof unsafeCoerce#joinGHC.EnumBoundedminBoundmaxBoundEnumsuccpredtoEnumfromEnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.ClassesEq==/= GHC.FloatFloatingtanhtansqrtsinhsinpilogBaselog1pexplog1plog1mexplogexpm1expcoshcosatanhatanasinhasinacosh**acos Fractionalrecip fromRational/IntegralremquotRemquotmoddivMod toIntegerdivMonad>>=return>> Data.DataDatatoConstrgunfoldgmapTgmapQrgmapQlgmapQigmapQgmapMpgmapMogmapMgfoldl dataTypeOf dataCast1 dataCast2Functorfmap<$GHC.NumNumsignumabs*+negate fromInteger-Ord<<=>maxmin>=compareGHC.ReadReadreadPrec readListPrec readsPrecreadListReal toRational RealFloat significand scaleFloatisNegativeZeroisNaN isInfiniteisIEEEisDenormalized floatRange floatRadix floatDigitsexponent encodeFloatatan2 decodeFloatRealFractruncateroundproperFractionceilingfloorGHC.ShowShowshowListshow showsPrecGHC.IxIxindexinRange rangeSizerangeData.Typeable.InternalTypeableControl.Monad.FixMonadFixmfixControl.Monad.Fail MonadFailfail Data.StringIsString fromString ApplicativeliftA2<*pure*><*> Data.FoldableFoldablefoldr'foldMap'foldMapfoldsumproductnullminimummaximumfoldr1foldl1foldl'elemlengthfoldrfoldltoListData.Traversable TraversabletraversesequencemapM sequenceA GHC.GenericsGenericGeneric1 Semigroupstimes<>sconcatMonoidmemptymconcatmappend GHC.TypesBoolFalseTrueStringCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 ghc-bignumGHC.Num.IntegerInteger GHC.MaybeMaybeNothingJustOrderingGTLTEQRatioRational RealWorld StablePtrIOWordGHC.WordWord8Word16Word32Word64GHC.PtrPtrFunPtr Data.EitherEitherRightLeftNonEmpty:| CoercibleUnsafeEquality UnsafeReflTyConGHC.STST Data.VersionVersion versionTags versionBranchGHC.ForeignPtr ForeignPtrGHC.IO.Handle.TypesHandleData.Bifunctor Bifunctorsecondbimapfirst Data.ComplexComplex:+realPartpolarphasemkPolar magnitudeimagPart conjugatecis Data.FixedUniPicoNanoMilliMicro HasResolution resolutionFixedMkFixedE9E6E3E2E12E1E0DeciCenti showFixedmod'divMod'div' Data.VoidVoidvacuousabsurdData.Semigroup WrappedMonoid WrapMonoid unwrapMonoidMingetMinMaxgetMaxLastgetLastFirstgetFirstArgMinArgMaxArg mtimesDefaultdiffcycle1sortWithFixityInfixPrefixDataTypeDataRepNoRepCharRepAlgRepIntRepFloatRep ConstrRep IntConstr FloatConstr AlgConstr CharConstrConstrConIndex tyconUQname tyconModule showConstr repConstr readConstr mkRealConstr mkNoRepTypemkIntegralConstr mkIntType mkFloatType mkDataType mkConstrTagmkConstr mkCharType mkCharConstrmaxConstrIndex isNorepType isAlgType indexConstr fromConstrM fromConstrB fromConstr dataTypeRep dataTypeNamedataTypeConstrs constrType constrRep constrIndex constrFixity constrFieldsSystem.TimeoutTimeouttimeoutControl.ConcurrentthreadWaitWriteSTMthreadWaitWritethreadWaitReadSTMthreadWaitReadrunInUnboundThreadrunInBoundThreadrtsSupportsBoundThreadsisCurrentThreadBoundforkOSWithUnmaskforkOS forkFinallyControl.Concurrent.ChanChanwriteList2Chan writeChanreadChannewChangetChanContentsdupChanControl.Concurrent.QSemQSemwaitQSem signalQSemnewQSemControl.Concurrent.QSemNQSemN waitQSemN signalQSemNnewQSemNControl.Monad.IO.ClassMonadIOliftIO Data.RatioapproxRational Data.STRef modifySTRef' modifySTRef Data.UniqueUnique newUnique hashUniqueGHC.StableName StableNamemakeStableNamehashStableName eqStableNameSystem.Environment withProgNamewithArgsunsetEnvsetEnv lookupEnv getProgNamegetEnvironmentgetEnvgetArgs!System.Environment.ExecutablePathgetExecutablePath System.ExitexitWith exitSuccess exitFailuredie System.MemperformMinorGCperformMajorGC performGC Text.PrintfprintfhPrintf zipWithM_zipWithMunless replicateM_ replicateMmfilter mapAndUnzipMforeverfoldM_foldMfilterM>=><=<<$!> showVersion parseVersion traceStack traceShowM traceShowId traceShow traceMarkerIO traceMarkertraceMtraceIdtraceIO traceEventIO traceEvent putTraceMsg flushEventLog mapAccumR mapAccumLforMforfoldMapDefault fmapDefaultControl.ApplicativeZipList getZipList WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowoptional Control.ArrowKleisli runKleisli ArrowZero zeroArrow ArrowPlus<+> ArrowMonad ArrowLooploop ArrowChoice+++|||rightleft ArrowApplyappArrow&&&***arrreturnAleftApp^>>^<<>>^<<^Data.Functor.IdentityIdentity runIdentity writeFilereadLnreadIO readFile'readFileputStrLnputStrputChar"openTempFileWithDefaultPermissions openTempFile(openBinaryTempFileWithDefaultPermissionsopenBinaryTempFilelocaleEncodinginteracthReadyhPrintgetLine getContents' getContentsgetCharfixIO appendFile GHC.IO.Handle HandlePosnisEOFhTellhShowhSetPosnhSetNewlineMode hSetFileSize hSetEncodinghSetEcho hSetBufferinghSetBinaryModehSeek hLookAhead hIsWritablehIsTerminalDevice hIsSeekable hIsReadablehIsOpenhIsEOF hIsClosedhGetPosn hGetEncodinghGetEcho hGetBuffering hFileSizehCloseGHC.IO.StdHandleswithFilewithBinaryFilestdinstderropenFileopenBinaryFile GHC.Conc.IO threadDelay registerDelayioManagerCapabilitiesChangedensureIOManagerIsRunning closeFdWithGHC.Conc.SignalSignal HandlerFun setHandler runHandlersControl.Concurrent.MVarwithMVarMaskedwithMVarswapMVar modifyMVar_modifyMVarMasked_modifyMVarMasked modifyMVar mkWeakMVaraddMVarFinalizerGHC.IO.Handle.Text hWaitForInput hPutStrLnhPutStrhPutCharhPutBufNonBlockinghPutBufhGetLine hGetContents' hGetContentshGetChar hGetBufSomehGetBufNonBlockinghGetBufGHC.IO.Encodingutf8_bomutf8utf32leutf32beutf32utf16leutf16beutf16mkTextEncodinglatin1char8System.IO.Unsafe unsafeFixIOControl.ExceptionHandlercatchesallowInterruptControl.Monad.ST.ImpfixSTSystem.IO.Error userErrorType tryIOErrorresourceVanishedErrorTypepermissionErrorType modifyIOError mkIOErrorisUserErrorType isUserErrorisResourceVanishedErrorTypeisResourceVanishedErrorisPermissionErrorTypeisPermissionErrorisIllegalOperationErrorTypeisIllegalOperationisFullErrorType isFullErrorisEOFErrorType isEOFErrorisDoesNotExistErrorTypeisDoesNotExistErrorisAlreadyInUseErrorTypeisAlreadyInUseErrorisAlreadyExistsErrorTypeisAlreadyExistsErrorioeSetLocation ioeSetHandleioeSetFileNameioeSetErrorTypeioeSetErrorStringioeGetLocation ioeGetHandleioeGetFileNameioeGetErrorTypeioeGetErrorStringillegalOperationErrorType fullErrorType eofErrorTypedoesNotExistErrorType catchIOErrorannotateIOErroralreadyInUseErrorTypealreadyExistsErrorTypeControl.Exception.Base TypeError RecUpdError RecSelError RecConErrorPatternMatchFailNonTermination NoMethodErrorNestedAtomicallytryJusttry onException mapException handleJusthandlefinally catchJustbracket_bracketOnErrorbracket GHC.Conc.Sync ThreadStatus ThreadRunningThreadFinished ThreadBlocked ThreadDiedThreadIdTVarSTMPrimMVar BlockReason BlockedOnSTMBlockedOnOther BlockedOnMVarBlockedOnForeignCallBlockedOnBlackHoleBlockedOnExceptionyield writeTVar unsafeIOToSTMthrowTothrowSTM threadStatusthreadCapabilitysetUncaughtExceptionHandlersetNumCapabilitiessetAllocationCounter runSparksretryreportStackOverflowreportHeapOverflow reportError readTVarIOreadTVarpseqpar numSparksnumCapabilities newTVarIOnewTVarnewStablePtrPrimMVar myThreadIdmkWeakThreadId labelThread killThreadgetUncaughtExceptionHandlergetNumProcessorsgetNumCapabilitiesgetAllocationCounterforkOnWithUnmaskforkOnforkIOWithUnmaskforkIOenableAllocationLimitdisableAllocationLimit childHandlercatchSTM atomicallyDynamic fromDynamicfromDyn dynTypeRepdynApplydynAppSomeAsyncException IOErrorType UserErrorUnsupportedOperationUnsatisfiedConstraints TimeExpired SystemErrorResourceVanishedResourceExhausted ResourceBusy ProtocolErrorPermissionDenied OtherError NoSuchThingInvalidArgument InterruptedInappropriateTypeIllegalOperation HardwareFaultEOF AlreadyExistsFixIOExceptionExitCode ExitSuccess ExitFailureDeadlockCompactionFailedBlockedIndefinitelyOnSTMBlockedIndefinitelyOnMVarAsyncException UserInterrupt ThreadKilled HeapOverflow StackOverflowAssertionFailedArrayExceptionIndexOutOfBoundsUndefinedElementAllocationLimitExceededuntangle stackOverflow ioExceptionioError heapOverflowcannotCompactPinnedcannotCompactMutablecannotCompactFunctionblockedIndefinitelyOnSTMblockedIndefinitelyOnMVarasyncExceptionToExceptionasyncExceptionFromExceptionallocationLimitExceededhFlushstdout NewlineModeoutputNLinputNLNewlineCRLFLF BufferMode NoBufferingBlockBuffering LineBufferinguniversalNewlineModenoNewlineTranslationnativeNewlineMode nativeNewline GHC.IO.DeviceSeekMode SeekFromEnd AbsoluteSeek RelativeSeek Data.IORef modifyIORef' modifyIORef mkWeakIORefatomicWriteIORefatomicModifyIORefGHC.IO.Encoding.Types TextEncodingForeign.ForeignPtr.ImpnewForeignPtrEnv newForeignPtrmallocForeignPtrArray0mallocForeignPtrArray FinalizerPtrFinalizerEnvPtrwithForeignPtrtouchForeignPtrplusForeignPtrnewForeignPtr_mallocForeignPtrBytesmallocForeignPtrfinalizeForeignPtrcastForeignPtraddForeignPtrFinalizerEnvaddForeignPtrFinalizer GHC.IORefIORef writeIORef readIORefnewIORefatomicModifyIORef'GHC.IO MaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptibleFilePathuninterruptibleMask_uninterruptibleMaskthrowIOstToIOmask_mask interruptiblegetMaskingStateevaluatecatch IOExceptionioe_type ioe_location ioe_handle ioe_filename ioe_errnoIOErrorioe_description userErrorunsupportedOperation GHC.Exception ErrorCallErrorCallWithLocationthrowGHC.Exception.Type Exception toExceptiondisplayException fromExceptionArithExceptionRatioZeroDenominatorLossOfPrecision DivideByZeroDenormal UnderflowOverflow Data.TypeableTypeRep typeRepTyContypeRepFingerprint typeRepArgstypeReptypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1typeOf splitTyConApp showsTypeRep rnfTypeRepmkFunTygcast2gcast1gcast funResultTyeqTcast tyConPackage tyConName tyConModuletyConFingerprint trLiftedReprnfTyConData.Functor.ConstConstgetConst traverse_ sequence_ sequenceA_ornotElemmsum minimumBy maximumBymapM_for_forM_foldrMfoldlMfind concatMapconcatasumanyandall Data.OldListzipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4wordsunzip7unzip6unzip5unzip4unwordsunlinesunionByunionunfoldr transposetails subsequences stripPrefixsort singleton permutations partitionnubBynublines isSuffixOf isPrefixOf isInfixOf intersperse intersectBy intersect intercalateinsertByinsertinitsgroupBygroup genericTakegenericSplitAtgenericReplicate genericLength genericIndex genericDrop findIndices findIndex elemIndices elemIndex dropWhileEnddeleteFirstsBydeleteBydelete\\ Data.MonoidApgetApData.Semigroup.InternalSumgetSumProduct getProductEndoappEndoDualgetDualAnygetAnyAltgetAltAllgetAll stimesMonoidstimesIdempotentData.OrdDowngetDown comparingclamp Foreign.PtrWordPtrIntPtr wordPtrToPtr ptrToWordPtr ptrToIntPtr intPtrToPtrfreeHaskellFunPtrForeign.StorableStorable pokeElemOff pokeByteOffpoke peekElemOffpeek peekByteOff freeStablePtrdeRefStablePtrcastStablePtrToPtrcastPtrToStablePtrunsafeCoerceUnliftedunsafeCoerceAddr unsafeCoerce Data.BitsXorgetXorIorgetIorIffgetIffAndgetAndoneBits Data.Char isSeparatorisNumberisMarkisLetter digitToInt Text.Readreads readMaybe readEitherreadrightspartitionEithersleftsisRightisLeft fromRightfromLefteither Data.ProxyProxyKProxy asProxyTypeOfControl.CategoryCategoryid.>>><<<Data.Type.Equality:~~:HRefl:~:Refl GHC.IO.IOModeIOMode WriteMode ReadWriteMode AppendModeReadModeplusPtrnullPtr nullFunPtrminusPtrcastPtrToFunPtrcastPtrcastFunPtrToPtr castFunPtralignPtrshowOct showIntAtBaseshowIntshowHex showHFloat showGFloatAlt showGFloat showFFloatAlt showFFloat showEFloatshowBin readSignedreadOctreadIntreadHex readFloatreadDecreadBin readParen readLitChar lexLitChar lexDigitslexText.ParserCombinators.ReadPReadS showFloatfromRat floatToDigits byteSwap64 byteSwap32 byteSwap16 bitReverse8 bitReverse64 bitReverse32 bitReverse16 GHC.UnicodeGeneralCategoryUppercaseLetterTitlecaseLetter SurrogateSpacingCombiningMarkSpace PrivateUseParagraphSeparator OtherSymbolOtherPunctuation OtherNumber OtherLetterOpenPunctuation NotAssignedNonSpacingMarkModifierSymbolModifierLetter MathSymbolLowercaseLetter LineSeparator LetterNumber InitialQuoteFormat FinalQuote EnclosingMark DecimalNumberDashPunctuationCurrencySymbolConnectorPunctuationControlClosePunctuationtoUppertoTitletoLowerisUpperisSymbolisSpace isPunctuationisPrint isOctDigitisLowerisLatin1 isHexDigitisDigit isControl isAsciiUpper isAsciiLowerisAscii isAlphaNumisAlphageneralCategoryGHC.Bits FiniteBits finiteBitSizecountLeadingZeroscountTrailingZerosBitszeroBitsxor unsafeShiftR unsafeShiftLtestBitshiftRshiftLshiftsetBitrotateRrotateLrotatepopCountisSigned complementBit complementclearBit bitSizeMaybebitSize.&..|.toIntegralSizedtestBitDefaultpopCountDefault bitDefault showSignedodd numeratorlcmgcdeven denominator^^^%GHC.Charchr GHC.STRefSTRef writeSTRef readSTRefnewSTRefrunSTShowSshows showString showParen showLitCharshowChar intToDigitzipWith3zipWithzip3unzip3unzip takeWhiletaketailsplitAtspanscanr1scanrscanl1scanl'scanlreverse replicaterepeatlookuplastiterate'iterateinitheadfoldl1' dropWhiledropcyclebreak!! Data.Maybe maybeToListmaybemapMaybe listToMaybe isNothingisJust fromMaybefromJust catMaybes Data.Boolbool Data.Functiononfix& Data.Functorvoid<&><$>$>uncurryswapcurry makeVersion GHC.IO.UnsafeunsafePerformIOunsafeInterleaveIOunsafeDupablePerformIOGHC.MVarMVar tryTakeMVar tryReadMVar tryPutMVartakeMVarreadMVarputMVarnewMVar newEmptyMVar isEmptyMVarsubtract MonadPlusmplusmzero Alternativesomemany<|>emptywhenuntilordliftM5liftM4liftM3liftM2liftMliftA3liftAflipconstasTypeOfap=<<<**>$!GHC.Err undefinederrorWithoutStackTraceerrorstimesIdempotentMonoid SomeException&&not||bytestring-0.11.3.1Data.ByteString.Internal ByteString text-1.2.5.0Data.Text.InternalText/case-insensitive-1.2.1.0-1LEAVqUYxX3Bxyzjs1jrhMData.CaseInsensitive.InternalCIFoldCase'hashable-1.4.3.0-CSBed1iAoiu6nZsrwz9eo1Data.Hashable.ClassHashable4unordered-containers-0.2.19.1-DHMK0qbheN6IF9nyoj4sKlData.HashMap.InternalHashMapData.HashSet.InternalHashSet showAsTextchar7intDecint64Dec doubleDecintersperseFoldMapunsnoc consAndUnsnoceof'megaparsec-9.6.1-JBxb9ZPC5mDEdcnxpEGZTpText.Megaparsec.Classchar'string' takeWhileP takeWhile1Psatisfydecimalfloatsep1sepEnd1 notFollowedByhexDigitprohibitionLiftingOponeOfinSetfirstIdentifierCharnotFirstIdentifierCharsymbolicBinOpCharopCharprohibitedOpCharprohibitionLiftingOpChar