Caml1999I037_  1Diffing_with_keys(with_pos;!a@@A#pos@@#intA@@@ް;utils/diffing_with_keys.mli`}`}@@A@$data@@ `} `}@@#B@@@A@Y@@@@@`}}`}@@@@)@@A@(with_pos@$listK!a@@@@ ? @@@@@@@@@/a0a@@IC@@(mismatch;!l@!r@$diff@@C$Name#pos@@W@@@UdVd@@oE@#got@@&stringQ@@@cddd@@}F@(expected@@@@@odpd@@G@+types_match@@$boolE@@@}d ~d0@@H@@@dd1@@I@$Type#pos@@@@@e2?e2G@@J@#got@@ae2He2O@@K@(expected@@de2Pe2\@@L@&reason @@ge2]e2i@@M@@@e24e2j@@N@@@A@YYY@@@@@@@c @@@@D@A@&change;!l@!r@$diff@@C&Change"@@@@@kk@@\@$Swap##pos$@@@@@@@@@@@@ll-@@]@%first%@@@@@l.l<@@^@$last&@@@@@l=lI@@*_@@@llK@@.`@$Move'$name(@@@@@%mLY&mLe@@?a@#got)@@3@@@1mLf2mLn@@Kb@(expected*@@?@@@=mLo>mL{@@Wc@@@AmLNBmL|@@[d@&Insert+#pos,@@T@@@Rn}Sn}@@le@&insert-@@Zn}[n}@@tf@@@^n}_n}@@xg@&Delete.#pos/@@q@@@oopo@@h@&delete0@@woxo@@i@@@{o|o@@j@@@A@YYY@@@@@@@j @@@@[@A@&prefix*Format_doc'printer۠!l@!r@$diff@@@@@@@@qq@@C@@Ӡ&Define@!D$left;@@@A@@@@@s s *@@@@'Diffing@@A@%right;@@@A@@@@@ @@@A@A@$diff;@@@A@@@@@@@@C@A@%state;@@@A@@@@@@@@D@A@@$diff;@@@A 2$left@@@̠%right@@@ˠ $diff@@@@@@@@@@u 2 4u 2 b@@@@F@A@$left;@@@Aؠ!$left@@@@@@@@@@ v c e v c @@@@$G@A@%right;@@@A5%right@@@@@@@@@@w  w  @@@@8H@A@0composite_change;@@@AI$left@@@ԠO%right@@@ӠU$diff@@@@@@@@@@>z  ?z  @@@@XI@A@%patch;@@@A/,@@@@@@@@@@R{  S{  &@@@@lJ@A@&change;@@@A'Diffing&changel@@@۠]@@@ڠ$unitF@@@٠@@@@@@@@@@{~ @ B|~ @ u@@@@K@A@*Parameters&weight@8@@@@@@@@@A  A  @@L@@$test@%state@@@@B@@@@B@@@&Stdlib&resultH@@@F@@@@@@@@@@@@@B  B  @@M@@&update@>@@@@%state@@@%state@@@@@@@@C  C  @@N@@(key_left@$left@@@@@@@@@E  $E  B@@O@@)key_right@%right@@@@@@@@@F C GF C g@@P@@@@@ w yG h m@ Q@@Ӡ&Simple@@$diff@8%state@@@@C$left@@@@@@@O%right@@@@@@@@@@@@@@@@<J  =J  @@VR@@@@@I o qAK  @ZS@@@@@DsEM  @^T@@@@_e1Diffing_with_keys0%h8Lc\5-Stdlib__Uchar056uf4[_.Stdlib__String0Vê>*Format_doc0]mWϓ:Mݠ'Diffing0ɞyM۠8CamlinternalFormatBasics0%FU(Q/Tu5Build_path_prefix_map0z HkGs@@@Caml1999T037P )750C1Diffing_with_keys*ocaml.text&_none_@@A ? When diffing lists where each element has a distinct key, we can refine the diffing patch by introducing two composite edit moves: swaps and moves. [Swap]s exchange the position of two elements. [Swap] cost is set to [2 * change - epsilon]. [Move]s change the position of one element. [Move] cost is set to [delete + addition - epsilon]. When the cost [delete + addition] is greater than [change] and with those specific weights, the optimal patch with [Swap]s and [Move]s can be computed directly and cheaply from the original optimal patch. ;utils/diffing_with_keys.mliP77^y{@@@@@@3@@@@@@#intA;@@@A@@@@@:@A@$charB;@@A@@@@@>@A@&stringQ;@@ A@@@@@B@@@%bytesC;@@ A@@@@@F@@@%floatD;@@A@@@@@J@@@$boolE;@@%falsec@@T@$trued@@Z@@@A@@@@@[@A@$unitF;@@"()e@@e@@@A@@@@@f@A@ #exnG;@@@A@@@@@j@@@#effH;@@O@A@A@@@@@@s@@@,continuationI;@@Q@@P@B@A@nY@@@@@@@@@%arrayJ;@@R@A@A@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern @ @0Division_by_zero]#@@@A  @+End_of_file\#$@@@A@'FailureY#,@'@@A!$$@0Invalid_argumentX#5@0@@A*$-#-@-Match_failureV#>@@=@9@;@@a@@A;5>4>@)Not_foundZ#O@@@AC=F<F@-Out_of_memoryW#W@@@AKENDN@.Stack_overflow^#_@@@ASMVLV@.Sys_blocked_io_#g@@@A[U^T^@)Sys_error[#o@j@@Ad^g]g@:Undefined_recursive_modulea#x@@w@s@u@@h@@Auoxnx@:Continuation_already_takenb#@@@A}wv@&Stdlib@AxA+(with_posA`}`}@А!a@3@;@@@A@A@G@B@@@`}}`}@@@@@@@A`}`}@@BA@;@A#pos@@|@@@`}`}@@A@$data@@)B@`}`}@@B@@@A@Y@@@@@#@@@ @#`}@@@Ш@г#int`}`}@@$<@@'@@?@#@#`}@@@Ш@А!a%I`}#@@)@@M@'@@A@D@@԰DC@(with_posaa@б@гg$listaa@А!a@B@3@|]@Aaa@@@ @@@ @@г$listaa@г(with_posaa@А!a&!aa@@@,@@@( @@@@@@- @@@+@@0.@@@)a"@@AC@@$@@6A+(mismatchB5c6c@А!l@3<;;<<<<<@Kf;@@@@@@@C@A@GGG@BBB@@@TcUe2j@@@@mD@@AXcYc@@А!r@#ccdc@@ˠА$diff@.ncoc@@@;6 @C$Name#pos@@X@@@°dd@@E@#got@@[@@@Űdd@@F@(expected@@g@@@Ȱdd@@G@+types_match@@g@@@˰d d0@@H@@@dd1@@I@$Type#pos@@@@@ΰe2?e2G@@J@#got@@C@Ѱe2He2O@@K@(expected@@pC@հe2Pe2\@@L@&reason @@oC@ٰe2]e2i@@M@@@e24@@N@@@A@YYY@@@@@@@@@@@#rrdd@@@#ttod@n@@Ш@гw#intdd@@@@@@@~@#zzud@t@@Ш@г}&string dd @@а@@@@@@#{d@z@@Ш@г&stringd d@@@@@@@@#(d+@@@Ш@г$bool1d,@@@@@@@@@@@#9e26:e2:@\@#@e2B@@@Ш@г#intIe2CJe2F@@ @@@@@@#Re2K@@@Ш@А!lYe2LZe2N@@@@@@#ae2X@@@Ш@А!r(he2Yie2[@@@@-@@#pe2c@@@Ш@А$diff7we2d@@@@;@@@@@@A@'@@3wvvwwwww@:@A('@A+&change!Cjj@А!l@3@Qa";@@ @@ @@ @C@A@GGG@BBB@@@jo@)ocaml.doc ] This specialized version of changes introduces two composite changes: [Move] and [Swap] glli@@@@@@@@@[@@Ajj@@ А!r@3jj@@+А$diff@>jj@@6@;F @C&Change"UD@%D@D@@@@@@kk@@\@$Swap##pos$@@@@@@@@@@@@ll-@@]@%first%@@@@@ l.l<@@)^@$last&@@@@@#l=lI@@5_@@@ l!lK@@9`@$Move'$name(@@@@@&1mLY2mLe@@Ja@#got)@@@@@)=mLf>mLn@@Vb@(expected*@@@@@,ImLoJmL{@@bc@@@MmLNNmL|@@fd@&Insert+#pos,@@3@@@/^n}_n}@@we@&insert-@@D@2hn}in}@@f@@@ln}mn}@@g@&Delete.#pos/@@R@@@6}o~o@@h@&delete0@@D@9oo@@i@@@o@@j@@@A@YYY@@@@@@@@@@#kk@@г(mismatchk@А!lkk@@А!rkk@@А$diff&kk@@@)k@@@@@#Πΰll@@#Раl!@@@Ш@В@гӠ#intl#l&@@E@@@гؠ#intl)l,@@P@@@Q@@@@T@@#ܠܰl3@@@Ш@гߠ&stringl5l;@@c@@@@!f@@#lA@@@Ш@г堐&stringlC@@t@@@@$w@@@@@# mLP mLT@@#mL]@@@Ш@г蠐&stringmL^mLd@@@@@@'@@##mLi@@@Ш@г#int,mLj-mLm@@@@@@*@@#5mLw@@@Ш@г#int>mLx@@@@@@-@@@@@#Fn}Gn}@@#Mn}@@@Ш@г#intVn}Wn}@@ɰ@@@@0@@#_n}@@@Ш@А!rְfn}@@@@3@@@@@#mono@@#to@@@Ш@г#int}o~o@@@@ @@7@@#o@@@Ш@А!lo@@ @@:@ @@@@@A@@@@@@@@3@ @A@&prefixnqq@г*Format_doc'printer*Format_docqq@ qq@@г>&changeqq@А!l@D@3@?O@Aqq@@А!r@D@qq@@А$diff@D@qq@@@/% @@@#q/@@@L @@@)?@@@qB@@C@@D@@/&DefineDs s @ T@@Т!DFs s @УР'Diffing$Defs'Diffing$s %s @ (s )s @@3)(()))))@_6@A @@"eqz@"eq8s 9s "@+ @;@@@A@@@ @@@@Es Fs *@@A@^D@@@Aг $unitOs & @@$ @@ @@$leftE;@@@A@@@@@5@@@@'Diffing@@A@%rightE;@@@A@@@@@ @@@A@A@$diffE;@@@A@@@@@@@@C@A@%stateE;@@@A@@@@@@@@D@A@@D@БA+$diffG|u 2 9}u 2 =@@;@@@AS{$left@@@ %right@@@ $diff@@@ @@@ @@@@u 2 4u 2 b@@@@F@@@Aг(mismatchu 2 Z @г"!Du 2 Au 2 B@)u 2 Cu 2 G@@@13@@jhA@caA@^\A@YWA@@@E@M;@@@AU@@@ @ @@@@4@@@1@A @@гD!Du 2 Iu 2 J@Ku 2 Ku 2 P@@@S)@@гN!Du 2 Ru 2 S@Uu 2 Tu 2 X@@@]:@@@p;u 2 @W@@Y@@3@<@AZY@A+$leftHv c jv c n@@;@@A$left@@@ #@@@ %@@@@v c ev c @@@@'G@@@Aг(with_posv c x @г!D"v c q#v c r@&v c s'v c w@@@#3&%%&&&&&@t2;@@@A:@@@ ,@ "@@@@(@@@%@A@@@4 (@@*@@343344444@ @A+*@A+%rightIBw  Cw  @@;@@A͠@%right@@@ 1@@@ 3@@@@Rw  Sw  @@@@kH@@@Aг(with_pos\w   @г!Dfw  gw  @jw  kw  @@@#3jiijjjjj@Evp2;@@@A:@@@ :@ 0@@@@(@@@%@A@@@4 (@@*@@3xwwxxxxx@ @A+*@A+0composite_changeJz  z  @@;@@ A $left@@@ ?%right@@@ @$diff@@@ A@@@ E@@@@z  z  @? Composite changes and patches y  y  @@@@@@@@@I@@@Aг,&changez  @г0!Dz  z  @7z  z  @@@?3@aN;@@@AV@@@ P@ >@@@@63@@%@A@@гF!Dz  z  @Mz  z  @@@U@@гP!Dz  z  @Wz  z  @@@_.@@@r/z  Y@@[XYX@XX@@@X@X@@3@;@Agf@A+%patchK{  {  @@;@@A@@@ Y@@@ [@@@@"{  #{  &@@@@;J@@@Aг$list,{  " @г0composite_change4{  5{  !@@332233333@j);@@@A1@@@ l@ X@@@@!@@@@A@@@+ !@@#@@3A@@AAAAA@ @A$#@A+&changeLO~ @ GP~ @ M@@;@@A<&changeb@@@ q#@@@ r@@@ s@@@ t@@@ y@@@@n~ @ Bo~ @ u@ʐ0 Atomic changes |} ( *}} ( ?@@@@@@@@@K@@@Aг-'Diffing~ @ g~ @ n@4~ @ o@@г6$left~ @ Q~ @ U@@>3@bO;@@@AW@@@ @ p@@@@63@@%@A@@гG%right~ @ V~ @ [@@O@@гL$unit~ @ \~ @ `@@T @@гQ$diff~ @ a~ @ e@@Y*@@@o+~ @ PU@@WԐUT@TT@@@T@T@@3@7@Acb@*ParametersM@ w @ w @Q@Б&weightA  A  @б@г&changeA  A  @@ @@@ 3@a@A@@гՠ#int A   A  @@ @@@ @@@@@ @@@ A   @@ %L@@ @@$test B   B  @б@г%state!D 'B   (B  @  +B   ,B  @@@@@@ 3 . - - . . . . .@:O(@A @@б@г?$left =B   >B  @@ @@@ @@б@г %right LB   MB  @@ @@@  @@г&result YB   ZB  @г $unit cB   dB  @@ @@@ 7@@г$diff qB   rB  @@ @@@ E@@@%@@@ K }B  $@@@2 @@ O5'@@@D@@ RG*@@@X@@ U`-@@@ B  0@@ M@@2@@[&update C   C  @б@гP&change C   C  @@ @@@ 3        @t@A@@б@г%state!D C   C  @  C   C  @@@@@@  @@г%state!D C   C  @  C   C  @@@@@@ 0 @@@@@ 3$ @@@9@@ 6< @@@ C  @@ N@@@@<(key_left E  ( E  0@б@г$left!D E  2 E  3@  E  4 E  8@@@@@@ 3        @^s(@A @@г ՠ&string E  < E  B@@ @@@ @@@@@ @@@ E  $ @@ .O@@ @@)key_right !F C K "F C T@б@г%right!D 0F C V 1F C W@  4F C X 5F C ]@@@@@@ 3 7 6 6 7 7 7 7 7@:X(@A @@г &string DF C a EF C g@@ @@@ @@@@@ @@@ OF C G @@ gP@@ @@@pI@B@}@vF@?@@3 Y X X Y Y Y Y Y@#A@A 3 \ [ [ \ \ \ \ \@g@A a@ w  bG h m@@@ d@ w y@3 b a a b b b b b@m@A@&SimpleN qI o x rI o ~@ S@@Т@@ Р*Parameters I o  I o @3  ~ ~     @~@w@@{@tD@@@.@A@@Б$diff J   J  @б@г%state!D J   J  @  J   J  @@@@@@ 3        @4@A @@б@г =$list J   J  @г$left!D J   J  @  J   J  @@@@@@ # @@@ @@@ (@@б@г d$list J   J  @г%right!D J   J  @  J   J  @@@@@@ J @@@ @@@ O@@г%patch J   J  @@ @@@ \@@@@@ _ @@@>@@ bJ @@@h@@ ep@@@ J  @@ 6R@@@@k@@@3        @ @A3 # " " # # # # #@@A (I o  )K  @@@@@@ .I o q@ @@A@:4A@A@A@*$A@A@i@e@@@@@@3 @ ? ? @ @ @ @ @@@@ϑ0@@@@A3 J I I J J J J J@@A Os - PM  @@F3 P O O P P P P P@'@AM@@@ Vs@@@  A@  5@ -A@A@j@b@@\@@@3 b a a b b b b b@:e@]A@A@  A@A@@A@~xA@<6A@A@nhA@5/A@|@u@@y@rB@@@,@%@@|@@@k%@@@@C@A@ H************************************************************************ A@@ A@L@ H  BMM BM@ H OCaml  C C@ H  D D3@ H Florian Angeletti, projet Cambium, Inria Paris  E44 E4@ H  F F@ H Copyright 2021 Institut National de Recherche en Informatique et  G G@ H en Automatique.  H Hg@ H  Ihh Ih@ H All rights reserved. This file is distributed under the terms of  J J@ H the GNU Lesser General Public License version 2.1, with the  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@ @* When diffing lists where each element has a distinct key, we can refine the diffing patch by introducing two composite edit moves: swaps and moves. [Swap]s exchange the position of two elements. [Swap] cost is set to [2 * change - epsilon]. [Move]s change the position of one element. [Move] cost is set to [delete + addition - epsilon]. When the cost [delete + addition] is greater than [change] and with those specific weights, the optimal patch with [Swap]s and [Move]s can be computed directly and cheaply from the original optimal patch.  ^* This specialized version of changes introduces two composite changes: [Move] and [Swap] ? * Composite changes and patches D1* Atomic changes }@-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I%utils"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c 3 4 =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@0ֲ+LýAk|3 N M M N N N N N@ L@@5Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu<0ɞyM۠ x0%h8Lc\50]mWϓ:Mݠ$Misc0ob]6>Vê>&Stdlib0Lku]8_٠.Stdlib__Buffer08APF< t..Stdlib__Digest0l!LHgErζ .Stdlib__Domain0:M;׉<O$Ġ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ܚ#G7m|/Stdlib__Hashtbl0ѱN][/!+Stdlib__Map0L5xE|O0~,J-.Stdlib__Result06 ]/J+Stdlib__Seq0nwzG&amg+Stdlib__Set0\$;7 .Stdlib__String0 B Ͱ  @pz ' @@@ Q m@˕ > @@@  @@°  @y@z R D@@ے@ X @%uQ@p@ E @.@@P@@