Caml1999I037 { ,Stdlib__Char!t3;@@@A$charB@@@@@@@(char.mli\\@@A@@@A@$code4@@@@#intA@@@@@ݐ)%identityAA @@@__ @@-A@@#chr5@@@@0@@@@@@.c/c@@@B@@'escaped6@?@@@&stringQ@@@@@@Ch::Dh:V@@UC@@'compare7@\@@@@@@@G@@@@@@@@[s\s@@mD@@%equal8@@@@@@@@$boolE@@@@@@@@ty  uy  &@@E@@Ӡ%Ascii9@#min?@@@@R ; =R ; K@@F@@#max@@@@@U i kU i y@@G@@(is_validA@@@@5@@@@@@Z  Z  @@H@@(is_upperB@@@@H@@@@@@^[]^[x@@I@@(is_lowerC@@@@[@@@@@@bb,@@J@@)is_letterD@@@@n@@@@@@ff@@K@@+is_alphanumE@@@@@@@@@@i!#i!A@@L@@(is_whiteF@@@@@@@@@@ll@@M@@(is_blankG@@@@@@@@@@ss@@+N@@*is_graphicH@*@@@@@@@@@,wdf-wd@@>O@@(is_printI@=@@@@@@@@@?{@{+@@QP@@*is_controlJ@P@@@@@@@@@R~dfS~d@@dQ@@(is_digitK@c@@@@@@@@@eDFfDa@@wR@@,digit_to_intL@v@@@d@@@@@@xy@@S@@,digit_of_intM@s@@@@@@@@@@@T@@,is_hex_digitN@@@@,@@@@@@dfd@@U@@0hex_digit_to_intO@@@@@@@@@@}}@@V@@6lower_hex_digit_of_intP@@@@@@@@@@LNLv@@W@@6upper_hex_digit_of_intQ@@@@@@@@@@@@X@@)uppercaseR@@@@@@@@@@@@Y@@)lowercaseS@@@@@@@@@@@@Z@@@@N  eh@[@@@/lowercase_ascii:@@@@@@@@@@jjj@@&\@@/uppercase_ascii;@%@@@)@@@@@@'(@@9]@@+seeded_hash<@"@@@@@@@+@@@@@@@@?ZZ@Z{@@Q^@@$hash=@@@@=@@@@@@QYYRYl@@c_@@*unsafe_chr>@L@@@f@@@@@)%identityAAN@@@hi@@z`@@@j:.,Stdlib__Char0ym7~txv&Stdlib0-i8Q"L{v;8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037p4 `>80C,Stdlib__Char*ocaml.text&_none_@@A G Character operations. Characters are the elements of [string] and [bytes] values. Characters represent bytes, that is an integer in the range \[[0x00];[0xFF]\]. Some of the functions of this module interpret the characters in the range \[[0x00];[0x7F]\] as the characters of the ASCII character set. (char.mliP77Xx@@@@@@3@@@@@@#intA;@@#intA@@@@@;@A@$charB;@@$charA@@@@@A@A@&stringQ;@@&stringA@@@@@G@@@%bytesC;@@%bytesA@@@@@M@@@%floatD;@@%floatA@@@@@S@@@$boolE;@@%falsec@@]@$trued@@c@@@A@@@@@d@A@$unitF;@@"()e@@n@@@A@@@@@o@A@ #exnG;@@@A@@@@@s@@@#effH;@@O@A@A@@@@@@|@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@@@@%arrayJ;@@R@A%arrayA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@ @@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A!=ocaml.warn_on_literal_pattern%@&@0Division_by_zero]#@@@A+ . .@+End_of_file\#$@@@A366@'FailureY#,@'@@A<??@0Invalid_argumentX#5@0@@AE$H#H@-Match_failureV#>@@=@9@;@@a@@AV5Y4Y@)Not_foundZ#O@@@A^=a<a@-Out_of_memoryW#W@@@AfEiDi@.Stack_overflow^#_@@@AnMqLq@.Sys_blocked_io_#g@@@AvUyTy@)Sys_error[#o@j@@A^]@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@A; {1:characters Characters} ZZ@@@@@@A+!tA\\@@;@@@A@@@@@@@\\@)ocaml.docɐ & An alias for the type of characters. ]]@@@@@@@A@@@@@Aг$char\@@ 3@+;@@@A3@@@@@@@@'$@@@A &@@(%퐠$#@##@@@#@#@@32@$code__@б@гɠ$char__@@ @@@3@[U@A@@гޠ#int _ _@@ @@@@@@@@@@)%identityAA @@@__ @e [code c] is the byte corresponding to [c]. If [c] is an ASCII character this corresponds to its encoding in ASCII or UTF-8. )`  *aX@@@@@@@BA@@@v>@@@@@@8#chrAcBc@б@г#intLcMc@@ @@@3NMMNNNNN@Qf?@A@@г($char[c\c@@ @@@@@@@@@@@fc @ Return the character with the given integer code. @raise Invalid_argument if the argument is outside the range \[[0x00];[0xFF]\]. sdtf8@@@@@@@B@@@@@@@@@1'escapedh:>h:E@б@гb$charh:Hh:L@@ @@@3@J_8@A@@гk&stringh:Ph:V@@ @@@@@@@@@@@h:: @  Return a string representing the given character, with special characters escaped following the lexical conventions of OCaml. All characters outside the ASCII printable range \[[0x20];[0x7E]\] are escaped, as well as backslash, double-quote, and single-quote. iWWm,q@@@@@@@C@@@А@@@@@@1ݐ N {1:predicates Predicates and comparisons} See also the {!Ascii} module. ossq@@@@@@3@CX1@A'comparess@б@гE!tss@@ @@@@@б@гT!tss@@ @@@)@@гࠐ#int ss@@ @@@6@@@@@9@@@%@@<( @@@s@d # The comparison function for characters, with the same specification as {!Stdlib.compare}. Along with the type [t], this function [compare] allows the module [Char] to be passed as argument to the functors {!Set.Make} and {!Map.Make}. The order is compatible with {!Char.code}. (t)w  @@@@@@@AD@@@t<@@@@@@[%equal?y  @y  @б@г!tJy  Ky  @@ @@@3LKKLLLLL@to8@A@@б@г!t[y  \y  @@ @@@@@г$boolhy  "iy  &@@ @@@@@@@@!@@@'@@$* @@@vy  @ / The equal function for chars. @since 4.03 z ' '{ I [@@@@@@@E@@@@@@@@@C ' {1:ascii_characters ASCII characters} } ] ]} ] @@@@@@3@Uj1@A%Ascii-BN  N  @[@@Бǐ; {1:characters Characters} P  P  9@@@@@@3@#@A#minR ; AR ; D@г$charR ; GR ; K@@ @@@@@@R ; =@)4 [min] is ['\x00']. S L NS L g@@@@@@@F@@@9@@@@@@6#maxU i oU i r@гڠ$char U i uU i y@@ @@@3@pI6@A@@@U i k @`4 [max] is ['\x7F']. $V z |%V z @@@@@@@=G@@@p8@@@@@@!FE; {1:predicates Predicates} BX  CX  @@@@@@3A@@AAAAA@3F1@A(is_validNZ  OZ  @б@г&$charYZ  ZZ  @@ @@@@@г$boolfZ  gZ  @@ @@@'@@@@@*@@@qZ   @ x [is_valid c] is [true] if and only if [c] is an ASCII character, that is a byte in the range \[{!min};{!max}\]. ~[  \!Y@@@@@@@H@@@@@@@@@I(is_upper^[a^[i@б@гm$char^[l^[p@@ @@@3@b]8@A@@гd$bool^[t^[x@@ @@@@@@@@@@@^[] @ [is_upper c] is [true] if and only if [c] is an ASCII uppercase letter ['A'] to ['Z'], that is a byte in the range \[[0x41];[0x5A]\]. _y{` @@@@@@@I@@@ې@@@@@@1(is_lowerbb@б@г$charb b$@@ @@@3@J_8@A@@г$boolb(b,@@ @@@@@@@@@@@b @L [is_lower c] is [true] if and only if [c] is an ASCII lowercase letter ['a'] to ['z'], that is a byte in the range \[[0x61];[0x7A]\]. c-/dz@@@@@@@)J@@@\$@@@@@@1)is_letter'f(f@б@г$char2f3f@@ @@@343344444@J_8@A@@г$boolAfBf@@ @@@@@@@@@@@Lf @ 6 [is_letter c] is {!is_lower}[ c || ]{!is_upper}[ c]. YgZg@@@@@@@rK@@@m@@@@@@1+is_alphanumpi!'qi!2@б@гH$char{i!5|i!9@@ @@@3}||}}}}}@J_8@A@@г?$booli!=i!A@@ @@@@@@@@@@@i!# @ސ 9 [is_alphanum c] is {!is_letter}[ c || ]{!is_digit}[ c]. jBDjB@@@@@@@L@@@@@@@@@1(is_whitell@б@г$charll@@ @@@3@J_8@A@@г$boolll@@ @@@@@@@@@@@l @'  [is_white c] is [true] if and only if [c] is an ASCII white space character, that is one of tab ['\t'] ([0x09]), newline ['\n'] ([0x0A]), vertical tab ([0x0B]), form feed ([0x0C]), carriage return ['\r'] ([0x0D]) or space [' '] ([0x20]), mqo@@@@@@@M@@@7@@@@@@1(is_blank ss@б@гڠ$char ss@@ @@@3@J_8@A@@гѠ$boolss@@ @@@@@@@@@@@'s @p [is_blank c] is [true] if and only if [c] is an ASCII blank character, that is either space [' '] ([0x20]) or tab ['\t'] ([0x09]). 4t5ub@@@@@@@MN@@@H@@@@@@1*is_graphic!KwdjLwdt@б@г#$charVwdwWwd{@@ @@@3XWWXXXXX@J_8@A@@г$boolewdfwd@@ @@@@@@@@@@@pwdf @ [is_graphic c] is [true] if and only if [c] is an ASCII graphic character, that is a byte in the range \[[0x21];[0x7E]\]. }x~y @@@@@@@O@@@@@@@@@1(is_print"{{@б@гl$char{{#@@ @@@3@J_8@A@@гc$bool{'{+@@ @@@@@@@@@@@{ @ / [is_print c] is {!is_graphic}[ c || c = ' ']. |,.|,b@@@@@@@P@@@ڐ@@@@@@1*is_control#~dj~dt@б@г$char~dw~d{@@ @@@3@J_8@A@@г$bool~d~d@@ @@@@@@@@@@@~df @K [is_control c] is [true] if and only if [c] is an ASCII control character, that is a byte in the range \[[0x00];[0x1F]\] or [0x7F]. @@@@@@@(Q@@@[#@@@@@@110 # {1:decimal_digits Decimal digits} -.B@@@@@@3,++,,,,,@CX1@A(is_digit$9DJ:DR@б@г$charDDUEDY@@ @@@@@г$boolQD]RDa@@ @@@'@@@@@*@@@\DF @ [is_digit c] is [true] if and only if [c] is an ASCII decimal digit ['0'] to ['9'], that is a byte in the range \[[0x30];[0x39]\]. ibdj@@@@@@@R@@@}@@@@@@I,digit_to_int%@б@гX$char @@ @@@3@b]8@A@@гm#int@@ @@@@@@@@@@@ @ [digit_to_int c] is the numerical value of a digit that satisfies {!is_digit}. Raises [Invalid_argument] if {!is_digit}[ c] is [false]. @@@@@@@S@@@Ɛ@@@@@@1,digit_of_int&@б@г#int@@ @@@3@J_8@A@@г$char@@ @@@@@@@@@@@ @7 Z [digit_of_int n] is an ASCII decimal digit for the decimal value [abs (n mod 10)]. 6@@@@@@@T@@@G@@@@@@1 # {1:hex_digits Hexadecimal digits} 8:8b@@@@@@3@CX1@A,is_hex_digit'%dj&dv@б@г$char0dy1d}@@ @@@@@г$bool=d>d@@ @@@'@@@@@*@@@Hdf @ [is_hex_digit c] is [true] if and only if [c] is an ASCII hexadecimal digit ['0'] to ['9'], ['a'] to ['f'] or ['A'] to ['F'], that is a byte in one of the ranges \[[0x30];[0x39]\], \[[0x41];[0x46]\], \[[0x61];[0x66]\]. UVM{@@@@@@@nU@@@i@@@@@@I0hex_digit_to_int(l}m}@б@гD$charw}x}@@ @@@3yxxyyyyy@b]8@A@@гY#int}}@@ @@@@@@@@@@@} @ڐ [hex_digit_to_int c] is the numerical value of a digit that satisfies {!is_hex_digit}. Raises [Invalid_argument] if {!is_hex_digit}[ c] is [false]. "J@@@@@@@V@@@@@@@@@16lower_hex_digit_of_int)LRLh@б@г#intLkLn@@ @@@3@J_8@A@@г$charLrLv@@ @@@@@@@@@@@LN @# u [lower_hex_digit_of_int n] is a lowercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. wy@@@@@@@ W@@@3@@@@@@16upper_hex_digit_of_int*@б@гܠ#int  @@ @@@3        @J_8@A@@г堐$char  @@ @@@@@@@@@@@ # @l v [upper_hex_digit_of_int n] is an uppercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)].  0 " 1c@@@@@@@ IX@@@| D@@@@@@1 R Q> {1:casing Casing transforms}  N O@@@@@@3 M L L M M M M M@CX1@A)uppercase+ Z [@б@г 2$char e f@@ @@@@@г ?$char r s@@ @@@'@@@@@*@@@ } @Ɛ [uppercase c] is [c] with ASCII characters ['a'] to ['z'] respectively mapped to uppercase characters ['A'] to ['Z']. Other characters are left untouched.   @@@@@@@ Y@@@ @@@@@@I)lowercase,  @б@г y$char  @@ @@@3        @b]8@A@@г $char  @@ @@@@@@@@@@@  @ [lowercase c] is [c] with ASCII characters ['A'] to ['Z'] respectively mapped to lowercase characters ['a'] to ['z']. Other characters are left untouched.   Ld@@@@@@@ Z@@@ 琠@@@@@@1@@@y@Y2@@@]@=@@@hA@!@@[@;@@u@U.@@@oH@@3        @\qJ@A-l N   eh@@Z " r ASCII character set support. These functions give meaning to the integers \[[0x00];[0x7F]\] of the {{:https://en.wikipedia.org/wiki/ASCII#Character_set}ASCII character set}. Since the UTF-8 encoding of Unicode has the same encoding and character semantics (U+0000 to U+001F) for these bytes, the functions can be safely used on elements of UTF-8 encoded [string] and [bytes] values. However the functions only deal with ASCII related matters. For example the notion of Unicode whitespace is much larger than the ASCII whitespace determined by {!Char.Ascii.is_white}. @since 5.4     M  @@@@@@@ "N  @@/lowercase_ascii. ,jn -j}@б@г $char 7j 8j@@ @@@3 9 8 8 9 9 9 9 9@@wd@D/@@@pI@)@@t@T-@ @@X@%@@r@?@@@lE@@@@WV@VV@@@V@V@S@A>=@@г I$char |j }j@@ @@@E@@@K@@HN@@@ jj @А @ Use the equivalent {!Ascii.lowercase} instead. @since 4.03   @@@@@@@ \@@@ @@@@@@g/uppercase_ascii/  @б@г $char  @@ @@@3        @8@A@@г $char  @@ @@@@@@@@@@@  @  @ Use the equivalent {!Ascii.uppercase} instead. @since 4.03   *<@@@@@@@ ]@@@ ) 񐠠@@@@@@1  5 {1:hashing Hashing}  >> >X@@@@@@3        @CX1@A+seeded_hash0 Z^ Zi@б@г 堐#int Zl Zo@@ @@@@@б@г u!t !Zs "Zt@@ @@@)@@г #int .Zx /Z{@@ @@@6@@@@@9@@@%@@<( @@@ <ZZ@ A seeded hash function for characters, with the same output value as {!Hashtbl.seeded_hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.MakeSeeded}. @since 5.1  I|| JFW@@@@@@@ b^@@@  ]@@@@@@[$hash1 `Y] aYa@б@г !t kYd lYe@@ @@@3 m l l m m m m m@to8@A@@г M#int zYi {Yl@@ @@@@@@@@@@@ YY @ ΐ An unseeded hash function for characters, with the same output value as {!Hashtbl.hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.Make}. @since 5.1  mm ->@@@@@@@ _@@@  @@@@@@1  "/* @@ @G@@@@@@3        @CX1@A*unsafe_chr2  @б@г #int  @@ @@@@@г $char  @@ @@@'@@@@@*@@)%identityAA ɠ@@@  @@ `@@@@6@ B J@ H the GNU Lesser General Public License version 2.1, with the  CK DKN@ H special exception on linking described in the file LICENSE.  ILOO JLO@ H  OM PM@ H************************************************************************ UN VN5@ H* Character operations. Characters are the elements of [string] and [bytes] values. Characters represent bytes, that is an integer in the range \[[0x00];[0xFF]\]. Some of the functions of this module interpret the characters in the range \[[0x00];[0x7F]\] as the characters of the ASCII character set.  [<* {1:characters Characters}  '* An alias for the type of characters.  * [code c] is the byte corresponding to [c]. If [c] is an ASCII character this corresponds to its encoding in ASCII or UTF-8.  ; * Return the character with the given integer code. @raise Invalid_argument if the argument is outside the range \[[0x00];[0xFF]\].  * Return a string representing the given character, with special characters escaped following the lexical conventions of OCaml. All characters outside the ASCII printable range \[[0x20];[0x7E]\] are escaped, as well as backslash, double-quote, and single-quote.  O* {1:predicates Predicates and comparisons} See also the {!Ascii} module.  $* The comparison function for characters, with the same specification as {!Stdlib.compare}. Along with the type [t], this function [compare] allows the module [Char] to be passed as argument to the functors {!Set.Make} and {!Map.Make}. The order is compatible with {!Char.code}.  H 0* The equal function for chars. @since 4.03  (* {1:ascii_characters ASCII characters} ՠ s* ASCII character set support. These functions give meaning to the integers \[[0x00];[0x7F]\] of the {{:https://en.wikipedia.org/wiki/ASCII#Character_set}ASCII character set}. Since the UTF-8 encoding of Unicode has the same encoding and character semantics (U+0000 to U+001F) for these bytes, the functions can be safely used on elements of UTF-8 encoded [string] and [bytes] values. However the functions only deal with ASCII related matters. For example the notion of Unicode whitespace is much larger than the ASCII whitespace determined by {!Char.Ascii.is_white}. @since 5.4 Z<* {1:characters Characters} 5* [min] is ['\x00']. 5* [max] is ['\x7F']. ^<* {1:predicates Predicates} C y* [is_valid c] is [true] if and only if [c] is an ASCII character, that is a byte in the range \[{!min};{!max}\].  * [is_upper c] is [true] if and only if [c] is an ASCII uppercase letter ['A'] to ['Z'], that is a byte in the range \[[0x41];[0x5A]\]. Ġ * [is_lower c] is [true] if and only if [c] is an ASCII lowercase letter ['a'] to ['z'], that is a byte in the range \[[0x61];[0x7A]\]. ~ 7* [is_letter c] is {!is_lower}[ c || ]{!is_upper}[ c]. 8 :* [is_alphanum c] is {!is_letter}[ c || ]{!is_digit}[ c].   * [is_white c] is [true] if and only if [c] is an ASCII white space character, that is one of tab ['\t'] ([0x09]), newline ['\n'] ([0x0A]), vertical tab ([0x0B]), form feed ([0x0C]), carriage return ['\r'] ([0x0D]) or space [' '] ([0x20]),  * [is_blank c] is [true] if and only if [c] is an ASCII blank character, that is either space [' '] ([0x20]) or tab ['\t'] ([0x09]). f * [is_graphic c] is [true] if and only if [c] is an ASCII graphic character, that is a byte in the range \[[0x21];[0x7E]\].  0* [is_print c] is {!is_graphic}[ c || c = ' ']. ڠ * [is_control c] is [true] if and only if [c] is an ASCII control character, that is a byte in the range \[[0x00];[0x1F]\] or [0x7F].  $* {1:decimal_digits Decimal digits} y * [is_digit c] is [true] if and only if [c] is an ASCII decimal digit ['0'] to ['9'], that is a byte in the range \[[0x30];[0x39]\]. @ * [digit_to_int c] is the numerical value of a digit that satisfies {!is_digit}. Raises [Invalid_argument] if {!is_digit}[ c] is [false].  [* [digit_of_int n] is an ASCII decimal digit for the decimal value [abs (n mod 10)].  $* {1:hex_digits Hexadecimal digits}  * [is_hex_digit c] is [true] if and only if [c] is an ASCII hexadecimal digit ['0'] to ['9'], ['a'] to ['f'] or ['A'] to ['F'], that is a byte in one of the ranges \[[0x30];[0x39]\], \[[0x41];[0x46]\], \[[0x61];[0x66]\]. ` * [hex_digit_to_int c] is the numerical value of a digit that satisfies {!is_hex_digit}. Raises [Invalid_argument] if {!is_hex_digit}[ c] is [false].  v* [lower_hex_digit_of_int n] is a lowercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. Ԡ w* [upper_hex_digit_of_int n] is an uppercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. ?* {1:casing Casing transforms} s * [uppercase c] is [c] with ASCII characters ['a'] to ['z'] respectively mapped to uppercase characters ['A'] to ['Z']. Other characters are left untouched. : * [lowercase c] is [c] with ASCII characters ['A'] to ['Z'] respectively mapped to lowercase characters ['a'] to ['z']. Other characters are left untouched.  A* Use the equivalent {!Ascii.lowercase} instead. @since 4.03 6 A* Use the equivalent {!Ascii.uppercase} instead. @since 4.03 6* {1:hashing Hashing} ՠ * A seeded hash function for characters, with the same output value as {!Hashtbl.seeded_hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.MakeSeeded}. @since 5.1  * An unseeded hash function for characters, with the same output value as {!Hashtbl.hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.Make}. @since 5.1 D#*/*) = The following is for system use only. Do not call directly.  II I@@?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o0stdlib__Char.cmi"-c  Z/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores/stdlib @@0h=]U3        @ @@8CamlinternalFormatBasics0%FU(Q/Tu&Stdlib0-i8Q"L{v; 0ym7~txv@0ym7~txvAa3m  @  !@7@@  2@ɐ@3bR@@@ / U@@@@@#] $@@@@] j @@ y @C}@  @6@@$^@@ߐ t @@@@@g[@@P@@