From 8267e43b209c60474cd45b721ab068265c92b05b Mon Sep 17 00:00:00 2001 From: Trimetral Date: Tue, 23 Apr 2019 15:46:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B0=D1=80=D0=B0=D0=BB=D0=BB=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20(=D1=85=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/comivoyar/v15/.suo | Bin 99328 -> 98304 bytes .vs/comivoyar/v15/Server/sqlite3/storage.ide | Bin 602112 -> 602112 bytes comivoyar/Program.cs | 333 ++++++++++++++++-- comivoyar/bin/Debug/comivoyar.pdb | Bin 15872 -> 24064 bytes .../comivoyar.csproj.CoreCompileInputs.cache | 2 +- comivoyar/obj/Debug/comivoyar.exe | Bin 8192 -> 12288 bytes comivoyar/obj/Debug/comivoyar.pdb | Bin 15872 -> 24064 bytes 7 files changed, 314 insertions(+), 21 deletions(-) diff --git a/.vs/comivoyar/v15/.suo b/.vs/comivoyar/v15/.suo index 3318954c9d4a1b9b748d3cfa06e9de848a152870..6fc58e289f58731fbc9e3214d467d6a3c8c3abfd 100644 GIT binary patch delta 6399 zcmd^DeQ;C95q~Q`+lmmzHpci1+X4fI*s|mZe=xuZTP6e(BWxFF#(;$+3*iqr(i337 zwUT~>mK20G^=sOOP(#urZ5m?%N-1p}CV#Y@Nd`Jh+i5c-)6UQ~Nz*nHH$WY`yRu|t zY#`~-8HSu@b$7da`|jTD{`TJa_9ys!34WbMAw){DAY@UK`y->Hqs)yX%099FKLCqS zqsUA0h29^&aP=aXS*XQ5iaij*Aw?ZltM&1RiFXOR;`YJ-4#njKRHBB=gi9@n<`6wh z6yzR5l$i14-xSy z;;H6QX~C88)1u2bzwgYl-_SC0NqF;R^bC;nC03zACc-6=+H8+)bD2r~88LF^&8B_| zkvhUppgNss8qstjdeK4#(J`V_BDNJ>vq*imPbDGzpN3sUdE))V#_uUJ;N{>cWi15i z^Tn?dE1=52WR)^4z+$4Oh}aqvZc-Ikxbb~r_7U;pjuSmc^gPiIh+ZIik%*Vcx<8`& zWuhNP`cY$C2Z?v`M*a!Qyt`~R1IdyCPM|lnL4LahX5o?a+0c(esddwV7BR|h$Tc2L zFF%tR@X5#A_o&JYxkcdmHm5HNc#$t*hJ9)97fKnQ9A5mmF zg^C;jug$8vo2Ljlcr|m)bRmzXJ^%XDX@jyZDhpy5$E0k4SJ0c&BOA>i;+33X%&!(f zLE~%HizW|W$IyfyWi?JPgHraBf!ylpf}Tcjs7ALArCcBM;!ti6d<(sKqwr1i=J&)u zNh*bSHNO^3Y8@OvuOOr*qpOe=mBPU9Q#4`4xk z0T$@YbC~@siH{ORVRaU@8CGAR95kKwn3DrM~;j`|~sXubU zk_dquX$nWjD|2dZ>$L}RZ1xt5w@unAwRf8ICX-gOdnAutlAIk54*}nTta0(mic-Uk z;v$Z%1gtAtfdkFy_)c}MSo83z#-Lc90U{??`LPzz%DNs%#m1t6#mFw~t=ti)YMLOslIW#vvEq+*e`G|g8|N6T`Ix^Y9k*Xw6I`}M2jc2jQJ_mi|FAij)OE+~zYhu}fR!QWeTX^O4TJr;~ zO8KY?ns8))4vu)v;z*l8JQ%BizV=~pZ!AYXp8`d)ZU&^G%GE3GoGe?BOpa01c~IPQ zqs%DxD?ufjQ=o%qhsLh4UEsOM|4fBCc`y~e5*&7mnt?xv1r_?@6^otnYAhlm3I!DB|Bjs@G-~T`O zhGO~fG4o%b4z__w+Q}Ql68`YntO##+*G0v`+GXAAEN&I^cndbYWFV`gmSX}5Bgjxqfh0=(^eQ%$mg3OT~2q< z-Ozv|^`6@d*=&OiGQBM09oh+*c4F}K8W@BOfwzj^c4W&0ksJR4>@3a3lKWe88oE4^ zybimEp21BT7%n`w9Hwjgr-A&A_#{kRI*=zu}_Vm+Lb zKX8Cj{&hX!`Gg#mhi&n-Ul>;T4u+bVjgTq(I-mq+?n)8g z`GC%I=8u;3x*$#Nv(eGj-3(Ibqy^T(od|{JtpKvo1^O8#eZ>P+W!?L%u6E~6SC{N_ zL3tW~#qi!TX>Gz%3Red&eW9$7piR#0hWsji=?#rb^`#X{bxZf^^<}ow(#q0e`vc{+ zVuRjlE4Jv$%Zu&XELMxvV6CuP4c(^0U?OEw*XgP&tK>lmeDd6lpbP12lp?N&X2`e; z{tbNWij)vNZ6>urI4mF82M?)jOPd@{sflL2(ezdUX&lf zm*x5;=-;>qpDs^pU49cwjdaB@wHa-L*R{&oW;aKaGK)6Kowvbvhb$*%6dTt)|~ delta 5326 zcmeHLZ%|a%6@O>`YXU)WYpjEc4h!)QiGs7)wGkE8 zKdGj6EOI8?Hi{zJn5NbOFJUdFabq$ar*%>?!{kG!9sTHZrcNePI%qB1bC+FQ1hlkH zCm(WWe(#-o&bjBFd(S!V-S<462+y&Ib}3Z|HLW0I5Un7L`Tc&*20~`v_x=fBz*NQJ zn6DQONLTj^!*g7ig)NE}xQHW)YWyrQPxV9M-Nn7ieQ*Isl#5U97Gt@cCB&wie-Yis zPCA}NyC^z1!y6PlL-(v8&H3D;WI`k%J;>M4eQ}UZp}T<)LHHNxbLfc9A@K3My@#pY z%_&tu&MLaECR7vF5bT6kgdn#*W+g(!lG5Kov(m`8{v#1WDRBB7ta?S*!QuS`!M7BX{ma@sgeUB7>67|r{5 zTAc(JHmko3Z;N-XY#i z1>T?6GW)@*z+k+WutpuqEZQJg}iPop&t+IEU`!HoUz;#L?sjG@;m82I>yIH5%rSYAApB_`nwE z_rq}<(YL{m(4FdsL+D=8raDNPX1uqgDvIY6&zsN`;6Zm5v#>*+B zfG&d_ZIUGa-4F#GnKt}9QG&P7ok@d~d2j?rGASDKX+)^l0#Q1Q?w_4PZH6(58{&mL zVbGUDk;4S4yr0p+Jgq?dXIJqFXo(_3;k}%yz;K?}q2W-1?p!~Z(Y>rK zs)z)T24O2s}|*il<7` zsXs4r((NZVPTJf34$Nm!gqvZ6*BQcbsUovut%Yuj zB;(~BALE$AD0YTx?5=-+zSqSG!=7Tu?koZw{80{)S4^o*FV*H(Q=>942L_cB0iaU3;q8tF+oY=ekPXa(b<>w7_HJ0~y`qKo8S8UX zJxh#-wbK@ST##sGqr5hs7y{>ZL-p03JHD3ia(-a>n2Or28&BdU~{~zct~}C|R!=Oaryx zg9M<|;O+UlnJbQ+*63G$d3Zp;PhVe(aXUO-{c?C2*pF>b)Mma?SQk9d>*#o=zSBJ1m$Q2rH-}TSZscVgpz=o^nE!zZn^Mv(uQhY;jlf9jSUSO6cD2l14X}KpH zrCZt2R(QU%0zP{R%UAO+bl%vNCNNL8+-6}Lg+|YpyNq48LY&B#$c{9_a^`CU9lP!f zx$YvjchkQJz9p~C==uw+zX^86J1N}bZ6aQ*yb*F^r)(+nG=rzp2|m`_1WoZ}G-@9u zog`R=Vqt|~Bj@{^P!>=daKb+zp+G7$nu?4EH1?Z{@t+eQoMo3>P#L?mq;_ac&PVRb6c;_;^QS&671@ZUGeaVBlzH5U}{pEJVr zQ_vPYv#92e{Kpl2uA5EeIg-hkZw~EsXempWg^t!qkJ@Nx-qpCLd9Q2u{FQQ zVXBvMwiXx*bI6K0r`YuBt&8f-g>{xB!Y)YyP$GpYKkoPV6DR29r2WQ&UDn{=8F8SMUai_k*G(GIzX8vF;feqN diff --git a/.vs/comivoyar/v15/Server/sqlite3/storage.ide b/.vs/comivoyar/v15/Server/sqlite3/storage.ide index e05a02c2b957a9e44e642b9ec504d09c1c9caa37..402702ecd4d6529f1fb9555ee76c54276e75a22a 100644 GIT binary patch delta 4578 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 delta 2164 zcmcgtc~DbF7=JJ1y}Sn`AwcAitBR0FDsqa773C-@6w6^nz!Jz4QcQv&fJ%TQL;=UC z-~-ayTBT6DpdO5-qt+2Y6cw}{XdMy8QffUYR;XvSyTOc(Q~&5c-I?FpZ+CzDec#*t z?XG6PQ#0VX56k5Re&>3re zO7|iNGN=@DE7TiT3j&@V3>?~)F`=w0)U``i;PK~`GtWA*RMT%wuIHo;dbS*|Zt^9j}S=vXY;kSyG=dzlnHdPyyLG*s_dTwRu~X;8Za zMc1lTc}$P>BKp@U(lF6r$Cak+O*ti7$_W%jLD~?=b{iDY2F4?iz_zB@dCs((njL{J zR!HTlJcMB2>>P!xKrwBxQjw(;%d!FO0RRpF3vRVQzCtROs-y)Jq!Soq_yN~e^nKNP zrJn(dX<`B{5w6IWt70fQK3SloR(MDh`57yzlr)jq5&<($rIgCEQqqLbS&jvQ2-yfi zm|a*VP-10f_IxT&g$v(sBJzL^LC&uoK(D;<0OP(u9s*l>PQD|ZqjvDdau^8WY7Y`M z`^F-ujQlKuFa-vAS34jGMz<9>Fzz_g*9(H3?VMgM8km8j$p~Rf*vWuB+lii9=w7-K z44eOTJxgDu(P$3kqLd=f|f5%71&M1Z#I zmQ-YefoeRgTb-)pqs@DS1KPluo56lTRttbyG+I9+q(dArrM>Zk+BG+6M!>0i z(bYaX7F3n)%nlCuY4?po-?fef2aOJ2OqixgEnrs#^-tksHNR-9xV<%&9F+-PM)$RE zi;O@HNMs*j%XloWROV7kZFlZ6iHoX|W*zIZkGO*JcHJp*@r%25w<^^k`SINg`mTgN zq2fhapl4rG(GAM_$;dCw5uF}itrcuJ7v9VLJSkWyIwzU6OO-bzW`-cSlZuE=a+-1T zO{F#dk4huWO7s6uQY!&kAi*lb@>;EgrCEw!+q_eX@vjB_4lTYV#j8MimgAui{B7wS zoM4t7XIy$S9N&^2kFbT(`_vIik5T2=x~OoJfws_LYm4LcDf(pHag9C^d`udw6qz*W z=jMHcF;%>`iM=nsi*?AiC)Yh(?`tMiWQ>#2R^(2lckm5iB_I2u%EBGx4%8-^R}@s* z0OIvT_1reVMGPgV&%cn2I7^QhRl2drAcPPPY${wN%Y(H(p;X1cWncXAu(8-^ z!t%t!?9mV6HoDfVTiQAJS7<*cq>$6UN1)4`xicj}8#Az$dJ!8@VS6I%%O%vTeZ zVuX-kyUNhUCKnn<2(lfuNM>pc`=8-klRYxE zC3O=qt+!4Rny^Nep;(!yq^JdQZFZe2>FA>Ai)zaLt1uhX}g-7K5u_#1cO z3-?-kJFv((h)!1L0&@#CWn*Id{97CWU}queT_ YIRFosDG@jc5@0as1UH_xCBxBw0B Points = new List(); Random random = new Random(); int pCount = 0; - Write("Введите количество точек: "); - Retry: + Retry: + string elems = ReadLine(); + //WriteLine($"Elems: {elems}"); try { - pCount = Convert.ToInt32(ReadLine()); + if (elems == "w") { GetEnables(); goto Retry; } + else + { + pCount = Convert.ToInt32(elems); + if (pCount < 4) { WriteLine("Слишком маленькое число"); goto Retry; } + } } catch { Write("Введите натуральное число: "); goto Retry; } - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); for(int i = 0; i < pCount; i++) { @@ -41,7 +61,7 @@ namespace komvo WriteLine("\n"); int matr = Points.Count; - double[,] Matrix = new double[matr, matr]; + Matrix = new double[matr, matr]; for (int i = 0; i < Points.Count; i++) for (int j = i; j < Points.Count - 1; j++) @@ -54,6 +74,18 @@ namespace komvo for (int j = 0; j < matr; j++) Write("{0:00.00} ", Matrix[i, j]); WriteLine(); } + + + + //------------------------------------------------------------------------------------------------- + #region Permuts + + if (!EnabledPerm) goto EndOfPerm; + + Stopwatch stopwatchPERM = new Stopwatch(); + stopwatchPERM.Start(); + + List resroutesPerm = new List(); int[] toSwap = new int[Points.Count - 1]; for (int i = 0; i <= toSwap.Length - 1; i++) toSwap[i] = i + 2; @@ -72,38 +104,207 @@ namespace komvo if (first) { opLength = prevResult; + foreach (int i in route) opRoute += i + ";"; first = false; + resroutesPerm.Add(new ResultRoute(opLength, opRoute)); } - - if(opLength > prevResult) + else if(opLength > prevResult) { opLength = prevResult; opRoute = string.Empty; foreach (int i in route) opRoute += i + ";"; + + resroutesPerm.Clear(); + resroutesPerm.Add(new ResultRoute(opLength, opRoute)); + } + else if(opLength == prevResult) + { + opRoute = string.Empty; + foreach (int i in route) opRoute += i + ";"; + resroutesPerm.Add(new ResultRoute(opLength, opRoute)); } } + stopwatchPERM.Stop(); + + WriteLine("\n\nPerms"); + WriteLine("1;{1}1 - оптимальный маршрут длинной {0:00.00}\nИз {2} маршрутов при {3} точках\nПосчитано за {4} \n\n", + opLength, opRoute, Fact(Points.Count - 1), Points.Count, stopwatchPERM.Elapsed); + //WriteLine($"Count = {resroutesPerm.Count}"); + EndOfPerm: - //int[] toSwapNew = new int[Points.Count - 1]; - //for (int i = 0; i <= toSwap.Length - 1; i++) toSwapNew[i] = i + 2; - //foreach (int i in toSwapNew) Write(i + " "); + #endregion + //------------------------------------------------------------------------------------------------- + #region Alg + if (!EnabledAlg) goto ExitFromAlg; + + Stopwatch stopwatchNAl = new Stopwatch(); + stopwatchNAl.Start(); + int[] routesC = new int[Points.Count - 1]; + for (int i = 0; i < routesC.Length; i++) routesC[i] = i + 2; + + routesC[routesC.Length - 1]--; + + End = false; + bool firstIt = true; + double routeLen = 0; + string routeName = string.Empty; + int routesCount = 0; + + for (int numb = 0; numb < Math.Pow(Points.Count - 1, Points.Count - 1); numb++) + { + routesC[routesC.Length - 1] += 1; + Adjustment(ref routesC); + if (!End) + { + if (CheckDoubles(routesC)) + { + //Write($"{CountLength(Matrix, routesC):00.00} ;"); + routesCount += 1; + if (firstIt) + { + routeLen = CountLength(Matrix, routesC); + foreach (int i in routesC) routeName += i + ";"; + firstIt = false; + } + else + { + if (routeLen > CountLength(Matrix, routesC)) + { + routeLen = CountLength(Matrix, routesC); + routeName = string.Empty; + foreach (int i in routesC) routeName += i + ";"; + } + } + } + } + else { goto EndOfAlg; } + } + stopwatchNAl.Stop(); + + EndOfAlg: + WriteLine("Algoritm"); + WriteLine($"1;{routeName}1 - оптимальный маршрут длинной {routeLen:00.00}\n" + + $"Из {routesCount} маршрутов при {Points.Count} точках\nПосчитано за {stopwatchNAl.Elapsed} \n\n"); + + ExitFromAlg: + + #endregion + + + //------------------------------------------------------------------------------------------------- + #region AlgParall + + if (!EnabledAlgPar) goto EndOfAlgParExiting; + + Stopwatch stopwatchNAlPar = new Stopwatch(); + stopwatchNAlPar.Start(); + routesCPar = new int[Points.Count - 1]; + for (int i = 0; i < routesCPar.Length; i++) routesCPar[i] = i + 2; + + routesCPar[routesCPar.Length - 1]--; + + End = false; + string routeNamePar = string.Empty; + + for (int numb = 0; numb < Math.Pow(Points.Count - 1, Points.Count - 1); numb++) + { + routesCPar[routesCPar.Length - 1] += 1; + Adjustment(ref routesCPar); + if (!End) + { + if (CheckDoubles(routesCPar)) + { + if (CountThreads != null) + if (CountThreads.IsAlive) CountThreads.Join(); + + routesCPars[index] = new int[routesCPar.Length]; + routesCPar.CopyTo(routesCPars[index], 0); + + index++; + if (index > 9) index = 0; + + //Write($"\n{index} : "); + //foreach (int i in routesCPars[index]) Write($"{i}; "); + CountThreads = new Thread(() => CountLengthParall()); + CountThreads.Start(); + + //if (CountThreads1 == null) + //{ + // CountThreads1 = new Thread(() => CountLengthParall()); + // CountThreads1.Start(); + //} + //else if (!CountThreads1.IsAlive) + //{ + // CountThreads1 = new Thread(() => CountLengthParall()); + // CountThreads1.Start(); + //} + //else + //{ + // CountThreads1.Join(); + // CountThreads1 = new Thread(() => CountLengthParall()); + // CountThreads1.Start(); + //} + } + } + else { goto EndOfAlgPar; } + } + stopwatchNAlPar.Stop(); + + EndOfAlgPar: + + CountThreads.Join(); + double ddd = routesResultsPar[0]; + for(int i = 0; i < 10; i++) + { + if (ddd > routesResultsPar[i] & routesResultsPar[i] != 0) ddd = routesResultsPar[i]; + } + + WriteLine("Paralle Alg"); + //foreach (double d in routesResultsPar) Write($"{d:00.00}; "); WriteLine(); + WriteLine($"Result: {ddd:00.00}; Time: {stopwatchNAlPar.Elapsed}"); + EndOfAlgParExiting: - WriteLine("\n\n1;{1}1 - оптимальный маршрут длинной {0:00.00}\nИз {2} маршрутов при {3} точках\nПосчитано за {4} мс\n\n", - opLength, opRoute, Fact(Points.Count-1), Points.Count, stopwatch.ElapsedMilliseconds); - stopwatch.Stop(); + #endregion - Write("Ещё раз? (y/n)"); + + Write("Ещё раз? (y/n) "); + Exiting: char answer = ReadKey().KeyChar; - if (answer == 'y') + switch (answer) { - Points.Clear(); - WriteLine("\n"); - goto Beginig; + case 'y': + Write("\nВведите количество точек больше 3 (w для изменения алгоритммов): "); + goto Beginig; + case 'n': + goto End; + default: + goto Exiting; + } + + End: + WriteLine("\nРабота окончена"); + Thread.Sleep(1000); + } + + public static void Adjustment(ref int[] route) + { + for (int i = route.Length - 1; i >= 0; i--) + { + if (route[i] > route.Length + 1) + { + if (i == 0) { End = true; /*WriteLine("\nEnded");*/ break; } + else + { + route[i] = 2; + route[i - 1] += 1; + } + } } } @@ -127,6 +328,98 @@ namespace komvo return result; } + public static void CountLengthParall() + { + double result = 0; + int indexL = index - 1; + if (indexL == -1) indexL = 9; + //WriteLine($"Index: {index}"); + int[] localRoute = routesCPars[indexL]; + + for (int j = 0; j < localRoute.Length - 1; j++) + { + if (j == 0) result += Matrix[0, localRoute[j] - 1]; + else if (j == localRoute.Length - 1) + { + result += Matrix[localRoute[j - 1] - 2, localRoute[j] - 2]; + result += Matrix[0, localRoute[j] - 2]; + } + else + { + result += Matrix[routesCPars[indexL][j - 1] - 2, routesCPars[indexL][j] - 2]; + } + } + + if(routesResultsPar[index] == 0 || routesResultsPar[index] > result) routesResultsPar[index] = result; + //index++; + //if (index > 9) index = 0; + } + + public static bool CheckDoubles(int[] array) + { + int count = array.Length; + //for (int i = 0; i < count; i++) Write(array[i] + " "); WriteLine(); + for(int i = 0; i < count; i++) + { + for(int j = i + 1; j < count; j++) + { + //WriteLine($"{array[i]}[{i}] == {array[j]}[{j}] = {array[i] == array[j]}"); + + if (array[i] == array[j]) + { + return false; + } + } + } + return true; + } + + public static bool YesOrNo(char ch) + { + switch (ch) + { + case 'y': + return true; + case 'n': + return false; + default: + return false; + } + } + + public static void GetEnables() + { + + GetEnables: + Write("\nКакие алгоритмы включить (например yny: Perm: Enbled, Alg: Disabled, AlgPar: Enabled)? : "); + + char[] check = ReadLine().ToCharArray(); + + for (int i = 0; i < check.Length; i++) + { + if (i == 0) EnabledPerm = YesOrNo(check[i]); + if (i == 1) EnabledAlg = YesOrNo(check[i]); + if (i == 2) EnabledAlgPar = YesOrNo(check[i]); + } + //EnabledAlgPar = false; + + WriteLine($"Permutation Alg Enabled = {EnabledPerm}\nFull Alg Enabled = {EnabledAlg}\nFull Alg Parallel Enabled = {EnabledAlgPar}"); + + if (EnabledPerm == EnabledAlg & EnabledAlg == EnabledAlgPar & EnabledAlgPar == false) { WriteLine("Неверно введены параметры"); goto GetEnables; } + Write("\nВведите количество точек больше 3 (w для изменения алгоритммов): "); + } + + public class ResultRoute + { + double length; + string route; + public ResultRoute(double len, string route) + { + length = len; + this.route = route; + } + } + public partial struct Point { public int X { get; set; } diff --git a/comivoyar/bin/Debug/comivoyar.pdb b/comivoyar/bin/Debug/comivoyar.pdb index 7408d413f1ee69cd40be577c00a6a8241e990719..7368c7924d5e36d4ac7ef83dba095d6138293536 100644 GIT binary patch literal 24064 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 J7C6Bz@V`uH$GiXl literal 15872 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 diff --git a/comivoyar/obj/Debug/comivoyar.csproj.CoreCompileInputs.cache b/comivoyar/obj/Debug/comivoyar.csproj.CoreCompileInputs.cache index aa00d1d..37d3024 100644 --- a/comivoyar/obj/Debug/comivoyar.csproj.CoreCompileInputs.cache +++ b/comivoyar/obj/Debug/comivoyar.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -47ece507326a3ff73baa3b75434a7d03f71dc86d +f0bb9fd207d6bf2b73407612668fe4a2e047ddf3 diff --git a/comivoyar/obj/Debug/comivoyar.exe b/comivoyar/obj/Debug/comivoyar.exe index a82829912b1ddcde62544bcc4189b15c6eb69b5f..3222897c1deb6c809c04a6d49cc4e2f1088513d3 100644 GIT binary patch literal 12288 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 delta 3252 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 diff --git a/comivoyar/obj/Debug/comivoyar.pdb b/comivoyar/obj/Debug/comivoyar.pdb index 7408d413f1ee69cd40be577c00a6a8241e990719..7368c7924d5e36d4ac7ef83dba095d6138293536 100644 GIT binary patch literal 24064 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 J7C6Bz@V`uH$GiXl literal 15872 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