Standard Jet DBnb` Ugr@?~1y0̝cßFNa7fޜ((,`o{6߱LnC53y[/|*|)yf_Љ$g'DeFx -bT4.0Gdv Y ValuesS  Y  e Y uY  Y Y  Y  eY  Y  o Y P Y A Y H Y t Y 2Y  Y   Y  lY ConnectDatabaseDateCreateDateUpdate FlagsForeignNameIdLvLvExtraLvModule LvPropName OwnerParentIdRmtInfoLongRmtInfoShortTypeYYIdParentIdName        OY^8~bSY Y Y  Y 2ACMFInheritableObjectIdSID  AtYObjectId Y8~bSY  Y Y Y  Y T Y Y  Y AttributeExpressionFlagLvExtra Name1 Name2ObjectId Ordernzf edY"ObjectIdAttribute -Y8~bSY Y Y  Y T Y : Y U Y B Y nccolumn grbiticolumnszColumnszObject$szReferencedColumn$szReferencedObjectszRelationshippc,au rtB&epo FrjCeaN neYYYszObject$szReferencedObjectszRelationshipYv1b N  : k & W  C t/ @@  @@@@t  @@ MYmYQkOYkmJbMQk`JYbSdi`fidUiQkkUiJfWUJ`komY^OJmJJMMQkkfJUQkOJmJLJkQkSdi`k `dOo^QkiQ^JmYdbkWYfkiQfdimk kMiYfmk kvkiQ^mJL^Qk+kh+SMYmYQk+kh+SOYkmJbMQkMYmYQkOYkmJbMQk^JiUQmQum`Yb`Juh`kvkJMMQkkdL[QMmk`kvkJMQk`kvkdL[QMmk`kvkhoQiYQk`kvkiQ^JmYdbkWYfkkd^omYdbkd^omYdbhJMMQkk^Jvdom`kvkOLko``JivYbSd okQiOQSYbQO   @ @ @ @          -1@  @ @ @ @ @ @ @ @ @ @ @ @ !"#$%&'()*+,-./0123@AB C D E F G H I J K L M N O L LLLLLLLLL L L L L   456-7-8-91:1;1<@=@>@?     @ @ @ DDDDDDD D D  D  D  D  D  D D D DDDDDDDDD    d _ Z 7 T  _  N %qfp,d/*|G@d/*|G@~sq_fcitiesd/*|G@d/*|G@~sq_fcitiesa @B4MR2KeepLocal TD8888886 ` WK{G@'*|G@AccessLayout4MR2KeepLocal T@zz:::::::8 @>p{G@>p{G@~sq_fdistances@4MR2KeepLocal TJ>>>>>>< `L{G@L{G@GamsUtil22222222220 A{G@A{G@MainFormT@>>>22222220 @ {G@{G@ProgressT@ >>>22222220 @  {G@ {G@GraphT@ 888,,,,,,,* @ f{G@f{G@distancesT@ @@@44444442 @ W{G@W{G@citiesT@:::......., @ H։{G@H։{G@solutionq@?`@EL@@44444442 @?,_{G@?,_{G@MinMaxQ@?`@EH<<0000000. @@*>Ȇ{G@*>Ȇ{G@solutionB@?>>>22222220 @1F˅{G@˅{G@distances@?@@@44444442 @-{G@{G@cities%@:::......., @I]{G@R]{G@largetext@@@@44444442 @;O{G@;O{G@DataAccessPages@@@@@@@@@@> ;O{G@;O{G@SysRel.........., ;O{G@;O{G@Modules0000000000. ;O{G@;O{G@Scripts0000000000. ;O{G@;O{G@Reports0000000000. ;O{G@;O{G@Forms,,,,,,,,,,*  ;O{G@;O{G@UserDefinedA@DDD88888886 @ ;O{G@ G@SummaryInfoP@DDD88888886 @;O{G@;O{G@MSysAccessObjectsDDDDDDDDDDB ;O{G@;O{G@MSysRelationshipsDDDDDDDDDDB ;O{G@;O{G@MSysQueries88888888886 ;O{G@;O{G@MSysACEs22222222220 ;O{G@;O{G@MSysObjects88888888886 ;O{G@ЖG@MSysDbϲ@:::......., @;O{G@;O{G@Relationships<<<<<<<<<<: ;O{G@;O{G@Databases44444444442 ;O{G@;O{G@Tables.........., fP{hUB/A S @ ,  |  B /   l Y 2 o\I"r_K8%taN:'      \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p       \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p       \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p       \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p     \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p  @ @ \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p @ 1 1 \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p 1 - - \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p -   \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p     \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p     \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p     \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p     \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p     \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p     \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p      \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p    \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p   \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p    \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p   \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p T \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p T \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p  \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p             Y:N:Y Y DataID։YAOIndexv1?  @ @ @ @ @ @ @GHIJK M N O P QRSTUVWXYZ[\]^_`abc d!e"f#g$h%i&j'k(l)m*n+o,p-q.r/s0t1u2v3x4y5w6{7z8|9}K[z"Tw7tu'Tw bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb   @ PbMSysAccountsxx x xMR2K[ࡱ> +)'Root EntryNzh*OPropData Forms `A`h4QehReports`A`h`bh#. D;6 B/>0=3<4W8E?1@:CGHIJKLMNOPQRSTUVAYZ[\]^`ghijklmnoprModules2`A`h`bhScripts`A`h`A`hVBA`A`hNzhCmdbars`A`h`A`h02=Babc(e gh i-jEk>z[nB@;RDfj$ UProgressCalibrid2d Calibrihg hCalibrimgi Calibrir35w2`  Detail*aINczh1U`aPgInterruptButton Ctrl-C"[Event Procedure] TahomaݺI !noh1U`LaPgiKillButtonCtrl-Break"[Event Procedure] Tahoma cTJ-Root Entry6zhPPropData Forms `A`h4QehReports`A`h`bhDataAccessPages `A`h`A`hDatabases `A`h`bh0 `A`hpFbhBlob DirDataZPropData00%!_ahpFbhBlobK[ `h1U`aPgiClearButton Clear"[Event Procedure] Tahoma?kxSL*Y=w026Ub(c$deTextBoxࡱ> Root EntryҋB `@2I@OleObjectDataAccessObjSiteData&8 Root EntryҋB `MGIOleObjectData<AccessObjSiteData&888`ҋB `!HG* 4gms Start 12/28/07 08:07:17 GAMS Rev 149 Copyright (C) 1987-2007 GAMS Development. All rights reserved Licensee: Erwin Kalvelagen G070509/0001CE-WIN GAMS Development Corporation DC4572 --- Starting compilation --- mst.gms(221) 3 Mb --- Starting execution: elapsed 0:00:00.007 --- mst.gms(217) 4 Mb --- Generat&Microsoft Forms 2.0Forms.TextBox.1(~4FzeRoot EntryLVALпϰ 777;;;;;;;MR2^AccessVMR2@ Title AuthorCompanySubject, $Graph Optimization(  Erwin Kalvelagen  R JTSP and MST problems sMR2@ Title AuthorCompanySubject, $Graph Optimization(  Erwin Kalvelagen  R JTSP and MST problems solved with GAMSMR2 GUIDNameMap0 SpjJN +  UMR2 GUIDNameMap0 j~ZOFK*L%W  UMR2 GUIDNameMap0 ;RDfj$  UMR2 GUIDNameMap0 ߖ]d"C '~0  UMR2 GUIDNameMap0 WOBN/&Lw s  UMR2OrientationOrderByOnNameMapDefaultViewDescriptionColumnWidthColumnOrderColumnHiddenRequiredAllowZeroLengthDisplayControlIMEModeIMESentenceMode$UnicodeCompressionDecimalPlacesDefaultValue  (   UZ4kblob       MR2( ReplicateProject K[ҋB `MGIOleObjectData. d;"%5! b$,&_<71@2cfqstuvwxyz{|}~kA@WOBN/&Lw s U&Access GAMS Example"[Event Procedure] Ariald2 Tahomae12g237hgh Tahomai1ghk1w2` Detail>Cwytz- h1U`abdCitiesButtonShow Cities"[Event Procedure]V)fGgXh1U`abdiDistButtonShow Distances"[Event Procedure]^c)EI6=<8h1U`atbdiRunButtonRun Optimizer"[Event Procedure]"[Event Procedure] $#[e?I+vR05h1U`aTbdiQuitButtonQuit App"[Event Procedure]ND_6Vd5U` ab` c3f Label5@Show table with city coordinates_i/Lrh3}ad5U` ab` c3f Label7&Show distance tabletYJKIId5U` ab` c3f Label8Run GAMSFZAPd)Mid5U` ab` c3f Label9*Quit this application_`F?xh1k5U`ab ci Frame66^/Hr'*)Qd25`tapbc LabelAlgorithmMKUzIk1ii2W`a mstoptionKMMGOؾd5`va bScmstlabel*Minimum Spanning Tree|߯Fa9X i2W`a^ tspoption=?HmF-d5`va@ bSctsplabel.TravelinModules2`A`h`bhScripts`A`h`A`hVBA`A`h6zhCmdbars`A`h`A`hDetachedLabelΦ^L%cBrd5U7` a<b ccity2_Label city2DetachedLabel;Jd5U7`a<b cdistance_LabeldistanceDetachedLabelc4M+}7뙠`h Detail*g7JM !m7UF`<a<b e city1 city1city from\pKTŋƆm7UF` a<b e k city2 city2city tou4 ~|A @@ȑeMm7UF`a<b e kdistancedisCustomGroups `A`h`A`hDirDataVBAProject `h6zhAcessVBADataDirData\YlidatiN Y Fd Y y Y Nkeylargetextblobrrom+eni rt,tMYYkeyPrimaryKey v1b tLVALfThe blob contains the gamsinterrupt.dll.$ontext Minimum Spanning Tree using an LP formulation Original model: Erwin Kalvelagen, april, 2002 Model solved from Access: Erwin Kalvelagen, November 2007 $offtext $if not set db $error db is not set $onecho > mdb2gms.txt i=%db% x=db.gdx q1=select distinct code from cities s1=i q2=select city1,city2,distance from distances p2=d $offecho $call =mdb2gms.exe @mdb2gms.txt set i 'cities'; alias (i,j,k); parameter d(i,j) 'distances'; $gdxin db.gdx $load i,d display i,d; alias(i,t); set s(i) 'source node (can be any node)' /c40/; set term(i) 'terminal nodes'; term(i)$(not s(i)) = yes; parameter uarc(i,j) 'undirected arcs'; uarc(i,j)=d(i,j); parameter c(i,j) 'cost directed arcs'; c(i,j) = uarc(i,j) + uarc(j,i); set links(i,j); links(i,j)$c(i,j) = yes; parameter b(i,t) 'right-hand side'; b(s,term) = -1; b(term,term) = 1; variables z 'objective' x(i,j) '0-1 variable indicating tree' y(i,j,t) 'flow variables (last index is terminal node)' ; binary variable x,y; equations objective 'minimize total cost' nodebal(i,t) 'node balance' compare(i,j,t) 'force x(i,j)>=y(i,j,t)' ; objective.. Z =e= sum(links, c(links)*x(links)); nodebal(i,term(t)).. Sum(links(i,j), y(i,j,t)) - sum(links(j,i), y(j,i,t)) =e= b(i,t); compare(links(i,j),term(t)).. X(i,j) =g= y(i,j,t); option iterlim=100000; model m /all/; m.optfile=1; solve m minimizing z using rmip; display y.l, x.l; file log /''/; if (m.modelstat<>1, put log, "**** ERROR: Model not solved to optimality"/; abort$1 "Model not solved to optimality"; ); $if exist solution.csv $call del solution.csv file sol /solution.csv/; sol.pc = 5; put sol; loop((i,j)$(x.l(i,j)>0.5), put i.tl,j.tl/; ); $onecho > cplex.opt lpmethod 4 $offecho|dllP@քtspmodel%ք mstmodel@ LVALք$ontext This model solves a Symmetric TSP using a simple algorithm that adds cuts to exclude subtours found in the previous solution. Reference: Dantzig, Fulkerson, Johnson, "Solution of a Large-Scale Traveling-Salesman Problem", Operations Research, 2, 1954, pp.393-410. Copyright Erwin Kalvelagen, 2007 $offtext option optcr=0; option iterlim=100000; option reslim=10000; option limrow=0; option limcol=0; option solprint=off; $eolcom // $if not set db $error db is not set $onecho > mdb2gms.txt i=%db% x=db.gdx q1=select distinct code from cities s1=i q2=select city1,city2,distance from distances p2=d $offecho $call =mdb2gms.exe @mdb2gms.txt set i 'cities'; alias (i,j,k); parameter d(i,j) 'distances'; $gdxin db.gdx $load i,d display i,d; set lt(i,j) lower triangular; lt(i,j)$(ord(i)>ord(j)) = yes; free variable z; binary variable x(i,j); equations twomatch(i), obj; obj.. z =e= sum(lt(i,j), d(i,j)*x(i,j)); twomatch(k).. sum(lt(i,k), x(i,k)) + sum(lt(k,j),x(k,j)) =e= 2; model match /obj,twomatch/; solve match minimizing z using mip; file log /''/; if (match.modelstat<>1, put log, "**** ERROR: Model not solved to optimality"/; abort$1 "Model not solved to optimality"; ); display x.l; * * dynamic number of cuts * set cycle /cycle1*cycle50/; set t tours /t1*t100/; set cutindex(cycle,t) dynamic set for addressing cuts; equation cut(cycle,t) actual cuts; parameter cutcoeff(cycle,t,i,j) coefficients in cuts; parameter cutlength(cycle,t) rhs for cuts; cut(cutindex).. sum((i,j), cutcoeff(cutindex,i,j)*x(i,j)) =l= cutlength(cutindex)-1; model tsp /obj, twomatch, cut/; * * used to find and display tours * set s(i,j) current solution; set tour(t,i,j) subtours; set tt(t) current subtour; set first(i,j) 'first (i,j) in S'; set reach(i,j) "(i,j)'s connected to tour(tt)"; scalar done /0/; scalar continue; parameter results;LVAL // for reporting results('relaxed','obj')=z.l; results('relaxed','total constraints') = match.numequ; loop(cycle, * * initialization * tour(t,i,j) = no; s(i,j) = no; first(i,j) = no; reach(i,j) = no; done = 0; tt(t) = no; tt(t)$(ord(t)=1) = 1; // initialize tt(1) = yes s(i,j)=yes$(x.l(i,j) > 0.5); // initialize to current solution while(not done, * * pick any (i,j) from remaining solutions * first(i,j)=no; loop((i,j)$(card(first)=0), first(i,j) = s(i,j); ); * display first; * * this is he beginning of a new subtour * tour(tt,first) = yes; s(first) = no; continue = 1; while(continue, * * find (i,j)'s connected to tour(tt) * note that the loop over tt is just syntax: tt contains one element * reach(i,j) = no; loop((tt,k), reach(s(i,j))$tour(tt,k,j) = yes; reach(s(i,j))$tour(tt,i,k) = yes; reach(s(i,j))$tour(tt,k,i) = yes; reach(s(i,j))$tour(tt,j,k) = yes; ); * display tour,s,reach; * * if reach = empty then we can stop the while loop * if (card(reach)=0, continue = 0); * * add them to the current subtour * note that the loop over tt is just syntax: tt contains one element * loop(tt, tour(tt,reach) = yes; ); s(reach) = no; ); * display tour; * * if no remaining solutions, we are done * if (card(s)=0, done=1); * * new subtour * tt(t) = tt(t-1); // t := t + 1 ); cutindex(cycle,t)$(sum(tour(t,i,j),1)>0.5) = yes; * * check * option tour:0:1:1; display tour; loop(cutindex(cycle,t), abort$(sum(tour(t,i,j),1) < 2.5) "subtour with 1 or 2 points"; ); if (sum(cutindex(cycle,t),1) > 1.5, cutcoeff(cycle,tour(t,i,j))$cutindex(cycle,t) = 1; cutlength(cutindex(cycle,t)) = sum(tour(t,i,j),1); option cutindex:0:1:1; 0 LVAL@ option cutcoeff:0:1:1; * display cutindex,cutcoeff,cutlength; solve tsp minimizing z using mip; if (tsp.modelstat<>1, put log, "**** ERROR: Model not solved to optimality"/; abort$1 "Model not solved to optimality"; ); display x.l; results(cycle,'obj') = z.l; results(cycle,'cuts added') = sum(cutindex(cycle,t), 1); results(cycle,'total constraints') = tsp.numequ; * display results; else display "Optimal solution found!"; done = 1; ); ); display results; $if exist solution.csv $call del solution.csv file sol /solution.csv/; sol.pc = 5; put sol; loop((i,j)$(x.l(i,j)>0.5), put i.tl,j.tl/; );LVALք MZ@ !L!This program cannot be run in DOS mode. $oa0YcYcYc\oc[c\cMcRc\cYc c\Pcc\ScXc\UcXcRichYcPEL(G!  `Ppxx<Hp$.textS` `.rdatap p@@.data@.reloc @BLVAL!UhXPDžXXQpE}uDžXXRpu3 3h]UEPjj:pE}t.MQUREPM QUREEPpE3]UEPj(pPpu3tMQh0jpuURp3QEEEMMEjjjURjEPpuMQp3URp]UXEEEEEh0Pj@h (qQjUR@pE}ujhh0jEP@pE}uj (qQhPUREPuoFu jXyHPpt?Wpt4%>uN@ uNF hPYYtF N@NCr5p3_^][HVW>t1t G Pp$;r6&Y|_^S39VWu153;u0<=tGV9 Yt:uP ;Y=uX5U*V E>=YtU;Yt7VPYY8u53Y]_^[5UQS] 39UWt ME98"u3Ʌ@ѱ"-tG@at tG@ɋ] t2u t utGe8 t u@H8}t ME93C3@B8\t8"u&u}t H9"u339MMt t\GJutH}u t= t8t.tatG@Gat@@htG] !Et _[UQQSVW39=uhVWp;lj5șt8uލEPWu3ɋ;uEP u%EP >Wu EHYY=3_^[QQSUVW=p33;j]u-׋;t hpxu ţu};u׋;tyf9tf9uf9u=pSSS+S@PVSSD$4׋;t2U;YD$t#SSUPt$$VSSׅut$Y\$\$VpP;t;t3Dp;t8t @8u@8u+@Uu;Yu3 UVW Vp_^][YYj hq5El}ls"eEt 3@ËeME9j hqEt}ts"eEt 3@ËeMEÃ=u =r3@jX39D$jhPpt*uhYu5p33@Ã=uiS39,U-xp~EV50W=p h@h6hj6vj5ՃC;,|_^50j5][5p=săPQL$-=s+ȋą@PUQSVW}VTt99t @ ;r@;s99t3ɅYۉ]u a3@FXEE FXAhl;}'R~Td8=hlB߃ ;|] ~\u F\du F\Su F\Bu F\1u F\ u F\uF\v\jY~\aPӋEYFX u p_^[øcsm9D$u t$PYY33@ h)dPD$l$l$+SVWEePEEEEdËMd Y_^[QVC20XC00USVWU] E@EEEECs {S] t{t} vD tYVUk33333]^] t?xH{S3kVSh vjDC D33333Ћ{ v4댸#EHUkjS]]_^[]UL$)APAP]U$t ЕSV3W3; xt@r;x;u =hEPRpuEhuPYY}P1@t~t WW&Y0|ܾ_t ~uPӃ0|^[UE4p]jhvWYM 3@j MYUEV4>uPGYujY6p^]V5Y 𡨡+Ѓ;sN;sQPYYuV5YYu^Ë +  9^hYujXà 3j hve};EM Emt$YHVt$Fth  Yu;tuYE;uo>dFLFDF 3E}f EpfLF@3E=} `L0@3E=}0@5H}u;5Ht VhY}M E:j YÃ=ujY3h@j5|p0uËL$%(%,83 4<@á, 0 T$+P r ;r3UMAVu W+y iDMIMS1UVUU] utJ?vj?ZK;KuB sL!\D u#M!JL! uM!Y] S[MMZU ZRSMJ?vj?Z]]+u]j?u K^;vMJ;։Mv;t^M q;qu; s!tDLu!M!1K!LuM!qM qINM qINu ]}u;M ыYN^qNqN;Nu`LM Ls%}uʻM DD )}uJM YJꍄ ED0E( @5ph@H SQ֋ @( P(@ @(@HC(HyCu `(xuiSjp ֡(pj5xp,0ȡ(+ȍLQHQPE ,;(vm08E(=@[_^á, <W3;u4DPP50W5p;u3_Ã<0, 0VhAj54|p;ljFu3Cjh hWp;ljF uvW5xpЃN>~,F^_UQQMASVqW3C}i0Dj?EZ@@Jujhy hWpup;UwC+ GAH@PǀIuˋUEO HAJ HAdD3GFCENCu x!P_^[U MASVuW} +Q iDMOI;|9M]UE;;MI?Mvj?YM_;_uC sML!\D u&M!ML! uM!YO_YOyM+M}}M O?L1vj?_]][Y]YKYKY;YuWLM Ls}uϻM DD }uOM YO U MD2LU FBD2<38/] )uNK\3uN?] Kvj?^EuN?vj?^O;OuB st!\Du#M!NL! uM!Y] OwqwOquuuN?vj?^M yK{YKYK;KuWLM Ls}uοM 9DD }uNM yN ED3@_^[UM,0SMVWI <}} M 3E8؉u;K;#M# u ;]]r;]u$K;#M# u ;؉]r;8CUt|D#M# u6#UeHD1#u ֋uu#UE9# tUiDMLD3#um#Mj _^{u ];]r;]u& {u ;؉]r;u؅ۉ]tSYKC8$3zG}MT +MN?M~j?^;J;Ju\ }&M|8Ӊ]#\D\Du3M]! ,OMLVAL$|8!]u ]M!K]}JzyJzyM yJzQJQJ;Ju^LM L}#} u ;οM |D)} u N {MN 7Mt LMuэN L2uɍy>u;(uM; @u%(MB_^[á`tt$ЅYt3@3̋T$ L$tO3D$Wr1كt +шuʃtt uD$_ËD$t$p3@jhwhu7=t$hqXpthwP4phu 0Aheu uЉE$EE3@Ëe}ujdp3Mj hxu=u.;54w&jYeVYEM3Eu#uF=tVj5|pfËujYÃ|$w"t$uYu9D$tt$FYu35dt$YY̋L$t$tNu$$~Ѓ3ƒtAt2t$tt͍AL$+ÍAL$+ÍAL$+ÍAL$+UWVu M};v;|ur)$lDǺr $C$|D$DCCC#ъFGFGr$lDI#ъFGr$lD#ъr$lDIcDPDHD@D8D0D(D DDDDDDDDDDDDDDD$lD|DDDDE^_ÐE^_ÐFGE^_ÍIFGFGE^_Ðt1|9u$r $F$EIǺr +$ E$FE@EhEF#шGr$FIF#шGFGr$FF#шGFGFGV$FIEEEEEEEEDDDDDDDDD D DDDD$FF F0FDFE^_ÐFGE^_ÍIFGFGE^_ÐFGFGFGE^_USVWUjjhxFuF]_^[]ËL$AtD$T$SVWD$PjhFd5d%D$ Xp t.;t$$t(4v L$H |uhD@Td _^[3d yFuQ R 9QuSQ SQMKCk Y[U SVu^udEEH;ىMr ;Xs3W~ u3@3҉UËt;ExtEB ;v}tF;E";p3~9-. h(((( H   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0f5InitializeCriticalSectionAndSpinCountAA:BGetProcessWindowStationGetUserObjectInformationAGetLastActivePopupGetActiveWindowMessageBoxAuser32.dllKKGetCurrentThreadId GetCommandLineAExitProcessuGetModuleHandleAFTerminateProcessKTlsAllocSetLastErrorhGetLastErrorLTlsFreeNTlsSetValueMTlsGetValueHeapFreeHeapAllocSetHandleCountGetStdHandle^GetFileTypeGetStartupInfoADeleteCriticalSectionsGetModuleFileNameAFreeEnvironmentStringsAMGetEnvironmentStringsFreeEnvironmentStringsW~WideCharToMultiByteOGetEnvironmentStringsWHeapDestroyHeapCreatemVirtualFreeWUnhandledExceptionFilterWriteFile@LeaveCriticalSectionEnterCriticalSectionGetACPGetOEMCPGetCPInfojVirtualAlloc HeapReAllocInitializeCriticalSectionRtlUnwindInterlockedExchangerVirtualQueryHeapSizekGetLocaleInfoAGetStringTypeAdMultiByteToWideCharGetStringTypeW3LCMapStringA4LCMapStringWQueryPerformanceCounterGetTickCount<GetCurrentProcessIdGetSystemTimeAsFileTimepVirtualProtectGetSystemInfoKERNEL32.dll(GV8DP`@PhvGamsInterrupt.dllGamsInterruptremotef0remotef1LVAL)[m.o5SeDebugPrivilegekernel32.dllLoadLibraryAGetModuleHandleAFreeLibraryGetProcAddressgamsinterrupt.dllremotef0remotef1  x xuLu u t\t,ttss|sDs sr@rx0ry rzr rqC zH8CC`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~ N@        ! 5A CPR S WY l m pr   )    Hyyyyyyyyyyyyyxytypylyhydy`y\yXyTyPyLyHy@y4y,y$ydyyy yyxxxxxxxx z|.МММММММММ .pPSTPDTp;Zx0Nm:Yw/MlLVAL*800P0000000 1@1N1\1111222\2b2u22222222 3.3H3~334.4>4I5Y5|555577777778 88C8^8f8l88888999999::::+:[:m:r:::::::::; ;;;";3;8;C;H;b;;;;;;;;;<<$<1> >>>">(>/>4>9>>>C>I>M>R>W>]>e>>>>>>>??*?N?c????? 0&0A0v0}000001>1l1z11112#212@2v2222222<34+4k4|444444455'535?5F5r5556&62696j6v6}6666667 77$7+747;7b7n7x77777c8h88889e9:::;;<;H;{;;;;;;; <<1<@2>E>K>P>\>d>{>>>>> ?-?Z????00 00)080G0^0s000000 11!1111111 22$242N2Z2l2z2222222$363V3\3}333333333333"4>4L4V4c4m4z44444444 5&565B5q5555555555558+818K8P8_8h8u8888888888889 999949;9A9O9U9Z9`9n9z99999#:===P>@000061C1M1W1_1e1n1u1z11111112*202t2X3p3w33333333444 44444f4l4p4t4x4445 555595c555555555566 666l6670797778{888888888999*9>9R9d99999999999999999:%:=:N:g:;;;;_>d>>> ?;?_?i???`v00003pD4181`1p1|11111116 6777788888>>>>?? ??00 11T1X10000|111111111111111112 2p3333@7H7L7P7T7X7\7`7d7h7l7p7t7x7|77777777777777777777777777777788 88888 8$8(8,808<888LVAL O^^`km`dOQ^mkf`dOQ^ O^^`km`dOQ^mkf`dOQ^3Y*8~bN..** Y d Y dY Y codenamexyjtD.0YPrimaryKeyv1-*\1`: u G  v N ) Z /  e 9  r K Wc42Portland, Me. Rc41Boston, Mass. =c40Washington, D.C.! 6c39Richmond, Va. -c38Raleigh, N.C. $c37Columbia, S.C. c36Jacksonville, Fla.#  c35Atlanta, Ga. }c34Birmingham, Ala.! q c33New Orleans, La.! pc32Jackson, Miss. p%c31Memphis, Tenn. h#c30Little Rock, Ark." Uc29Dallas, Tex. S&c28Oklahoma City, Okla.% Y7c27Topeka, Kans. _7c26Kansas City, Mo.! cCc25Des Moines, Iowa! XAc24Omaha, Neb. :Bc23Cheyenne, Wyo. 9;c22Denver, Colo. 4)c21Santa Fe, N.M. !c20Phoenix, Ariz. *c19Los Angeles, Calif.$ Bc18Carson City, Nevada$ !Cc17Salt Lake City, Utah% Rc16Boise, Idaho ac15Portland, Ore. jc14Seattle, Wash. %^c13Helena, Mont. H[c12Bismarck, N.D. IOc11Pierre, S.D. cSc10Minneapolis, Minn.# uJc09Milwaukee, Wis.  wDc08Chicago, Ill. }<c07Indianapolis, Ind.# ~5c06Louisville, Ky.  7c05Charleston, W.Va." Fc04Cleveland, Ohio  Ic03Detroit, Mich. Xc02Montpelier, Vt.  Uc01Manchester, N.H.! | -@@@@@@@@@@M68/M6:/M6</M6>/M6@/M6B/M6D/M6F/M6H/M86/ M88/ M8:/ M8</ M8>/ M8@/M8B/M8D/M8F/M8H/M:6/M:8/M::/M:</M:>/M:@/M:B/M:D/M:F/M:H/M<6/M<8/M<:/M<</ M<>/!M<@/"M6/'M>8/(M>:/)(Y]bbbN22]] Y d Y bdY  city1 city2distancebb2:bYPrimaryKeyv1|1oR5jM0 e H +  } ` C & x [ > !  s V 9  n Q 4  iL/dG* |_B%wZ= rU8mP3hK.cF)I@c17c11 R@c17c10 U@c17c09 @U@c17c08 V@c17c07 @X@c17c06 [@c17c05 Z@c17c04 @Y@c17c03 @b@c17c02 a@c17c01 ;@c16c15 ?@c16c14 A@c16c13 O@c16c12 R@c16c11 V@c16c10 @Z@c16c09 Z@c16c08 [@c16c07 \@c16c06 @`@c16c05 _@c16c04 ^@c16c03 @e@c16c02  d@c16c01 $@c15c14 D@c15c13 @T@c15c12 V@c15c11 @Z@c15c10 @_@c15c09 @`@c15c08  a@c15c07 a@c15c06 c@c15c05 b@c15c04 @b@c15c03 g@c15c02 `g@c15c01 A@c14c13 S@c14c12 @U@c14c11 X@c14c10 ^@c14c09 _@c14c08 `@c14c07 a@c14c06 b@c14c05 b@c14c04 a@c14c03  g@c14c02 f@c14c01 D@c13c12 H@c13c11 O@c13c10 U@c13c09 V@c13c08 X@c13c07 Z@c13c06 \@c13c05 [@c13c04 Z@c13c03 b@c13c02  b@c13c01 &@c12c11 :@c12c10 G@c12c09 I@c12c08 N@c12c07 Q@c12c06 @S@c12c05 Q@c12c04 P@c12c03 @]@c12c02 [@c12c01 7@c11c10 D@c11c09 G@c11c08 L@c11c07 O@c11c06 R@c11c05 P@c11c04 O@c11c03 Z@c11c02 Y@c11c01 4@c10c09 8@c10c08 A@c10c07 D@c10c06 I@c10c05 F@c10c04 D@c10c03 @T@c10c02 @T@c10c01 @c09c08 .@c09c07 6@c09c06 ?@c09c05 9@c09c04 4@c09c03 P@c09c02 O@c09c01 $@c08c07 1@c08c06 :@c08c05 4@c08c04 .@c08c03 N@c08c02 M@c08c01 @c07c06 2@c07c05 1@c07c04 0@c07c03 N@c07c02 M@c07c01 1@c06c05 4@c06c04 5@c06c03 O@c06c02 N@c06c01 .@c05c04 5@c05c03 H@c05c02 I@c05c01 "@c04c03 G@c04c02 B@c04c01 F@c03c02 C@c03c01  @c02c01 1oR5jM0 e H +  } ` C & x [ > !  s V 9  n Q 4  iL/dG* |_B%wZ= rU8mP3hK.cF)=@c24c09 <@c24c08 A@c24c07 D@c24c06 J@c24c05 H@c24c04 F@c24c03 @V@c24c02 @U@c24c01 @c23c22 ;@c23c21 K@c23c20 @Q@c23c19 M@c23c18 ;@c23c17 F@c23c16 R@c23c15 @S@c23c14 E@c23c13 B@c23c12 <@c23c11 H@c23c10 M@c23c09 L@c23c08 O@c23c07 @Q@c23c06 U@c23c05 S@c23c04 @R@c23c03 ]@c23c02 \@c23c01 5@c22c21 H@c22c20 Q@c22c19 O@c22c18 >@c22c17 N@c22c16 @S@c22c15 T@c22c14 H@c22c13 E@c22c12 A@c22c11 I@c22c10 N@c22c09 N@c22c08 O@c22c07 Q@c22c06 T@c22c05 T@c22c04 @S@c22c03 ^@c22c02 @]@c22c01 >@c21c20 I@c21c19 Q@c21c18 B@c21c17 M@c21c16 U@c21c15 V@c21c14 @P@c21c13 P@c21c12 L@c21c11 @S@c21c10 U@c21c09 @S@c21c08 S@c21c07 T@c21c06 W@c21c05 X@c21c04 W@c21c03 `a@c21c02  a@c21c01 6@c20c19 F@c20c18 E@c20c17 O@c20c16 T@c20c15 @W@c20c14 Q@c20c13 @X@c20c12 U@c20c11 Z@c20c10 [@c20c09 @Z@c20c08 Z@c20c07 Z@c20c06 _@c20c05 ^@c20c04 ^@c20c03 d@c20c02 d@c20c01 :@c19c18 E@c19c17 M@c19c16 M@c19c15 @Q@c19c14 R@c19c13 @Y@c19c12 @W@c19c11 ]@c19c10 `@c19c09 _@c19c08 _@c19c07 @`@c19c06 a@c19c05 a@c19c04 a@c19c03 @g@c19c02  g@c19c01 ?@c18c17 :@c18c16 A@c18c15 G@c18c14 K@c18c13 U@c18c12 T@c18c11 Z@c18c10 ]@c18c09 @]@c18c08 ^@c18c07  `@c18c06 a@c18c05 @a@c18c04 `@c18c03 @f@c18c02 e@c18c01 5@c17c16 H@c17c15 J@c17c14 =@c17c13 M@c17c12 1oR5jM0 e H +  } ` C & x [ > !  s V 9  n Q 4  iL/dG* |_B%wZ= rU8mP3hK.cF)_@c29c15 @`@c29c14 X@c29c13 Q@c29c12 M@c29c11 L@c29c10 N@c29c09 L@c29c08 J@c29c07 I@c29c06 P@c29c05 Q@c29c04 @Q@c29c03 @\@c29c02 [@c29c01 4@c28c27 5@c28c26 @@c28c25 <@c28c24 E@c28c23 B@c28c22 ?@c28c21 M@c28c20 S@c28c19 X@c28c18 P@c28c17 V@c28c16 \@c28c15 ]@c28c14 @U@c28c13 M@c28c12 G@c28c11 H@c28c10 K@c28c09 H@c28c08 G@c28c07 G@c28c06 P@c28c05 O@c28c04 O@c28c03 Z@c28c02 @Z@c28c01 @c27c26 .@c27c25 "@c27c24 B@c27c23 @@c27c22 F@c27c21 R@c27c20 V@c27c19 @X@c27c18 O@c27c17 T@c27c16 [@c27c15 \@c27c14 @S@c27c13 F@c27c12 A@c27c11 >@c27c10 B@c27c09 @@c27c08 @@c27c07 A@c27c06 H@c27c05 I@c27c04 H@c27c03 @W@c27c02 V@c27c01 &@c26c25 (@c26c24 C@c26c23 B@c26c22 G@c26c21 R@c26c20 W@c26c19 X@c26c18 P@c26c17 U@c26c16 \@c26c15 ]@c26c14 S@c26c13 G@c26c12 B@c26c11 ;@c26c10 @@c26c09 =@c26c08 <@c26c07 >@c26c06 G@c26c05 G@c26c04 F@c26c03 @V@c26c02 U@c26c01  @c25c24 B@c25c23 D@c25c22 N@c25c21 U@c25c20 Z@c25c19 X@c25c18 P@c25c17 U@c25c16 [@c25c15 \@c25c14 @S@c25c13 D@c25c12 =@c25c11 ,@c25c10 5@c25c09 3@c25c08 ;@c25c07 A@c25c06 G@c25c05 D@c25c04 B@c25c03 T@c25c02 @S@c25c01 =@c24c23 @@c24c22 K@c24c21 @T@c24c20 X@c24c19 V@c24c18 L@c24c17 R@c24c16 Y@c24c15 @Z@c24c14 @Q@c24c13 A@c24c12 7@c24c11 6@c24c10 1oR5jM0 e H +  } ` C & x [ > !  s V 9  n Q 4  iL/dG* |_B%wZ= rU8mP3hK.cF)D@c33c28 J@c33c27 H@c33c26 M@c33c25 O@c33c24 T@c33c23 S@c33c22 P@c33c21 V@c33c20 @\@c33c19 `@c33c18 Z@c33c17 `@c33c16 `c@c33c15 d@c33c14 _@c33c13 @X@c33c12 U@c33c11 R@c33c10 N@c33c09 L@c33c08 H@c33c07 E@c33c06 L@c33c05 O@c33c04 P@c33c03 @X@c33c02 W@c33c01 (@c32c31 .@c32c30 8@c32c29 A@c32c28 F@c32c27 C@c32c26 H@c32c25 J@c32c24 S@c32c23 Q@c32c22 O@c32c21 U@c32c20 @[@c32c19 ^@c32c18 Y@c32c17 ^@c32c16 b@c32c15 `c@c32c14 ^@c32c13 U@c32c12 S@c32c11 O@c32c10 H@c32c09 F@c32c08 C@c32c07 A@c32c06 I@c32c05 K@c32c04 K@c32c03 V@c32c02 @V@c32c01  @c31c30 <@c31c29 <@c31c28 ?@c31c27 ;@c31c26 B@c31c25 C@c31c24 P@c31c23 P@c31c22 N@c31c21 V@c31c20 [@c31c19 _@c31c18 @W@c31c17 \@c31c16 a@c31c15 a@c31c14 Z@c31c13 R@c31c12 O@c31c11 I@c31c10 B@c31c09 @@c31c08 :@c31c07 6@c31c06 C@c31c05 E@c31c04 E@c31c03 @U@c31c02 T@c31c01 4@c30c29 4@c30c28 <@c30c27 8@c30c26 A@c30c25 B@c30c24 O@c30c23 N@c30c22 J@c30c21 @T@c30c20 X@c30c19 \@c30c18 V@c30c17 @[@c30c16 a@c30c15 a@c30c14 Y@c30c13 Q@c30c12 N@c30c11 H@c30c10 E@c30c09 C@c30c08 A@c30c07 >@c30c06 G@c30c05 I@c30c04 I@c30c03 W@c30c02 V@c30c01 (@c29c28 >@c29c27 =@c29c26 E@c29c25 C@c29c24 J@c29c23 G@c29c22 C@c29c21 O@c29c20 @U@c29c19 X@c29c18 R@c29c17 X@c29c16 1oR5jM0 e H +  } ` C & x [ > !  s V 9  n Q 4  iL/dG* |_B%wZ= rU8mP3hK.cF)@P@c37c25 Q@c37c24 X@c37c23 @X@c37c22 @^@c37c21 _@c37c20 `b@c37c19 c@c37c18 _@c37c17 b@c37c16 e@c37c15 e@c37c14 a@c37c13 X@c37c12 @W@c37c11 Q@c37c10 J@c37c09 G@c37c08 B@c37c07 >@c37c06 9@c37c05 D@c37c04 G@c37c03 M@c37c02 L@c37c01 2@c36c35 9@c36c34 @@c36c33 B@c36c32 D@c36c31 H@c36c30 N@c36c29 Q@c36c28 Q@c36c27 P@c36c26 Q@c36c25 S@c36c24 Z@c36c23 @Z@c36c22 X@c36c21 ^@c36c20 @b@c36c19 c@c36c18 `@c36c17 `c@c36c16 `f@c36c15  g@c36c14 `b@c36c13 [@c36c12 Y@c36c11 T@c36c10 P@c36c09 N@c36c08 I@c36c07 F@c36c06 E@c36c05 N@c36c04 N@c36c03 S@c36c02 R@c36c01 "@c35c34 >@c35c33 8@c35c32 8@c35c31 @@c35c30 H@c35c29 J@c35c28 I@c35c27 G@c35c26 J@c35c25 M@c35c24 U@c35c23 U@c35c22 @U@c35c21 [@c35c20 `@c35c19 @b@c35c18 \@c35c17 `@c35c16 d@c35c15 d@c35c14 @`@c35c13 V@c35c12 T@c35c11 P@c35c10 G@c35c09 D@c35c08 @@c35c07 9@c35c06 ?@c35c05 D@c35c04 E@c35c03 @Q@c35c02 P@c35c01 5@c34c33 ,@c34c32 ,@c34c31 7@c34c30 C@c34c29 E@c34c28 G@c34c27 E@c34c26 I@c34c25 K@c34c24 @T@c34c23 S@c34c22 R@c34c21 @Y@c34c20 _@c34c19 a@c34c18 [@c34c17 _@c34c16 `c@c34c15 c@c34c14 @^@c34c13 @V@c34c12 S@c34c11 O@c34c10 F@c34c09 C@c34c08 >@c34c07 7@c34c06 A@c34c05 E@c34c04 F@c34c03 @T@c34c02 R@c34c01 &@c33c32 7@c33c31 9@c33c30 =@c33c29 1oR5jM0 e H +  } ` C & x [ > !  s V 9  n Q 4  iL/dG* |_B%wZ= rU8mP3hK.cF)L@c41c06 G@c41c05 B@c41c04 D@c41c03 &@c41c02 @c41c01 @c40c39 .@c40c38 ;@c40c37 F@c40c36 C@c40c35 F@c40c34 P@c40c33 M@c40c32 J@c40c31 O@c40c30 T@c40c29 S@c40c28 P@c40c27 O@c40c26 N@c40c25 P@c40c24 @X@c40c23 W@c40c22 @\@c40c21 `a@c40c20 c@c40c19 c@c40c18 @_@c40c17 b@c40c16 `e@c40c15 d@c40c14 @]@c40c13 V@c40c12 U@c40c11 @P@c40c10 F@c40c09 D@c40c08 @@c40c07 A@c40c06 2@c40c05 5@c40c04 >@c40c03 @@c40c02 =@c40c01 "@c39c38 5@c39c37 C@c39c36 @@c39c35 D@c39c34 O@c39c33 L@c39c32 I@c39c31 M@c39c30 S@c39c29 U@c39c28 Q@c39c27 @P@c39c26 @P@c39c25 Q@c39c24 @Y@c39c23 Y@c39c22 ]@c39c21 `a@c39c20 `d@c39c19  d@c39c18  `@c39c17 b@c39c16 f@c39c15 `e@c39c14 `@c39c13 @X@c39c12 @W@c39c11 Q@c39c10 I@c39c09 G@c39c08 B@c39c07 A@c39c06 2@c39c05 :@c39c04 A@c39c03 B@c39c02 A@c39c01 (@c38c37 =@c38c36 8@c38c35 A@c38c34 K@c38c33 H@c38c32 G@c38c31 K@c38c30 R@c38c29 R@c38c28 @Q@c38c27 P@c38c26 P@c38c25 @R@c38c24 Y@c38c23 Y@c38c22 [@c38c21 `@c38c20 c@c38c19 `d@c38c18 ``@c38c17 b@c38c16 @f@c38c15 f@c38c14  a@c38c13 X@c38c12 X@c38c11 @R@c38c10 J@c38c09 H@c38c08 C@c38c07 A@c38c06 4@c38c05 A@c38c04 D@c38c03 G@c38c02 F@c38c01 1@c37c36 *@c37c35 7@c37c34 E@c37c33 B@c37c32 C@c37c31 G@c37c30 O@c37c29 P@c37c28 O@c37c27 M@c37c26 1KoR5jM0 e H +  } ` C & x [ > !  s V 9  n Q 4  iL/@c42c41 @@c42c40 C@c42c39 H@c42c38 N@c42c37 @S@c42c36 R@c42c35 T@c42c34 X@c42c33 W@c42c32 U@c42c31 @S@c42c30 \@c42c29 Z@c42c28 W@c42c27 V@c42c26 U@c42c25 V@c42c24 ]@c42c23 _@c42c22 a@c42c21 d@c42c20 g@c42c19 f@c42c18 `b@c42c17 d@c42c16 h@c42c15 @g@c42c14 b@c42c13 @\@c42c12 [@c42c11 U@c42c10 P@c42c09 N@c42c08 N@c42c07 P@c42c06 J@c42c05 D@c42c04 K@c42c03 (@c42c02 @c42c01 9@c41c40 @@c41c39 D@c41c38 K@c41c37 Q@c41c36 P@c41c35 Q@c41c34 W@c41c33 U@c41c32 T@c41c31 V@c41c30 [@c41c29 @Y@c41c28 V@c41c27 U@c41c26 S@c41c25 U@c41c24 ]@c41c23 ]@c41c22 `@c41c21  d@c41c20 f@c41c19 f@c41c18 b@c41c17 d@c41c16 g@c41c15 @g@c41c14 `b@c41c13 @[@c41c12 @Z@c41c11 T@c41c10 O@c41c09 M@c41c08 K@c41c07  1>M:>M6@4~;M<<M:66z<M>6M<<8v=M6:36>M6<36@M6836@M6:36@M6<36@M6>3 6BM683 6BM6:3 6BM6<3 6BM6>3 6BM6@36DM6836DM6:36DM6<36DM6>36DM6@36DM6B36FM6836FM6:36FM6<36FM6>36FM6@36FM6B36FM6D36HM6836HM6:36HM6<36HM6>36HM6@3 6HM6B3!6HM6D3"6HM6F3#86M683$86M6:3%86M6<3&86M6>3'86M6@3(86M6B3)86M6D3*86M6F3+86M6H3,88M683-88M6:3.88M6<3/88M6>3088M6@3188M6B3288M6D3388M6F3488M6H3588M86368:M68378:M6:388:M6<398:M6>3:8:M6@3;8:M6B3<8:M6D3=8:M6F3>8:M6H3?8:M863@8:M883A8<M683B8<M6:3C8<M6<3D8<M6>3E8<M6@3F8<M6B3G8<M6D3H8<M6F3I8<M6H3J8<M863K8<M883L8<M8:3M8>M683N8>M6:3O8>M6<3P8>M6>3Q8>M6@3R8>M6B3S8>M6D3T8>M6F3U8>M6H3V8>M863W8>M883X8>M8:3Y8>M8<3Z8@M683[8@M6:3\8@M6<3]8@M6>3^8@M6@3_8@M6B3`8@M6D3a8@M6F3b8@M6H3c8@M863d8@M883e8@M8:3f8@M8<3g8@M8>3h8BM683i8BM6:3j8BM6<3k8BM6>3l8BM6@3m8BM6B3n8BM6D3o8BM6F3p8BM6H3q8BM863r8BM883s8BM8:3t8BM8<3u8BM8>3v8BM8@3w8DM683x8DM6:3y8DM6<3z8DM6>3{8DM6@3|8DM6B3}8DM6D3~8DM6F38DM6H38DM8638DM8838DM8:48DM8<48DM8>48DM8@48DM8B48FM6848FM6:48FM6<48FM6>48FM6@4 8FM6B4 8FM6D4 8FM6F4 8FM6H4 8FM8648FM8848FM8:48FM8<48FM8>48FM8@48FM8B48FM8D48HM6848HM6:48HM6<48HM6>48HM6@48HM6B48HM6D48HM6F48HM6H48HM8648HM884 8HM8:4!8HM8<4"8HM8>4#8HM8@4$8HM8B4%8HM8D4&8HM8F4':6M684(:6M6:4):6M6<4*:6M6>4+:6M6@4,:6M6B4-:6M6D4.:6M6F4/:6M6H40:6M8641:6M8842:6M8:43:6M8<44:6M8>45:6M8@46:6M8B47:6M8D48:6M8F49:6M8H4::8M684;:8M6:4<:8M6<4=:8M6>4>:8M6@4?:8M6B4@:8M6D4A:8M6F4B:8M6H4C:8M864D:8M884E:8M8:4F:8M8<4G:8M8>4H:8M8@4I:8M8B4J:8M8D4K:8M8F4L:8M8H4M:8M:64N::M684O::M6:4P::M6<4Q::M6>4R::M6@4S::M6B4T::M6D4U::M6F4V::M6H4W::M864X::M884Y::M8:4Z::M8<4[::M8>4\::M8@4]::M8B4^::M8D4_::M8F4`::M8H4a::M:64b::M:84c:<M684d:<M6:4e:<M6<4f:<M6>4g:<M6@4h:<M6B4i:<M6D4j:<M6F4k:<M6H4l:<M864m:<M884n:<M8:4o:<M8<4p:<M8>4q:<M8@4r:<M8B4s:<M8D4t:<M8F4u:<M8H4v:<M:64w:<M:84x:<M::4y:>M684z:>M6:4{:>M6<4|:>M6>4}:>M6@4~4^1<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M6:M6836<M6836<M6:36>M6836>M6:36>M6<36@M6836@M6:36@M6<36@M6>3 6BM683 6BM6:3 6BM6<3 6BM6>3 6BM6@36DM6836DM6:36DM6<36DM6>36DM6@36DM6B36FM6836FM6:36FM6<36FM6>36FM6@36FM6B36FM6D36HM6836HM6:36HM6<36HM6>36HM6@3 6HM6B3!6HM6D3"6HM6F3#86M683$86M6:3%86M6<3&86M6>3'86M6@3(86M6B3)86M6D3*86M6F3+86M6H3,88M683-88M6:3.88M6<3/88M6>3088M6@3188M6B3288M6D3388M6F3488M6H3588M86368:M68378:M6:388:M6<398:M6>3:8:M6@3;8:M6B3<8:M6D3=8:M6F3>8:M6H3?8:M863@8:M883A8<M683B8<M6:3C8<M6<3D8<M6>3E8<M6@3F8<M6B3G8<M6D3H8<M6F3I8<M6H3J8<M863K8<M883L8<M8:3M8>M683N8>M6:3O8>M6<3P8>M6>3Q8>M6@3R8>M6B3S8>M6D3T8>M6F3U8>M6H3V8>M863W8>M883X8>M8:3Y8>M8<3Z8@M683[8@M6:3\8@M6<3]8@M6>3^8@M6@3_8@M6B3`8@M6D3a8@M6F3b8@M6H3c8@M863d8@M883e8@M8:3f8@M8<3g8@M8>3h8BM683i8BM6:3j8BM6<3k8BM6>3l8BM6@3m8BM6B3n8BM6D3o8BM6F3p8BM6H3q8BM863r8BM883s8BM8:3t8BM8<3u8BM8>3v8BM8@3w8DM683x8DM6:3y8DM6<3z8DM6>3{8DM6@3|8DM6B3}8DM6D3~8DM6F38DM6H38DM8638DM8838DM8:48DM8<48DM8>48DM8@48DM8B48FM6848FM6:48FM6<48FM6>48FM6@4 8FM6B4 8FM6D4 8FM6F4 8FM6H4 8FM8648FM8848FM8:48FM8<48FM8>48FM8@48FM8B48FM8D48HM6848HM6:48HM6<48HM6>48HM6@48HM6B48HM6D48HM6F48HM6H48HM8648HM884 8HM8:4!8HM8<4"8HM8>4#8HM8@4$8HM8B4%8HM8D4&8HM8F4':6M684(:6M6:4):6M6<4*:6M6>4+:6M6@4,:6M6B4-:6M6D4.:6M6F4/:6M6H40:6M8641:6M8842:6M8:43:6M8<44:6M8>45:6M8@46:6M8B47:6M8D48:6M8F49:6M8H4::8M684;:8M6:4<:8M6<4=:8M6>4>:8M6@4?:8M6B4@:8M6D4A:8M6F4B:8M6H4C:8M864D:8M884E:8M8:4F:8M8<4G:8M8>4H:8M8@4I:8M8B4J:8M8D4K:8M8F4L:8M8H4M:8M:64N::M684O::M6:4P::M6<4Q::M6>4R::M6@4S::M6B4T::M6D4U::M6F4V::M6H4W::M864X::M884Y::M8:4Z::M8<4[::M8>4\::M8@4]::M8B4^::M8D4_::M8F4`::M8H4a::M:64b::M:84c:<M684d:<M6:4e:<M6<4f:<M6>4g:<M6@4h:<M6B4i:<M6D4j:<M6F4k:<M6H4l:<M864m:<M884n:<M8:4o:<M8<4p:<M8>4q:<M8@4r:<M8B4s:<M8D4t:<M8F4u:<M8H4v:<M:64w:<M:84x:<M::4y:>M684z:>M6:4{:>M6<4|:>M6>4}:>M6@4~4^1;=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M:>M6B4:>M6D4:>M6F4:>M6H4:>M865:>M885:>M8:5:>M8<5:>M8>5:>M8@5:>M8B5:>M8D5:>M8F5:>M8H5 :>M:65 :>M:85 :>M::5 :>M:<5 :@M685:@M6:5:@M6<5:@M6>5:@M6@5:@M6B5:@M6D5:@M6F5:@M6H5:@M865:@M885:@M8:5:@M8<5:@M8>5:@M8@5:@M8B5:@M8D5:@M8F5:@M8H5 :@M:65!:@M:85":@M::5#:@M:<5$:@M:>5%:BM685&:BM6:5':BM6<5(:BM6>5):BM6@5*:BM6B5+:BM6D5,:BM6F5-:BM6H5.:BM865/:BM8850:BM8:51:BM8<52:BM8>53:BM8@54:BM8B55:BM8D56:BM8F57:BM8H58:BM:659:BM:85::BM::5;:BM:<5<:BM:>5=:BM:@5>:DM685?:DM6:5@:DM6<5A:DM6>5B:DM6@5C:DM6B5D:DM6D5E:DM6F5F:DM6H5G:DM865H:DM885I:DM8:5J:DM8<5K:DM8>5L:DM8@5M:DM8B5N:DM8D5O:DM8F5P:DM8H5Q:DM:65R:DM:85S:DM::5T:DM:<5U:DM:>5V:DM:@5W:DM:B5X:FM685Y:FM6:5Z:FM6<5[:FM6>5\:FM6@5]:FM6B5^:FM6D5_:FM6F5`:FM6H5a:FM865b:FM885c:FM8:5d:FM8<5e:FM8>5f:FM8@5g:FM8B5h:FM8D5i:FM8F5j:FM8H5k:FM:65l:FM:85m:FM::5n:FM:<5o:FM:>5p:FM:@5q:FM:B5r:FM:D5s:HM685t:HM6:5u:HM6<5v:HM6>5w:HM6@5x:HM6B5y:HM6D5z:HM6F5{:HM6H5|:HM865}:HM885~:HM8:5:HM8<5:HM8>5:HM8@5:HM8B6:HM8D6:HM8F6:HM8H6:HM:66:HM:86:HM::6:HM:<6:HM:>6:HM:@6 :HM:B6 :HM:D6 :HM:F6 <6M686 <6M6:6<6M6<6<6M6>6<6M6@6<6M6B6<6M6D6<6M6F6<6M6H6<6M866<6M886<6M8:6<6M8<6<6M8>6<6M8@6<6M8B6<6M8D6<6M8F6<6M8H6<6M:66 <6M:86!<6M::6"<6M:<6#<6M:>6$<6M:@6%<6M:B6&<6M:D6'<6M:F6(<6M:H6)<8M686*<8M6:6+<8M6<6,<8M6>6-<8M6@6.<8M6B6/<8M6D60<8M6F61<8M6H62<8M8663<8M8864<8M8:65<8M8<66<8M8>67<8M8@68<8M8B69<8M8D6:<8M8F6;<8M8H6<<8M:66=<8M:86><8M::6?<8M:<6@<8M:>6A<8M:@6B<8M:B6C<8M:D6D<8M:F6E<8M:H6F<8M<66G<:M686H<:M6:6I<:M6<6J<:M6>6K<:M6@6L<:M6B6M<:M6D6N<:M6F6O<:M6H6P<:M866Q<:M886R<:M8:6S<:M8<6T<:M8>6U<:M8@6V<:M8B6W<:M8D6X<:M8F6Y<:M8H6Z<:M:66[<:M:86\<:M::6]<:M:<6^<:M:>6_<:M:@6`<:M:B6a<:M:D6b<:M:F6c<:M:H6d<:M<66e<:M<86f<<M686g<<M6:6h<<M6<6i<<M6>6j<<M6@6k<<M6B6l<<M6D6m<<M6F6n<<M6H6o<<M866p<<M886q<<M8:6r<<M8<6s<<M8>6t<<M8@6u<<M8B6v<<M8D6w<<M8F6x<<M8H6y<<M:66z6Z1<>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M<<M:86{<<M::6|<<M:<6}<<M:>6~<<M:@6<<M:B6<<M:D6<<M:F6<<M:H7<<M<67<<M<87<<M<:7<>M687<>M6:7<>M6<7<>M6>7<>M6@7<>M6B7 <>M6D7 <>M6F7 <>M6H7 <>M867 <>M887<>M8:7<>M8<7<>M8>7<>M8@7<>M8B7<>M8D7<>M8F7<>M8H7<>M:67<>M:87<>M::7<>M:<7<>M:>7<>M:@7<>M:B7<>M:D7<>M:F7<>M:H7 <>M<67!<>M<87"<>M<:7#<>M<<7$<@M687%<@M6:7&<@M6<7'<@M6>7(<@M6@7)<@M6B7*<@M6D7+<@M6F7,<@M6H7-<@M867.<@M887/<@M8:70<@M8<71<@M8>72<@M8@73<@M8B74<@M8D75<@M8F76<@M8H77<@M:678<@M:879<@M::7:<@M:<7;<@M:>7<<@M:@7=<@M:B7><@M:D7?<@M:F7@<@M:H7A<@M<67B<@M<87C<@M<:7D<@M<<7E<@M<>7F7J7T7^7h7m7w78888"8,838=8G8Q6M688V>6M6:8W>6M6<8X>6M6>8Y>6M6@8Z>6M6B8[>6M6D8\>6M6F8]>6M6H8^>6M868_>6M888`>6M8:8a>6M8<8b>6M8>8c>6M8@8d>6M8B8e>6M8D8f>6M8F8g>6M8H8h>6M:68i>6M:88j>6M::8k>6M:<8l>6M:>8m>6M:@8n>6M:B8o>6M:D8p>6M:F8q>6M:H8r>6M<68s>6M<88t>6M<:8u>6M<<8v8V1=M>6M<>8wM>6M<@8xM>6M6M6M6M8M688}M>8M6:8~M>8M6<8M>8M6>8M>8M6@8M>8M6B8M>8M6D9M>8M6F9M>8M6H9M>8M869M>8M889M>8M8:9M>8M8<9M>8M8>9M>8M8@9M>8M8B9 M>8M8D9 M>8M8F9 M>8M8H9 M>8M:69 M>8M:89M>8M::9M>8M:<9M>8M:>9M>8M:@9M>8M:B9M>8M:D9M>8M:F9M>8M:H9M>8M<69M>8M<89M>8M<:9M>8M<<9M>8M<>9M>8M<@9M>8M8M8M8M8M>69!M>:M689"M>:M6:9#M>:M6<9$M>:M6>9%M>:M6@9&M>:M6B9'M>:M6D9(M>:M6F9)M>:M6H9*M>:M869+M>:M889,M>:M8:9-M>:M8<9.M>:M8>9/M>:M8@90M>:M8B91M>:M8D92M>:M8F93M>:M8H94M>:M:695M>:M:896M>:M::97M>:M:<98M>:M:>99M>:M:@9:M>:M:B9;M>:M:D9<M>:M:F9=M>:M:H9>M>:M<69?M>:M<89@M>:M<:9AM>:M<<9BM>:M<>9CM>:M<@9DM>:M:M:M:M:M>69IM>:M>89JLVAL  MR2RecordLocksODBCTimeouMR26AccessVersion BuildAppTitleStartUpForm&StartUpShowDBWindow(StartUpShowStatusBarStartUpMenuBar$AllowShortcutMenusAllowFullMenus(AllowBuiltInToolbarsy 08.50  " Form.MainForm      MR2RecordLocksODBCTimeoutMaxRecords FilterOrderByOrderByOnOrientationDefaultViewGUIDFilterOnLoadOrderByOnLoadDescriptionReplicable  <       f ^Return solution as coordinates of lines to drawMR28RecordLocksODBCTimeoutMaxRecords FilterOrderByOrderByOnOrientationDefaultViewGUIDFilterOnLoadOrderByOnLoadAggregateTypeDescriptionReplicable  <       \ TFind min/max coordinates in cities table MR20OrientationOrderByOnNameMapDefaultViewDescription8DisplayViewsOnSharePointSiteTotalsRowFilterOnLoadOrderByOnLoadHideNewFieldColumnWidthColumnOrderColumnHiddenRequiredAllowZeroLengthDisplayControlIMEModeIMESentenceMode$UnicodeCompressionTextAlignAggregateType     UC V N1$=! @@distancesȭ,G$9LC V N1$=city1] 6*OO;KC V N1$=city2?u#?A@ mC V N1$=distance  j bThis table contains the distances between cities.       city1       city from    m      city2       city to    m     MR2OrientationOrderByOnNameMapDefaultViewDescriptionColumnWidthColumnOrderColumnHiddenRequiredAllowZeroLengthDisplayControlIMEModeIMESentenceMode$UnicodeCompressionDecimalPlacesDefaultValue     UC V N1$=! @@distancesȭ,G$9LC V N1$=city1] 6*OO;KC V N1$=city2?u#?A@ mC V N1$=distance  j bThis table contains the distances between cities. city1    city from     m       city2    city to     m      distance   @ 8distance from city1 to city2   0   mY*NAA* Y d Y d city1 city2ACYYPrimaryKeyv1@@LVALhD h a hp  ? h    @   .            .  d  d   cities.code citiescities.namecities.xcities.yX P  8  8 d/*|G@X h  `b  `b  `b . `bcities H  0 8 {G@~sq_fcitiesh   (   0   8   @       `b  `b  `b . `bcities  h   p   x  .             8 8 H X h x                                                              x  H 0  H 0   0   0   z @  P bh P  H  X  h  dP  d   8  ( 0 P    0 cities dh PrimaryKey  v  x     q                                  `  citiesPrimaryKey   x       H 0  @M6:M68~M6<M6:~M6>M6<~M6@M6>~M6BM6@~M6DM6B~M6FM6D~M6HM6F~M86M6H~M88M86~ M8:M88~ M8<M8:~ M8>M8<~ M8@M8>~ M8BM8@~M8DM8B~M8FM8D~M8HM8F~M:6M8H~M:8M:6~M::M:8~M:<M::~M:>M:<~M:@M:>~M:BM:@~M:DM:B~M:FM:D~M:HM:F~M<6M:H~M<8M<6~M<:M<8~M<<M<:~M<>M<<~ M<@M<>~!M6M8M>6~'M>:M68~(M>:M>8~) `&vH P  h J ,  cities   G  GH։{Gdistances###  {G GH։{G {G G b@F ' y2c2.y' o x2c2.x' o y1c1.y' o x1c1.x' o solution!!!  citiesc2!!  citiesc1!!     Gmaxymax(y)- ominymin(y)- omaxxmax(x)- ominxmin(x)- ocities   G, LVAL@ @ʾxxxxxsolutionsolutionqMainFormGraph f^ά άH7  LVALc1.code=solution.city1 and c2.code=solution.city2K[Blob TypeInfo45:<=>Babc0*e hicjk&D$B@ߖ]d"C '~0 UCalibri8jhhh h`HP LaserJet 2200 Series PSS odXXLetterPRIV0''''\KhCܴN2 w !"#$%&'()*+,A.G23456789:;<=>?@ABDEFH_JKLMNOPQRSTUVWXYZ\]^zabcdefghijklmnopqrstvx{|}~ijMSysDbID="{00000000-0000-0000-0000-000000000000}" DocClass=Report_Graph/&H00000000 DocClass=Form_Progress/&H00000000 DocClass=Form_MainForm/&H00000000 Module=GamsUtil HelpFile="" Name="GraphOptimization" HelpContextID="0" Description="Graph Optimization problems using GAMS" VersionCompatible32="393222000" CMG="BEBCVBA# `h6zhPROJECTwmyPROJECT_VBA_PROJECTe PropData/1)-ahpFbhBlob IKTypeInfo[125D72A7A3ABA3ABA7AFA7AF" DPB="F3F15FA889C589C5763B8AC50F63BD4FrU~~~~~~~~~~k q       y(  8 IH XCancel  h 9 x   FormatCountxylpApplicationName lpKeyName lpDefaultlpReturnedStringnSize lpFileNK[ame hwndOwnernFol~1\COMMON~1\MICROS~1\E6.DLL#Visual Basic F84AB4E6B19D1F6422B19018B56452D3189968BC682" GC="282A84D785D785Dͬf)G` {Detailh InterruptButtonh KillButtonh ClearButtonwTextBoxҋB `.E .`M 9.OLB#Micros8=Babce giXj#kTu*A@SpjJN + U cities cities Ariald2e12g237hghMS Sans Serifi1ghj1ghk1l23:m4n2o2p5r35zijMS Sans Serif{5`\FormHeader}xKI&8p;hd5U7`<a<b ccode_LabelcodeDetachedLabel AdߋCoz</d5U7` a<b cname_LabelnameDetachedLabel&dGS7d5U7`a<bcx_LabelxDetachedLabelRxD= osZd5U7`a<bcy_LabelyDetachedLabelO/&Ϭ´`h Details-IqpC@Xm7UF`<a<b e codecodecity codeLI(Ny|Om7UF` a<b e knamenamecity nameMF *Em7UF`a<bcitiesdistancesProgressMainForm430-0000-0000-C000-7" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] Report_Graph=44, 58derhTokendwFlagslpszPathlpNamelpBufferlpValue nBufferLengthdwMillisecondspidhHandle lpCommandLinelpProcessAttributeslpThreadAttributesbInheritHandE.winspoolHP LaserJet 2200 Series PSLPT1:`h"PageHeaderSection^;p^Ag`"[Event Procedure] Detailbӿ~?O8?/`h"PageFooterSection:ApOVt!ͬwD>PageHeaderSectionDetailPageFooterSection, 614, 417, Form_Progress=22, 29, 580, 329, Form_MainForm=44CustomGroups `A`h`A`hDirDataVBAProject `hzhAcessVBAData, 58, 602, 358, GamsUtil=66, 87, 720, 518, nFormGamsUReport_GraphReport_GraphForm_ProgressForm_PADODB> DDB DE1D10-8DAA006D2EA4D1DProgram Files\Commo nSM\ado\ms21.tlb#Microsoft ActiveX Data Objects 2.1 Li`brary@$3BRReport_QBG RppEVrX_G@QWTRDYHUFKSUVDZFTAJDKOVYDOOD28AWTREYHUFK~UV@Z@T@JKMVY@O@DB@ 1BB,-/"(B+B^Form_Q@essGFA1m_Pg5@es@3ATI?>K[     !"$%'()*+,-./0123456789:;<=@-  !"#$%&'()*+,.G23456789:;<=>?@ABDEFH_JKLMNOPQRSTUVWXYZ\]^zabcdefghijklmnopqrstvxy{|}~    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ijMSysDbID="{1670D2F8-D14B-4B2F-A6A3-B37C62917852}" DocClass=Report_Graph/&H00000000 DocClass=Form_Progress/&H00000000 DocClass=Form_MainForm/&H00000000 Module=GamsUtil Name="GraphOptimization" HelpContextID="0" VersionCompatible32="393222000" CMG="83814AC9C9CDC9CDC9CDC9CD" DPB="0604CF4ED1525553555355" GC="898B405541aFYHHDOHGWTDXFEAWUKWYDVLEI3A2I-2H*HD8DXE3W9K=2VEI3233MainA5u 3M`oin#3KNUYADHWJESLDEQHXMXLIYJYVGraphUIJKN@ Y@D,WJE 3LEQ XtXI2J`:VIA%+3@-3 L0GamsUtilXGm0U Ki xZUFPHOFTDUVEVDMLQIHDHDQXrogressForm_MainFormForm_MainFormGamsUrU  @p )Iy%l 7l7l7l7 } <c< TcT\ 0 <LTLP`0  qx#qx/O0$  4Parlier) and the correctilGamsUtK[ilnavigated to prior to calling the ReadBLWIYBUZF9HEF2DV JMQ.A4aQ3W&Yr̯52!`#TypeInfoufPropData 2(bhpFbhQWTRDYHUFKSUVDZFTAJDKOVYDOOD:6/VBA# `hzhPROJECTwmwPROJECT4_VBA_PROJECTF| 5541AA" [Host Extender Info] &H00000001={3832D640-CF90-11CF-rU~~~~~~~~~~k      y(  8 IH XCancel  h 9 x   FormatCountxylpApplicatiBlob rTypeInfo)PropData,-ZUFPHOFTDUVEVDMLQIHDHDQXWIYB: l__SRP_8792__SRP_9 __SRP_2?=" __SRP_3NonName lpKeyName lpDefaultlpReturnedStringnSize lpFileName hwndOwnernFolder~1\COMMON~1\MICROS~1\E6.DLL#Visual Basic F8E43-00A0C911005A};VBE;&H00000000 [Workspace] Report_Graph=4ͬf)G` {Detailh InterruptButtonh KillButtonh ClearButtonwTextBoxҋB `.E .`M 9.OLB#MicroscitiesdistancesProgressMainForm430-0000-0000-C000-4, 58, 614, 417, Form_Progress=22, 29, 580, 329, Form_MainForm=44, 58, 602, 358, GamsUtil=66, 87, 720, 518, Form_PhTokendwFlagslpszPathlpNamelpBufferlpValue nBufferLengthdwMillisecondspidhHandle lpCommandLinelpProcessAttributeslpThreadAttributesbInheritHandlesdir-0@)%ah4QehBlobK[ 1zTypeInfoCE.winspoolHP LaserJet 2200 Series PSLPT1:`h"PageHeaderSection^;p^Ag`"[Event Procedure] Detailbӿ~?O8?/`h"PageFooterSection:ApOVt!ͬwD>PageHeaderSectionDetailPageFooterSectionReport_GraphReport_GraphForm_ProgressForm_P__SRP_5,#__SRP_4;<o __SRP_0:}$__SRP_1 rogressForm_MainFormForm_MainFormGamsUtilGamsUtilinFormForm_MainFormGamsU\ms21.tlb#Microsoft ActiveX Data Objects 2.1 LibraryH3Report_G*Rpr_GrapX@QWTRDYHUFKSUVDZFTAJDKOVYDOOD28AWTRDYHU@FKSV@Z@TAJEKMVY@O5@DB@ 1B@B,-H/"(B+B^Form_QessG F1m_"P1og@es@3ATIFYHHDOHGWTDXFEAWUKWYDVLEI3ZA2I-2H*HD8DXE3W7K=2VLPEI3233MainA__SRP_8792__SRP_9 __SRP_2?=" __SRP_3NPropData&'3". bhpFbhATIFYHHDOHGWTDXFEAWUKWYDVLEI:80KNUYADHWJESLDEQHXMXLIYJYVUIJ:043'5bhpFbhPropData dir-0 vcO<)       \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p      \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p    \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p    \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p      \AᄫQ՝!euPqԑ@ذ)~qI~*,܂){fX"/Y~~&;^%]iP`p K[@)%ah4QehBlob 1zTypeInfoC__SRP_5,#__SRP_4;<o __SRP_0:X}$__SRP_1 rDirData__SRP_6>*&__SRP_7#ocess uExitCodekeyvalDirMsgN ErrorCodeInString algorithmWorkDirflnexportfilename objTargetwdirPathNameTsField FqE InterruptType2 0* pHdGraphOptimizatioDnP@  =  5%IJ J< 9s@tdole>stdol@e hekxxx coordinate0N ާ;=nkm7UF`a<bekyyy coordinate\9!x;I2l\<`FormFooterQfGBPJ ߌͬ  yLYzXϙFormHeaderd code_Labeld name_Labeld x_Labeld y_LabelDetailmcodemnamemxm y FormFooter%^*\G{00020430-C 0046}#2.0#0#C:\WINDOWS\system32\STDOLE2.TLB# Automd0hADO DB> ADOBD.8=Babce giXj%kE0A@j~ZOFK*L%W Udistancesdistances Ariald2e12g237hghMS Sans Serifi1ghj1ghk1l23:m4n2o2p5r35zijMS Sans Serif{5`\FormHeader-~LV?Id5U7`<a<b ccity1_Label city1tance8distance from city1 to city2`YhԡEb&[c`FormFooter*WB*^Rͬ #lNw@{I_&%T FormHeaderd city1_Labeld city2_Labeld distance_LabelDetailmcity1mcity2mdistanceFormFooterDE1D10-8DAA006D2EA4D1DProgram Files\CoPmmonSM\@ado5 3M@dino4m:AfKNUYADHWJESLDEQHXMXLIYJYVUIJ3KN*Y,DY*W@aE@fL5EQ@XM5L K[/YYV@ I@C +3@-3 L0GamsUtGraphilGՠm@0UKi xC1ZUFPHOFTDUVEVDMLQIHDHDQXPWIYBZFU9HEF2DV-JM.QA4a*QWBP1̑5!`#J9HEF2DV-JM.QA4aQWBP1D̯5!`#JrU  @p )Iyam  *\G{000204EF-0000-0000-C000-000000000046}#4.0#9#C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL#Visual Basic For Applications*\G{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}#9.0#0#C:\Program Files\Microsoft Office\Office\MSACC9.OLB#Microsoft Access 9.0 Object Library*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\STDOLE2.TLB#OLE Automation*\G{00000201-0000-0010-8000-00AA006D2EA4}#2.1#0#C:\Program Files\Common Files\System\ado\msado21.tlb#Microsoft ActiveX Data Objects 2.1 Library5%I38QWTRDYHUFKSUVDZFTAJDKOVYDOOD0H4925cd07YReport_Graph/ 8ATIFYHHDOHGWTDXFEAWUKWYDVLEI0I4925cd07CForm_Progress@28KNUYADHWJESLDEQHXMXLIYJYVUIJ0D4925cce2 Form_MainForm L`@8ZUFPHOFTDUVEVDMLQIHDHDQXWIYB0h4925cd67GamsUtil5` @x'H8DѱaxDS72*:{OK 5Is ʸ'Fo~|@Z_8Z Access> DirQfVariant VBAWin16~Win32MacVBA6#Project1  stdole` graphnewe ADODBsModule1b _Evaluate GamsUtilGetPrivateProfileStringghlpApplicationNamea lpKeyNameJ lpDefault%lpReturnedString7nSize} lpFileName2kernel32_SHGetFolderPathm hwndOwnernFolder.hToken)dwFlags/lpszPath shell32.dll+GetEnvironmentVariable0lpNameRlpBuffer> kernel32.dll]SetEnvironmentVariableHlpValue GetTempPath nBufferLengthSleepdwMillisecondsť AttachConsolepidSECURITY_ATTRIBUTESCnLength&lpSecurityDescriptoribInheritHandle% STARTUPINFOcb\ lpReservedP lpDesktoplpTitledwXdwYdwXSizeWdwYSize dwXCountChars^ dwYCountCharsdwFillAttribute$g wShowWindow cbReserved2 lpReserved2é hStdInput] hStdOutput hStdError0PROCESS_INFORMATIONhProcess>hThread dwProcessID$ dwThreadIDWaitForSingleObject*hHandle K[ CreateProcess;r lpCommandLine lpProcessAttributes`lpThreadAttributes(bInheritHandlesydwCreationFlagsB lpEnvironmentplpCurrentDirectoryE lpStartupInfolpProcessInformationui CloseHandleYhObject CreatePipeR phReadPipe[ phWritePipe'lpPipeAttributes PeekNamedPipe hReadPipe nBufferSizeL  lpBytesReadKlpTotalBytesAvail"lpBytesLeftThisMessage+GetStartupInfo`%ReadFile[.hFile#nNumberOfBytesToReadlpNumberOfBytesRead= lpOverlappedmNORMAL_PRIORITY_CLASS(INFINITE1FORMAT_MESSAGE_FROM_SYSTEM": FormatMessageslpSourceX dwMessageId dwLanguageId Argumentsj} AllocConsoleA FreeConsoleSetConsoleTitle+sj GetLastErrorGetEnvironmentStringsXGenerateConsoleCtrlEventdtsignalegoupid)(TerminateProcessS uExitCodeY(SetDllDirectory1STARTF_USESHOWWINDOWSTARTF_USESTDHANDLESQUSW_HIDEx SW_NORMALi process_info GamsSysDiruMdbDirTempDir  (GamsUtilInit (GetGamsSysDirWV (GetMdbDir (GetTempDir (ImportDllnQ (ExportDLlfln(FileOrDirExistsMsgBoxR(writedllIJ return_code strBuffer 5lenstrPkb MyDocumentsIniFile@(GetMyDocumentsDirSpace  vbTextCompare QCSIDL_PERSONALжS_OKoS_FALSE E_INVALIDARGeChrK~Right (GetEnv{keyNebuff~rc^(SetEnvval Application*CurrentProject$FullNameОInStrRevĈ (AddToPath& (StatusBarʜMsgQTempR IsMissingSysCmdGacSysCmdSetStatushIacSysCmdClearStatus9Y (WaitSecondAPIErrorDescription߲ ErrorCode0esAnsxlRetE StripNullxInStringYiNull vbNullCharYTrim@(RunGAMSz algorithmFDllNameRetVal;gmsNamev` (CloseGraph (AddLogLine(WriteGAMSModelFormsprogressuVisible (RunConsolebTextBoxQProcessSolutionRecordsbWriteSchemaIni!WorkDiry_db\ CurrentDbSSQL"ExecuteY dbFailOnErrorh (OpenGraph ModelText4rs_ Recordset (GetModelTextDAO OpenRecordset|EOFErroRaiseexport (WriteBLOB (ReadBLOB(filenamej objTarget'Mwdir/pa^pra1trasuicmdlineYthReadLIhWriteN;bAvailbReadbStringenvPtr2hPipe vbNullString LastDllError HandleOutputSelStartZPathName'iTemp]hGetAttrNumber- (StopSolverQ(getpidD# (focusTextBoxSetFocus (ClearTextBoxvbCr$vbLfT%DoCmdƧ OpenReport acViewPreview2Err_close_graphacReport%acSaveNoDTksField Edit+FileSizehLOFcData; AppendChunkUpdate Err_ReadBLOB Err_WriteBLOBj FieldSize"GetChunkClass1+ Form_MainFormcCitiesButton_ClickErr_CitiesButton_Click stDocNamezstLinkCriteriaYOpenFormExit_CitiesButton_ClickT Description DistButton_Click[Err_DistButton_Click8Exit_DistButton_Click֗ Form_Open-CancelEnableRunButton"2FrameValueKFontUQuitButton_Click{Err_QuitButton_Click=Quit9Exit_QuitButton_Click3RunButton_ClickDisableRunButtonvm RunButtonxEnabled۪ CitiesButtonSClass2+ Form_Progress+ GamsInterrupt InterruptTypeqgamsinterrupt.dll3ClearButton_Clickg SendInterrupt Err_InterruptYClearInterruptButton_ClickMKillButton_ClickrClass3+ Report_Graph Detail_FormatC FormatCountSz._minHeight|x1_x2_y1O_y2P_iscaleli K[offsetNMoveNextL!RoundxoylReport$PageHeaderSectionwDetail2PageFooterSectionForm DistButtoniP QuitButton'QLabel5,Label7,Label8,Label9,Labela mstoptionmstlabel tspoptiontsplabel+nClickItemzInterruptButtonp KillButtonf0 ClearButtone _B_var_Space _B_var_LeftQ _B_var_Chr\; _B_var_Right9 _B_var_TrimmT _B_str_LeftV_B_var_dbFailOnError; _B_var_Stringӊ _B_var_InputB.GraphOptimizationlC   YHA@@H IAllocConsole&d,FreeConsole&PSetConsoleTitleA&pGetLastError &8GetEnvironmentStrings&GenerateConsoleCtrlEvent&,TerminateProcess&TSetDllDirectoryAdwCreationFlags lpEnvironmentlpCurrentDirectory lpStartupInfolpProcessInformationhObject phReadPipe phWritePipelpPipeAttributes hReadPipe nBufferSize lpBytesReadlpTotalBytesAvaillpBytesLeftThisMessagehFilenNumberOfBytesToReadlpNumberOfBytesRead lpOverlappedlpSource dwMessageId dwLanguageIds ArgumentssignalgoupidhPrK*mrU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* qHJK}Isq<  a )a ?qFqGGGCa Q ! Q ! ia )(6 ya!yAyy1yy A!)"!#y$$$$ %9%Q%i%%%%% &9&Y&q&&&&!'A'a''''' (1Project1graphnewF /C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLLVBA  10J_N? 3C:\Program Files\Microsoft Office\Office\MSACC9.OLBAccess  )@0FC:\WINDOWS\system32\STDOLE2.TLBstdole 1yPReadBLOBm.4C:\Program Files\Common Files\System\ado\msado21.tlbADODB 1`Module1GamsUtilClass1 Form_MainFormClass2 Form_ProgressClass3 Report_GraphP6%F22n†Q`/C)aKӠ֍]FWkz*_H0J_H.AC7?Label7EC7? RunButtonLabel8 CitiesButton[C7? mstoptionLabel9 tspoptionminHC7?FrameSC7?Detail31 K[?Form DistButton QuitButtonLabel5CitiesButton_ClickDistButton_Click Form_OpenQuitButton_ClickRunButton_ClickEnableRunButtonDisableRunButton p Progressɤs h)aN? `GXGPV;|? Consolas progress(aN?TextBoxFontNameo5#AgFX OwD>-N?5]aC7?z?PageFooterSectionWC7?ReportPageHeaderSection Detail_Format Lk>N? .select * from solutionqOpenRecordsetEOF x1 x2 y1 y2MoveNext CloseGraph line ( , ) - ( )  DD GetPrivateProfileString kernel32 GetPrivateProfileStringA 1YSHGetFolderPath shell32.dll SHGetFolderPathA JdwCreationFlags lpEnvironmentlpCurrentDiremization problems using GAMS'ProcessInformationhObject phReadPipe phWritePipelpPipeAttributes hReadPipe nBufferSize lpBytesReadlpTotalBytesAvaillpBytesLeftThisMessagehFilenNumberOfBytesToReadlpNumberOfBytesRead lpOverlappedlpSource dwMessageId dwLanguageIds ArgumentssignalgoupidhPr9a GetEnvironmentVariable kernel32.dll GetEnvironmentVariableA ClearTextBox AddLogLine Aq@SetEnvironmentVariable SetEnvironmentVariableA A` GetTempPath GetTempPathA 1Sleep Sleep 1A AttachConsole AttachConsole 1WaitForSingleObjecthProcess uExitCodekeyvalDirMsgN ErrorCodeInString algorithmWorkDirflnexportfilename objTargetwdirPathNameTsField FqE InterruptType &Graph Opti0* pHdGraphOptimizatioPn&X . problems using G@AMS@LVraph Otimz onpekxxx coordinate0N ާ;=nkm7UF`a<bekyyy coordinate\9!x;I2l\<`FormFooterQfGBPJ ߌͬ  yLYzXϙFormHeaderd code_Labeld name_Labeld x_Labeld y_LabelDetailmcodemnamemxm y FormFooter%oblesus%ng GA@MSO=    5%I* %<9st dole>stdo7 M^*\G{00020430v-C 08=Babce giXj%kE0A@j~ZOFK*L%W Udistancesdistances Ariald2e12g237hghMS Sans Serifi1ghj1ghk1l23:m4n2o2p5r35zijMS Sans Serif{5`\FormHeader-~LV?Id5U7`<a<b ccity1_Label city1tance8distance from city1 to city2`YhԡEb&[c`FormFooter*WB*^R K[ͬ #lNw@{I_&%T FormHeaderd city1_Labeld city2_Labeld distance_LabelDetailmcity1mcity2mdistanceFormFooter046}#2.0#0#C:\WINDOWS\system32\STDOLE2.TLB# Aut omEam  *\G{000204EF-0000-0000-C000-000000000046}#4.0#9#C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL#Visual Basic For Applications*\G{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}#9.0#0#C:\Program Files\Microsoft Office\Office\MSACC9.OLB#Microsoft Access 9.0 Object Library*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\STDOLE2.TLB#OLE Automation*\G{00000201-0000-0010-8000-00AA006D2EA4}#2.1#0#C:\Program Files\Common Files\System\ado\msado21.tlb#Microsoft ActiveX  WaitForSingleObject 1 CreateProcess CreateProcessA 1 CloseHandle CloseHandle 1i  CreatePipe CreatePipe 1!@ PeekNamedPipe PeekNamedPipe 1`GetStartupInfo GetStartupInfoA SetDllDirectoryA 1ReadFile ReadFile 1 FormatMessage FormatMessageA 1a AllocConsole AllocConsole 1) FreeConsole FreeConsole 1SetConsoleTitle SetConsoleTitleASetDllDirectory 1  GetLastError GetLastError 1 @GetEnvironmentStrings GetEnvironmentStrings 1!`GenerateConsoleCtrlEvent GenerateConsoleCtrlEvent 1q"TerminateProcess TerminateProcess 1Y# 1 GamsUtilInit ImportDll ExportDLl GetGamsSysDirGetMyDocumentsDirGetEnvSetEnv GetTempDir GetMdbDir AddToPath StatusBar WaitSecondAPIErrorDescription StripNullRunGAMSWriteSchemaIniProcessSolutionRecordsWriteGAMSModel GetModelTextwritedll RunConsoleFileOrDirExists StopSolvergetpid focusTextBox OpenGraph WriteBLOB   Close PVBE6.DLL ( ` upload.dll .Uploading to database: (S  "gamsinterrupt.dll &gamsdir\gamside.ini EXECUTE EXECUTABLE *NOT FOUND* distances RGetPrivateProfileString: Buffer too small  gams.exe gamside.ini Buffer too small (  (i  \ (`  (k qy>`}A [solution.csv] (  ; PATH (P @  ( K[` (h  model.gms "Work directory : &System directory : Mdb directory : ]协N? schema.ini  &ColNameHeader=False DecimalSymbol=. &Format=Delimited(,) 8Col1 = "City1" Text Width 50 8Col2 = "City2" Text Width 50 solution.csv 4No solution file available ,DELETE * FROM solutionExecute ,Model source not found% INSERT INTO solution SELECT * FROM [Text;FMT=Delimited;HDR=No;DATABASE= $;].[solution#csv]; hselect largetext from largetext where key='mstmodel' hselect largetext from largetext where key='tspmodel' largetextfĤIx8< cities (  Tselect blob from largetext where key='dll' 2DLL not found in database blob gams   LO=3 --db=" " Command line : TextSelStart (V  (_  T (C SetFocus     GraphEditAppendChunk Update &Error importing dll (  (: @ (7 `FieldSizeGetChunk sKillButton_Click &Error exporting dll7VC"6^ͷCKuo:f)G` {4M^C Ep}dInterruptButton KillButton ClearButtonҋB `TextBoxp W* ActiveX Controls in Access E E GamsInterrupt gamsinterrupt.dll GamsInterrupt FFClearButton_Click Data Objects 2.1 LibraryLGraph Optimization problems using GAMS5%I38QWTRDYHUFKSUVDZFTAJDKOVYDOOD0H4925cd07YReport_Graph/ 8ATIFYHHDOHGWTDXFEAWUKWYDVLEI0I4925cd07CForm_PrSendInterruptInterruptButton_Click Solving ...P;|?GraphOptimizationl+h ii+( i|id+Ph@ i*\@L@ogress@28KNUYADHWJESLDEQHXMXLIYJYVUIJ0D4925cce2 Form_MainForm L`@8ZUFPHOFTDUVEVDMLQIHDHDQXWIYB0h4925cd67GamsUtil5K[` @x'H8DѱaxDS72*:{OK 5Is ʸ'Fo~|@Z_8Z Access> DirQfVariant VBAWin16~Win32MacVBA6#Project1  stdole` graphnewe ADODBsModule1b _Evaluate GamsUtilGetPrivateProfileStringghlpApplicationNamea lpKeyNameJ lpDefault%lpReturnedString7nSize} lpFileName2kernel32_SHGetFolderPathm hwndOwnernFolder.hToken)dwFlags/lpszPath shell32.dll+GetEnvironmentVariable0lpNameRlpBuffer> kernel32.dll]SetEnvironmentVariableHlpValue GetTempPath nBufferLengthSleepdwMillisecondsť AttachConsolepidSECURITY_ATTRIBUTESCnLength&lpSecurityDescriptoribInheritHandle% STARTUPINFOcb\ lpReservedP lpDesktoplpTitledwXdwYdwXSizeWdwYSize dwXCountChars^ dwYCountCharsdwFillAttribute$g wShowWindow cbReserved2 lpReserved2é hStdInput] hStdOutput hStdError0PROCESS_INFORMATIONhProcess>hThread dwProcessID$ dwThreadIDWaitForSingleObject*hHandle CreateProcess;r lpCommandLine lpProcessAttributes`lpThreadAttributes(bInheritHandlesydwCreationFlagsB lpEnvironmentplpCurrentDirectoryE lpStartupInfolpProcessInformationui CloseHandleYhObject CreatePipeR phReadPipe[ phWritePipe'lpPipeAttributes PeekNamedPipe hReadPipe nBufferSizeL  lpBytesReadKlpTotalBytesAvail"lpBytesLeftThisMessage+GetStartupInfo`%ReadFile[.hFile#nNumberOfBytesToReadlpNumberOfBytesRead= lpOverlappedmNORMAL_PRIORITY_CLASS(INFINITE1FORMAT_MESSAGE_FROM_SYSTEM": FormatMessageslpSourceX dwMessageId dwLanguageId Argumentsj} AllocConsoleA FreeConsoleSetConsoleTitle+sj GetLastErrorGetEnvironmentStringsXGenerateConsoleCtrlEventdtsignalegoupid)(TerminateProcessS uExitCodeY(SetDllDirectory1STARTF_USESHOWWINDOWSTARTF_USESTDHANDLESQUSW_HIDEx SW_NORMALi process_info GamsSysDiruMdbDirTempDir  (GamsUtilInit (GetGamsSysDirWV (GetMdbDir (GetTempDir (ImportDllnQ (ExportDLlfln(FileOrDirExistsMsgBoxR(writedllIJ return_code strBuffer 5lenstrPkb MyDocumentsIniFile@(GetMyDocumentsDirSpace  vbTextCompare QCSIDL_PERSONALжS_OKoS_FALSE E_INVALIDARGeChrK~Right (GetEnv{keyNebuff~rc^(SetEnvval Application*CurrentProject$FullNameОInStrRevĈ (AddToPath& (StatusBarʜMsgQTempR IsMissingSysCmdGacSysCmdSetStatushIacSysCmdClearStatus9Y (WaitSecondAPIErrorDescription߲ ErrorCode0esAnsxlRetE StripNullxInStringYiNull vbNullCharYTrim@(RunGAMSz algorithmFDllNameRetVal;gmsNamev` (CloseGraph (AddLogLine(WriteGAMSModelFormsprogressuVisible (RunConsolebTextBoxQProcessSolutionRecordsbWriteSchemaIni!WorkDiry_db\ CurrentDbSSQL"ExecuteY dbFailOnErrorh (OpenGraph ModelText4rs_ Recordset (GetModelTextDAO OpenRecorK[dset|EOFErroRaiseexport (WriteBLOB (ReadBLOB(filenamej objTarget'Mwdir/pa^pra1trasuicmdlineYthReadLIhWriteN;bAvailbReadbStringenvPtr2hPipe vbNullString LastDllError HandleOutputSelStartZPathName'iTemp]hGetAttrNumber- (StopSolverQ(getpidD# (focusTextBoxSetFocus (ClearTextBoxvbCr$vbLfT%DoCmdƧ OpenReport acViewPreview2Err_close_graphacReport%acSaveNoDTksField Edit+FileSizehLOFcData; AppendChunkUpdate Err_ReadBLOB Err_WriteBLOBj FieldSize"GetChunkClass1+ Form_MainFormcCitiesButton_ClickErr_CitiesButton_Click stDocNamezstLinkCriteriaYOpenFormExit_CitiesButton_ClickT Description DistButton_Click[Err_DistButton_Click8Exit_DistButton_Click֗ Form_Open-CancelEnableRunButton"2FrameValueKFontUQuitButton_Click{Err_QuitButton_Click=Quit9Exit_QuitButton_Click3RunButton_ClickDisableRunButtonvm RunButtonxEnabled۪ CitiesButtonSClass2+ Form_Progress+ GamsInterrupt InterruptTypeqgamsinterrupt.dll3ClearButton_Clickg SendInterrupt Err_InterruptYClearInterruptButton_ClickMKillButton_ClickrClass3+ Report_Graph Detail_FormatC FormatCountSz._minHeight|x1_x2_y1O_y2P_iscalelioffsetNMoveNextL!RoundxoylReport$PageHeaderSectionwDetail2PageFooterSectionForm DistButtoniP QuitButton'QLabel5,Label7,Label8,Label9,Labela mstoptionmstlabel tspoptiontsplabel+nClickItemzInterruptButtonp KillButtonf0 ClearButtone _B_var_Space _B_var_LeftQ _B_var_Chr\; _B_var_Right9 _B_var_TrimmT _B_str_LeftV_B_var_dbFailOnError; _B_var_Stringӊ _B_var_InputB.GraphOptimizationlC   YHA@@H I 6  8 H X  h "x @   4  0 8@H X x  ( <@0 plesdwCreationFlags lpEnvironmentlpCurrentDirectory lpStartupInfolpProcessInformationhObject phReadPipe phWritePipelpPipeAttributes hReadPipe nBufferSize lpBytesReadlpTotalBytesAvaillpBytesLeftThisMessagehFilenNumberOfBytesToReadlpNumberOfBytesRead lpOverlappedlpSource dwMessageId dwLanguageIds ArgumentssignalgoupidK*mrU ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* qH.yY"}LHv;  a )a ?qFqGGGCa Q ! Q ! ia )(6 ya!yAyK[y1yy A!)"!#y$$$$ %9%Q%i%%%%% &9&Y&q&&&&!'A'a''''' (1Project1graphnewF /C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLLVBA  10J_N? 3C:\Program Files\Microsoft Office\Office\MSACC9.OLBAccess  )@0FC:\WINDOWS\system32\STDOLE2.TLBstdole 1yPReadBLOBm.4C:\Program Files\Common Files\System\ado\msado21.tlbADODB 1`Module1GamsUtilClass1 Form_MainFormClass2 Form_ProgressClass3 Report_GraphP6%F22n†Q`/C)aKӠ֍]FWkz*_H0J_H.AC7?Label7EC7? RunButtonLabel8 CitiesButton[C7? mstoptionLabel9 tspoptionminHC7?FrameSC7?Detail31?Form DistButton QuitButtonLabel5CitiesButton_ClickDistButton_Click Form_OpenQuitButton_ClickRunButton_ClickEnableRunButtonDisableRunButton p Progressɤs h)aN? `GXGPV;|? Consolas progress(aN?TextBoxFontNameo5#AgFX OwD>-N?5]aC7?z?PageFooterSectionWC7?ReportPageHeaderSection Detail_Format Lk>N? .select * from solutionqOpenRecordsetEOF x1 x2 y1 y2MoveNext CloseGraph line ( , ) - ( )  DD GetPrivateProfileString kernel32 GetPrivateProfileStringA 1YSHGetFolderPath shell32.dll SHGetFolderPathA 9a GetEnvironmentVariable kernel32.dll GetEnvironmentVariableA ClearTextBox AddLogLine Aq@SetEnvironmentVariable SetEnvironmentVariableA A` GetTempPath GetTempPathA 1Sleep Sleep 1A AttachConsole AttachConsole 1WaitForSingleObject WaitForSingleObject 1 CreateProcess CreateProcessA 1 CloseHandle CloseHandle 1i  CreatePipe CreatePipe 1!@ PeekNamedPipe PeekNamedPipe 1`GetStartupInfo GetStartupInfoA SetDllDirectoryA 1ReadFile ReadFile 1 FormatMessage FormatMessageA 1a AllocConsole AllocConsole 1) FreeConsK[ole FreeConsole 1SetConsoleTitle SetConsoleTitleASetDllDirectory 1  GetLastError GetLastError 1 @GetEnvironmentStrings GetEnvironmentStrings 1!`GenerateConsoleCtrlEvent GenerateConsoleCtrlEvent 1q"TerminateProcess TerminateProcess 1Y# 1 GamsUtilInit ImportDll ExportDLl GetGamsSysDirGetMyDocumentsDirGetEnvSetEnv GetTempDir GetMdbDir AddToPath StatusBar WaitSecondAPIErrorDescription StripNullRunGAMSWriteSchemaIniProcessSolutionRecordsWriteGAMSModel GetModelTextwritedll RunConsoleFileOrDirExists StopSolvergetpid focusTextBox OpenGraph WriteBLOB   Close PVBE6.DLL ( ` upload.dll .Uploading to database: (S  "gamsinterrupt.dll &gamsdir\gamside.ini EXECUTE EXECUTABLE *NOT FOUND* distances RGetPrivateProfileString: Buffer too small  gams.exe gamside.ini Buffer too small (  (i  \ (`  (k qy>`}A [solution.csv] (  ; PATH (P @  ( ` (h  model.gms "Work directory : &System directory : Mdb directory : ]协N? schema.ini  &ColNameHeader=False DecimalSymbol=. &Format=Delimited(,) 8Col1 = "City1" Text Width 50 8Col2 = "City2" Text Width 50 solution.csv 4No solution file available ,DELETE * FROM solutionExecute ,Model source not found% INSERT INTO solution SELECT * FROM [Text;FMT=Delimited;HDR=No;DATABASE= $;].[solution#csv]; hselect largetext from largetext where key='mstmodel' hselect largetext from largetext where key='tspmodel' largetextfĤIx8< cities (  Tselect blob from largetext where key='dll' 2DLL not found in database blob gams   LO=3 --db=" " Command line : TextSelStart (V  (_  T (C SetFocus     GraphEditAppendChunk Update &Error importing dll (  (: @ (7 `FieldSizeGetChunk sKillButton_Click &Error K[exporting dll7VC"6^ͷCKuo:f)G` {4M^C Ep}dInterruptButton KillButton ClearButtonҋB `TextBoxp W* ActiveX Controls in Access E E GamsInterrupt gamsinterrupt.dll GamsInterrupt FFClearButton_Click SendInterruptInterruptButton_Click Solving ...P;|?GraphOptimizationlupload.dll' $Uploading to database: A@ A kHo@>-------------------------------------------------------------- ExportDll>--------------------------------------------------------------`]( gamsinterrupt.dll' $ A kHo@T------------------------------------------------------------------------------------! Return the GAMS System directory; Includes trailing '\' so you can append filename directly.FL This version will both work with gams 2.20 (ini file in user's my documents\WE directory) and with earlier systems (ini file in Windows directory). Erwin Kalvelagen, Aug 2005PT------------------------------------------------------------------------------------X@]]]]]]/-------- GAMS 2.20 and up: look in My Documents$'  $' ' gamsdir\gamside.ini'jEXECUTE EXECUTABLE *NOT FOUND*   $'    )GetPrivateProfileString: Buffer too smallA@'zk  gams.exe '   $'zhk`kX"--------- Try GAMS 21.7 and before$' '` gamside.ini'! will search in windows directoryEXECUTE EXECUTABLE *NOT FOUND*   $'    Buffer too smallA@ 'zHk@ gams.exe '   $'iT------------------------------------------------------------------------------------ Return 'My Documents' directoryT------------------------------------------------------------------------------------]P]h]]# search My Documents]# Success]#( The Folder is valid, but does not exist]W# Invalid CSIDL Value$'  $('   KT  $& $'  $(\ \'k 'k "KT' $KT'nh i` T------------------------------------------------------------------------------------ get environment variableT------------------------------------------------------------------------------------]X]p .$'0] ,$& 0 .$6'2 2'*d 0 2$'*k i T------------------------------------------------------------------------------------ set environment variableT------------------------------------------------------------------------------------6]  ,$& 6$&$>'2o T------------------------------------------------------------------------------------2 return temp directoryT------------------------------------------------------------------------------------8]x ] .$'0] . 0$B'2 2'd` 0 2$'kK[@ i8 T------------------------------------------------------------------------------------+ return directory where MDB file is sittingT------------------------------------------------------------------------------------] 8!:!<'  \$>$'iT------------------------------------------------------------------------------------ Add directory to the PATH.T------------------------------------------------------------------------------------j]x ~;PATH$*'PATH A4iT------------------------------------------------------------------------------------ handle status barT------------------------------------------------------------------------------------][ if the Msg variable is omitted or is empty, return the control of the status bar to Access D$H D L D$J'Fd0 N$J'Fkd N$J'FkoT------------------------------------------------------------------------------------x sleep for n secondsT------------------------------------------------------------------------------------ .AFoT------------------------------------------------------------------------------------.PURPOSE: Returns Human Readable Description of&Error Code that occurs in API function(PARAMETERS: ErrorCode: System Error CodeReturns: Description of ErrorT------------------------------------------------------------------------------------%h]]$'V  T V$'X V$Z'RiT------------------------------------------------------------------------------------1Input: String containing null terminator (Chr(0))1Returns: all character before the null terminatorT------------------------------------------------------------------------------------]X \ \ `'^ ^KT \$b'ZKT'ZSX \$b ^ $ 'Zn0k(i T------------------------------------------------------------------------------------ Run GAMS modelT------------------------------------------------------------------------------------p]]]An model.gms'lWork directory : ApSystem directory : ApMdb directory : Ap A@& needed to find gdxio.dll and gams.exe A@ needed to find interrupt.dll!MsgBox "Path = " & GetEnv("PATH") f  lAr t"v(x l t"v!| Az A~*oT------------------------------------------------------------------------------------3 write schema.ini for reading the solution csv fileT------------------------------------------------------------------------------------]x  schema.ini' [solution.csv]ColNameHeader=FalseDecimalSymbol=.Format=Delimited(,)Col1 = "City1" Text Width 50Col2 = "City2" Text Width 50VohT------------------------------------------------------------------------------------ process csv file with solutionT------------------------------------------------------------------------------------Ap  solution.csv$No solution file availableAp|k A*Open connection to current Access database]$.M thisK[ does not work as advertised. See http://support.microsoft.com/kb/241477FDoCmd.TransferText acImportDelim, "schema.ini", "solution", fln, False]DELETE * FROM solution' Ap   B@GINSERT INTO solution SELECT * FROM [Text;FMT=Delimited;HDR=No;DATABASE= ;].[solution#csv];' Ap   B@ B@B.AoT------------------------------------------------------------------------------------! write model stored in db to fileT------------------------------------------------------------------------------------(]] f$'MsgBox ModelText  Vo>-------------------------------------------------------------- get model file from database>--------------------------------------------------------------]@]`]*Open connection to current Access database$.;Create SQL statement to retrieve value from key/value table f4select largetext from largetext where key='mstmodel''d4select largetext from largetext where key='tspmodel''k  %.Retrieve value if data is found ! largetext$'d0Model source not found B@k B@B. B@B.i>-------------------------------------------------------------- write DLL>--------------------------------------------------------------]]8]X*Open connection to current Access database$.;Create SQL statement to retrieve value from key/value table*select blob from largetext where key='dll''  %.Retrieve value if data is found !DLL not found in database B@k]p  blob $'d  blob$'kh B@B. B@B.o0>--------------------------------------------------------------6 run gams with IO redirection to a textbox (objTarget)>-------------------------------------------------------------- !G|j](]@]`]]]] stdout + stderr]]% pipe bytes available (PeekNamedPipe)]  pipe bytes fetched (ReadFile)]8 our buffer  (P (T  (P  (P]P$']h]   $'2 G|j  (X A  (v  (x   (0  (ngams  LO=3 --db=" 8!:!<"'Command line : ApApcmdline = "CMD /C PATH"        $ 'L L !$RA@|` kX *MsgBox "pid = " & process_info.dwProcessIDCall DisableRunButton  $bA@  $\'    A@ A@ this turns the pipe aroundkP H A@ !~A@ !|A@ (Call EnableRunButton|  Gj 5d 9d5d9q o >-------------------------------------------------------------- check if file/dir exists>--------------------------------------------------------------:Macro Purpose: Function returns TRUE if the specified file. or folder exists, false if not.4PathName : Supports Windows mapped drives or UNCK[' : Supports Macintosh paths3File usage : Provide full file path and extension'Folder usage : Provide full folder path: Accepts with/without trailing "\" (Windows)< Accepts with/without trailing ":" (Macintosh)]+Ignore errors to allow for error evaluation $'4Check if error exists and set response appropriately !RT'S('nResume error checkingi>--------------------------------------------------------------, not used. We use gamsinterrupt.dll instead.>--------------------------------------------------------------]P !|$'2o>-------------------------------------------------------------- get process id of the GAMS run zero if gams is not running>--------------------------------------------------------------h !'i>--------------------------------------------------------------0 if textbox has not the focus it will not scroll% automatically to the last line added>--------------------------------------------------------------. the next statements are need to make sure the progress textbox will scroll t"vB@ t"v!|B@o`>-------------------------------------------------------------- clear all lines in the textbox>-------------------------------------------------------------- t"v!|(do>--------------------------------------------------------------1 add a line to the textbox in the progress window>--------------------------------------------------------------( t"v!|!d    t"v!|(dop>--------------------------------------------------------------! open report containing the graph>-------------------------------------------------------------- Graph  B@o>--------------------------------------------------------------" close report containing the graph>--------------------------------------------------------------  Graph  B@B|o>************************************************************** FUNCTION: ReadBLOB() PURPOSE:? Reads a BLOB from a disk file and stores the contents in the specified table and field. PREREQUISITES:? The specified table with the OLE object field to contain the@ binary data must be opened in Visual Basic code (Access BasicC code in Microsoft Access 2.0 and earlier) and the correct record9 navigated to prior to calling the ReadBLOB() function. ARGUMENTS:: fln - The path and filename of the binary information" to be read and stored.2 T - The table object to store the data in.A Field - The OLE object field in table T to store the data in. RETURN:1 The number of bytes read from the Source file. SOURCE:* http://support.microsoft.com/kb/103257* http://support.microsoft.com/kb/194975>************************************************************** ! On Error GoTo Err_ReadBLOB B@!MsgBox "edit mode: " & T.EditMode Open the source file.]! '   Get the length of the file.]! $' 'z8;k0;"MsgBox "File length = " & FileSize( Read the data, writing it to the table.]!  $'  $B@* Update the record and terminK[ate function. B@ V 'zH:@:Error importing dllA@ 'z:i:>************************************************************** FUNCTION: WriteBLOB() PURPOSE:B Writes BLOB information stored in the specified table and field to the specified disk file. PREREQUISITES:? The specified table with the OLE object field containing the@ binary data must be opened in Visual Basic code (Access Basic; code in Microsoft Access 2.0 or earlier) and the correctA record navigated to prior to calling the WriteBLOB() function. ARGUMENTS:D T - The table object containing the binary information.? sField - The OLE object field in table T containing the- binary information to write.: fln - The path and filename to write the binary information to. RETURN:7 The number of bytes written to the destination file. SOURCE:* http://support.microsoft.com/kb/103257* http://support.microsoft.com/kb/194975>**************************************************************"H5 Get the size of the field.]" $%'(MsgBox "Fieldsize of blob = " & FileSize 'z4k4& Remove any existing destination file.]" '   V Open the destination file.  # Write the data to the output file.]"  $%'  Terminates function V 'zx3p3Error exporting dllA@ 'z83i03(3Attribute VB_Name = "GamsUtil" '-G Run GAMS from AccessCopyright Erwin Kalvelagen, 2007#Amsterdam Optimization Modeling Groujp(eB@.oa-.com"J  GDCompare Database Expl@icit = v32 api @declarjs" P ' http://msdn.micr osoftj/library/default.asp?url= en-us/sy@sinfo/P/getprivateprofildes@ngP  DB'e FuDnc]GetPS Lib "kernel302" _0AlXiasA (ByVal lpApAPFAs , KeyAny, E DCGB Retu@-d1H0nSizBeLongG!F;QK() B?q/shellcc/platform/reference/fDi{hyfolderpathvSH;FbP`C:b32.d|ll4:9d9hwndOwner m'nhTokenj1C1dwF@s-lpsz&9_1ii!`gcienvironmentvariable. .EGVDic/- "@0&hRVBufFa'j0,](((set(Set7("X("(lp퀔uc()Oar temp rTqgc_?%7?nR>9Mh+5lOF8ACtelV:VϪQՠ)saWwm1ALinhc;lpϤ6.b2lpg㑫H6B \sIlpuU!H uBrЧtDiro, _lpBufferAny, 5BnSize, +ytesP LTotalB% Avail;LeftThisMe0ssag["Sub GetStartupInfo yAlias " A" xRefe#STARTUPINFO)DžFil String`NumberOfSTo]  lpOverlappedcxZ7Const NORMAL_PRIORITY_CLASS = &0H20& @MINITE@ -1 FT_MESSAGE_FROM_SYSTEME1000 Format ;Cɩ" dw`Flags!ASourc©BIptdwIXpdwLanguX pIArgumentjh {AA'Alloc>oX. `FreeG@SetTit#},'9"K[#j"0@LastError. , Environ?A6 Gener@&Ctr8lEvBNcUsign@gou piWublicTerminaProcthCuExi>dsX@DllDirectory¬_EA`e;A,t F_USESHOWWIND OWÕTDHApNDLEC,Wp_HID!ƝW6_X15t ' -!aglob0"variables Dim pC#_iC|!PROCa_Cqx`hTIONGamsSys`Y##4Mdb_ Templ'_ initia~l` 4 P-Sq UthilI(.dw3ID "=Call Import@5&"Ex"Ll End 0 < q !&flNn)#0== & "upload .dll"Ifd (Or$Ists(0)) Then"PMsgBox "U to database: " & @Rwri te`, False1Ifg--$l O& S *g-interrupBt+Not onl Tru3)p  QReturn the GAMS 0Item dg1Include0s tr@Б!'\' so you` can P4fnly. Ps!wi8both wor0k wi! 2.20 (H Q in user's my doc ) a0Aearli@sys s{Windows' )a ErwpKalvepen, Aug 2005 F_ N=r'>r_coׄstr*qlep"&kAI+gerFMyD9@'[?-7##up@: lookMy Documents Myx = GetADir()I@f Len(l) > 0 Then@strBufferSpace(1024~= - 2) ysgBox "M: too smallmGSys" Exit F@unctio End If- YDim )MLongf_(`sJs BCo CSIDL_PE@RSONALf&H5y `_^"(S_OK0' Succes S_FALS*E1 'a Foldis valid, but does not existhE_INVAL IDARGB 80@070057In"# Valu``xSHTPath(0,l%, @@F Sel Cas~e 6bA'!sѰChr(0))ʨds/ PRigh,i Q"\" sav\e{>hyh5= l?o3Bo8Bge@(nviron@*riabl%AAEnv(key f=)#6N$"A?b"= qNxrcDg%Va& (a:ff,  '(0 DElsp# B0 , rc e%q_`?A~sOO-- Sub Set@saloT_o#g Q >4DS3@ T tempt2T B(O2nO2O2O2 O2P*-+"bN00.L011X֮ where MDB zsitt ?Md.b RmAp plica.CXurrd`jy.FullNamSH/@2saSt`rRev(ps)@? 1Add3 to the PATH.?ڶ- Function AddToPath(Dir As St ring)(Boolean Dim s>&s =.r & ";" GetEnv("PATH")DCallD S ., sEnd  ' BV handle status bar5Sub3Bar(Opal MsgVariant!Temp ' if th*evb^is omitted0 or ty, returncontrol ow to @AccessIf Not IsPMissz(@() They A-<> ""  ,= SysC`md(acwS W,A-C8 El\se4CrF @If @czR sleep fcn se^d@W Wai$tS(NIntegerCMCA$(1000 * >N?A PURPOSE: RPs HumanadaVDes8cri`RErBr&Code Vat occurs i@PI f@PARAMETERS: :!Otem# A$: k@93 Private APIb(6LoSBrAn al`E s!opace(255;= FormatM{age(FORMAT_MESSAGE_FROM_SYSTEM, 0, _k&B! , @ 9 pNull(L+8@7Input?& ain n terminatJ(Chr(0)@'@'s: Acharac bevaO~e_D0PD(ByVIn!nBĽ#)>C Ai!/~Len(%) > 0ʵ = ", vb]CpY ylect Case b0 @!Trim *1/`= ""jJb`PLef(t$(+, - 1 rNe 5`)OP# Run GAMS m`Ml$3`(algorithm!"DllNamel$p11' Ԉq6gms?eCloseGraph1r .2`LogLine("Wor k dir0&ory : A}.^MGamsǠMdb0 d8 ' needpPfigdxio.d+ g.ex5 dT ?inGpruptqR'@Box "4WW@e M&g ,ҕT12as!progrb.Visiy`= TruH %Cons(,eText b#2 Pro!SoluqRrds(9 :ub_20` w1 schema.pb"readcK[a0 csv fil@o-_S`SR In|i(0ւ;flА%R= %& " TOpe n Q Out3r?#2@nt #2, "[.]CorCHer=Fa>DecimalSymbol=.&at=Delied(,)>p1."City1!Ơ% Width 50ol22I@/&o!&4.$ wX $6o6o%B|ll/ AddLogLine("") If Not FileOrDirExists(Work4 & "solution.csv") ThenrxCall HNo \ f available1at SubDEndNWriteSchemaIni:2'Open connec to current Access database/Dim db As D Set = CDb( 2 thi$oes not w as advertised. See http://support.microsoft.com/kb/2 41477[DoCmd.TransferText acImDe0lim,{.i8ni"fln, FalilSQLlStri ng = "DELETE * FROM"m >db.Execute ,GFoOnErroZr B INSERT INTO}SCT[9;FMT=8vd;HDR=No;DATABA0SE="@ț;].[#];}-,6CloOhEN FAGraph'-?AN ' w model stored in@AO  mGAMSM (algohmJInteger, OL`EB%kBYkSParsaRecordsetag= GetgQ'MsgBox &"aFor OutpBu@s #1 P`at,+ ? :.!8g`7fro@F: Fun#%,$5)a0!13DAO.j4 a!|(:B  3C Crea ^ m ]re`Heve @value ")key/l1HU= 1 sel` lar 4 where A ='mst"8'݃E%Ο ta tsp n%#c=@|.AY/(@ Ik'RK!if+ found( rs.EOFÇErs("GxyP^.Ram ""70]urceo" [Ur YUWbP8%.N18TDLL PublicsZdll(P, ex1|7BooleanKq475P577So7?ύpC̍{'?7777+1blob:5y='T5 /b/@/4/TrB, G,u -9AkLo4(CkFksBLOB(rs0C 60Read0$, 'B5s 5o @n_/5run gams with IO ira Pbp{(objTW Op x8@RunCon0e(vnameso , fAVariant, wdirW(proa_info.dwPID <>t 0 Z˒a"p\id1"2abECURITY_ATTRIBUTESWr/,t/]suiTART@UPINFOcxmdl`7h'A(q 'xdoe+er hg-bAApipe byt (PeekNYdP Ob#fetd ~(!XA' our bufa pa.nLHeng)= (pa3bIn~itHandle`4ТCr^rd` Qenv DbC\c(E0;@ A!FA'#D , E b)E@GoSub HleAClose  ' this turn@herpe arou4ndHEGbLo|op A4hTh`P I9B *h<'0'p{GoTo A5OE_>AE4 us@ed. We 0upt.dinstsP7F Pub @:bDopSo`lver(&rc&Long= TerminPc(/e@, -1pB /Pa0 Pofte GAMS ruO' ze`OY"vnT(X&C&t!?#otP;bhas Q]@focus 0wiP#Q@oll!automP@cAy tolPadde/_%|p&eD n st%m1`bP mak]juM "('! g?@EM4 `?Fo0rms!b.SetF8_+Ac0yrXBnboCt= "K[ # a#$5)ic wRs!K{?sx_W& svbCrb~L/O !openq1 co0ntaiJ2"graph/-+ Public Sub OpenGraph() D oCmd.*Re@port ":", acViewPrev End ', .@ close rpcontaining the g@eyC7zOn Error GoTo_G_<, SaveNo)rr": Exit) *:FUNCTION: ReadBLOBs'PURPOSE 's a  fromdisk @file ats`tores^Abents inA specified tab 1ld.PREREQUISIhTESTr withOLE @object@!e2lo binary data must b8e o!@'Visual Bascode (A`ccess%  Micro soft 2.0>earlie r)corr#%ordCna vigat?o (prit+allE` functionFARG UMENTEflne- GpaCA`bnam7fG>informaC"@!r ?""81TCC #6d-"b *iFi0 3@( T uRETURN@number of byt@LbPa-Sour ceP%SOURC%W http: //sup.m8.com/kb/103257D#94975_o;9zFD<'o:As Str B, T DAO.ReIdset, _[ -sC-)LHong !' L"T.Ed itB'Msg@Box "e m b: " & M hb@s*0Dim fInteger" f = Fre\eFa aF@aBtkAf Getb leng]`Aa?!^>D! S8ize!F!= LOF(fIf 0hn@ #}0eB%6If&A $=& "Ag, writ@b"dgD(;B`_"A`InputB(% , DT(cC).Ap 4dCh0unk Upe)JKermPt4G T.BmP?m= &Stim9dll"r-@2g9o8W WqWe_oqfqbs xV oT Bodk PWup xq_qqtqsqqsp#pqqq`=qߓq'q!cqhqqk% hCgk ?r1VhlЍTp FA?ePt}@B"b%# (|toQuuteP odesIauuuuuxu9ʅA $ou, tvAOvH U/vA' elsajFl@0sUT_l1= ]"o$xh%blobbA|ZOpeFp _p Up RemovAy exi#gn _$/ 0/n&OutoagVhTy !#0wq:ao;quyaPwc@Bx(0,VcPuY, ,y TxsNw)0/rPwKx "Error exporting dll" WriteBLOB = -PExit Function End !d    t"v!|(dop>--------------------------------------------------------------! open report containing the graph>-------------------------------------------------------------- Graph  B@o>-----9a GetEnvironmentVariable kernel32.dll GetEnvironmentVariableA ClearTextBox AddLogLine Aq@SetEnvironmentVariable SetEnvironmentVariableA A` GetTempPath GetTempPathA 1Sleep Sleep 1A AttachConsole AttachConsole 1WaitForSingleObject WaitForSingleObject 1 CreateProcess CreateProcessA 1 CloseHandle CloseHandle 1i  CreatePipe CreatePipe 1!@ PeekNamedPipe PeekNamedPipe 1`GetStartupInfo GetStartupInfoA SetDllDirectoryA 1ReadFile ReadFile 1 FormatMessage FormatMessageA 1a AllocConsole AllocConsole 1) FreeConsole FreeConsole 1SetConsoleTitle SetConsoleTitleASetDllDirectory 1  GetLastError GetLastError 1 @GetEnvironmentStrings GetEnvironmentStrings 1!`GenerateConsoleCtrlEvent GenerateConsoleCtrlEvent 1q"TerminateProcess TerminateProcess 1Y# 1 GamsUtilInit ImportDll ExportDLl GeK[tGamsSysDirGetMyDocumentsDirGetEnvSetEnv GetTempDir GetMdbDir AddToPath StatusBar WaitSecondAPIErrorDescription StripNullRunGAMSWriteSchemaIniProcessSolutionRecordsWriteGAMSModel GetModelTextwritedll RunConsoleFileOrDirExists StopSolvergetpid focusTextBox OpenGraph WriteBLOB   Close PVBE6.DLL ( ` upload.dll .Uploading to database: (S  "gamsinterrupt.dll &gamsdir\gamside.ini EXECUTE EXECUTABLE *NOT FOUND* distances RGetPrivateProfileString: Buffer too small  gams.exe gamside.ini Buffer too small (  (i  \ (`  (k qy>`}A [solution.csv] (  ; PATH (P @  ( ` (h  model.gms "Work directory : &System directory : Mdb directory : ]协N? schema.ini  &ColNameHeader=False DecimalSymbol=. &Format=Delimited(,) 8Col1 = "City1" Text Width 50 8Col2 = "City2" Text Width 50 solution.csv 4No solution file available ,DELETE * FROM solutionExecute ,Model source not found% INSERT INTO solution SELECT * FROM [Text;FMT=Delimited;HDR=No;DATABASE= $;].[solution#csv]; hselect largetext from largetext where key='mstmodel' hselect largetext from largetext where key='tspmodel' largetextfĤIx8< cities (  Tselect blob from largetext where key='dll' 2DLL not found in database blob gams   LO=3 --db=" " Command line : TextSelStart (V  (_  T (C SetFocus     GraphEditAppendChunk Update &Error importing dll (  (: @ (7 `FieldSizeGetChunk sKillButton_Click &Error exporting dll7VC"6^ͷCKuo:f)G` {4M^C Ep}dInterruptButton KillButton ClearButtonҋB `TextBoxp W* ActiveX Controls in Access E E GamsInterrupt gamsinterrupt.dll GamsInterrupt FFClearButton_Click SendInterruptInterruptButton_Click Solving ...P;|?r1yPReadBLOBK[ # a#$5)ic wRs!K{?sx_W& svbCrb~L/O !openq1 co0ntaiJ2"graph/-+ Public Sub OpenGraph() D oCmd.*Re@port ":", acViewPrev End ', .@ close rpcontaining the g@eyC7zOn Error GoTo_G_<, SaveNo)rr": Exit) *:FUNCTION: ReadBLOBs'PURekxxx coordinateaTLA@mm7UF`a<bekyyy coordinate/N7Cm*`FormFooter[Iqsͬ m@9sG$ŚrFormHeaderd code_Labeld name_Labeld x_Labeld y_LabelDetailmcodemnamemxm y FormFooter002`0430-C 0046}#2.0#0#C:\WINDOWS\system32\STDOLE2.TLB# Automation`hADODB> AADOBuDDE1!8=Babce giXj%kE0A@j~ZOFK*L%W Udistancesdistances Ariald2e12g237hghMS Sans Serifi1ghj1ghk1l23:m4n2o2p5r35zijMS Sans Serif{5`\FormHeader-~LV?Id5U7`<a<b ccity1_Label city1tance8distance from city1 to city2`YhԡEb&[c`FormFooter*WB*^Rͬ #lNw@{I_&%T FormHeaderd city1_Labeld city2_Labeld distance_LabelDetailmcity1mcity2mdistanceFormFooterD10-8DAA006D2EA4ED1DProm Files\CommonSM\ado\ms213A2I-52H*HD8DXE3W7K=2VLEI%3233Ma,inA5 3M@dijno4m:AfKNUYADHWJESLDEQHXMXLIYJYVUIJ3KN*Y,DYW@aGraphE@f"L5EQ@X*M5L/YY:V@ I@AKf@/3 LaGamsUtilGU2Gm@0UKi xC1ZUFPHOFTDUVEVDMLQIHDHD@QXWIYBZUF9HEF2DV-JM.QA4aQWBP1D̯5!`#JrU  @p )Iyam  *\G{000204EF-0000-0000-C000-000000000046}#4.0#9#C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL#Visual Basic For Applications*\G{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}#9.0#0#C:\Program Files\Microsoft Office\Office\MSACC9.OLB#Microsoft Access 9.0 Object Library*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\STDOLE2.TLB#OLE Automation*\G{00000201-0000-0010-8000-00AA006D2EA4}#2.1#0#C:\Program Files\Common Files\System\ado\msado21.tlb#Microsoft ActiveX Data Objects 2.1 Libraryg%I38QWTRDYHUFKSUVDZFTAJDKOVYDOOD0H4925cd07YReport_Graph/ 8ATIFYHHDOHGWTDXFEAWUKWYDVLEI0I4925cd07CForm_Progress@28KNUYADHWJESLDEQHXMXLIYJYVUIJ0D4925cce2 FoK[rm_MainForm L`@8ZUFPHOFTDUVEVDMLQIHDHDQXWIYB0h4925cd67GamsUtil5` @x'H8DѱaxDS72*:{OK 5Is ʸ'Fo~|@Y^Z Access> DirQfVariant VBAWin16~Win32MacVBA6#Project1  stdole` graphnewe ADODBsModule1b _Evaluate GamsUtilGetPrivateProfileStringghlpApplicationNamea lpKeyNameJ lpDefault%lpReturnedString7nSize} lpFileName2kernel32_SHGetFolderPathm hwndOwnernFolder.hToken)dwFlags/lpszPath shell32.dll+GetEnvironmentVariable0lpNameRlpBuffer> kernel32.dll]SetEnvironmentVariableHlpValue GetTempPath nBufferLengthSleepdwMillisecondsť AttachConsolepidSECURITY_ATTRIBUTESCnLength&lpSecurityDescriptoribInheritHandle% STARTUPINFOcb\ lpReservedP lpDesktoplpTitledwXdwYdwXSizeWdwYSize dwXCountChars^ dwYCountCharsdwFillAttribute$g wShowWindow cbReserved2 lpReserved2é hStdInput] hStdOutput hStdError0PROCESS_INFORMATIONhProcess>hThread dwProcessID$ dwThreadIDWaitForSingleObject*hHandle CreateProcess;r lpCommandLine lpProcessAttributes`lpThreadAttributes(bInheritHandlesydwCreationFlagsB lpEnvironmentplpCurrentDirectoryE lpStartupInfolpProcessInformationui CloseHandleYhObject CreatePipeR phReadPipe[ phWritePipe'lpPipeAttributes PeekNamedPipe hReadPipe nBufferSizeL  lpBytesReadKlpTotalBytesAvail"lpBytesLeftThisMessage+GetStartupInfo`%ReadFile[.hFile#nNumberOfBytesToReadlpNumberOfBytesRead= lpOverlappedmNORMAL_PRIORITY_CLASS(INFINITE1FORMAT_MESSAGE_FROM_SYSTEM": FormatMessageslpSourceX dwMessageId dwLanguageId Argumentsj} AllocConsoleA FreeConsoleSetConsoleTitle+sj GetLastErrorGetEnvironmentStringsXGenerateConsoleCtrlEventdtsignalegoupid)(TerminateProcessS uExitCodeY(SetDllDirectory1STARTF_USESHOWWINDOWSTARTF_USESTDHANDLESQUSW_HIDEx SW_NORMALi process_info GamsSysDiruMdbDirTempDir  (GamsUtilInit (GetGamsSysDirWV (GetMdbDir (GetTempDir (ImportDllnQ (ExportDLlfln(FileOrDirExistsMsgBoxR(writedllIJ return_code strBuffer 5lenstrPkb MyDocumentsIniFile@(GetMyDocumentsDirSpace  vbTextCompare QCSIDL_PERSONALжS_OKoS_FALSE E_INVALIDARGeChrK~Right (GetEnv{keyNebuff~rc^(SetEnvval Application*CurrentProject$FullNameОInStrRevĈ (AddToPath& (StatusBarʜMsgQTempR IsMissingSysCmdGacSysCmdSetStatushIacSysCmdClearStatus9Y (WaitSecondAPIErrorDescription߲ ErrorCode0esAnsxlRetE StripNullxInStringYiNull vbNullCharYTrim@(RunGAMSz algorithmFDllNameRetVal;gmsNamev` (CloseGrK[aph (AddLogLine(WriteGAMSModelFormsprogressuVisible (RunConsolebTextBoxQProcessSolutionRecordsbWriteSchemaIni!WorkDiry_db\ CurrentDbSSQL"ExecuteY dbFailOnErrorh (OpenGraph ModelText4rs_ Recordset (GetModelTextDAO OpenRecordset|EOFErroRaiseexport (WriteBLOB (ReadBLOB(filenamej objTarget'Mwdir/pa^pra1trasuicmdlineYthReadLIhWriteN;bAvailbReadbStringenvPtr2hPipe vbNullString LastDllError HandleOutputSelStartZPathName'iTemp]hGetAttrNumber- (StopSolverQ(getpidD# (focusTextBoxSetFocus (ClearTextBoxvbCr$vbLfT%DoCmdƧ OpenReport acViewPreview2Err_close_graphacReport%acSaveNoDTksField Edit+FileSizehLOFcData; AppendChunkUpdate Err_ReadBLOB Err_WriteBLOBj FieldSize"GetChunkClass1+ Form_MainFormcCitiesButton_ClickErr_CitiesButton_Click stDocNamezstLinkCriteriaYOpenFormExit_CitiesButton_ClickT Description DistButton_Click[Err_DistButton_Click8Exit_DistButton_Click֗ Form_Open-CancelEnableRunButton"2FrameValueKFontUQuitButton_Click{Err_QuitButton_Click=Quit9Exit_QuitButton_Click3RunButton_ClickDisableRunButtonvm RunButtonxEnabled۪ CitiesButtonSClass2+ Form_Progress+ GamsInterrupt InterruptTypeqgamsinterrupt.dll3ClearButton_Clickg SendInterrupt Err_InterruptYClearInterruptButton_ClickMKillButton_ClickrClass3+ Report_Graph Detail_FormatC FormatCountSz._minHeight|x1_x2_y1O_y2P_iscalelioffsetNMoveNextL!RoundxoylReport$PageHeaderSectionwDetail2PageFooterSectionForm DistButtoniP QuitButton'QLabel5,Label7,Label8,Label9,Labela mstoptionmstlabel tspoptiontsplabel+nClickItemzInterruptButtonp KillButtonf0 ClearButtone _B_var_Space _B_var_LeftQ _B_var_Chr\; _B_var_Right9 _B_var_TrimmT _B_str_LeftV_B_var_dbFailOnError; _B_var_Stringӊ _B_var_InputB.lC  Y HA@@H I~1\COMMON~1\MICROS~1\E6.DLL#Visual Basic FA0C911005A};VBE;&H00000000 [Workspace] Report_Graph=44, 58, ͬf)G` {Detailh InterruptButtonh KillButtonh ClearButtonwTextBoxҋB `.E .`M 9.OLB#Microscitiesdistance<0p0 Xp 9Qy,p9q,pQ(Yp(!p, p`<p( 1a 9a""44(`p<Apy((4@ p!QAa"(((, p94<pQK[9i("DpQy "($Q,p$ Pp( pp$ p$!p,"p)A,#pYy( $@p$`$`$`$`$!`(I`0,q`00$`$`( `0( `(9 `&(a `(( ` (`) &(`I 0(`I 0,)`) a &0(Q`) &,y`a q 0#0`   0/0(` 0$ `B `.E .`M 9.OL$1`$Y` 0238=Babe ghIijikZ6+g Salesman TourT$]XE8|! ͬ֍]FWkzDetailh CitiesButtonh DistButtonh RunButtonh QuitButtond Label5d Label7d Label8d Label9k Framed Labeli mstoptiond mstlabeli tspoptiond tsplabelDetailQ9M$`(`0$`$`0!` a   0/00I`   a /00 nProcedurerU p$`$ $A`( (`,0!&$`0 $`4 $A    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~rU~| ~))i))yI*!-*q+1++ ,,,.-Q-./. ( / 0y00Iq0Y)1A11!2Y223) i3 3/3 4i4455)6q66a7 899a(Q9:!i;7 <;y< K[9==I!!A =>I>a>a ?q?>> @#y@@@@! AAQBB!AYAA1CaCC DxH      H$  \*1x x V*''('Hlx*Fh 6hH(+x x\( xhH(h4 *1xx -+vx f4( x \ 1dldJDP P`1p5P lpJql ld *1`cl`<4ll1tp1lt^#tM\@L  L`1x5Li0\, xtlpLH* $*#l%Cpp &#h*1t2plht%Cpp '/peH( tplhl (x L:\]AM'<',% \%$ |!? @? A? B? C? D? =It( x Cxx 2/x E*x /xDFCxx 2/x l Gd$ !QdhHC` ` 2`@hIJ *#xK*1`/x ` 2`@hI hLch M,, `hxdl4 l N1x ] lx? =\ 4, tx <P$ !QPh  /OCT9PCTT@hB0QXNXA0Rf@]450:@S%X0`1x500''' '0TP UPP DVP60  XLcX hLch4 xTXh P0 LT$ !QTlWCXX@lB4Q\N\A4RcD]4540'''$'4XP UTT DVT64$l YC\^Z q/YC\l ^[ q/ \Lc\ lLcl 0 X\l$T4$p ql qt q` qT^\qBabc0*e hicjk&D$B@ߖ]d"C '~0 UCalibri8jhhh hWY35h&GetPrivateProfileStringA4DSHGetFolderPathA<l0GetEnvironmentVariableA<XSetEnvironmentVariableA&GetTempPathA& eSleep&AttachConsole&(WaitForSingleObject&P*CreateProcessA&t<CloseHandle&`CreatePipe-&PeekNamedPipe2&GetStartupInfoA&ReadFile&FormatMessageA&@AllocConsole&d,FreeConsole&PSetConsoleTitleA&pGetLastError &8GetEnvironmentStrings&GenerateConsoleCtrlEvent&,TerminateProcess&TSetDllDirectoryAxR@R RRDDRhRME@`@HNHVHz > LLLLLLp i8ali@FT+Bp@ iD`ndi::\ FpiH\W+Jp %% iLNXhPphRhTVhhXhZh\h^ #K[h`0hbHhd`hfxhh hj$$hl((h0,,hn00hp22hr 44ht888hvP<<hx@@zh|h~hh +`p  i@iH+<p< iiii i@i`ii)A%)A%+P `p0 `  i+ p   i i ) A%i"+ pX   ix i: i i i i  pX  )x A%+ p   i i: i i@ i#C%`h + p  i0 i( iH ih i: i" i+,p, +HPpP +ppp i+p +(p +ph ii+(p i|id+P@ph@ i*\˜#B@#@@% @i (&tlb# `!|k q `&k |`xWT @`'vk`x^+`(k,,` t2H*`p2V`linA5`jNUY`dJYV``E@f"+`+k!!` tbp&`p`E`lenb@BIf@ B(@"B@$WC(+*`,0k8i, @.B`)`0t)`2` 4$K[8`.ki, x*i6`2x+`P0Hk@.0B+`0t+`2`,+`1Lk `t +@ `2hkX i~  `t B `(4,k!iD  `Fl  Ph `@5|kH" +i. +R `5Pk#6iT  `Vt `Xp+Zp ``7Lk8$Di\ `^r d`98k%Uif  `hx`jh `ld  `H:h+X&si `x  ~(`;Pk'$$i M`` r`<dkh(if x3ih `x t%+`<k )""if `X `xx=X`@TD  `>k*""i @i `\ BhB:`X `X z`0@Xk+SSi Di "i8`Lx9 lX9@% `x @% T @% :@%` $``D`D``D`D`2`2PD+`Blo ,Mi D`x h`Ctk-k`2xh?+`Dx+.s `EDk/ z ( `F4k0 p `(Hkh 1i $H  ``JHk2 n"`xKhk3##h&O`V----`@ X"<"F--------!+%``LkX"4DDi x"ns HiM ""i`t(PA`B Sys H&< #escripti#˜X# C˜` C˜#B˜B˜B @ ( @#%K[%h  #8(p0#X#P(` h@#(h" P H  ` #0 +`pNk05**iH&ix 8'P'' ' Ap@h'h @'X &@'H o.dl@'8 A@@'( ind @ !Ms@ Env(@ A(((  w@v readh)))`*H*h)))`x)h)[solameHde@*P @)L @*H elim@*D @0*@ ext @< @8 ext @x*( V@* T--@* ----@* ----@* ----@  p@ solP+h,+h,(,@,+++`x ava++X,(&(Op@,\ rent@X @T M t@P adv@,ee htt@,@ t.co@,0 FDo@, mpor@, , "s@ @ FROX8-p0.-.x.---`*x"--B@B@B&6.A@.d ----@P ----@@ ----@H.< ----@`.8 mod@4 ile@0 ---- /H/`/800/&>V@x/h ----@/X ----@/H ----@/8 odel@( @ ----@/ ----@0 @ 0  `@ onne@ ess xX1@11p10(11`x10 largelargetBkey='tspmol'@d  @\ Re@X is @H @22222@2x2X2`x----h2@2------ w8>>--------@p ----@l ----@\ @L *Op3Xx3333`@z 33%Re*4alue&K[ if datas @3p @4l dat@h 544HLJN----------@4\ ----@(5L 6 r@< rect@, jTarH5F stdou+ 676707666`Rx66(P(PZ'@` @^ @X @H7T A@P P8X888888x88`Zxe = (88TH"h8 `\t `\t(8P8`b @p @8ess_@` Ca@P @L 990:9:np@rt@` !|@:\ @L Butt@H 9z~8 @8 xX:@h  ;;;;p up@x dri@d ' @P s Ma<<t trailing " (@d `Xh  <===X=ppriate!@P (@>@ Re@=0 @@> >--@(> ----@X> ----@p> , n@ inte@ `l p>@@?p?X?0@T roce@?D n@?4 is n@?$ >--@? ----@? ----@@ @ @ gr@ ich`@( 8AAAA@hBPBH8c@A ic@0A C:@ il@HA ft@`A ud@ To@pRr@ ic@A ua@A om@B 8\@ B gr@8B ic@p ua@` F9xA\;C:\Po@B\ \M@X`isBItudHCCCCHCC`C`z orpCHCD'K[elCBinProgra @t an@p Pr@l \;CNDOPDDft SQLS@t oo`E`EExE`xamE`Es\Moftual C+ hFFFPFtmmunOB()@Fx SE:@h inf@d he s@FT ield@D ifieGHGGtsic code (Acss@Gx e in@Gh 0 or@d rrec@GT ord @D o ca@4 ) fuh H(IHHtle T contain@Ix @@Ih atio@Id : @XIT ath @ID e th@pI4 @I$ o.@I N:@I of b@J dest@HJ @J * @0J roso@ * @ roso@ >**K0KKgBox "Fieldse @x ze@HKh '@`KX & R@H esti0LHLL  @x @h nate!!x"!"@NMM8MXNMhMM`x(MM@PMh @MX @MD 8 @M( @N @(N @ @ @ @ ""O0"(&PP`OPHOhPOO(O`x8OO@Od @xOT @ PD @O, @O @ ! @8P @ @ @ 8<66 @0#%h% g $g%I$*\Rffff*0h4925cd67(*\Rffff*0h4925cd67\0(*\Rffff*0h4925cd67\1(*\Rffff*0h4925cd67\2*\R1*#18*\R3*#44*\R0*#11*\R1*#8f*\R1*#92*\R0*#e*\R1*#16*\R0*#13*\R1*#af*\R1*#98*\R1*#99*\R0*#9*\R0*#f*\R0*#14*\R0*#19*\R1*#25*\R1*#a*\R1*#3*(K[\R0*#17*\R0*#1a & R X x ( , & R X` :h pH, 8H$ pHH p`H H (  H (  0 8 @ HP X ` h p x                     H( H<"8 H` Hp H ( H    H, HH H( H8 H@ H H H P H X  ` p     Z  Z x D  D"@ H X h x D  D"@ H P  h (*x     D  D "` h  p       Z ( BH R L 8 "@ Zh B       6  8 H X  h " x @c   4+  0 8@H X #x  ( <@c0 p+#  Z &` ZB  &0:P( : (Q  (0  H X `hpx Z  Z B  "]  Z(  Z" *qH ZP  ZB0 8HP`+h Z 2( Z`B$1 Z "h ZB  * 8 Z@  Z"   b(  '$$ Z p Z"  Z 4p ,  .  $ Z@B  .E    Z 8p 8 ZB )K[@HP`p x   . Z @ ZX "       " $ ! H! 6 h!. !  (! ! 2"E "  @" P" ZX" :" Z"" X#`# h# # #" # #" #* $* P$ $$ Z$ &$ Z %" %  %  %$%%%  %  0&0& 8&  TH& L& && 'L n8' '('  '' ' ' Z' (@( Zh(" ( ((  ( (  ) ) () 8) D@) $) D)B ) *** 0* H* BX* *<**<*8+ @+ &X++++$0++  ++ +, , D, `, Dp," ,,,, 0, -  B-2`- - &--(0-. . .(.H.P.p.  x.. .. . D. <. D8/" / / ////// //4/,00`0  0 0  0 0 0 0 00 01  1 01 @1 P1 `1 x1 >H1 1 1 12\2 P2D`2x22 02  2&*23 3  3 (03 P3 , X3 33 3 3 3 3  33 4 4 4$(4 84 H4 P4X4 D`4 4 D4B 5 @5 4X5 :5 .5 :6 .@6 @p6 B6 6  2787@7  :P7 777777  777 D7 2@8 Dx8"8888 D8 &89 "`9 D9B9 99 D9 68: ,p: D:": 4: $(;0P;;`;x; D; &; D;"8<=@<X< D`< 8< D<" (=20=h= Dp= (= D="(>.0>*K[H> DP> (> D>"??+?  8?@? H? DP? ? ? ? F? $@ @@ H@ F`@ F@ J@ @@A A A @A (A 8B H@B B B 8B B B 0B 0 C DPCBC  "C C  (C D(D0D8D "HDpD xD D DDD (D .DE"E$(E 0@E pE EEE E+E EE E DE (F HF PF H`F $F F F FF F8G BG HG H H J0H FH 4H @I &@I hI pI >I I I 0I 0J D8JBJ  J   "JJ$J .J  K K(K0K ,8KhKpKxKK "KK *KK:L L  0LPLXL`L hL+pL LL L LK--------------------------------------------------------------------------- Run GAMS from Access! Copyright Erwin Kalvelagen, 2007& Amsterdam Optimization Modeling Group erwin@amsterdamoptimization.comK---------------------------------------------------------------------------eatePr4------------- win 32 api declarations --------------&j http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getprivateprofilestring.asp    ~1\ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfolderpath.asp    i http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getenvironmentvariable.asp  i http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setenvironmentvariable.asp  ir get temp path  sleep@^X^p^p^^^^^^0^H^`^x^^^^^^^ ^8^Pph^^^^p    % / 3 `   P         ]D 0#]DX#]D`    &     H((]#]#]]#T ----------------------------------------------------------------------------------- global variablesT -----------------------------------------------------------------------------------%]]]#]>-------------------------------------------------------------- initialize>--------------------------------------------------------------P ($'$'$'AA+K[o`>-------------------------------------------------------------- e ImportDll>--------------------------------------------------------------]  upload.dll' $Uploading to database: A@ A kHo@>-------------------------------------------------------------- ExportDll>--------------------------------------------------------------`]( gamsinterrupt.dll' $ A kHo@T------------------------------------------------------------------------------------! Return the GAMS System directory; Includes trailing '\' so you can append filename directly.FL This version will both work with gams 2.20 (ini file in user's my documents\WE directory) and with earlier systems (ini file in Windows directory). Erwin Kalvelagen, Aug 2005PT------------------------------------------------------------------------------------X@]]]]]]/-------- GAMS 2.20 and up: look in My Documents$'  $' ' gamsdir\gamside.ini'jEXECUTE EXECUTABLE *NOT FOUND*   $'    )GetPrivateProfileString: Buffer too smallA@'zk  gams.exe '   $'zhk`kX"--------- Try GAMS 21.7 and before$' '` gamside.ini'! will search in windows directoryEXECUTE EXECUTABLE *NOT FOUND*   $'    Buffer too smallA@ 'zHk@ gams.exe '   $'iT------------------------------------------------------------------------------------ Return 'My Documents' directoryT------------------------------------------------------------------------------------]P]h]]# search My Documents]# Success]#( The Folder is valid, but does not exist]W# Invalid CSIDL Value$'  $('   KT  $& $'  $(\ \'k 'k "KT' $KT'nh i` T------------------------------------------------------------------------------------ get environment variableT------------------------------------------------------------------------------------]X]p .$'0] ,$& 0 .$6'2 2'*d 0 2$'*k i T------------------------------------------------------------------------------------ set environment variableT------------------------------------------------------------------------------------6]  ,$& 6$&$>'2o T------------------------------------------------------------------------------------2 return temp directoryT------------------------------------------------------------------------------------8]x ] .$'0] . 0$B'2 2'd` 0 2$'k@ i8 T------------------------------------------------------------------------------------+ return directory where MDB file is sittingT------------------------------------------------------------------------------------] 8!:!<'  \$>$'iT---------------------------,K[--------------------------------------------------------- Add directory to the PATH.T------------------------------------------------------------------------------------j]x ~;PATH$*'PATH A4iT------------------------------------------------------------------------------------ handle status barT------------------------------------------------------------------------------------][ if the Msg variable is omitted or is empty, return the control of the status bar to Access D$H D L D$J'Fd0 N$J'Fkd N$J'FkoT------------------------------------------------------------------------------------x sleep for n secondsT------------------------------------------------------------------------------------ .AFoT------------------------------------------------------------------------------------.PURPOSE: Returns Human Readable Description of&Error Code that occurs in API function(PARAMETERS: ErrorCode: System Error CodeReturns: Description of ErrorT------------------------------------------------------------------------------------%h]]$'V  T V$'X V$Z'RiT------------------------------------------------------------------------------------1Input: String containing null terminator (Chr(0))1Returns: all character before the null terminatorT------------------------------------------------------------------------------------]X \ \ `'^ ^KT \$b'ZKT'ZSX \$b ^ $ 'Zn0k(i T------------------------------------------------------------------------------------ Run GAMS modelT------------------------------------------------------------------------------------p]]]An model.gms'lWork directory : ApSystem directory : ApMdb directory : Ap A@& needed to find gdxio.dll and gams.exe A@ needed to find interrupt.dll!MsgBox "Path = " & GetEnv("PATH") f  lAr t"v(x l t"v!| Az A~*oT------------------------------------------------------------------------------------3 write schema.ini for reading the solution csv fileT------------------------------------------------------------------------------------]x  schema.ini' [solution.csv]ColNameHeader=FalseDecimalSymbol=.Format=Delimited(,)Col1 = "City1" Text Width 50Col2 = "City2" Text Width 50VohT------------------------------------------------------------------------------------ process csv file with solutionT------------------------------------------------------------------------------------Ap  solution.csv$No solution file availableAp|k A*Open connection to current Access database] $.M this does not work as advertised. See http://support.microsoft.com/kb/241477FDoCmd.TransferText acImportDelim, "schema.ini", "solution", fln, False]DELETE * FROM solution' Ap  B@GINSERT INTO solution SELECT * FROM [Text;FMT=Delimited;HDR=No;DATABASE= ;].[solution#csv];' Ap B@B-K[.AoT------------------------------------------------------------------------------------! write model stored in db to fileT------------------------------------------------------------------------------------(]] f$'MsgBox ModelText  Vo>-------------------------------------------------------------- get model file from database>--------------------------------------------------------------]<]@]*Open connection to current Access database$.;Create SQL statement to retrieve value from key/value table f4select largetext from largetext where key='mstmodel''d4select largetext from largetext where key='tspmodel''k  %.Retrieve value if data is found ! largetext$'d0Model source not found B@k B@B. B@B.i>-------------------------------------------------------------- write DLL>--------------------------------------------------------------]>]]X*Open connection to current Access database$.;Create SQL statement to retrieve value from key/value table*select blob from largetext where key='dll''  %.Retrieve value if data is found !DLL not found in database B@k]p  blob $'d  blob$'kh B@B. B@B.o0>--------------------------------------------------------------6 run gams with IO redirection to a textbox (objTarget)>-------------------------------------------------------------- !G|j](]@]`]]]] stdout + stderr]]% pipe bytes available (PeekNamedPipe)]  pipe bytes fetched (ReadFile)]8 our buffer  (P (T  (P  (P]P$']h]   $'2 G|j  (X A  (v  (x   (0  (ngams  LO=3 --db=" 8!:!<"'Command line : ApApcmdline = "CMD /C PATH"        $ 'L L !$RA@|` kX *MsgBox "pid = " & process_info.dwProcessIDCall DisableRunButton  $bA@  $\'    A@ A@ this turns the pipe aroundkP H A@ !~A@ !|A@ (Call EnableRunButton|  Gj 5d 9d5d9q o >-------------------------------------------------------------- check if file/dir exists>--------------------------------------------------------------:Macro Purpose: Function returns TRUE if the specified file. or folder exists, false if not.4PathName : Supports Windows mapped drives or UNC' : Supports Macintosh paths3File usage : Provide full file path and extension'Folder usage : Provide full folder path: Accepts with/without trailing "\" (Windows)< Accepts with/without trailing ":" (Macintosh)]+Ignore errors to allow for error evaluation $'4Che.K[ck if error exists and set response appropriately !RT'S('nResume error checkingi>--------------------------------------------------------------, not used. We use gamsinterrupt.dll instead.>--------------------------------------------------------------]P !|$'2o>-------------------------------------------------------------- get process id of the GAMS run zero if gams is not running>--------------------------------------------------------------h !'i>--------------------------------------------------------------0 if textbox has not the focus it will not scroll% automatically to the last line added>--------------------------------------------------------------. the next statements are need to make sure the progress textbox will scroll t"vB@ t"v!|B@o`>-------------------------------------------------------------- clear all lines in the textbox>-------------------------------------------------------------- t"v!|(do>--------------------------------------------------------------1 add a line to the textbox in the progress window>--------------------------------------------------------------( t"v!|!d    t"v!|(dop>--------------------------------------------------------------! open report containing the graph>-------------------------------------------------------------- Graph  B@o>--------------------------------------------------------------" close report containing the graph>--------------------------------------------------------------  Graph  B@B|o>************************************************************** FUNCTION: ReadBLOB() PURPOSE:? Reads a BLOB from a disk file and stores the contents in the specified table and field. PREREQUISITES:? The specified table with the OLE object field to contain the@ binary data must be opened in Visual Basic code (Access BasicC code in Microsoft Access 2.0 and earlier) and the correct record9 navigated to prior to calling the ReadBLOB() function. ARGUMENTS:: fln - The path and filename of the binary information" to be read and stored.2 T - The table object to store the data in.A Field - The OLE object field in table T to store the data in. RETURN:1 The number of bytes read from the Source file. SOURCE:* http://support.microsoft.com/kb/103257* http://support.microsoft.com/kb/194975>************************************************************** " On Error GoTo Err_ReadBLOB B@!MsgBox "edit mode: " & T.EditMode Open the source file.]! '   Get the length of the file.]! $' 'z8;k0;"MsgBox "File length = " & FileSize( Read the data, writing it to the table.]!  $'  $B@* Update the record and terminate function. B@ V 'zH:@:Error importing dllA@ 'z:i:>************************************************************** FUNCTION: WriteBLOB() PURPOSE:B Writes BLOB information stored in the specified table and field to the specified disk file. PREREQUISITES:/K[? The specified table with the OLE object field containing the@ binary data must be opened in Visual Basic code (Access Basic; code in Microsoft Access 2.0 or earlier) and the correctA record navigated to prior to calling the WriteBLOB() function. ARGUMENTS:D T - The table object containing the binary information.? sField - The OLE object field in table T containing the- binary information to write.: fln - The path and filename to write the binary information to. RETURN:7 The number of bytes written to the destination file. SOURCE:* http://support.microsoft.com/kb/103257* http://support.microsoft.com/kb/194975>************************************************************** %H5 Get the size of the field.]" $%'(MsgBox "Fieldsize of blob = " & FileSize 'z4k4& Remove any existing destination file.]" '   V Open the destination file.  # Write the data to the output file.]"  $%'  Terminates function V 'zx3p3Error exporting dllA@ 'z83i03(3  B@LAttribute VB_Name = "GamsUtil" '-G Run GAMS from AccessCopyright Erwin Kalvelagen, 2007#Amsterdam Optimization Modeling Groujp(eB@.oa-.com"J  GDCompare Database Expl@icit = v32 api @declarjs" P ' http://msdn.micr osoftj/library/default.asp?url= en-us/sy@sinfo/P/getprivateprofildes@ngP  DB'e FuDnc]GetPS Lib "kernel302" _0AlXiasA (ByVal lpApAPFAs , KeyAny, E DCGB Retu@-d1H0nSizBeLongG!F;QK() B?q/shellcc/platform/reference/fDi{hyfolderpathvSH;FbP`C:b32.d|ll4:9d9hwndOwner m'nhTokenj1C1dwF@s-lpsz&9_1ii!`gcienvironmentvariable. .EGVDic/- "@0&hRVBufFa'j0,](((set(Set7("X("(lp퀔uc()Oar temp rTqgc_?%7?nR>9Mh+5lOF8ACtelV:VϪQՠ)saWwm1ALinhc;lpϤ6.b2lpg㑫H6B \sIlpuU!H uBrЧtDiro, _lpBufferAny, 5BnSize, +ytesP LTotalB% Avail;LeftThisMe0ssag["Sub GetStartupInfo yAlias " A" xRefe#STARTUPINFO)DžFil String`NumberOfSTo]  lpOverlappedcxZ7Const NORMAL_PRIORITY_CLASS = &0H20& @MINITE@ -1 FT_MESSAGE_FROM_SYSTEME1000 Format ;Cɩ" dw`Flags!ASourc©BIptdwIXpdwLanguX pIArgumentjh {AA'Alloc>oX. `FreeG@SetTit#},'9"#j"0@LastError. , Environ?A6 Gener@&Ctr8lEvBNcUsign@gou piWublicTerminaProcthCuExi>dsX@DllDirectory¬_EA`e;A,t F_USESHOWWIND OWÕTDHApNDLEC,Wp_HID!ƝW6_X15t ' -!aglob0"variables Dim pC#_iC|!PROCa_Cqx`hTIONGamsSys`Y##4Mdb_ Templ'_ initia~l`0K[ 4 P-Sq UthilI(.dw3ID "=Call Import@5&"Ex"Ll End 0 < q !&flNn)#0== & "upload .dll"Ifd (Or$Ists(0)) Then"PMsgBox "U to database: " & @Rwri te`, False1Ifg--$l O& S *g-interrupBt+Not onl Tru3)p  QReturn the GAMS 0Item dg1Include0s tr@Б!'\' so you` can P4fnly. Ps!wi8both wor0k wi! 2.20 (H Q in user's my doc ) a0Aearli@sys s{Windows' )a ErwpKalvepen, Aug 2005 F_ N=r'>r_coׄstr*qlep"&kAI+gerFMyD9@'[?-7##up@: lookMy Documents Myx = GetADir()I@f Len(l) > 0 Then@strBufferSpace(1024~= - 2) ysgBox "M: too smallmGSys" Exit F@unctio End If- YDim )MLongf_(`sJs BCo CSIDL_PE@RSONALf&H5y `_^"(S_OK0' Succes S_FALS*E1 'a Foldis valid, but does not existhE_INVAL IDARGB 80@070057In"# Valu``xSHTPath(0,l%, @@F Sel Cas~e 6bA'!sѰChr(0))ʨds/ PRigh,i Q"\" sav\e{>hyh5= l?o3Bo8Bge@(nviron@*riabl%AAEnv(key f=)#6N$"A?b"= qNxrcDg%Va& (a:ff,  '(0 DElsp# B0 , rc e%q_`?A~sOO-- Sub Set@saloT_o#g Q >4DS3@ T tempt2T B(O2nO2O2O2 O2P*-+"bN00.L011X֮ where MDB zsitt ?Md.b RmAp plica.CXurrd`jy.FullNamSH/@2saSt`rRev(ps)@? 1Add3 to the PATH.?ڶ- Function AddToPath(Dir As St ring)(Boolean Dim s>&s =.r & ";" GetEnv("PATH")DCallD S ., sEnd  ' BV handle status bar5Sub3Bar(Opal MsgVariant!Temp ' if th*evb^is omitted0 or ty, returncontrol ow to @AccessIf Not IsPMissz(@() They A-<> ""  ,= SysC`md(acwS W,A-C8 El\se4CrF @If @czR sleep fcn se^d@W Wai$tS(NIntegerCMCA$(1000 * >N?A PURPOSE: RPs HumanadaVDes8cri`RErBr&Code Vat occurs i@PI f@PARAMETERS: :!Otem# A$: k@93 Private APIb(6LoSBrAn al`E s!opace(255;= FormatM{age(FORMAT_MESSAGE_FROM_SYSTEM, 0, _k&B! , @ 9 pNull(L+8@7Input?& ain n terminatJ(Chr(0)@'@'s: Acharac bevaO~e_D0PD(ByVIn!nBĽ#)>C Ai!/~Len(%) > 0ʵ = ", vb]CpY ylect Case b0 @!Trim *1/`= ""jJb`PLef(t$(+, - 1 rNe 5`)OP# Run GAMS m`Ml$3`(algorithm!"DllNamel$p11' Ԉq6gms?eCloseGraph1r .2`LogLine("Wor k dir0&ory : A}.^MGamsǠMdb0 d8 ' needpPfigdxio.d+ g.ex5 dT ?inGpruptqR'@Box "4WW@e M&g ,ҕT12as!progrb.Visiy`= TruH %Cons(,eText b#2 Pro!SoluqRrds(9 :ub_20` w1 schema.pb"readca0 csv fil@o-_S`SR In|i(0ւ;flА%R= %& " TOpe n Q Out3r?#2@nt #2, "[.]CorCHer=Fa>DecimalSymbol=.&at=Delied(,)>p1."City1!Ơ% Width 50ol22I@/&o!&4.$ wX $6o6o%B|ll6 AddLogLine("") If Not FileOrDirExists(Work4 & "solution.csv") ThenrxCal1K[l HNo \ f available1at SubDEndNWriteSchemaIni:2'Open connec to current Access database/Dim db As Va riant Se"t = CDbB(1 thi#oes not w as advertised. See http://support.microsoft.com/kb/2414778'DoCmd.TransferText acImDelim,{.ini"fln, Fali(kSQLlStri ng = "DELETE * FROM"Mm >db.Exe`cute  B@ INSERT INTOyRS@CTE[5;0FMT=4rd;HDR=No;DATABASE="@ȗ;].[r#];))@/CloDHwhF B?GraphA3£'-?N ' w model stored inSO 5 GAMSM(al$gohmGInteger, LIAB%!LUhSLarsaRecordsejg= GetgM'MsgBox "B|aFor@ Outpu`{s #1P]t,+ ? :w.!8g7f 0 a"pid1"2abECURITY_ATTRIBUTESWr/,Ft/]suiTARTUPINFOcmdl;WhA(q ')wdo0+errw-fbAqpipe byt& (PeedkNdP  bfet0d (!AXA' our 8bufс pa@.nLeng)=b (pa3bInp~itHandle`4Cr^rd`  envPt%f $Environۑ shfrc)b  "E!(r, hb, pa,*P-Cx= 0+#.~cBA3 StartupInfo(sui)  @.hStdOutput = hWriteA lErrorhd@wFlags0STARTF_USESHOWWINDOW Or .TDHANDLESYwShowW indowBW_0HIDEcm dline"gams " & filename " LO=3 --db=""Application.CurrentProject.FullN80Call AddLogL4("Command ;:8B-" %'VCMD /C PATDH"pidbC reateGce@ss(vbNHString, , pra, t1, 0, envPtr, w\dio _FiKIf 10` Then9MsgBox APIDescri pG(.LasptDll Exit SubREBIf'"[pr!.dw96ID  KDisableRun Butto'Do Whr PeekedPipe(hRead, BpyVal?@@b`Avail,DoEvzs0@C > DbC\c(E0@ A!NFA'#D , E b)E@GoSubd HleC0lose ' this tu$rn@herpe aroundHHbLoop ǁ$N ihTh I9B *h<'0'Integer'Ignore fePFo po wf2 evalucbs#On ba8s:uvN= GetAttr'; 'Cu0B0set resp on"roprriqly;z Ca@.Numb BIG!%0`?TruTP)w3Fa+@eld'Re B>p{GoTo A5OE_>AE4 used. We 0Aupt.dPinstsP7F Pub@:bDopSolver(&rc&0Long= TerminPc(/e@, -1pB! PaK0 Pofte GAMS ruO' ze`OY"vnT(X&C&t!?#otP;b0has Q]focus 0wiP##Q@oll!au(tomP@cAy 4tolPadde/_%|p&e nѠ st%mG1`bP makjuM "('! g@EM4 `?Form s!b.SetF8+Ac0yrXBnboCt= " # a#$5)ic wRs!K?sx_W& svbCrbL/O !openq1 cont aiJ2"graph/-- Public Sub OpenGraph() D oCmd.TRe@port "t", acViewPrev End '-:@ close rpcontaining the g@eC7zOn Error GoTo_G_<, SaveNo)rr": Exit) *:FUNCTION: ReadBLOB' PURPOSEA';s a  fromdisk 2K[@ P 8$&t@x p@Ph @hX @H @8 @4 @$ @  `@x @t @d @ T @( D @@ 4 @X $ @ "@ X @ (  6B&d$@l D@\ D@T (  :h B@x >:0 @x 0Hp@$ g%I$*\Rffff*0D4925cce2*\R1*#99*\R1*#98*\R1*#25*\R1*#55*\R1*#92*\R0*#13*\R0*#19*\R0*#14$*\Rffff*0h4925cd67*\R1*#48 |4v8~<r@DHLPpTXt\x`zd k R X x ( , & R X` "h p x   @  <  "   ( H PX `@x  < "   ( <  ( G8X` "hp x      <  "   #  0  @H P"X `p"x   4 $   K---------------------------------------------------------------------------X# Run GAMS from Access! Copyright Erwin Kalvelagen, 2007& Amsterdam Optimization Modeling Group' erwin@amsterdamoptimization.com'K---------------------------------------------------------------------------0 show cities table]p]cities'   B@ | !A@o show distance table]]5K[@file ats`tores^Abents inA specified tab 1ld.PREREQUISIhTESTr withOLE @object@!e2lo binary data must b8e o!@'Visual Bascode (A`ccess%  Micro soft 2.0>earlie r)corr#%ordCna vigat?o (prit+allE` functionFARG UMENTEflne- GpaCA`bnam7fG>informaC"@@Cr@~B.BpcTCld-"b *iFi0 3@( T uRETURN@number of byt@LbPa-Sour ceP%SOURC%W http: //sup.m8.com/kb/103257D#94975_o;9zFD<'o:As Str B, T Variant, _B`,s,)Long !' L"T.EditB'MsgBox $"e m`a: " & M n g?sj/Dim fInteger" f = FreeF@ա F`BtDjAf Getb leng]@>a]=D! Size!F!= LOF(fIf 0!hn@ #0ee5If&A $=& "AAf, writ_@abcgD (=;B^"A`In putB(% , DT(cC).Ap 4dChunk ӁUpe)cCerm0thT.lPCm`= 3&sim9dll"r-@2Pg?98 pWeqq`b s V CT BOodj aPW&up SxOqB_OqEqqsOqOqpoOqOqIq`=?q3q'?q!c8qhOqLq$k% $hftk q1VhlpBTpY FA?ePs?}@B"b%# (toQ/u,uteP odesIa!uuuuuVxu96ʅA $ udvt'vu2H TuvA' lsjkP!sSk1= ]ndׇh%blobb{Yoeo o o Remov!y exiq#g #"ρ ЂρnƁOutna3gg!Ty !/w{:aoۆuyaPw@w(0,PuY, ,y TUxsN9w)0q_wr^wnwction End Fun---------------( t"v!|!d    t"v!|(dop>---------------------------------------------------`8$`<nablejF^Hvd5U` ab` c3f rU p;( ! <;)+q I q 1 Q  HIHY 9a@4a|||@ 8     !"$%'()*+,-./0123456789:;<=p `p<''' , pp ,>,F p6  O, tx$,p <'8%'H%'X%:h %x$ `x `x8 (h%x!  x xG:X %4:h%x$ Tx $4W$=C)x46$ h$  x4$pK* x$ `x px<''$'Dt xx ,>tFd x6dD$ 'xp$  $txdD$d< :lN\\ 5\#\T!  T \UpZT5\ Z  '\ 5\8 (d$  T\T x!  x (x $  xxDx! | x xx!  x (x  D$  x@\X`8(z:i:>***rU T,GpI $` (A`I ($` $` 3K[nrU 1GY <;)Dvvv @<a9~~~@ @Qrrr @Dy@Ha@Ly@ P 1@TIqppp@X@ \tttI@ `xxxGamsUtil @da zzzWWKRCx@'0%ltF@%'P%lxF`%p$ `p `p<''' , pp ,>,F p6  O, tx$,p KRCx@'0%ltF@%'P%lxF`%p$ `,,:3 LlQ`/C)aKӠ֍]FWkz*_H0J_H.x*_H0J_H.Q`/C)aKӠME8[LS S>LLLLL L<<<N0{A85D8DD6-BFF4-4689-8C57-8D966B07DA7A}  (%  `k$ `xx`tlage `k(!`xzati`t----  p`hkP, 5i"  ,`k0@ 4`p Tk4 Q`8Z $H`p xk8^ 6`@ xk< ap0H %  %pH`t@p @` @P @0@ @0 @, @x @ @ H,@ H$x`@ @p @` @P @@ @0 @, @  @8 @P 4K[{6615C4E9-8DA9-4729-A89E-600C7B03B2ED} (%+Dpp iLightiF& A J`|k L`8k0iF ----`Lxure `2ttine R`xk* T`xk.0H %Bx % hP0 8PD@p @l j1@h j1@hX @H j1@8 j1@( j1@ j1@ @ Lj1j1j11@x j1hPLj1j1j11@x j1x0P Tg%I$*\Rffff*0I4925cd07$*\Rffff*0h4925cd67*\R0*#13*\R0*#19*\R0*#14r4t8v<p@xDH2 R X x ( , & R *X H F B D` >  H""  ( 0 8H `h  <  "  "   0@K---------------------------------------------------------------------------  Run GAMS from Access! Copyright Erwin Kalvelagen, 2007& Amsterdam Optimization Modeling Group erwin@amsterdamoptimization.comK---------------------------------------------------------------------------#signature of gamsinterrupt routine:@Afunction GamsInterrupt(pid : DWORD; interruptType : WORD) : BOOL;? stdcall; external 'gamsinterrupt.dll' name 'GamsInterrupt';ti;we could implement TextBox Edit component dynamically so we------>can trap errors if the com class cannot be found. in that case$7 we could load a different component (e.g. a richedit).Z0--AoN]P$'L------ LG|j1In]h L F$D'2rmA|pNh !A@ra BPe the |@o8 try to interruptAL------o try to kill\WIAL\SyoгAttribute VB_Name = "Form_Progre ss" Bas0{6615C4E9-8DA9-4729-A89E-600C7B03B2ED} |Global!SpacFal7K[ distances'   B@h|`X !A@@o8" startup code: main form is openedProgress B@A$ &((Consolas t"v!|!*(Aop. quit the application B@02@|8.0 !A@2oA6 Solving ...AB] &!('8 8AdABA$o :(<oH >B@ :(<. the next statements are need to make sure the progress textbox will scrollAAo@Attribute VB_Name = "For@m_Main@"D Bas0{A85D8DD6-BFF4-4689-8C57-8D966B0@7DA7A} |G lobalSpacFalse dCreatab"lTru Pr@edeclaId"Expose_TemplateDerivCustomi&zD$'-G ' Run GAMS from Access  Copyright Erwin Kalvelagen, 2007Amsterdam OptiVtion Modeling Gr(oupe!@ao.com5F #@"Comp@j DAthlicit  Pdf Sub CitiesButton_C@ k()n@Dror GotTo_O 4 `show @ Dim stDoc½As BSng L@inkCriXia H̓BoCmd.Op&eG, AstC3Exit0:OACB rr M sgBoxC.D escrixonResuTc` End% 0Dist0On0"-'#0d an~g0c0%0 s1@1100 0ON0 0BI(C(l Integer b' -Lartup c : m f is oQed1S"Progrd&Call En`>Fr .Valu1 s!pd .TextP.F0ont."kcCo`nsola2" G@UtilInAOQuiO_"' q the app`aBDtaFp 4???#?o0'8") I5BStatusBar("Solv...n"BA0Pv$Sv0uj(v8_$@ 9.^!rC(.P*JIb.SetFocuv_'$n-6tements mneto 7ke sureC ' 1 t2bYwi5YolvlDf3yClearwv2 A+`abcdefhjmnop+DDDiD@ 4 Errr@ 81Ettt@ <QEvvv @@Iqppp@DqE) Exxx@HdW<   $ KC ^qxlx" lx^qphFX l6X8 llHl$ $hlX8DYx$ DYx$ <48@rU L,`d !&&0A` h(((naphnew" HerU I ( q!9$p \ H ,3$HV5GamsInterruptP6^ͷCKuo:f)G` {4M^C Ep}dx4M^C Ep}d6^ͷCKuo:MEPSLS S> LN06K[se dCreatablTru Predecl2aId"Ex0pose_TemplateDerivCust0omizD$'-G ' Run GAMS from Acc  Copyright Erwin Kalvelagen, 2007Amsterdam OptiVtion Modeling GProupe!@ ao.com'5F signature of g@in* rupt %tine:@ func,G@IE(pid : DWORD; Type A)BOOL ; stdcall; ex@ nal '.dll' n''@we co uld iem ent TBo@x EditmHpondy@iy so w'can trap errors@ if thAm" ss not be found.4@a0load a differ@gD(e.g. riche%).Z~|Comp< Dlihcit P D F/ Lib "'" _ (ByV+!4As Long<, C74)  Sub ClearBut ton_Ck(r) C8/ ` End @SendE3 On`g 2 GoToA_&!FDim Hb= geFtIf bR= 0) The >xBA rc= +['& "!focus&! EErrG#i MsgVrr.Descri@}onG @./B q-f&5'^y to't` 308Kill k 1 hT.lPCm`= 3&sim9dll"r-@2Pg?98 pWeqq`b s V CT BOodj aPW&up SxOqB_OqEqqsOqOqpoOqOqIq`=?q3q'?q!c8qhOqLq$k% $hftk q1VhlpBTpY FA?ePs?}@BYy( 9Qya( q @4 9qrrr @89 Ya ttt@< y @@9 Y pppWX/v! p! ddlpYhkvYlhldqxP$ QPTCLL@TB-N?5]x-N?5]X OME$SLS S>LL <(<,<0<4<8<<<N0{18DD9577-06EE-44D7-AE06-02A73ED8D31D} (% Z`kpd22i" i\`^x`< `Lb`rp`d`f`h8`j 8`l`n 0,``x+h 4it iv0i 0%X8K[%`T hpP(@v `P@p ``@l PP@h ``@d @@P P`@X, P`@@ `@@p pp@ @@@ pp@ P@ ``@ ``@ il@ bs@ \M@0 r"@H pS@` C:@x il@ ft@ + ``xh`at``Hxit` SeHShe0hLldPg%I$*\Rffff*0H4925cd07*\R1*#99*\R0*#15*\R1*#93*\R1*#98$*\Rffff*0h4925cd67r4t8<p@= "    0/8  0P  B   (08@ H P X `  hx  < <(J(J0LrX%     B   (08@ Px0ScaleMode = 3 'PixelsTA]  b$`'^::P*Open connection to current Access database]$.;Create SQL statement to retrieve value from solutionq query]select * from solutionq']  %.] ]8]P]h]}'l]d'n !x1$'dx2$'fy1$'hy2$'j B@p n ^ d l$r 'd n ^ f l$r 'f n b ^ h l $r 'h n b ^ j l $r 'jline ( d, h) - ( f, j)Ap d h f j 0 B@B. B@B.o t v  t'`d v'`kiAttribute VB_Name = "Report_Graph" Bas0{18DD9577-06EE-44D7-AE06-02A73ED8D31D} |GlobalSpacFalse dCreatablTru PredeclaId"Expose_TemplateDerivCustomizD$Option Comp@ DT P&* Sub Detail_Format(Cancel As Integer, Count ) 'ScaleMod3Pixels Dim SzLong = min(Width, He0ight)'Open connecbto curre cces8s d3!dbVariantCet @= CqDb(Bne SQL stB&m@reeve value from soluA!q query5@JS@ 5#@sel- * Frs+@=-.@Recordset()sGGx1AT#xj2yO yK #isrJ= 125  off%K  00 WhiNot rs.EOFBl0=`("x1"62@rs21C >y(( Mo`veNex@ iD+ RXd(O* / C<2 CY - ` CalsddLogLine("l (" &p& ",A`@)a"2$B)g+Me. (x1, y1)-(x 22#Wend'9+Cl"S`kbU ;hi_db.+o& EndciFunC|x7%J`E)If` < y) Txhenb< Gx}EⴀCvIf! 8 @P 9, @*mXC.q\G2 u ` K 6 ! c42c41 c42c01 c41c40 c40c39 c39c38 c38c37 c37c36 c36c35 c35c34 c34c33 c33c32 c32c31 c31c30 c30c29 c29c28 c28c27 c27c26 c26c25 c25c24 c24c23 c23c22 c22c21 c21c20 c20c19 c19c18 c18c17 c17c16 c16c15 c15c14 c14c13 c13c12 c12c11 c11c10 c10c09 c09c08 c08c07 c07c06 c06c05 c05c04 c04c03 c03c02 c02c01  LVALаΰΰΰΰΰΰΰΰΰΰΰ MR2AccessVersion BuildAppTitleStartUpForm&StartUpShowDBWindow(StartUpShowStatusBarStartUpMenuBar$AllowShortcutMenusAllowFullMenus(AllowBuiltInToolbars&AllowToolbarChanges AllowSpecialKeysAppIcon,StartupShortcutMenuBarHijriCalendar 08.50  " Form.MainForm           @ 8Graph Optimization with GAMSMR2AccessVersion BuildAppTitleStartUpForm&StartUpShowDBWindow(StartUpShowStatusBarStartUpMenuBar$AllowShortcutMenusAllowFullMenus(AllowBuiltInToolbars&AllowToolbarChanges AllowSpecialKeysAppIcon,StartupShortcutMenuBarHijriCalendar 08.50  " Form.MainForm           @ 8Graph Optimization with GAMSMR2@ Title AuthorCompanySubject , $Grap