Caml1999I031Y s1Diffing_with_keys(with_pos8!a@@A#pos @#intA@@@۰;utils/diffing_with_keys.mli`}`}@@A$data @ `} `}@@#B@@A@Y@@@@@`}}`}@@@@)@A@(with_pos@$listI!a@@@@ ? @@@@@@@@@/a0a@@IC@(mismatch8!l@!r@$diff@@C$Name#pos@W@@@UdVd@@oE#got@&stringO@@@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 @@@@DA@&change8!l@!r@$diff@@C&Change@@@@@kk@@\$Swap#pos@@@@@@@@@ll-@@]%first@@@@l.l<@@^$last@@@@l=lI@@(_@@llK@@,`$Move $name!@@@@#mLY$mLe@@=a#got"@1@@@/mLf0mLn@@Ib(expected#@=@@@;mLos  ?M  @XT@@@#P-1Diffing_with_keys0 u|NY:f3-Stdlib__Uchar0*Ujmyc6]]W.Stdlib__String0I3UK# +Stdlib__Set0.z9FX+Stdlib__Seq05"g1<)b+Stdlib__Map0kZ,ҷ'V/Stdlib__Hashtbl04$*uկdD.Stdlib__Format0{hXsHW#ȼ.Stdlib__Either0&]XF.Stdlib__Digest0aI]2t*x4%".Stdlib__Buffer0K ɦb+Z8)#KH"&Stdlib0yӶ~*$Misc0,Z3XI`3y/'Diffing0n$2d:ī6 8CamlinternalFormatBasics0cEXy`}?`}@А!a@0EDDEEEEE@D8@@@A@A@G@B@@@Q`}}R`}@@@@i@@AU`}V`}@@BA@8@A#pos @@@@d`}e`}@@|A$data @(C@n`}o`}@@B@@A@Y@@@@@#@@@ @x`}@@Ш@г#int`}`}@@$;@@'@C@>@#@`}@@Ш@А!a%H`}#@@)@C@L@'@@A@D@@DC@(with_posaa@б@г=$listaa@А!a@B@0@{]@Aaa@@@ @@@ @@гY$listaa@г(with_posaa@А!a&!aa@@@,@@@( @@@@@@- @@@+@@0.@@@a"@@C@$@@6A((mismatchBcc@А!l@0@Kf8@@ @@à@@@C@A@GGG@BBB@@@ce2j@@@@(D@Acc@@А!r@"c c@@ʠА$diff@-*c+c@@@85 @C$Name#pos@@@@Ȱ?d@d@@WE#got@@@@˰KdLd@@cF(expected@@@@ΰWdXd@@oG+types_match@4@@@Ѱcd dd0@@{H@@gdhd1@@I$Type#pos@$@@@԰xe2?ye2G@@J#got@D@װe2He2O@@K(expected@pD@۰e2Pe2\@@L&reason@oD@߰e2]e2i@@M@@e24@@N@@A@YYY@@@@@@@@@@@rrdd@@ttod@@Ш@гw#intdd@@@@@D@@~@zzud@@Ш@г}&stringdd @@ϰ@@@D@@@{d@@Ш@г&stringdd@@@@@D@@@d+@@Ш@г$boold,@@@@@D@@@@@@e26e2:@@e2B@@Ш@г#inte2Ce2F@@ @@@D@@@e2K@@Ш@А!le2Le2N@@@D@@@e2X@@Ш@А!r'$e2Y%e2[@@@D@,@@,e2c@@Ш@А$diff63e2d@@@D@:@@@@@@A@'@@032233333@9@A('@A(&changeCAjBj@А!l@0HGGHHHHH@P`"8@@@@@@@C@A@GGG@BBB@@@_j`o@)ocaml.docq ] This specialized version of changes introduces two composite changes: [Move] and [Swap] nglloi@@@@@@@@@[@Arjsj@@А!r@1}j~j@@(А$diff@<jj@@3@8D @C&ChangeSE@%E@E@@@@@@kk@@\$Swap#pos@c@@@h@@@ @@!ll-@@]%first@'@@@$l.l<@@^$last@3@@@'l=lI@@_@@llK@@`$Move $name!@H@@@*mLYmLe@@a#got"@@@@-mLfmLn@@ b(expected#@@@@0mLomL{@@c@@mLNmL|@@d&Insert$#pos%@@@@3n}n}@@.e&insert&@E@6 n}!n}@@8f@@$n}%n}@@@@@@@@A@@0CBBCCCCC@@A@&prefix͠PqQq@б@г&&Format)formatter^q_q@@ @@@ 0`__`````@(@A@@б@г.&changeoqpq@А!l@ D@ {q|q@@А!r@ D@ #qq@@А$diff@ D@ /qq@@@-# @@@ 8q-@@г$unitqq @@ @@@ F@@@@@ I@@@O@@ LR @@@q@@C@@@R&DefineDs  s  @@Т!DFs  s  @УР'Diffing$Defs'Diffings  s  @ 0@{/@A@@"eq@"eqs  )s  +@( @8@@@AP@@@ @@@@s  $s  3@@A@ D@@Aг $units  / @@# @@ @@$leftE8@@@A@@@@@.@@@@'Diffing@A@%rightE8@@@A@@@@@@@@AA@$diffE8@@@A@@@@@@@@ CA@%stateE8@@@A@@@@@@@@DA@@?@БA($diffG(u ; B)u ; F@@8@@@AAo$left@@@ v%right@@@ }$diff@@@ @@@ @@@@Fu ; =Gu ; k@@@@^F@@Aг(mismatchPu ; c @г"!D$Yu ; JZu ; P@@+0XWWXXXXX@@_]A@YWA@USA@QOA@@@EF8@@@AM@@H@ H@ @@@@-@@@*@A@@г=!D?{u ; R|u ; Y@@F"@@гA!DCu ; [u ; a@@J-@@@].u ; ID@@F@@0@/@AGF@A($leftHv l sv l w@@8@@@Ac$left@@@ @@@@@@@v l nv l @@@@G@@Aг(with_posv l  @г!Dv l zv l @@0@a,8@@@A3@@I@I@ @@@@!@@@@A @@@- !@@#@@0@ @A$#@A(%rightIw  w  @@8@@@A%right@@@@@@@@@@w  w  @@@@H@@Aг(with_posw   @г!Dw  w  @@0@>ic,8@@@A3@@J@J@@@@@!@@@@A @@@- !@@#@@0@ @A$#@A(0composite_changeJz  z  @@8@@@AڠW$left@@@*^%right@@@+e$diff@@@,@@@0@@@@.z  /z  @ϐ? Composite changes and patches ;y  !D@dz  ez  @@G@@гB!DDoz  pz  @@K!@@@^"sz  E@@GD@0qppqqqqq@#@AHG@A(%patchK{  {  @@8@@@A~@@@E@@@G@@@@{  {  /@@@@J@@Aг$list{  + @г0composite_change{  {  *@@0@R)8@@@A0@@L@HL@D@@@@ @@@@A @@@*  @@"@@0@ @A#"@A(&changeL~ I P~ I V@@8@@@A&change4@@@T@@@U-@@@V@@@W@@@\@@@@~ I K~ I ~@y0 Atomic changes } 1 3} 1 H@@@@@@@@@K@@Aг,'Diffing.~ I p@г/$left~ I Z~ I ^@@70@Z|H8@@@AO@@M@]M@S@@@@.+@@@A @@г?%right ~ I _~ I d@@G@@гD$unit~ I e~ I i@@L@@гI$diff!~ I j"~ I n@@Q)@@@g*%~ I YM@@OL@0#""#####@+@APO@б*ParametersM0@  1@  @Б&weight>A  ?A  @б@г&changeIA  JA  @@ @@@t0KJJKKKKK@T@A@@г#intXA  YA  @@ @@@u@@@@@v@@@cA   @@zL@ @@$testnB  oB  @б@г%state!D|B  }B  @@ @@@w0~}}~~~~~@4I"@A@@б@г$leftB  B  @@ @@@x@@б@гɠ%rightB  B  @@ @@@y @@гs&resultB  B  @г $unitB  B  @@ @@@z7@@г$diffB  B  @@ @@@{E@@@%@@@~KB  $@@@2 @@O5'@@@D@@RG*@@@X@@U[-@@@B  0@@M@2@@[&updateC  C  @б@г6&changeC  C  @@ @@@0@t@A@@б@г8%state!D C   C  @@ @@@@@гH%state!D C   C  '@@ @@@$@@@@@'@@@-@@*0 @@@ !C  @@ 8N@@@0(key_left ,E ) 1 -E ) 9@б@гo$left!D :E ) ; ;E ) A@@ @@@0 < ; ; < < < < <@La"@A@@г&string IE ) E JE ) K@@ @@@@@@@@@@@ TE ) - @@ kO@ @@)key_right _F L T `F L ]@б@г%right!D mF L _ nF L f@@ @@@0 o n n o o o o o@4L"@A@@г٠&string |F L j }F L p@@ @@@@@@@@@@@ F L P @@ P@ @@@R+@$@q@j@@9@@0        @#;@A 0        @I@A @   G q v@@@ @  @0        @O@A@&SimpleN I x  I x @@Т@@ Р*Parameters I x  I x @0        @l_@X@@t@mC@@@- Q@A@@Б$diff J   J  @б@г%state!D J   J  @@ @@@0        @/@A@@б@г $list J   J  @г5$left!D J   J  @@ @@@@@@@@@" @@б@г $list J   J  @гV%right!D !J   "J  @@ @@@>@@@@@@C @@г%patch 3J   4J  @@ @@@P@@@@@S@@@8@@V? @@@\@@Y_@@@ DJ  @@ [R@@@_@x@@0 F E E F F F F F@z @A0 I H H I I I I I@@A NI x  OK  @@@@@@ TI x z@ @@4.A@A@A@RLA@A@A@8@@@@ S@@@0 g f f g g g g g@@@1@@@  @A0 q p p q q q q q@@A vs  6 wM  @@y0 w v v w w w w w@@A@@@ }s  @@@ G )A@@YA@JA@=@@@ T@@@0        @@ΑA@A@A@A@@ztA@A@A@A@+%A@A@~uN@G@@c@\2@@@@@@ ~@@@mW@@@@D4@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 㠠1* Atomic changes <@-./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-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"-c L M 3/home/barsac/ci/builds/workspace/step-by-step-build - @0kxGSr҃d60 ^ ] ] ^ ^ ^ ^ ^@ \@@5Build_path_prefix_map0xөvĠ8CamlinternalFormatBasics0cEXy