Changeset dbf609 in git


Ignore:
Timestamp:
Feb 5, 2015, 3:13:02 PM (9 years ago)
Author:
Stephan Oberfranz <oberfran@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
4052dce8271d3f66d409017a24c00744665f670a
Parents:
7023cea48460891d8d8145b55190cccabdc8074170bc378d051d27d991eb0d71f4a460fa0f1007b1
Message:
---
Merge branch 'spielwiese' of github.com:Singular/Sources into spielwiese
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • .gdbinit

    r7023ce rdbf609  
    11break dErrorBreak
    22
     3#break omReportError # use in case of problems with omaloc
     4#break dPolyReportError # use in case of problems with polynomial arithmetic
     5             
    36
    47
  • Singular/LIB/dmod.lib

    r7023ce rdbf609  
    63116311  vector V = M2[1];
    63126312  number bcand = leadcoef(V[1]); // 1st component
    6313   V[1]=0;
     6313  V=V-V[1];
    63146314  number ct = content(V); // content of the cofactors
    63156315  poly CF = ct*V[ncols(J)]; // polynomial in K[s]<x,dx>, cofactor to F
  • Singular/LIB/general.lib

    r7023ce rdbf609  
    682682"
    683683{  int ii,jj,s,n = 0,0,1,0;
     684   string id_typ=typeof(id);
     685   if ((id_typ!="ideal")
     686   and (id_typ!="module")
     687   and (id_typ!="matrix")
     688   and (id_typ!="list")
     689   and (id_typ!="intvec")) { return (id,0); }
    684690   intvec v;
    685691   if ( defined(basering) ) { def P = basering; }
  • Singular/LIB/gmssing.lib

    r7023ce rdbf609  
    932932  module U,U0,U1,U2;
    933933  matrix N;
    934   s=0;
    935934  for(i=size(F);i>=1;i--)
    936935  {
  • Singular/LIB/grobcov.lib

    r7023ce rdbf609  
    8585@*         grobcov, cgsdr,
    8686@*         generate the global rings
    87 @*         @R   (Q[a][x]),
    88 @*         @P   (Q[a]),
    89 @*         @RP  (Q[x,a])
     87@*         Grobcov::@R   (Q[a][x]),
     88@*         Grobcov::@P   (Q[a]),
     89@*         Grobcov::@RP  (Q[x,a])
    9090@*         that are used inside and killed before the output.
    9191@*         If you want to use some internal routine you must
  • Singular/LIB/grwalk.lib

    r70bc37 rdbf609  
    255255}
    256256
    257 proc gwalk(ideal Go, list #)
    258 "SYNTAX: gwalk(ideal i);
    259          gwalk(ideal i, intvec v, intvec w);
     257proc gwalk(ideal Go, int reduction,int printout, list #)
     258"SYNTAX: gwalk(ideal i, int reduction, int printout);
     259         gwalk(ideal i, int reduction, int printout, intvec v, intvec w);
    260260TYPE:    ideal
    261261PURPOSE: compute the standard basis of the ideal, calculated via
     
    284284   //print("//** help ring = " + string(basering));
    285285   ideal G = fetch(xR, Go);
    286    G = system("Mwalk", G, curr_weight, target_weight,basering);
     286   G = system("Mwalk", G, curr_weight, target_weight,basering,reduction,printout);
    287287
    288288   setring xR;
     
    300300  ring r = 32003,(z,y,x), lp;
    301301  ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    302   gwalk(I);
     302  gwalk(I,0,1);
    303303}
    304304
     
    346346}
    347347
    348 proc fwalk(ideal Go, list #)
    349 "SYNTAX: fwalk(ideal i);
    350          fwalk(ideal i, intvec v, intvec w);
     348proc fwalk(ideal Go, int reduction, int printout, list #)
     349"SYNTAX: fwalk(ideal i,int reductioin);
     350         fwalk(ideal i, int reduction intvec v, intvec w);
    351351TYPE:    ideal
    352352PURPOSE: compute the standard basis of the ideal w.r.t. the
     
    372372
    373373   ideal G = fetch(xR, Go);
    374    G = system("Mfwalk", G, curr_weight, target_weight);
     374   G = system("Mfwalk", G, curr_weight, target_weight, reduction, printout);
    375375
    376376   setring xR;
     
    387387    ring r = 32003,(z,y,x), lp;
    388388    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    389     fwalk(I);
     389    int reduction = 1;
     390    int printout = 1;
     391    fwalk(I,reduction,printout);
    390392}
    391393
     
    437439}
    438440
    439 proc pwalk(ideal Go, int n1, int n2, list #)
    440 "SYNTAX: pwalk(int d, ideal i, int n1, int n2);
    441          pwalk(int d, ideal i, int n1, int n2, intvec v, intvec w);
     441proc pwalk(ideal Go, int n1, int n2, int reduction, int printout, list #)
     442"SYNTAX: pwalk(int d, ideal i, int n1, int n2, int reduction, int printout);
     443         pwalk(int d, ideal i, int n1, int n2, int reduction, int printout, intvec v, intvec w);
    442444TYPE:    ideal
    443445PURPOSE: compute the standard basis of the ideal, calculated via
     
    477479  ideal G = fetch(xR, Go);
    478480
     481<<<<<<< HEAD
     482  G = system("Mpwalk",G,n1,n2,curr_weight,target_weight,nP,reduction,printout);
     483 
     484=======
    479485  G = system("Mpwalk", G, n1, n2, curr_weight, target_weight,nP);
    480486
     487>>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596
    481488  setring xR;
    482489  //kill Go;
     
    492499    ring r = 32003,(z,y,x), lp;
    493500    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    494     //I = std(I);
    495     //ring rr = 32003,(z,y,x),lp;
    496     //ideal I = fetch(r,I);
    497     pwalk(I,2,2);
     501    int reduction = 1;
     502    int printout = 2;
     503    pwalk(I,2,2,reduction,printout);
    498504}
    499505
  • Singular/LIB/modwalk.lib

    • Property mode changed from 100644 to 100755
    r70bc37 rdbf609  
    1616
    1717PROCEDURES:
     18modpWalk(ideal,int,int,int[,int,int,int,int])    standard basis conversion of I in prime characteristic
    1819modWalk(ideal,int,int[,int,int,int,int]);        standard basis conversion of I using modular methods (chinese remainder)
    1920";
     
    2930////////////////////////////////////////////////////////////////////////////////
    3031
    31 static proc modpWalk(def II, int p, int variant, list #)
     32proc modpWalk(def II, int p, int variant, int reduction, list #)
    3233"USAGE:  modpWalk(I,p,#); I ideal, p integer, variant integer
    3334ASSUME:  If size(#) > 0, then
     
    8081    }
    8182  }
     83<<<<<<< HEAD
     84=======
    8285
    8386//-------------------------  make i homogeneous  -----------------------------
     
    106109  }
    107110
     111>>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596
    108112//-------------------------  compute a standard basis mod p  -----------------------------
    109 
    110113  if(variant == 1)
    111114  {
    112115    if(size(#)>0)
    113116    {
    114       i = rwalk(i,radius,pert_deg,#);
    115      // rwalk(i,radius,pert_deg,#); std(i);
     117      i = rwalk(i,radius,pert_deg,reduction,#);
    116118    }
    117119    else
    118120    {
    119       i = rwalk(i,radius,pert_deg);
     121      i = rwalk(i,radius,pert_deg,reduction);
    120122    }
    121123  }
     
    124126    if(size(#) == 2)
    125127    {
    126       i = gwalk(i,#);
     128      i = gwalk(i,reduction,#);
    127129    }
    128130    else
    129131    {
    130       i = gwalk(i);
     132      i = gwalk(i,reduction);
    131133    }
    132134  }
     
    135137    if(size(#) == 2)
    136138    {
    137       i = frandwalk(i,radius,#);
     139      i = frandwalk(i,radius,reduction,#);
    138140    }
    139141    else
    140142    {
    141       i = frandwalk(i,radius);
     143      i = frandwalk(i,radius,reduction);
    142144    }
    143145  }
     
    157159    if(size(#) == 2)
    158160    {
    159      i=prwalk(i,radius,pert_deg,pert_deg,#);
     161     i=prwalk(i,radius,pert_deg,pert_deg,reduction,#);
    160162    }
    161163    else
    162164    {
    163       i=prwalk(i,radius,pert_deg,pert_deg);
     165      i=prwalk(i,radius,pert_deg,pert_deg,reduction);
    164166    }
    165167  }
     
    168170    if(size(#) == 2)
    169171    {
    170       i=pwalk(i,pert_deg,pert_deg,#);
     172      i=pwalk(i,pert_deg,pert_deg,reduction,#);
    171173    }
    172174    else
    173175    {
     176<<<<<<< HEAD
     177      i=pwalk(i,pert_deg,pert_deg,reduction);
     178=======
    174179      i=pwalk(i,pert_deg,pert_deg);
    175180    }
     
    189194        kill HomR;
    190195      }
    191     }
    192   }
     196>>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596
     197    }
     198  }
     199
    193200  setring R0;
    194201  return(list(fetch(@r,i),p));
     
    204211  ring ra = 0,x(1..4),(a(a),lp);
    205212  ideal I = std(cyclic(4));
     213  int reduction = 1;
    206214  ring rb = 0,x(1..4),(a(b),lp);
    207215  ideal I = imap(ra,I);
    208   modpWalk(I,p,1,a,b);
     216  modpWalk(I,p,1,reduction,a,b);
    209217  std(I);
    210218}
     
    212220////////////////////////////////////////////////////////////////////////////////
    213221
    214 proc modWalk(def II, int variant, list #)
     222proc modWalk(def II, int variant, int reduction, list #)
    215223"USAGE:  modWalk(II); II ideal or list(ideal,int)
    216224ASSUME:  If variant =
     
    487495  if(n2 > 4)
    488496  {
    489   //  L[5] = prime(random(an,en));
     497    L[5] = prime(random(an,en));
    490498  }
    491499  if(printlevel >= 10)
     
    504512    for(i=1; i<=size(L); i++)
    505513    {
    506       Arguments[i] = list(II,L[i],variant,list(curr_weight,target_weight));
     514      Arguments[i] = list(II,L[i],variant,reduction,list(curr_weight,target_weight));
    507515    }
    508516  }
     
    511519    for(i=1; i<=size(L); i++)
    512520    {
    513       Arguments[i] = list(II,L[i],variant);
     521      Arguments[i] = list(II,L[i],variant,reduction);
    514522    }
    515523  }
     
    528536//-------------------  Now all leading ideals are the same  --------------------
    529537//-------------------  Lift results to basering via farey  ---------------------
    530 
    531538    tt = timer; rt = rtimer;
    532539    N = T2[1];
     
    545552
    546553//----------------  Test if we already have a standard basis of I --------------
    547 
    548554    tt = timer; rt = rtimer;
    549     pTest = pTestSB(I,J,L,variant);
    550     //pTest = primeTestSB(I,J,L,variant);
     555    pTest = primeTest(J, prime(random(1000000000,2134567879)));
    551556    if(printlevel >= 10)
    552557    {
     
    596601    }
    597602//--------------  We do not already have a standard basis of I, therefore do the main computation for more primes  --------------
    598 
    599603    T1 = H;
    600604    T2 = N;
     
    613617      for(i=j; i<=size(L); i++)
    614618      {
    615         //Arguments[i-j+1] = list(II,L[i],variant,list(curr_weight,target_weight));
    616         Arguments[size(Arguments)+1] = list(II,L[i],variant,list(curr_weight,target_weight));
     619        Arguments[size(Arguments)+1] = list(II,L[i],variant,reduction,list(curr_weight,target_weight));
    617620      }
    618621    }
     
    621624      for(i=j; i<=size(L); i++)
    622625      {
    623         //Arguments[i-j+1] = list(II,L[i],variant);
    624         Arguments[size(Arguments)+1] = list(II,L[i],variant);
     626        Arguments[size(Arguments)+1] = list(II,L[i],variant,reduction);
    625627      }
    626628    }
     
    632634    for(i=1; i<=size(PP); i++)
    633635    {
    634       //P[size(P) + 1] = PP[i];
    635636      T1[size(T1) + 1] = PP[i][1];
    636637      T2[size(T2) + 1] = bigint(PP[i][2]);
     
    649650  echo = 2;
    650651  ring R=0,(x,y,z),lp;
    651   ideal I=-x+y2z-z,xz+1,x2+y2-1;
    652   // I is a standard basis in dp
    653   ideal J = modWalk(I,1);
     652  ideal I= y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
     653  int reduction = 0;
     654  ideal J = modWalk(I,1,1);
    654655  J;
    655656}
     
    772773  return(J);
    773774}
    774 //////////////////////////////////////////////////////////////////////////////////
    775 static proc primeTestSB(def II, ideal J, list L, int variant, list #)
    776 "USAGE:  primeTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int
    777 RETURN:  1 (resp. 0) if for a randomly chosen prime p that is not in L
    778          J mod p is (resp. is not) a standard basis of I mod p
    779 EXAMPLE: example primeTestSB; shows an example
    780 "
    781 {
    782 if(typeof(II) == "ideal")
    783   {
    784   ideal I = II;
    785   int radius = 2;
    786   }
    787 if(typeof(II) == "list")
    788   {
    789   ideal I = II[1];
    790   int radius = II[2];
    791   }
    792 
    793 int i,j,k,p;
    794 def R = basering;
    795 list r = ringlist(R);
    796 
    797 while(!j)
    798   {
    799   j = 1;
    800   p = prime(random(1000000000,2134567879));
    801   for(i = 1; i <= size(L); i++)
    802     {
    803     if(p == L[i])
    804       {
    805       j = 0;
    806       break;
    807       }
    808     }
    809   if(j)
    810     {
    811     for(i = 1; i <= ncols(I); i++)
    812       {
    813       for(k = 2; k <= size(I[i]); k++)
    814         {
    815         if((denominator(leadcoef(I[i][k])) mod p) == 0)
    816           {
    817           j = 0;
    818           break;
    819           }
    820         }
    821       if(!j)
    822         {
    823         break;
    824         }
    825       }
    826     }
    827   if(j)
    828     {
    829     if(!primeTest(I,p))
    830       {
    831       j = 0;
    832       }
    833     }
    834   }
    835 r[1] = p;
    836 def @R = ring(r);
    837 setring @R;
    838 ideal I = imap(R,I);
    839 ideal J = imap(R,J);
    840 attrib(J,"isSB",1);
    841 
    842 int t = timer;
    843 j = 1;
    844 if(isIncluded(I,J) == 0)
    845   {
    846   j = 0;
    847   }
    848 if(printlevel >= 11)
    849   {
    850   "isIncluded(I,J) takes "+string(timer - t)+" seconds";
    851   "j = "+string(j);
    852   }
    853 t = timer;
    854 if(j)
    855   {
    856   if(size(#) > 0)
    857     {
    858     ideal K = modpWalk(I,p,variant,#)[1];
    859     }
    860   else
    861     {
    862     ideal K = modpWalk(I,p,variant)[1];
    863     }
    864   t = timer;
    865   if(isIncluded(J,K) == 0)
    866     {
    867     j = 0;
    868     }
    869   if(printlevel >= 11)
    870     {
    871     "isIncluded(K,J) takes "+string(timer - t)+" seconds";
    872     "j = "+string(j);
    873     }
    874   }
    875 setring R;
    876 
    877 return(j);
    878 }
    879 example
    880 { "EXAMPLE:"; echo = 2;
    881    intvec L = 2,3,5;
    882    ring r = 0,(x,y,z),lp;
    883    ideal I = x+1,x+y+1;
    884    ideal J = x+1,y;
    885    primeTestSB(I,I,L,1);
    886    primeTestSB(I,J,L,1);
    887 }
    888 
    889 ////////////////////////////////////////////////////////////////////////////////
    890 static proc pTestSB(ideal I, ideal J, list L, int variant, list #)
    891 "USAGE:  pTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int
    892 RETURN:  1 (resp. 0) if for a randomly chosen prime p that is not in L
    893          J mod p is (resp. is not) a standard basis of I mod p
    894 EXAMPLE: example pTestSB; shows an example
    895 "
    896 {
    897    int i,j,k,p;
    898    def R = basering;
    899    list r = ringlist(R);
    900 
    901    while(!j)
    902    {
    903       j = 1;
    904       p = prime(random(1000000000,2134567879));
    905       for(i = 1; i <= size(L); i++)
    906       {
    907          if(p == L[i]) { j = 0; break; }
    908       }
    909       if(j)
    910       {
    911          for(i = 1; i <= ncols(I); i++)
    912          {
    913             for(k = 2; k <= size(I[i]); k++)
    914             {
    915                if((denominator(leadcoef(I[i][k])) mod p) == 0) { j = 0; break; }
    916             }
    917             if(!j){ break; }
    918          }
    919       }
    920       if(j)
    921       {
    922          if(!primeTest(I,p)) { j = 0; }
    923       }
    924    }
    925    r[1] = p;
    926    def @R = ring(r);
    927    setring @R;
    928    ideal I = imap(R,I);
    929    ideal J = imap(R,J);
    930    attrib(J,"isSB",1);
    931 
    932    int t = timer;
    933    j = 1;
    934    if(isIncluded(I,J) == 0) { j = 0; }
    935 
    936    if(printlevel >= 11)
    937    {
    938       "isIncluded(I,J) takes "+string(timer - t)+" seconds";
    939       "j = "+string(j);
    940    }
    941 
    942    t = timer;
    943    if(j)
    944    {
    945       if(size(#) > 0)
    946       {
    947          ideal K = modpStd(I,p,variant,#[1])[1];
    948       }
    949       else
    950       {
    951          ideal K = groebner(I);
    952       }
    953       t = timer;
    954       if(isIncluded(J,K) == 0) { j = 0; }
    955 
    956       if(printlevel >= 11)
    957       {
    958          "isIncluded(J,K) takes "+string(timer - t)+" seconds";
    959          "j = "+string(j);
    960       }
    961    }
    962    setring R;
    963    return(j);
    964 }
    965 example
    966 { "EXAMPLE:"; echo = 2;
    967    intvec L = 2,3,5;
    968    ring r = 0,(x,y,z),dp;
    969    ideal I = x+1,x+y+1;
    970    ideal J = x+1,y;
    971    pTestSB(I,I,L,2);
    972    pTestSB(I,J,L,2);
    973 }
     775
    974776////////////////////////////////////////////////////////////////////////////////
    975777static proc mixedTest()
  • Singular/LIB/reszeta.lib

    r7023ce rdbf609  
    42654265             if(savedCent==1)
    42664266             {
    4267                vector otherComp;
    4268                otherComp[M[int(leadcoef(path[1,ncols(path)])),size(BO[4])-1]]
    4269                         =1;
     4267               vector otherComp=
     4268               gen(M[int(leadcoef(path[1,ncols(path)])),size(BO[4])-1]);
    42704269             }
    42714270             kill savedCent;
  • Singular/LIB/rwalk.lib

    • Property mode changed from 100644 to 100755
    r70bc37 rdbf609  
    1010rwalk(ideal,int,int[,intvec,intvec]);   standard basis of ideal via Random Walk algorithm
    1111rwalk(ideal,int[,intvec,intvec]);       standard basis of ideal via Random Perturbation Walk algorithm
    12 frwalk(ideal,int[,intvec,intvec]);      standard basis of ideal via Random Fractal Walk algorithm
     12frandwalk(ideal,int[,intvec,intvec]);      standard basis of ideal via Random Fractal Walk algorithm
    1313";
    1414
     
    141141 * Random Walk  *
    142142 ****************/
    143 proc rwalk(ideal Go, int radius, int pert_deg, list #)
     143proc rwalk(ideal Go, int radius, int pert_deg, int reduction, int printout, list #)
    144144"SYNTAX: rwalk(ideal i, int radius);
    145145         if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w);
     146         intermediate Groebner bases are not reduced if reduction = 0
    146147TYPE:    ideal
    147148PURPOSE: compute the standard basis of the ideal, calculated via
     
    178179
    179180ideal G = fetch(xR, Go);
    180 G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, basering);
     181G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, reduction, printout);
    181182
    182183setring xR;
     
    196197  int radius = 1;
    197198  int perturb_deg = 2;
    198   rwalk(I,radius,perturb_deg);
     199  int reduction = 0;
     200  int printout = 1;
     201  rwalk(I,radius,perturb_deg,reduction,printout);
    199202}
    200203
     
    202205 * Perturbation Walk with random element *
    203206 *****************************************/
    204 proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, list #)
     207proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, int reduction, int printout, list #)
    205208"SYNTAX: rwalk(ideal i, int radius);
    206209         if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w);
     
    227230  OSCTW= OrderStringalp_NP("al", #);
    228231  }
     232int nP = OSCTW[1];
    229233string ord_str = OSCTW[2];
    230234intvec curr_weight = OSCTW[3]; // original weight vector
     
    238242
    239243ideal G = fetch(xR, Go);
    240 G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg, basering);
     244G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg,
     245           nP, reduction, printout);
    241246
    242247setring xR;
     
    257262  int o_perturb_deg = 2;
    258263  int t_perturb_deg = 2;
    259   prwalk(I,radius,o_perturb_deg,t_perturb_deg);
     264  int reduction = 0;
     265  int printout = 2;
     266  prwalk(I,radius,o_perturb_deg,t_perturb_deg,reduction,printout);
    260267}
    261268
     
    263270 * Fractal Walk with random element *
    264271 ************************************/
    265 proc frandwalk(ideal Go, int radius, list #)
    266 "SYNTAX: frwalk(ideal i, int radius);
    267          frwalk(ideal i, int radius, intvec v, intvec w);
     272proc frandwalk(ideal Go, int radius, int reduction, int printout, list #)
     273"SYNTAX: frwalk(ideal i, int radius, int reduction, int printout);
     274         frwalk(ideal i, int radius, int reduction, int printout, intvec v, intvec w);
    268275TYPE:    ideal
    269276PURPOSE: compute the standard basis of the ideal, calculated via
     
    299306   ideal G = fetch(xR, Go);
    300307   int pert_deg = 2;
    301    G = system("Mfrwalk", G, curr_weight, target_weight, radius);
     308
     309   G = system("Mfrwalk", G, curr_weight, target_weight, radius, reduction, printout);
    302310
    303311   setring xR;
     
    314322    ring r = 0,(z,y,x), lp;
    315323    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    316     frandwalk(I,2);
    317 }
     324    int reduction = 0;
     325    frandwalk(I,2,0,1);
     326}
  • Singular/LIB/schreyer.lib

    r7023ce rdbf609  
    1 ///////////////////////////////////////////////////////////////////////////
     1///////////////////////////////////////////////////////////////////////////////
    22version="version schreyer.lib 4.0.0.0 Jun_2013 "; // $Id$
    33category="General purpose";
    44info="
    5 LIBRARY: schreyer.lib     Schreyer resolution computations and helpers for @code{derham.lib}
     5LIBRARY: schreyer.lib Schreyer resolution computations and helpers for derham.lib
    66AUTHOR:  Oleksandr Motsak <U@D>, where U={motsak}, D={mathematik.uni-kl.de}
    77KEYWORDS: Schreyer ordering; Schreyer resolution; syzygy
    88OVERVIEW:
    9 @* The library contains several procedures for computing a/part of Schreyer resoltion (cf. [SFO]),
    10    and some helpers for @code{derham.lib} (which requires resolutions over the homogenized Weyl algebra) for that purpose.
    11 @* The input for any resolution computation is a set of vectors @code{M} in form of a module over some basering @code{R}.
    12    The helpers works both in the commutative and non-commutative setting (cf. [MO]), that is the ring @code{R} may be non-commutative,
    13    in which case the ring ordering over it must be global. They produce/work with partial Schreyer resolutions of @code{(R^rank(M))/M}
    14    in form of a specially constructed ring (endowed with a special ring ordering that will be extended in the
    15    course of a resolution computation) containing a list of modules @code{RES} and a module @code{MRES}:
    16 @* @code{RES}: the list of modules contains the images of maps (also called syzygy modules) substituting the
    17      computed beginning of a Schreyer resolution, that is, each syzygy module is given by a Groebner basis
    18      with respect to the corresponding Schreyer ordering.
    19 @* @code{RES}: the list of modules which starts with a zero map given by @code{rank(M)} zero generators indicating that the image of
    20      the first differential map is zero. The second map @code{RES[2]} is given by @code{M}, which indicates that
    21      the resolution of @code{(R^rank(M))/M} is being computed.
    22 @* @code{MRES}: the module is a direct sum of modules from @code{RES} and thus comprises all computed differentials.
    23 @* Syzygies are shifted so that @code{gen(i)} is mapped to @code{MRES[i]} under the differential map.
    24 NOTE:
    25 @* Here, we call a free resolution a Schreyer resolution if each syzygy module is given by a Groebner basis
    26      with respect to the corresponding Schreyer ordering.
    27 @* A Schreyer resolution can be much bigger than a minimal resolution of the same module, but may be easier to construct.
    28 @* The Schreyer ordering succesively extends the starting module ordering on @code{M} (defined in Singular by the basering @code{R})
    29      and is extended to higher syzygies using the following definition:
    30 @*        a < b if and only if (d(a) < d(b)) OR ( (d(a) = d(b) AND (comp(a) < comp(b)) ),
    31 @* where @code{d(a)} is the image of an under the differential (given by @code{MRES}),
    32      and @code{comp(a)} is the module component, for any module terms @code{a} and @code{b} from the same higher syzygy module.
    33 NOTE:
    34 @* most comutations require the dynamic or built-in module @code{syzextra}, which will be auto-leaded on demand.
    35 PROCEDURES:
    36   Sres(M,len)     helper for computing Schreyer resolution of module M of maximal length len
    37   Ssyz(M)         helper for computing Schreyer resolution of module M of length 1
    38   Scontinue(len)  helper for extending currently active resolution by (at most) len syszygies
    39   s_res(M, len)   compute Schreyer resolution of module M of maximal length len via LiftTree method from [BMSS]
     9The library contains several procedures for computing a/part of Schreyer
     10resoltion (cf. [SFO]), and some helpers for derham.lib (which requires
     11resolutions over the homogenized Weyl algebra) for that purpose.
     12The input for any resolution computation is a set of vectors M in form of a
     13module over some basering R. The helpers works both in the commutative and
     14non-commutative setting (cf. [MO]), that is the ring R may be non-commutative,
     15in which case the ring ordering over it must be global. They produce/work with
     16partial Schreyer resolutions of (R^rank(M))/M in form of a specially constructed
     17ring (endowed with a special ring ordering that will be extended in the course
     18of a resolution computation) containing the following objects:
     19@* RES: the list of modules contains the images of maps (also called syzygy
     20modules) substituting the computed beginning of a Schreyer resolution, that is,
     21each syzygy module is given by a Groebner basis with respect to the
     22corresponding Schreyer ordering. RES starts with a zero map given by rank(M)
     23zero generators indicating that the image of the first differential map is
     24zero. The second map RES[2] is given by M, which indicates that the resolution
     25of (R^rank(M))/M is being computed.
     26@* MRES: the module is a direct sum of modules from RES and thus comprises all
     27computed differentials. Syzygies are shifted so that gen(i) is mapped to MRES[i]
     28under the differential map.
     29@* Here, we call a free resolution a Schreyer resolution if each syzygy
     30module is given by a Groebner basis with respect to the corresponding Schreyer
     31ordering. A Schreyer resolution can be much bigger than a minimal resolution of
     32the same module, but may be easier to construct. The Schreyer ordering
     33succesively extends the starting module ordering on M (defined in Singular by
     34the basering R) and is extended to higher syzygies using the following
     35definition:
     36@* a < b if and only if (d(a)<d(b)) OR ( (d(a)=d(b) AND (comp(a)<comp(b)) ),
     37@* where d(a) is the image of an under the differential (given by MRES), and
     38comp(a) is the module component, for any module terms a and b from the same
     39higher syzygy module.
     40
     41NOTE: Since most comutations require the module syzextra.so, please be make sure
     42 to build it into Singular on Windows.
     43
    4044REFERENCES:
    4145@*
    42 [BMSS] Burcin, E., Motsak, O., Schreyer, F.-O., Steenpass, A.: NEW ALGORITHMS TO COMPUTE SYZYGIES, 2014.
     46[BMSS] Burcin, E., Motsak, O., Schreyer, F.-O., Steenpass, A.:
     47Refined algorithms to compute syzygies, 2015 (to appear).
    4348@*
    44 [SFO]  Schreyer, F.O.: Die Berechnung von Syzygien mit dem verallgemeinerten Weierstrassschen Divisionssatz,
    45       Master's thesis, Univ. Hamburg, 1980.
     49[SFO]  Schreyer, F.O.: Die Berechnung von Syzygien mit dem verallgemeinerten
     50Weierstrassschen Divisionssatz, Master's thesis, Univ. Hamburg, 1980.
    4651@*
    47 [MO]   Motsak, O.: Non-commutative Computer Algebra with applications: Graded commutative algebra and related
    48        structures in Singular with applications, Ph.D. thesis, TU Kaiserslautern, 2010.
     52[MO]   Motsak, O.: Non-commutative Computer Algebra with applications:
     53Graded commutative algebra and related structures in Singular with applications,
     54Ph.D. thesis, TU Kaiserslautern, 2010.
     55
     56PROCEDURES:
     57  s_res(M,l)   compute Schreyer resolution via LiftTree method from [BMSS]
     58  Sres(M,l)    helper for computing Schreyer resolution
     59  Ssyz(M)      helper for computing Schreyer resolution of module M of length 1
     60  Scontinue(l) helper for extending currently active resolution
     61
     62SEE ALSO: syz, sres, lres, res
    4963";
    5064
     
    600614  }
    601615
    602   def opts = option(get); 
     616  def opts = option(get);
    603617  option(redSB); option(redTail);
    604618    M = simplify(interred(groebner(M)), 1 + 2 + 4 + 32); // NOTE: we require interreduced GB for input
    605619  option(set, opts); kill opts;
    606  
     620
    607621//  int @IS_A_SB = attrib(M, "isSB");  if( !@IS_A_SB )  {  } else  {  }
    608622// attrib(M, "isSB", 1);
     
    789803    attrib(S, "NOCACHING", 0);
    790804  }
    791  
     805
    792806
    793807  // maybe resetting existing ring attributes!
     
    14021416        def @c =   Syzextra::leadcomp(s); int k = int(@c);
    14031417
    1404         if( @TREEOUTPUT ){ "\CHILD{", (s), "}{", ( @b*L[k]), "}"; }
     1418        if( @TREEOUTPUT ){ "\CHILD{", (s), "}{", ( @b*L[k]), "}"; }
    14051419
    14061420        s = s + SSTraverseTail(@b, T[k], L, T, #); // !!!
     
    15631577      {
    15641578        @b =   Syzextra::leadmonomial(syz_2);
    1565         k =  int(  Syzextra::leadcomp(syz_2));
    1566 
    1567         if( @TREEOUTPUT ){ "\CHILD{", (syz_2), "}{", ( lead(spoly)), "}"; }
     1579        k =  int(  Syzextra::leadcomp(syz_2));
     1580
     1581        if( @TREEOUTPUT ){ "\CHILD{", (syz_2), "}{", ( lead(spoly)), "}"; }
    15681582
    15691583        spoly = spoly + @b * T[k];
     
    21582172
    21592173// cannot be automatically used via overloading :(
    2160 proc SRES_list(def SR)
     2174static proc SRES_list(def SR)
    21612175"USAGE:  SRES_list(resolution)
    21622176RETURN:  list
     
    24742488}
    24752489
     2490
     2491// Further recognized switches are the following attributes of @code{Schreyer::SSinit} procedure:
     2492// LEAD2SYZ, TAILREDSYZ, HYBRIDNF, DEBUG, ...
     2493
    24762494proc s_res(def I, int l)
    24772495"USAGE:  s_res(ideal/module M, int len)
    2478 RETURN:  resolution object or SRES
    2479 PURPOSE: compute a Schreyer resolution of M of length at most len (see [BMSS])
     2496RETURN:  resolution object over basering
     2497PURPOSE: compute a non-minimal Schreyer free resolution of M of length at most len via the LiftTree algorithm described in [BMSS].
    24802498NOTE:    If given len is zero then nvars(basering) + 1 is used instead.
    2481 @* This functions is not related to other helpers from this library.
     2499@* This functions is not related to the helpers from this library. This procedure works in only in commutative case.
    24822500@* One can switch on computation protocol and statistic (depending on the build) by setting the @code{prot} option.
    2483 @* Further recognized switches are the following attributes of @code{Schreyer::SSinit} procedure:
    2484 LEAD2SYZ, TAILREDSYZ, HYBRIDNF
    2485 DEBUG, ...
    2486 SEE ALSO: sres
     2501SEE ALSO: sres, lres, Sres
    24872502EXAMPLE: example s_res; shows an example
    24882503"
     
    25182533  ring R;
    25192534  module M = maxideal(1); M;
    2520   def  rs = s_res(M, 0);
    2521   print(rs);
    2522   print(betti(rs, 0)); // non-minimal betties
    2523   print(SRES_list(rs));
    2524   print(betti(rs, 1)); //minimal betties
     2535  s_res(M, 0); // Koszul complex
     2536  list rs = _; // get syzygies
     2537  print(betti(rs, 0), "betti"); // non-minimal betties
    25252538  print(minres(rs));
     2539  print(betti(rs, 1), "betti"); //minimal betties
    25262540}
    25272541
     
    27322746  attrib(SSinit, "PROFILE", 0);
    27332747  attrib(SSinit, "IGNORETAILS", 0); // not only frame
    2734  
     2748
    27352749  attrib(SSinit, "NOCACHING", 0);
    27362750
     
    27872801  ideal I = -x2y+26/17xy2+70/17y3+96/121x2z+63/82xyz+115/11y2z-8114xz2-40/79yz2+16/125z3+3023x2u-123/70xyu+3395y2u-81/119xzu-23/66yzu+3626z2u+18/53xu2+111/58yu2-34/39zu2+53/40u3-94/17x2v-10/19xyv+81/88y2v-91/33xzv-9967yzv-103/4z2v-26/109xuv+69/97yuv+92/17zuv-19/96u2v+10/21xv2+6147yv2+32/113zv2-79/82uv2-77/51v3,4347x2y-9017xy2+11327y3+18/79x2z-93/43xyz-35/47y2z+14704xz2+10727yz2-1764z3-612x2u+20/107xyu-103/89y2u-39/2xzu+2345yzu+10251z2u-9984xu2-10299yu2+113/118zu2+37/91u3+2/31x2v+9552xyv-47/100y2v-3242xzv+113/27yzv-11271z2v-13/79xuv+15917yuv+5/114zuv+103/119u2v-21/55xv2-59/19yv2+101/68zv2-7817uv2-112/29v3,7228x2y-111/113xy2+5913y3+6/43x2z-11251xyz+27/121y2z+97/96xz2-7398yz2-97/114z3+38/15x2u+5005xyu-41/126y2u-61/116xzu+89/9yzu-4087z2u+26/15xu2-92/103yu2+21/68zu2-4027u3+97/91x2v+5150xyv-4/47y2v-2310xzv+7307yzv-77/86z2v+30/83xuv+413yuv-50zuv-103/106u2v+105/73xv2-109/98yv2+59/63zv2+715uv2+963v3,x3+3487x2y-9744xy2-13276y3-15213x2z-118/51xyz+101/104y2z+2754xz2+9111yz2-17/94z3+11136x2u-43/82xyu-9/41y2u-7306xzu-6839yzu+5692z2u-14682xu2+37/80yu2-85/97zu2-6186u3+34/15x2v+84/109xyv+5086y2v+27/112xzv-3/40yzv+19/120z2v+11222xuv+38/55yuv-24/83zuv+15814u2v-111/61xv2+49/44yv2+125/81zv2+1933uv2-19/71v3;
    27882802  TestSSresAttribs(I, Name);
    2789   kill @p, Name, R; 
     2803  kill @p, Name, R;
    27902804
    27912805  string Name = "rat.d8.g6"; int @p=31991; ring R = (@p),(x,y,z,u,v), dp;
  • Singular/LIB/swalk.lib

    • Property mode changed from 100644 to 100755
  • Singular/extra.cc

    r70bc37 rdbf609  
    18641864    if (strcmp(sys_cmd, "Mwalk") == 0)
    18651865    {
    1866       const short t[]={4,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,RING_CMD};
     1866      const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,RING_CMD,INT_CMD,INT_CMD};
    18671867      if (!iiCheckTypes(h,t,1)) return TRUE;
    18681868      if (((intvec*) h->next->Data())->length() != currRing->N &&
     
    18751875      ideal arg1 = (ideal) h->Data();
    18761876      intvec* arg2 = (intvec*) h->next->Data();
    1877       intvec* arg3   =  (intvec*) h->next->next->Data();
    1878       ring arg4   =  (ring) h->next->next->next->Data();
    1879       ideal result = (ideal) Mwalk(arg1, arg2, arg3,arg4);
     1877      intvec* arg3 = (intvec*) h->next->next->Data();
     1878      ring arg4 = (ring) h->next->next->next->Data();
     1879      int arg5 = (int) (long) h->next->next->next->next->Data();
     1880      int arg6 = (int) (long) h->next->next->next->next->next->Data();
     1881      ideal result = (ideal) Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
    18801882      res->rtyp = IDEAL_CMD;
    18811883      res->data =  result;
     
    19131915    if (strcmp(sys_cmd, "Mpwalk") == 0)
    19141916    {
    1915       const short t[]={6,IDEAL_CMD,INT_CMD,INT_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD};
     1917      const short t[]={8,IDEAL_CMD,INT_CMD,INT_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD};
    19161918      if (!iiCheckTypes(h,t,1)) return TRUE;
    19171919      if(((intvec*) h->next->next->next->Data())->length() != currRing->N &&
     
    19271929      intvec* arg5 = (intvec*) h->next->next->next->next->Data();
    19281930      int arg6 = (int) (long) h->next->next->next->next->next->Data();
    1929       ideal result = (ideal) Mpwalk(arg1, arg2, arg3, arg4, arg5,arg6);
     1931      int arg7 = (int) (long) h->next->next->next->next->next->next->Data();
     1932      int arg8 = (int) (long) h->next->next->next->next->next->next->next->Data();
     1933      ideal result = (ideal) Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
    19301934      res->rtyp = IDEAL_CMD;
    19311935      res->data =  result;
     
    19391943    if (strcmp(sys_cmd, "Mrwalk") == 0)
    19401944    {
    1941       const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};
     1945      const short t[]={7,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD};
    19421946      if (!iiCheckTypes(h,t,1)) return TRUE;
    1943       if((((intvec*) h->next->Data())->length() != currRing->N &&
    1944          ((intvec*) h->next->next->Data())->length() != currRing->N ) &&
    1945          (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
    1946          ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ))
     1947      if(((intvec*) h->next->Data())->length() != currRing->N &&
     1948         ((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
     1949         ((intvec*) h->next->next->Data())->length() != currRing->N &&
     1950         ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) )
    19471951      {
    19481952        Werror("system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
     
    19551959      int arg4 = (int)(long) h->next->next->next->Data();
    19561960      int arg5 = (int)(long) h->next->next->next->next->Data();
    1957       ring arg6 = (ring) h->next->next->next->next->next->Data();
    1958       ideal result = (ideal) Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
     1961      int arg6 = (int)(long) h->next->next->next->next->next->Data();
     1962      int arg7 = (int)(long) h->next->next->next->next->next->next->Data();
     1963      ideal result = (ideal) Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
    19591964      res->rtyp = IDEAL_CMD;
    19601965      res->data =  result;
     
    20182023    if (strcmp(sys_cmd, "Mfwalk") == 0)
    20192024    {
    2020       const short t[]={3,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD};
     2025      const short t[]={5,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD};
    20212026      if (!iiCheckTypes(h,t,1)) return TRUE;
    20222027      if (((intvec*) h->next->Data())->length() != currRing->N &&
     
    20252030        Werror("system(\"Mfwalk\" ...) intvecs not of length %d\n",
    20262031                 currRing->N);
    2027         return TRUE;
    2028       }
    2029       ideal arg1 = (ideal) h->Data();
    2030       intvec* arg2 = (intvec*) h->next->Data();
    2031       intvec* arg3   =  (intvec*) h->next->next->Data();
    2032       ideal result = (ideal) Mfwalk(arg1, arg2, arg3);
    2033       res->rtyp = IDEAL_CMD;
    2034       res->data =  result;
    2035       return FALSE;
    2036     }
    2037     else
    2038   #endif
    2039   /*==================== Mfrwalk =================*/
    2040   #ifdef HAVE_WALK
    2041     if (strcmp(sys_cmd, "Mfrwalk") == 0)
    2042     {
    2043       const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,RING_CMD};
    2044       if (!iiCheckTypes(h,t,1)) return TRUE;
    2045       if (((intvec*) h->next->Data())->length() != currRing->N &&
    2046           ((intvec*) h->next->next->Data())->length() != currRing->N)
    2047       {
    2048         Werror("system(\"Mfrwalk\" ...) intvecs not of length %d\n",currRing->N);
    20492032        return TRUE;
    20502033      }
     
    20532036      intvec* arg3 = (intvec*) h->next->next->Data();
    20542037      int arg4 = (int)(long) h->next->next->next->Data();
    2055       ideal result = (ideal) Mfrwalk(arg1, arg2, arg3, arg4);
     2038      int arg5 = (int)(long) h->next->next->next->next->Data();
     2039      ideal result = (ideal) Mfwalk(arg1, arg2, arg3, arg4, arg5);
    20562040      res->rtyp = IDEAL_CMD;
    20572041      res->data =  result;
     
    20592043    }
    20602044    else
     2045  #endif
     2046  /*==================== Mfrwalk =================*/
     2047  #ifdef HAVE_WALK
     2048    if (strcmp(sys_cmd, "Mfrwalk") == 0)
     2049    {
     2050      const short t[]={6,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD};
     2051      if (!iiCheckTypes(h,t,1)) return TRUE;
     2052/*
     2053      if (((intvec*) h->next->Data())->length() != currRing->N &&
     2054          ((intvec*) h->next->next->Data())->length() != currRing->N)
     2055      {
     2056        Werror("system(\"Mfrwalk\" ...) intvecs not of length %d\n",currRing->N);
     2057        return TRUE;
     2058      }
     2059*/
     2060      if((((intvec*) h->next->Data())->length() != currRing->N &&
     2061         ((intvec*) h->next->next->Data())->length() != currRing->N ) &&
     2062         (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
     2063         ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ))
     2064      {
     2065        Werror("system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
     2066               currRing->N,(currRing->N)*(currRing->N));
     2067        return TRUE;
     2068      }
     2069
     2070      ideal arg1 = (ideal) h->Data();
     2071      intvec* arg2 = (intvec*) h->next->Data();
     2072      intvec* arg3 = (intvec*) h->next->next->Data();
     2073      int arg4 = (int)(long) h->next->next->next->Data();
     2074      int arg5 = (int)(long) h->next->next->next->next->Data();
     2075      int arg6 = (int)(long) h->next->next->next->next->next->Data();
     2076      ideal result = (ideal) Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
     2077      res->rtyp = IDEAL_CMD;
     2078      res->data =  result;
     2079      return FALSE;
     2080    }
     2081    else
    20612082  /*==================== Mprwalk =================*/
    20622083    if (strcmp(sys_cmd, "Mprwalk") == 0)
    20632084    {
    2064       const short t[]={7,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,RING_CMD};
     2085      const short t[]={9,IDEAL_CMD,INTVEC_CMD,INTVEC_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD,INT_CMD};
    20652086      if (!iiCheckTypes(h,t,1)) return TRUE;
    2066       if (((intvec*) h->next->Data())->length() != currRing->N &&
    2067           ((intvec*) h->next->next->Data())->length() != currRing->N )
    2068       {
    2069         Werror("system(\"Mrwalk\" ...) intvecs not of length %d\n",
    2070                currRing->N);
     2087      if((((intvec*) h->next->Data())->length() != currRing->N &&
     2088         ((intvec*) h->next->next->Data())->length() != currRing->N ) &&
     2089         (((intvec*) h->next->Data())->length() != (currRing->N)*(currRing->N) &&
     2090         ((intvec*) h->next->next->Data())->length() != (currRing->N)*(currRing->N) ))
     2091      {
     2092        Werror("system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
     2093               currRing->N,(currRing->N)*(currRing->N));
    20712094        return TRUE;
    20722095      }
     
    20772100      int arg5 = (int)(long) h->next->next->next->next->Data();
    20782101      int arg6 = (int)(long) h->next->next->next->next->next->Data();
    2079       ring arg7 = (ring) h->next->next->next->next->next->next->Data();
    2080       ideal result = (ideal) Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
     2102      int arg7 = (int)(long) h->next->next->next->next->next->next->Data();
     2103      int arg8 = (int)(long) h->next->next->next->next->next->next->next->Data();
     2104      int arg9 = (int)(long) h->next->next->next->next->next->next->next->next->Data();
     2105      ideal result = (ideal) Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
    20812106      res->rtyp = IDEAL_CMD;
    20822107      res->data =  result;
  • Singular/ipassign.cc

    r7023ce rdbf609  
    950950* assign a = b
    951951*/
    952 static BOOLEAN jiAssign_1(leftv l, leftv r)
     952static BOOLEAN jiAssign_1(leftv l, leftv r, BOOLEAN toplevel)
    953953{
    954954  int rt=r->Typ();
     
    960960
    961961  int lt=l->Typ();
    962   if (/*(*/ lt==0 /*)*/) /*&&(l->name!=NULL)*/
     962  if (lt==0)
    963963  {
    964964    if (!errorreported) Werror("left side `%s` is undefined",l->Fullname());
     
    10091009  }
    10101010  leftv ld=l;
    1011   if ((l->rtyp==IDHDL)&&(lt!=QRING_CMD)&&(lt!=RING_CMD))
    1012     ld=(leftv)l->data;
     1011  if (l->rtyp==IDHDL)
     1012  {
     1013    if ((lt!=QRING_CMD)&&(lt!=RING_CMD))
     1014      ld=(leftv)l->data;
     1015  }
     1016  else if (toplevel)
     1017  {
     1018    WerrorS("error in assign: left side is not an l-value");
     1019    return TRUE;
     1020  }
    10131021  if (lt>MAX_TOK)
    10141022  {
     
    11931201    h=l->next;
    11941202    l->next=NULL;
    1195     nok=jiAssign_1(l,&t);
     1203    nok=jiAssign_1(l,&t,TRUE);
    11961204    l->next=h;
    11971205    if (nok) return TRUE;
     
    12271235    h=l->next;
    12281236    l->next=NULL;
    1229     nok=jiAssign_1(l,&t);
     1237    nok=jiAssign_1(l,&t,TRUE);
    12301238    l->next=h;
    12311239    t.CleanUp();
     
    14651473      idhdl hh=NULL;
    14661474      if ((l->rtyp==IDHDL)&&(l->Typ()==DEF_CMD)) hh=(idhdl)l->data;
    1467       nok=jiAssign_1(l,&t);
     1475      nok=jiAssign_1(l,&t,TRUE);
    14681476      if (hh!=NULL) { ipMoveId(hh);hh=NULL;}
    14691477      l->next=h;
     
    15411549    h=l->next;
    15421550    l->next=NULL;
    1543     nok=jiAssign_1(l,&t);
     1551    nok=jiAssign_1(l,&t,TRUE);
    15441552    if (nok)
    15451553    {
     
    15991607    memset(&tmp,0,sizeof(sleftv));
    16001608    tmp.rtyp=DEF_CMD;
    1601     b=iiAssign(&tmp,r);
     1609    b=iiAssign(&tmp,r,FALSE);
    16021610    ld->CleanUp();
    16031611    memcpy(ld,&tmp,sizeof(sleftv));
     
    16111619    tmp.rtyp=r->Typ();
    16121620    tmp.data=(char*)idrecDataInit(r->Typ());
    1613     b=iiAssign(&tmp,r);
     1621    b=iiAssign(&tmp,r,FALSE);
    16141622    ld->CleanUp();
    16151623    memcpy(ld,&tmp,sizeof(sleftv));
     
    16171625  else
    16181626  {
    1619     b=iiAssign(ld,r);
     1627    b=iiAssign(ld,r,FALSE);
    16201628    if (l->e!=NULL) l->e->next=ld->e;
    16211629    ld->e=NULL;
     
    16461654  return b;
    16471655}
    1648 BOOLEAN iiAssign(leftv l, leftv r)
     1656BOOLEAN iiAssign(leftv l, leftv r, BOOLEAN toplevel)
    16491657{
    16501658  if (errorreported) return TRUE;
     
    16641672    IDFLAG((idhdl)l->data)=0;
    16651673    l->attribute=NULL;
     1674    toplevel=FALSE;
    16661675  }
    16671676  else if (l->attribute!=NULL)
     
    17461755      &&((lt==rt)||(lt!=LIST_CMD)))
    17471756      {
    1748         b=jiAssign_1(l,r);
     1757        b=jiAssign_1(l,r,toplevel);
    17491758        if (l->rtyp==IDHDL)
    17501759        {
     
    17711780      )
    17721781      {
    1773         b=jiAssign_1(l,r);
     1782        b=jiAssign_1(l,r,toplevel);
    17741783        if((l->rtyp==IDHDL)&&(l->data!=NULL))
    17751784        {
     
    18581867      }
    18591868      if ((hh->next==NULL)&&(hh->Typ()==IDEAL_CMD))
    1860         return jiAssign_1(l,hh); /* map-assign: map f=r,i; */
     1869        return jiAssign_1(l,hh,toplevel); /* map-assign: map f=r,i; */
    18611870      //no break, handle the rest like an ideal:
    18621871      map_assign=TRUE;
  • Singular/ipshell.h

    r7023ce rdbf609  
    173173/* ================================================================== */
    174174/* Assigments : */
    175 BOOLEAN iiAssign(leftv left, leftv right);
     175BOOLEAN iiAssign(leftv left, leftv right, BOOLEAN toplevel=TRUE);
    176176
    177177typedef BOOLEAN (*proci)(leftv,leftv,Subexpr);
  • Singular/singular-libs

    r7023ce rdbf609  
    5252        realizationMatroids.lib resources.lib ringgb.lib \
    5353        schreyer.lib symodstd.lib derham.lib polybori.lib ellipticcovers.lib \
    54         schubert.lib tasks.lib tropical.lib hdepth.lib
     54        schubert.lib tasks.lib tropical.lib hdepth.lib gradedModules.lib
    5555
    5656PLIBS = bimodules.lib bfun.lib central.lib dmod.lib dmodapp.lib dmodvar.lib\
  • Singular/walk.cc

    • Property mode changed from 100644 to 100755
    r70bc37 rdbf609  
    429429#endif
    430430
    431 #ifdef CHECK_IDEAL_MWALK
     431//#ifdef CHECK_IDEAL_MWALK
    432432static void idString(ideal L, const char* st)
    433433{
     
    441441  Print(" %s;", pString(L->m[nL-1]));
    442442}
    443 #endif
     443//#endif
    444444
    445445#if defined(CHECK_IDEAL_MWALK) || defined(ENDWALKS)
     
    558558  }
    559559  return p0;
     560}
     561
     562/*****************************************************************************
     563 * compute the gcd of the entries of the vectors curr_weight and diff_weight *
     564 *****************************************************************************/
     565static int simplify_gcd(intvec* curr_weight, intvec* diff_weight)
     566{
     567  int j;
     568  int nRing = currRing->N;
     569  int gcd_tmp = (*curr_weight)[0];
     570  for (j=1; j<nRing; j++)
     571  {
     572    gcd_tmp = gcd(gcd_tmp, (*curr_weight)[j]);
     573    if(gcd_tmp == 1)
     574    {
     575      break;
     576    }
     577  }
     578  if(gcd_tmp != 1)
     579  {
     580    for (j=0; j<nRing; j++)
     581    {
     582    gcd_tmp = gcd(gcd_tmp, (*diff_weight)[j]);
     583    if(gcd_tmp == 1)
     584      {
     585        break;
     586      }
     587    }
     588  }
     589  return gcd_tmp;
    560590}
    561591
     
    953983}
    954984
    955 /*****************************************************************************
    956 * create a weight matrix order as intvec of an extra weight vector (a(iv),lp)*
    957 ******************************************************************************/
     985/*********************************************************************************
     986* create a weight matrix order as intvec of an extra weight vector (a(iv),M(iw)) *
     987**********************************************************************************/
    958988intvec* MivMatrixOrderRefine(intvec* iv, intvec* iw)
    959989{
     990<<<<<<< HEAD
     991  assume((iv->length())*(iv->length()) == iw->length());
     992  int i,j, nR = iv->length();
     993 
     994=======
    960995  assume(iv->length() == iw->length());
    961996  int i, nR = iv->length();
    962997
     998>>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596
    963999  intvec* ivm = new intvec(nR*nR);
    9641000
     
    9661002  {
    9671003    (*ivm)[i] = (*iv)[i];
    968     (*ivm)[i+nR] = (*iw)[i];
    969   }
    970   for(i=2; i<nR; i++)
    971   {
    972     (*ivm)[i*nR+i-2] = 1;
     1004  }
     1005  for(i=1; i<nR; i++)
     1006  {
     1007    for(j=0; j<nR; j++)
     1008    {
     1009      (*ivm)[j+i*nR] = (*iw)[j+i*nR];
     1010    }
    9731011  }
    9741012  return ivm;
     
    18591897}
    18601898
     1899
     1900/**************************************************************
     1901 * Look for the position of the smallest absolut value in vec *
     1902 **************************************************************/
     1903static int MivAbsMaxArg(intvec* vec)
     1904{
     1905  int k = MivAbsMax(vec);
     1906  int i=0;
     1907  while(1)
     1908  {
     1909    if((*vec)[i] == k || (*vec)[i] == -k)
     1910    {
     1911      break;
     1912    }
     1913    i++;
     1914  }
     1915  return i;
     1916}
     1917
     1918
    18611919/**********************************************************************
    18621920 * Compute a next weight vector between curr_weight and target_weight *
     
    18731931
    18741932  int nRing = currRing->N;
    1875   int checkRed, j, kkk, nG = IDELEMS(G);
     1933  int checkRed, j, nG = IDELEMS(G);
    18761934  intvec* ivtemp;
    18771935
     
    19111969  mpz_init(dcw);
    19121970
    1913   //int tn0, tn1, tz1, ncmp, gcd_tmp, ntmp;
    19141971  int gcd_tmp;
    19151972  intvec* diff_weight = MivSub(target_weight, curr_weight);
     
    19171974  intvec* diff_weight1 = MivSub(target_weight, curr_weight);
    19181975  poly g;
    1919   //poly g, gw;
     1976
    19201977  for (j=0; j<nG; j++)
    19211978  {
     
    19792036    }
    19802037  }
    1981 //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t));
     2038  //Print("\n// Alloc Size = %d \n", nRing*sizeof(mpz_t));
    19822039  mpz_t *vec=(mpz_t*)omAlloc(nRing*sizeof(mpz_t));
    19832040
    19842041
    1985   // there is no 0<t<1 and define the next weight vector that is equal to the current weight vector
     2042  // there is no 0<t<1 and define the next weight vector that is equal
     2043  // to the current weight vector
    19862044  if(mpz_cmp(t_nenner, t_null) == 0)
    19872045  {
     
    20542112#endif
    20552113
    2056   //  BOOLEAN isdwpos;
    2057 
    2058   // construct a new weight vector
     2114// construct a new weight vector and check whether vec[j] is overflow,
     2115// i.e. vec[j] > 2^31.
     2116// If vec[j] doesn't overflow, define a weight vector. Otherwise,
     2117// report that overflow appears. In the second case, test whether the
     2118// the correctness of the new vector plays an important role
     2119
    20592120  for (j=0; j<nRing; j++)
    20602121  {
     
    21002161    }
    21012162  }
    2102 
     2163  // reduce the vector with the gcd
     2164  if(mpz_cmp_si(ggt,1) != 0)
     2165  {
     2166    for (j=0; j<nRing; j++)
     2167    {
     2168      mpz_divexact(vec[j], vec[j], ggt);
     2169    }
     2170  }
    21032171#ifdef  NEXT_VECTORS_CC
    21042172  PrintS("\n// gcd of elements of the vector: ");
     
    21062174#endif
    21072175
    2108 /**********************************************************************
    2109 * construct a new weight vector and check whether vec[j] is overflow, *
    2110 * i.e. vec[j] > 2^31.                                                 *
    2111 * If vec[j] doesn't overflow, define a weight vector. Otherwise,      *
    2112 * report that overflow appears. In the second case, test whether the  *
    2113 * the correctness of the new vector plays an important role           *
    2114 **********************************************************************/
    2115   kkk=0;
    21162176  for(j=0; j<nRing; j++)
    21172177    {
     
    21292189
    21302190  REDUCTION:
     2191  checkRed = 1;
    21312192  for (j=0; j<nRing; j++)
    21322193  {
    2133     (*diff_weight)[j] = mpz_get_si(vec[j]);
    2134   }
    2135   while(MivAbsMax(diff_weight) >= 5)
    2136   {
    2137     for (j=0; j<nRing; j++)
    2138     {
    2139       if(mpz_cmp_si(ggt,1)==0)
    2140       {
    2141         (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5);
    2142         // Print("\n//  vector[%d] = %d \n",j+1, (*diff_weight1)[j]);
    2143       }
    2144       else
    2145       {
    2146         mpz_divexact(vec[j], vec[j], ggt);
    2147         (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5);
    2148         // Print("\n//  vector[%d] = %d \n",j+1, (*diff_weight1)[j]);
    2149       }
    2150 /*
    2151       if((*diff_weight1)[j] == 0)
    2152       {
    2153         kkk = kkk + 1;
    2154       }
    2155 */
    2156     }
    2157 
    2158 
    2159 /*
    2160     if(kkk > nRing - 1)
    2161     {
    2162       // diff_weight was reduced to zero
    2163       // Print("\n // MwalkNextWeightCC: geaenderter Vector gleich Null! \n");
    2164       goto TEST_OVERFLOW;
    2165     }
    2166 */
    2167 
    2168     if(test_w_in_ConeCC(G,diff_weight1) != 0)
    2169     {
    2170       Print("\n// MwalkNextWeightCC: geaenderter vector liegt in Groebnerkegel! \n");
    2171       for (j=0; j<nRing; j++)
    2172       {
    2173         (*diff_weight)[j] = (*diff_weight1)[j];
    2174       }
    2175       if(MivAbsMax(diff_weight) < 5)
    2176       {
    2177         checkRed = 1;
    2178         goto SIMPLIFY_GCD;
    2179       }
    2180     }
    2181     else
    2182     {
    2183       // Print("\n// MwalkNextWeightCC: geaenderter vector liegt nicht in Groebnerkegel! \n");
    2184       break;
    2185     }
     2194    (*diff_weight1)[j] = mpz_get_si(vec[j]);
     2195  }
     2196  while(test_w_in_ConeCC(G,diff_weight1))
     2197  {
     2198    for(j=0; j<nRing; j++)
     2199    {
     2200      (*diff_weight)[j] = (*diff_weight1)[j];
     2201      mpz_set_si(vec[j], (*diff_weight)[j]);     
     2202    }
     2203    for(j=0; j<nRing; j++)
     2204    {
     2205      (*diff_weight1)[j] = floor(0.1*(*diff_weight)[j] + 0.5);
     2206    }
     2207  }
     2208  if(MivAbsMax(diff_weight)>10000)
     2209  {
     2210    for(j=0; j<nRing; j++)
     2211    {
     2212      (*diff_weight1)[j] = (*diff_weight)[j];
     2213    }
     2214    j = 0;
     2215    while(test_w_in_ConeCC(G,diff_weight1))
     2216    {
     2217      (*diff_weight)[j] = (*diff_weight1)[j];
     2218      mpz_set_si(vec[j], (*diff_weight)[j]);
     2219      j = MivAbsMaxArg(diff_weight1);
     2220      (*diff_weight1)[j] = floor(0.1*(*diff_weight1)[j] + 0.5);
     2221    }
     2222    goto SIMPLIFY_GCD;
    21862223  }
    21872224
     
    22222259   mpz_clear(t_null);
    22232260
    2224 
    2225 
    22262261  if(Overflow_Error == FALSE)
    22272262  {
    22282263    Overflow_Error = nError;
    22292264  }
    2230  rComplete(currRing);
    2231   for(kkk=0; kkk<IDELEMS(G);kkk++)
    2232   {
    2233     poly p=G->m[kkk];
     2265  rComplete(currRing);
     2266  for(j=0; j<IDELEMS(G); j++)
     2267  {
     2268    poly p=G->m[j];
    22342269    while(p!=NULL)
    22352270    {
     
    22712306}
    22722307
    2273 /**************************************************************
     2308/********************************************************************
    22742309 * define and execute a new ring which order is (a(vb),a(va),lp,C)  *
    2275  * ************************************************************/
     2310 * ******************************************************************/
    22762311static void VMrHomogeneous(intvec* va, intvec* vb)
    22772312{
     
    24252460  //rChangeCurrRing(r);
    24262461}
    2427 
     2462//unused
     2463#if 0
    24282464static ring VMrDefault1(intvec* va)
    24292465{
     
    24962532  return r;
    24972533}
    2498 
     2534#endif
    24992535/****************************************************************
    25002536 * define and execute a new ring with ordering (a(va),Wp(vb),C) *
     
    31263162    else
    31273163    {
    3128       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung
     3164      rChangeCurrRing(VMrDefault(curr_weight));
    31293165    }
    31303166    newRing = currRing;
     
    38823918    else
    38833919    {
    3884       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung
     3920      rChangeCurrRing(VMrDefault(curr_weight));
    38853921    }
    38863922    newRing = currRing;
     
    41434179    else
    41444180    {
    4145       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung
     4181      rChangeCurrRing(VMrDefault(curr_weight));
    41464182    }
    41474183    newRing = currRing;
     
    42854321intvec* Xivlp;
    42864322
    4287 #if 0
    4288 /********************************
    4289  * compute a next weight vector *
    4290  ********************************/
    4291 static intvec* MWalkRandomNextWeight(ideal G, intvec* curr_weight, intvec* target_weight, int weight_rad, int pert_deg)
    4292 {
    4293   int i, weight_norm;
    4294   int nV = currRing->N;
    4295   intvec* next_weight2;
    4296   intvec* next_weight22 = new intvec(nV);
    4297   intvec* next_weight = MwalkNextWeightCC(curr_weight,target_weight, G);
    4298   if(MivComp(next_weight, target_weight) == 1)
    4299   {
    4300     return(next_weight);
    4301   }
    4302   else
    4303   {
    4304     //compute a perturbed next weight vector "next_weight1"
    4305     intvec* next_weight1 = MkInterRedNextWeight(MPertVectors(G, MivMatrixOrder(curr_weight), pert_deg), target_weight, G);
    4306     //Print("\n // size of next_weight1 = %d", sizeof((*next_weight1)));
    4307 
    4308     //compute a random next weight vector "next_weight2"
    4309     while(1)
    4310     {
    4311       weight_norm = 0;
    4312       while(weight_norm == 0)
    4313       {
    4314         for(i=0; i<nV; i++)
    4315         {
    4316           //Print("\n//  next_weight[%d]  = %d", i, (*next_weight)[i]);
    4317           (*next_weight22)[i] = rand() % 60000 - 30000;
    4318           weight_norm = weight_norm + (*next_weight22)[i]*(*next_weight22)[i];
    4319         }
    4320         weight_norm = 1 + floor(sqrt(weight_norm));
    4321       }
    4322 
    4323       for(i=nV-1; i>=0; i--)
    4324       {
    4325         if((*next_weight22)[i] < 0)
    4326         {
    4327           (*next_weight22)[i] = 1 + (*curr_weight)[i] + floor(weight_rad*(*next_weight22)[i]/weight_norm);
    4328         }
    4329         else
    4330         {
    4331           (*next_weight22)[i] = (*curr_weight)[i] + floor(weight_rad*(*next_weight22)[i]/weight_norm);
    4332         }
    4333       //Print("\n//  next_weight22[%d]  = %d", i, (*next_weight22)[i]);
    4334       }
    4335 
    4336       if(test_w_in_ConeCC(G, next_weight22) == 1)
    4337       {
    4338         //Print("\n//MWalkRandomNextWeight: next_weight2 im Kegel\n");
    4339         next_weight2 = MkInterRedNextWeight(next_weight22, target_weight, G);
    4340         delete next_weight22;
    4341         break;
    4342       }
    4343     }
    4344     intvec* result = new intvec(nV);
    4345     ideal G_test = MwalkInitialForm(G, next_weight);
    4346     ideal G_test1 = MwalkInitialForm(G, next_weight1);
    4347     ideal G_test2 = MwalkInitialForm(G, next_weight2);
    4348 
    4349     // compare next_weights
    4350     if(IDELEMS(G_test1) < IDELEMS(G_test))
    4351     {
    4352       if(IDELEMS(G_test2) <= IDELEMS(G_test1)) // |G_test2| <= |G_test1| < |G_test|
    4353       {
    4354         for(i=0; i<nV; i++)
    4355         {
    4356           (*result)[i] = (*next_weight2)[i];
    4357         }
    4358       }
    4359       else // |G_test1| < |G_test|, |G_test1| < |G_test2|
    4360       {
    4361         for(i=0; i<nV; i++)
    4362         {
    4363           (*result)[i] = (*next_weight1)[i];
    4364         }
    4365       }
    4366     }
    4367     else
    4368     {
    4369       if(IDELEMS(G_test2) <= IDELEMS(G_test)) // |G_test2| <= |G_test| <= |G_test1|
    4370       {
    4371         for(i=0; i<nV; i++)
    4372         {
    4373           (*result)[i] = (*next_weight2)[i];
    4374         }
    4375       }
    4376       else // |G_test| <= |G_test1|, |G_test| < |G_test2|
    4377       {
    4378         for(i=0; i<nV; i++)
    4379         {
    4380           (*result)[i] = (*next_weight)[i];
    4381         }
    4382       }
    4383     }
    4384     delete next_weight;
    4385     delete next_weight1;
    4386     idDelete(&G_test);
    4387     idDelete(&G_test1);
    4388     idDelete(&G_test2);
    4389     if(test_w_in_ConeCC(G, result) == 1)
    4390     {
    4391       delete next_weight2;
    4392       return result;
    4393     }
    4394     else
    4395     {
    4396       delete result;
    4397       return next_weight2;
    4398     }
    4399   }
    4400 }
    4401 #endif
    44024323
    44034324/********************************
     
    44144335
    44154336  //compute a perturbed next weight vector "next_weight1"
    4416   //intvec* next_weight1 = MkInterRedNextWeight(MPertVectors(G,MivMatrixOrderRefine(curr_weight,target_weight),pert_deg),target_weight,G);
    44174337  intvec* next_weight1 =MkInterRedNextWeight(curr_weight,target_weight,G);
    44184338  //compute a random next weight vector "next_weight2"
     
    44434363    {
    44444364      next_weight2 = MkInterRedNextWeight(next_weight22,target_weight,G);
     4365      if(MivAbsMax(next_weight2)>1147483647)
     4366      {
     4367        for(i=0; i<nV; i++)
     4368        {
     4369          (*next_weight22)[i] = (*next_weight2)[i];
     4370        }
     4371        i = 0;
     4372        while(test_w_in_ConeCC(G,next_weight22))
     4373        {
     4374          (*next_weight2)[i] = (*next_weight22)[i];
     4375          i = MivAbsMaxArg(next_weight22);
     4376          (*next_weight22)[i] = floor(0.1*(*next_weight22)[i] + 0.5);
     4377        }
     4378      }
    44454379      delete next_weight22;
    44464380      break;
     
    45734507    else
    45744508    {
    4575       rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung
     4509      rChangeCurrRing(VMrDefault(orig_target_weight));
    45764510    }
    45774511    TargetRing = currRing;
     
    46444578    else
    46454579    {
    4646       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung
     4580      rChangeCurrRing(VMrDefault(curr_weight));
    46474581    }
    46484582    newRing = currRing;
     
    47534687    else
    47544688    {
    4755       rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung
     4689      rChangeCurrRing(VMrDefault(orig_target_weight));
    47564690    }
    47574691    F1 = idrMoveR(G, newRing,currRing);
     
    47844718      else
    47854719      {
    4786         rChangeCurrRing(VMrDefault(orig_target_weight)); // Aenderung
     4720        rChangeCurrRing(VMrDefault(orig_target_weight));
    47874721      }
    47884722    KSTD_Finish:
     
    48824816      tim = clock();
    48834817      /*
    4884         Print("\n// **** Grï¿œbnerwalk took %d steps and ", nwalk);
     4818        Print("\n// **** Groebnerwalk took %d steps and ", nwalk);
    48854819        PrintS("\n// **** call the rec. Pert. Walk to compute a red GB of:");
    48864820        idElements(Gomega, "G_omega");
     
    49124846      oldRing = currRing;
    49134847
    4914       /* create a new ring newRing */
     4848      // create a new ring newRing
    49154849       if (rParameter(currRing) != NULL)
    49164850       {
     
    49194853       else
    49204854       {
    4921          rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung
     4855         rChangeCurrRing(VMrDefault(curr_weight));
    49224856       }
    49234857      newRing = currRing;
     
    49454879      else
    49464880      {
    4947         rChangeCurrRing(VMrDefault(curr_weight));  //Aenderung
     4881        rChangeCurrRing(VMrDefault(curr_weight));
    49484882      }
    49494883      newRing = currRing;
     
    49574891      M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight);
    49584892      delete hilb_func;
    4959 #endif // BUCHBERGER_ALG
     4893#endif
    49604894      tstd = tstd + clock() - to;
    49614895
     
    49664900
    49674901      to = clock();
    4968       // compute a representation of the generators of submod (M) with respect to those of mod (Gomega). Gomega is a reduced Groebner basis w.r.t. the current ring.
     4902      // compute a representation of the generators of submod (M) with respect
     4903      // to those of mod (Gomega).
     4904      // Gomega is a reduced Groebner basis w.r.t. the current ring.
    49694905      F = MLifttwoIdeal(Gomega2, M1, G);
    49704906      tlift = tlift + clock() - to;
     
    50164952      else
    50174953      {
    5018         rChangeCurrRing(VMrDefault(target_weight)); // Aenderung
     4954        rChangeCurrRing(VMrDefault(target_weight));
    50194955      }
    50204956      F1 = idrMoveR(G, newRing,currRing);
     
    50634999 * THE GROEBNER WALK ALGORITHM *
    50645000 *******************************/
    5065 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing)
     5001ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M,
     5002            ring baseRing, int reduction, int printout)
    50665003{
    5067   BITSET save1 = si_opt_1; // save current options
    5068   //si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
    5069   //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
    5070   //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5004  // save current options
     5005  BITSET save1 = si_opt_1;
     5006  if(reduction == 0)
     5007  {
     5008    // no reduced Groebner basis
     5009    si_opt_1 &= (~Sy_bit(OPT_REDSB));
     5010    // not tail reductions
     5011    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL));
     5012  }
    50715013  Set_Error(FALSE);
    50725014  Overflow_Error = FALSE;
     
    51095051#endif
    51105052  rComplete(currRing);
    5111 #ifdef CHECK_IDEAL_MWALK
    5112     idString(Go,"Go");
    5113 #endif
     5053//#ifdef CHECK_IDEAL_MWALK
     5054  if(printout > 2)
     5055  {
     5056    idString(Go,"//** Mwalk: Go");
     5057  }
     5058//#endif
    51145059#ifdef TIME_TEST
    51155060  to = clock();
    51165061#endif
    5117      if(orig_M->length() == nV)
    5118       {
    5119         newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
    5120       }
    5121       else
    5122       {
    5123         newRing = VMatrDefault(orig_M);
    5124       }
     5062  if(orig_M->length() == nV)
     5063  {
     5064    // define a new ring with ordering "(a(curr_weight),lp)
     5065    newRing = VMrDefault(curr_weight);
     5066  }
     5067  else
     5068  {
     5069    newRing = VMatrDefault(orig_M);
     5070  }
    51255071  rChangeCurrRing(newRing);
    51265072  ideal G = MstdCC(idrMoveR(Go,baseRing,currRing));
     
    51385084    to = clock();
    51395085#endif
    5140 #ifdef CHECK_IDEAL_MWALK
    5141     idString(G,"G");
    5142 #endif
    5143     Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5086//#ifdef CHECK_IDEAL_MWALK
     5087    if(printout > 2)
     5088    {
     5089      idString(G,"//** Mwalk: G");
     5090    }
     5091//#endif
     5092    // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5093    Gomega = MwalkInitialForm(G, curr_weight);
    51445094#ifdef TIME_TEST
    5145     tif = tif + clock()-to; //time for computing initial form ideal
    5146 #endif
    5147 #ifdef CHECK_IDEAL_MWALK
    5148     idString(Gomega,"Gomega");
    5149 #endif
     5095    //time for computing initial form ideal
     5096    tif = tif + clock()-to;
     5097#endif
     5098//#ifdef CHECK_IDEAL_MWALK
     5099    if(printout > 1)
     5100    {
     5101      idString(Gomega,"//** Mwalk: Gomega");
     5102    }
     5103//#endif
    51505104#ifndef  BUCHBERGER_ALG
    51515105    if(isNolVector(curr_weight) == 0)
     
    51625116      if(orig_M->length() == nV)
    51635117      {
    5164         newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
     5118        // define a new ring with ordering "(a(curr_weight),lp)
     5119        newRing = VMrDefault(curr_weight);
    51655120      }
    51665121      else
     
    51735128     if(target_M->length() == nV)
    51745129     {
    5175        newRing = VMrRefine(curr_weight,target_weight); //define a new ring with ordering "(a(curr_weight),Wp(target_weight))"
     5130       //define a new ring with ordering "(a(curr_weight),Wp(target_weight))"
     5131       newRing = VMrRefine(curr_weight,target_weight);
    51765132     }
    51775133     else
    51785134     {
     5135       //define a new ring with matrix ordering
    51795136       newRing = VMatrRefine(target_M,curr_weight);
    51805137     }
     
    51975154#endif
    51985155    idSkipZeroes(M);
    5199 #ifdef CHECK_IDEAL_MWALK
    5200     PrintS("\n//** Mwalk: computed M.\n");
    5201     idString(M, "M");
    5202 #endif
     5156//#ifdef CHECK_IDEAL_MWALK
     5157    if(printout > 2)
     5158    {
     5159      idString(M, "//** Mwalk: M");
     5160    }
     5161//#endif
    52035162    //change the ring to baseRing
    52045163    rChangeCurrRing(baseRing);
     
    52105169    to = clock();
    52115170#endif
    5212     // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), where Gomega is a reduced Groebner basis w.r.t. the current ring
     5171    // compute a representation of the generators of submod (M) with respect to those of mod (Gomega),
     5172    // where Gomega is a reduced Groebner basis w.r.t. the current ring
    52135173    F = MLifttwoIdeal(Gomega2, M1, G);
    52145174#ifdef TIME_TEST
    52155175    tlift = tlift + clock() - to;
    52165176#endif
    5217 #ifdef CHECK_IDEAL_MWALK
    5218     idString(F, "F");
    5219 #endif
     5177//#ifdef CHECK_IDEAL_MWALK
     5178    if(printout > 2)
     5179    {
     5180      idString(F, "//** Mwalk: F");
     5181    }
     5182//#endif
    52205183    idDelete(&Gomega2);
    52215184    idDelete(&M1);
     
    52275190    to = clock();
    52285191#endif
    5229     //G = kStd(F1,NULL,testHomog,NULL,NULL,0,0,NULL);
     5192
    52305193#ifdef TIME_TEST
    52315194    tstd = tstd + clock() - to;
    52325195#endif
    52335196    idSkipZeroes(G);
    5234 #ifdef CHECK_IDEAL_MWALK
    5235     idString(G, "G");
    5236 #endif
     5197//#ifdef CHECK_IDEAL_MWALK
     5198    if(printout > 2)
     5199    {
     5200      idString(G, "//** Mwalk: G");
     5201    }
     5202//#endif
    52375203#ifdef TIME_TEST
    52385204    to = clock();
     
    52425208    tnw = tnw + clock() - to;
    52435209#endif
    5244 #ifdef PRINT_VECTORS
    5245     MivString(curr_weight, target_weight, next_weight);
    5246 #endif
    5247     if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1)// || test_w_in_ConeCC(G, target_weight) == 1 || MivComp(next_weight,curr_weight) == 1)
    5248     {
    5249 #ifdef CHECK_IDEAL_MWALK
    5250       PrintS("\n//** Mwalk: entering last cone.\n");
    5251 #endif
     5210//#ifdef PRINT_VECTORS
     5211    if(printout > 0)
     5212    {
     5213      MivString(curr_weight, target_weight, next_weight);
     5214    }
     5215//#endif
     5216    if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1 || test_w_in_ConeCC(G, target_weight) == 1)
     5217    {
     5218//#ifdef CHECK_IDEAL_MWALK
     5219      if(printout > 0)
     5220      {
     5221        PrintS("\n//** Mwalk: entering last cone.\n");
     5222      }
     5223//#endif
    52525224      Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
    52535225      if(target_M->length() == nV)
     
    52625234      Gomega1 = idrMoveR(Gomega, baseRing,currRing);
    52635235      idDelete(&Gomega);
    5264 #ifdef CHECK_IDEAL_MWALK
    5265       idString(Gomega1, "Gomega");
    5266 #endif
     5236//#ifdef CHECK_IDEAL_MWALK
     5237      if(printout > 1)
     5238      {
     5239        idString(Gomega1, "//** Mwalk: Gomega");
     5240      }
     5241//#endif
    52675242      M = kStd(Gomega1,NULL,testHomog,NULL,NULL,0,0,NULL);
    5268 #ifdef CHECK_IDEAL_MWALK
    5269       idString(M,"M");
    5270 #endif
     5243//#ifdef CHECK_IDEAL_MWALK
     5244      if(printout > 1)
     5245      {
     5246        idString(M,"//** Mwalk: M");
     5247      }
     5248//#endif
    52715249      rChangeCurrRing(baseRing);
    52725250      M1 =  idrMoveR(M, newRing,currRing);
     
    52755253      idDelete(&Gomega1);
    52765254      F = MLifttwoIdeal(Gomega2, M1, G);
    5277 #ifdef CHECK_IDEAL_MWALK
    5278       idString(F,"F");
    5279 #endif
     5255//#ifdef CHECK_IDEAL_MWALK
     5256    if(printout > 2)
     5257    {
     5258      idString(F,"//** Mwalk: F");
     5259    }
     5260//#endif
    52805261      idDelete(&Gomega2);
    52815262      idDelete(&M1);
     
    52895270      to = clock();
    52905271#endif
    5291  //     if(si_opt_1 == (Sy_bit(OPT_REDSB)))
    5292   //    {
    5293         G = kInterRedCC(G,NULL); //reduce the Groebner basis <G> w.r.t. currRing, if option(redSB) is set
    5294   //    }
     5272      //interreduce the Groebner basis <G> w.r.t. currRing
     5273      G = kInterRedCC(G,NULL);
    52955274#ifdef TIME_TEST
    52965275      tred = tred + clock() - to;
     
    52995278      delete next_weight;
    53005279      break;
    5301 #ifdef CHECK_IDEAL_MWALK
    5302       PrintS("\n//** Mwalk: last cone.\n");
    5303 #endif
    5304     }
    5305 #ifdef CHECK_IDEAL_MWALK
    5306     PrintS("\n//** Mwalk: update weight vectors.\n");
    5307 #endif
     5280    }
    53085281    for(i=nV-1; i>=0; i--)
    53095282    {
     
    53165289  ideal result = idrMoveR(G,baseRing,currRing);
    53175290  idDelete(&G);
    5318 /*#ifdef CHECK_IDEAL_MWALK
    5319   pDelete(&p);
    5320 #endif*/
    53215291  delete tmp_weight;
    53225292  delete ivNull;
     
    53265296#endif
    53275297#ifdef TIME_TEST
    5328   Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);
    53295298  TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep);
    5330   Print("\n//** Mwalk: Ergebnis.\n");
    53315299  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
    53325300  //Print("\n// Overflow_Error? (%d)\n", Overflow_Error);
    53335301#endif
     5302  Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);
    53345303  return(result);
    53355304}
    53365305
    5337 // 07.11.2012
    5338 // THE RANDOM WALK ALGORITHM  ideal Go, intvec* orig_M, intvec* target_M, ring baseRing
    5339 ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg, ring baseRing)
     5306// THE RANDOM WALK ALGORITHM
     5307ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg,
     5308             int reduction, int printout)
    53405309{
    53415310  BITSET save1 = si_opt_1; // save current options
    5342   //si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
    5343   //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
    5344   //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5311  if(reduction == 0)
     5312  {
     5313    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     5314    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     5315    //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5316  }
    53455317  Set_Error(FALSE);
    53465318  Overflow_Error = FALSE;
     
    53525324#endif
    53535325  nstep=0;
    5354   int i,nwalk,endwalks = 0;
    5355   int nV = baseRing->N;
     5326  int i,polylength,nwalk,endwalks = 0;
     5327  int nV = currRing->N;
    53565328
    53575329  ideal Gomega, M, F, Gomega1, Gomega2, M1; //, F1;
    53585330  ring newRing;
    5359   ring XXRing = baseRing;
     5331  ring baseRing = currRing;
     5332  ring XXRing = currRing;
    53605333  intvec* ivNull = new intvec(nV);
    53615334  intvec* curr_weight = new intvec(nV);
     
    53635336  intvec* exivlp = Mivlp(nV);
    53645337  intvec* tmp_weight = new intvec(nV);
     5338  intvec* next_weight= new intvec(nV);
    53655339  for(i=0; i<nV; i++)
    53665340  {
     
    53835357#endif
    53845358  rComplete(currRing);
    5385 #ifdef CHECK_IDEAL_MWALK
    5386     idString(Go,"Go");
    5387 #endif
    53885359#ifdef TIME_TEST
    53895360  to = clock();
    53905361#endif
    5391      if(orig_M->length() == nV)
    5392       {
    5393         newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
    5394       }
    5395       else
    5396       {
    5397         newRing = VMatrDefault(orig_M);
    5398       }
     5362  if(orig_M->length() == nV)
     5363  {
     5364    newRing = VMrDefault(curr_weight); // define a new ring with ordering "(a(curr_weight),lp)
     5365  }
     5366  else
     5367  {
     5368    newRing = VMatrDefault(orig_M);
     5369  }
    53995370  rChangeCurrRing(newRing);
    54005371  ideal G = MstdCC(idrMoveR(Go,baseRing,currRing));
     
    54125383    to = clock();
    54135384#endif
    5414 #ifdef CHECK_IDEAL_MWALK
    5415     idString(G,"G");
    5416 #endif
     5385//#ifdef CHECK_IDEAL_MWALK
     5386    if(printout > 2)
     5387    {
     5388      idString(G,"//** Mrwalk: G");
     5389    }
     5390//#endif
    54175391    Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5392    //polylength = 1 if there is a polynomial in Gomega with at least 3 monomials and 0 otherwise
     5393    polylength = lengthpoly(Gomega);
    54185394#ifdef TIME_TEST
    54195395    tif = tif + clock()-to; //time for computing initial form ideal
    54205396#endif
    5421 #ifdef CHECK_IDEAL_MWALK
    5422     idString(Gomega,"Gomega");
    5423 #endif
     5397//#ifdef CHECK_IDEAL_MWALK
     5398    if(printout > 1)
     5399    {
     5400      idString(Gomega,"//** Mrwalk: Gomega");
     5401    }
     5402//#endif
    54245403#ifndef  BUCHBERGER_ALG
    54255404    if(isNolVector(curr_weight) == 0)
     
    54715450#endif
    54725451    idSkipZeroes(M);
    5473 #ifdef CHECK_IDEAL_MWALK
    5474     PrintS("\n//** Mwalk: computed M.\n");
    5475     idString(M, "M");
    5476 #endif
     5452//#ifdef CHECK_IDEAL_MWALK
     5453    if(printout > 2)
     5454    {
     5455      idString(M, "//** Mrwalk: M");
     5456    }
     5457//#endif
    54775458    //change the ring to baseRing
    54785459    rChangeCurrRing(baseRing);
     
    54845465    to = clock();
    54855466#endif
    5486     // compute a representation of the generators of submod (M) with respect to those of mod (Gomega), where Gomega is a reduced Groebner basis w.r.t. the current ring
     5467    // compute a representation of the generators of submod (M) with respect to those of mod (Gomega),
     5468    // where Gomega is a reduced Groebner basis w.r.t. the current ring
    54875469    F = MLifttwoIdeal(Gomega2, M1, G);
    54885470#ifdef TIME_TEST
    54895471    tlift = tlift + clock() - to;
    54905472#endif
    5491 #ifdef CHECK_IDEAL_MWALK
    5492     idString(F, "F");
    5493 #endif
     5473//#ifdef CHECK_IDEAL_MWALK
     5474    if(printout > 2)
     5475    {
     5476      idString(F, "//** Mrwalk: F");
     5477    }
     5478//#endif
    54945479    idDelete(&Gomega2);
    54955480    idDelete(&M1);
     
    55005485#ifdef TIME_TEST
    55015486    to = clock();
    5502 #endif
    5503     //G = kStd(F1,NULL,testHomog,NULL,NULL,0,0,NULL);
    5504 #ifdef TIME_TEST
    55055487    tstd = tstd + clock() - to;
    55065488#endif
    55075489    idSkipZeroes(G);
    5508 #ifdef CHECK_IDEAL_MWALK
    5509     idString(G, "G");
    5510 #endif
     5490//#ifdef CHECK_IDEAL_MWALK
     5491    if(printout > 2)
     5492    {
     5493      idString(G, "//** Mrwalk: G");
     5494    }
     5495//#endif
    55115496#ifdef TIME_TEST
    55125497    to = clock();
    55135498#endif
    5514     intvec* next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, pert_deg);//next_weight = MwalkNextWeightCC(curr_weight,target_weight,G);
     5499    next_weight = MwalkNextWeightCC(curr_weight,target_weight,G);
     5500    if(polylength > 0)
     5501    {
     5502      //there is a polynomial in Gomega with at least 3 monomials,
     5503      //low-dimensional facet of the cone
     5504      delete next_weight;
     5505      next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, pert_deg);
     5506    }
    55155507#ifdef TIME_TEST
    55165508    tnw = tnw + clock() - to;
    55175509#endif
    5518 #ifdef PRINT_VECTORS
    5519     MivString(curr_weight, target_weight, next_weight);
    5520 #endif
     5510//#ifdef PRINT_VECTORS
     5511    if(printout > 0)
     5512    {
     5513      MivString(curr_weight, target_weight, next_weight);
     5514    }
     5515//#endif
    55215516    if(MivComp(next_weight, ivNull) == 1 || MivComp(target_weight,curr_weight) == 1)// || test_w_in_ConeCC(G, target_weight) == 1 || MivComp(next_weight,curr_weight) == 1)
    55225517    {
     
    55255520#endif
    55265521      Gomega = MwalkInitialForm(G, curr_weight); // compute an initial form ideal of <G> w.r.t. "curr_vector"
     5522//#ifdef CHECK_IDEAL_MWALK
     5523      if(printout > 1)
     5524      {
     5525        idString(Gomega, "//** Mrwalk: Gomega");
     5526      }
     5527//#endif
    55275528      if(target_M->length() == nV)
    55285529      {
     
    55365537      Gomega1 = idrMoveR(Gomega, baseRing,currRing);
    55375538      idDelete(&Gomega);
    5538 #ifdef CHECK_IDEAL_MWALK
    5539       idString(Gomega1, "Gomega");
    5540 #endif
    55415539      M = kStd(Gomega1,NULL,testHomog,NULL,NULL,0,0,NULL);
    5542 #ifdef CHECK_IDEAL_MWALK
    5543       idString(M,"M");
    5544 #endif
     5540//#ifdef CHECK_IDEAL_MWALK
     5541      if(printout > 2)
     5542      {
     5543        idString(M,"//** Mrwalk: M");
     5544      }
     5545//#endif
    55455546      rChangeCurrRing(baseRing);
    55465547      M1 =  idrMoveR(M, newRing,currRing);
     
    55495550      idDelete(&Gomega1);
    55505551      F = MLifttwoIdeal(Gomega2, M1, G);
    5551 #ifdef CHECK_IDEAL_MWALK
    5552       idString(F,"F");
    5553 #endif
    55545552      idDelete(&Gomega2);
    55555553      idDelete(&M1);
     
    55585556      idDelete(&F);
    55595557      baseRing = currRing;
    5560       si_opt_1 = save1; //set original options, e. g. option(RedSB)
    55615558      idSkipZeroes(G);
    55625559#ifdef TIME_TEST
    55635560      to = clock();
    55645561#endif
    5565  //     if(si_opt_1 == (Sy_bit(OPT_REDSB)))
    5566   //    {
    5567         //G = kInterRedCC(G,NULL); //reduce the Groebner basis <G> w.r.t. currRing, if option(redSB) is set
    5568   //    }
     5562//#ifdef CHECK_IDEAL_MWALK
     5563      if(printout > 2)
     5564      {
     5565        idString(G,"//** Mrwalk: G");
     5566      }
     5567/*#endif
     5568      if(si_opt_1 == (Sy_bit(OPT_REDSB)))
     5569      {*/
     5570        G = kInterRedCC(G,NULL); //interreduce the Groebner basis <G> w.r.t. currRing
     5571//      }
    55695572#ifdef TIME_TEST
    55705573      tred = tred + clock() - to;
     
    55735576      delete next_weight;
    55745577      break;
    5575 #ifdef CHECK_IDEAL_MWALK
    5576       PrintS("\n//** Mwalk: last cone.\n");
    5577 #endif
    5578     }
    5579 #ifdef CHECK_IDEAL_MWALK
    5580     PrintS("\n//** Mwalk: update weight vectors.\n");
    5581 #endif
     5578    }
    55825579    for(i=nV-1; i>=0; i--)
    55835580    {
     
    55875584    delete next_weight;
    55885585  }
     5586  baseRing = currRing;
    55895587  rChangeCurrRing(XXRing);
    55905588  ideal result = idrMoveR(G,baseRing,currRing);
    55915589  idDelete(&G);
    5592 /*#ifdef CHECK_IDEAL_MWALK
    5593   pDelete(&p);
    5594 #endif*/
     5590  si_opt_1 = save1; //set original options, e. g. option(RedSB)
    55955591  delete tmp_weight;
    55965592  delete ivNull;
     
    55995595  delete last_omega;
    56005596#endif
     5597  Print("\n//** Mrwalk: Groebner Walk took %d steps.\n", nstep);
    56015598#ifdef TIME_TEST
    5602   Print("\n//** Mwalk: Groebner Walk took %d steps.\n", nstep);
    56035599  TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep);
    5604   Print("\n//** Mwalk: Ergebnis.\n");
    56055600  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
    56065601  //Print("\n// Overflow_Error? (%d)\n", Overflow_Error);
     
    57495744// use kStd, if nP = 0, else call LastGB
    57505745ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,
    5751              intvec* target_weight, int nP)
     5746             intvec* target_weight, int nP, int reduction, int printout)
    57525747{
     5748  BITSET save1 = si_opt_1; // save current options
     5749  if(reduction == 0)
     5750  {
     5751    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     5752    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     5753    //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     5754  }
    57535755  Set_Error(FALSE  );
    57545756  Overflow_Error = FALSE;
     
    57885790  ring XXRing = currRing;
    57895791
    5790 
    57915792  to = clock();
    5792   /* perturbs the original vector */
     5793  // perturbs the original vector
    57935794  if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) := "dp"
    57945795  {
     
    58075808      DefRingPar(curr_weight);
    58085809    else
    5809       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 1
     5810      rChangeCurrRing(VMrDefault(curr_weight));
    58105811
    58115812    G = idrMoveR(Go, XXRing,currRing);
     
    58225823  ring HelpRing = currRing;
    58235824
    5824   /* perturbs the target weight vector */
     5825  // perturbs the target weight vector
    58255826  if(tp_deg > 1 && tp_deg <= nV)
    58265827  {
     
    58285829      DefRingPar(target_weight);
    58295830    else
    5830       rChangeCurrRing(VMrDefault(target_weight)); // Aenderung 2
     5831      rChangeCurrRing(VMrDefault(target_weight));
    58315832
    58325833    TargetRing = currRing;
     
    58505851    G = idrMoveR(ssG, TargetRing,currRing);
    58515852  }
    5852   /*
    5853     Print("\n// Perturbationwalkalg. vom Gradpaar (%d,%d):",op_deg,tp_deg);
    5854     ivString(curr_weight, "new sigma");
    5855     ivString(target_weight, "new tau");
    5856   */
     5853    if(printout > 0)
     5854    {
     5855      Print("\n//** Mpwalk: Perturbation Walk of degree (%d,%d):",op_deg,tp_deg);
     5856      ivString(curr_weight, "//** Mpwalk: new current weight");
     5857      ivString(target_weight, "//** Mpwalk: new target weight");
     5858    }
    58575859  while(1)
    58585860  {
     
    58625864       "curr_weight" */
    58635865    Gomega = MwalkInitialForm(G, curr_weight);
    5864 
     5866//#ifdef CHECK_IDEAL_MWALK
     5867      if(printout > 1)
     5868      {
     5869        idString(Gomega,"//** Mpwalk: Gomega");
     5870      }
     5871//#endif
    58655872
    58665873#ifdef ENDWALKS
    5867     if(endwalks == 1){
     5874    if(endwalks == 1)
     5875    {
    58685876      Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
    58695877      idElements(G, "G");
    5870       // idElements(Gomega, "Gw");
    58715878      headidString(G, "G");
    5872       //headidString(Gomega, "Gw");
    58735879    }
    58745880#endif
     
    58895895      DefRingPar(curr_weight);
    58905896    else
    5891       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 3
     5897      rChangeCurrRing(VMrDefault(curr_weight));
    58925898
    58935899    newRing = currRing;
     
    59165922    M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight);
    59175923    delete hilb_func;
    5918 #endif // BUCHBERGER_ALG
     5924#endif
     5925//#ifdef CHECK_IDEAL_MWALK
     5926      if(printout > 2)
     5927      {
     5928        idString(M,"//** Mpwalk: M");
     5929      }
     5930//#endif
    59195931
    59205932    if(endwalks == 1){
     
    59325944    M1 =  idrMoveR(M, newRing,currRing);
    59335945    Gomega2 =  idrMoveR(Gomega1, newRing,currRing);
    5934 
    5935     //if(endwalks==1)  PrintS("\n// Lifting is working:..");
    59365946
    59375947    to=clock();
     
    59455955      xtlift=clock()-to;
    59465956
     5957//#ifdef CHECK_IDEAL_MWALK
     5958    if(printout > 2)
     5959    {
     5960      idString(F,"//** Mpwalk: F");
     5961    }
     5962//#endif
     5963
    59475964    idDelete(&M1);
    59485965    idDelete(&Gomega2);
     
    59525969    rChangeCurrRing(newRing);
    59535970    F1 = idrMoveR(F, oldRing,currRing);
    5954 
    5955     //if(endwalks==1)PrintS("\n// InterRed is working now:");
    59565971
    59575972    to=clock();
     
    59695984
    59705985    to=clock();
    5971     /* compute a next weight vector */
     5986    // compute a next weight vector
    59725987    next_weight = MkInterRedNextWeight(curr_weight,target_weight, G);
    59735988    tnw=tnw+clock()-to;
    5974 #ifdef PRINT_VECTORS
    5975     MivString(curr_weight, target_weight, next_weight);
    5976 #endif
     5989//#ifdef PRINT_VECTORS
     5990    if(printout > 2)
     5991    {
     5992      MivString(curr_weight, target_weight, next_weight);
     5993    }
     5994//#endif
    59775995
    59785996    if(Overflow_Error == TRUE)
     
    60126030        DefRingPar(orig_target);
    60136031      else
    6014         rChangeCurrRing(VMrDefault(orig_target)); //Aenderung
     6032        rChangeCurrRing(VMrDefault(orig_target));
    60156033
    60166034    TargetRing=currRing;
     
    60666084    Eresult = idrMoveR(G, newRing,currRing);
    60676085  }
     6086  si_opt_1 = save1; //set original options, e. g. option(RedSB)
    60686087  delete ivNull;
    60696088  if(tp_deg != 1)
     
    60806099             tnw+xtnw);
    60816100
    6082   Print("\n// pSetm_Error = (%d)", ErrorCheck());
    6083   Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep,  Overflow_Error);
    6084 #endif
     6101  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
     6102  //Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep,  Overflow_Error);
     6103#endif
     6104  Print("\n//** Mpwalk: Perturbation Walk took %d steps.\n", nstep);
     6105  return(Eresult);
     6106}
     6107
     6108/*******************************************************
     6109 * THE PERTURBATION WALK ALGORITHM WITH RANDOM ELEMENT *
     6110 *******************************************************/
     6111ideal Mprwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad,
     6112              int op_deg, int tp_deg, int nP, int reduction, int printout)
     6113{
     6114  BITSET save1 = si_opt_1; // save current options
     6115  if(reduction == 0)
     6116  {
     6117    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     6118    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     6119    //si_opt_1|=(Sy_bit(OPT_REDTAIL)|Sy_bit(OPT_REDSB));
     6120  }
     6121  Set_Error(FALSE);
     6122  Overflow_Error = FALSE;
     6123  //Print("// pSetm_Error = (%d)", ErrorCheck());
     6124
     6125  clock_t  tinput, tostd, tif=0, tstd=0, tlift=0, tred=0, tnw=0;
     6126  xtextra=0;
     6127  xtif=0; xtstd=0; xtlift=0; xtred=0; xtnw=0;
     6128  tinput = clock();
     6129
     6130  clock_t tim;
     6131
     6132  nstep = 0;
     6133  int i, ntwC=1, ntestw=1, polylength, nV = currRing->N;
     6134  int endwalks=0;
     6135
     6136  ideal Gomega, M, F, G, Gomega1, Gomega2, M1,F1,Eresult,ssG;
     6137  ring newRing, oldRing, TargetRing;
     6138  intvec* iv_M_dp;
     6139  intvec* iv_M_lp;
     6140  intvec* exivlp = Mivlp(nV);
     6141  intvec* curr_weight = new intvec(nV);
     6142  intvec* target_weight = new intvec(nV);
     6143  for(i=0; i<nV; i++)
     6144  {
     6145    (*curr_weight)[i] = (*orig_M)[i];
     6146    (*target_weight)[i] = (*target_M)[i];
     6147  }
     6148  intvec* orig_target = target_weight;
     6149  intvec* pert_target_vector = target_weight;
     6150  intvec* ivNull = new intvec(nV);
     6151  intvec* iv_dp = MivUnit(nV);// define (1,1,...,1)
     6152#ifndef BUCHBERGER_ALG
     6153  intvec* hilb_func;
     6154#endif
     6155  intvec* next_weight;
     6156
     6157  // to avoid (1,0,...,0) as the target vector
     6158  intvec* last_omega = new intvec(nV);
     6159  for(i=nV-1; i>0; i--)
     6160    (*last_omega)[i] = 1;
     6161  (*last_omega)[0] = 10000;
     6162
     6163  ring XXRing = currRing;
     6164
     6165  to = clock();
     6166  // perturbs the original vector
     6167  if(orig_M->length() == nV)
     6168  {
     6169    if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) := "dp"
     6170    {
     6171      G = MstdCC(Go);
     6172      tostd = clock()-to;
     6173      if(op_deg != 1)
     6174      {
     6175        iv_M_dp = MivMatrixOrderdp(nV);
     6176        //ivString(iv_M_dp, "iv_M_dp");
     6177        curr_weight = MPertVectors(G, iv_M_dp, op_deg);
     6178      }
     6179    }
     6180    else
     6181    {
     6182      //define ring order := (a(curr_weight),lp);
     6183      if (rParameter(currRing) != NULL)
     6184        DefRingPar(curr_weight);
     6185      else
     6186        rChangeCurrRing(VMrDefault(curr_weight));
     6187
     6188      G = idrMoveR(Go, XXRing,currRing);
     6189      G = MstdCC(G);
     6190      tostd = clock()-to;
     6191      if(op_deg != 1)
     6192      {
     6193        iv_M_dp = MivMatrixOrder(curr_weight);
     6194        curr_weight = MPertVectors(G, iv_M_dp, op_deg);
     6195      }
     6196    }
     6197  }
     6198  else
     6199  {
     6200    rChangeCurrRing(VMatrDefault(orig_M));
     6201    G = idrMoveR(Go, XXRing,currRing);
     6202    G = MstdCC(G);
     6203    tostd = clock()-to;
     6204    if(op_deg != 1)
     6205    {
     6206      curr_weight = MPertVectors(G, orig_M, op_deg);
     6207    }
     6208  }
     6209
     6210  delete iv_dp;
     6211  if(op_deg != 1) delete iv_M_dp;
     6212
     6213  ring HelpRing = currRing;
     6214
     6215  // perturbs the target weight vector
     6216  if(target_M->length() == nV)
     6217  {
     6218    if(tp_deg > 1 && tp_deg <= nV)
     6219    {
     6220      if (rParameter(currRing) != NULL)
     6221        DefRingPar(target_weight);
     6222      else
     6223        rChangeCurrRing(VMrDefault(target_weight));
     6224
     6225      TargetRing = currRing;
     6226      ssG = idrMoveR(G,HelpRing,currRing);
     6227      if(MivSame(target_weight, exivlp) == 1)
     6228      {
     6229        iv_M_lp = MivMatrixOrderlp(nV);
     6230        //ivString(iv_M_lp, "iv_M_lp");
     6231        //target_weight = MPertVectorslp(ssG, iv_M_lp, tp_deg);
     6232        target_weight = MPertVectors(ssG, iv_M_lp, tp_deg);
     6233      }
     6234      else
     6235      {
     6236        iv_M_lp = MivMatrixOrder(target_weight);
     6237        //target_weight = MPertVectorslp(ssG, iv_M_lp, tp_deg);
     6238        target_weight = MPertVectors(ssG, iv_M_lp, tp_deg);
     6239      }
     6240      delete iv_M_lp;
     6241      pert_target_vector = target_weight;
     6242      rChangeCurrRing(HelpRing);
     6243      G = idrMoveR(ssG, TargetRing,currRing);
     6244    }
     6245  }
     6246  else
     6247  {
     6248    if(tp_deg > 1 && tp_deg <= nV)
     6249    {
     6250      rChangeCurrRing(VMatrDefault(target_M));
     6251      TargetRing = currRing;
     6252      ssG = idrMoveR(G,HelpRing,currRing);
     6253      target_weight = MPertVectors(ssG, target_M, tp_deg);
     6254    }
     6255  }
     6256  if(printout > 0)
     6257  {
     6258    Print("\n//** Mprwalk: Random Perturbation Walk of degree (%d,%d):",op_deg,tp_deg);
     6259    ivString(curr_weight, "//** Mprwalk: new current weight");
     6260    ivString(target_weight, "//** Mprwalk: new target weight");
     6261  }
     6262  while(1)
     6263  {
     6264    nstep ++;
     6265    to = clock();
     6266    /* compute an initial form ideal of <G> w.r.t. the weight vector
     6267       "curr_weight" */
     6268    Gomega = MwalkInitialForm(G, curr_weight);
     6269//#ifdef CHECK_IDEAL_MWALK
     6270    if(printout > 1)
     6271    {
     6272      idString(Gomega,"//** Mprwalk: Gomega");
     6273    }
     6274//#endif
     6275    polylength = lengthpoly(Gomega);
     6276#ifdef ENDWALKS
     6277    if(endwalks == 1)
     6278    {
     6279      Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6280      idElements(G, "G");
     6281      headidString(G, "G");
     6282    }
     6283#endif
     6284
     6285    tif = tif + clock()-to;
     6286
     6287#ifndef  BUCHBERGER_ALG
     6288    if(isNolVector(curr_weight) == 0)
     6289      hilb_func = hFirstSeries(Gomega,NULL,NULL,curr_weight,currRing);
     6290    else
     6291      hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing);
     6292#endif // BUCHBERGER_ALG
     6293
     6294    oldRing = currRing;
     6295
     6296    if(target_M->length() == nV)
     6297    {
     6298      // define a new ring with ordering "(a(curr_weight),lp)
     6299      if (rParameter(currRing) != NULL)
     6300        DefRingPar(curr_weight);
     6301      else
     6302        rChangeCurrRing(VMrDefault(curr_weight));
     6303    }
     6304    else
     6305    {
     6306      rChangeCurrRing(VMatrRefine(target_M,curr_weight));
     6307    }
     6308    newRing = currRing;
     6309    Gomega1 = idrMoveR(Gomega, oldRing,currRing);
     6310
     6311#ifdef ENDWALKS
     6312    if(endwalks==1)
     6313    {
     6314      Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6315      idElements(Gomega1, "Gw");
     6316      headidString(Gomega1, "headGw");
     6317      PrintS("\n// compute a rGB of Gw:\n");
     6318
     6319#ifndef  BUCHBERGER_ALG
     6320      ivString(hilb_func, "w");
     6321#endif
     6322    }
     6323#endif
     6324
     6325    tim = clock();
     6326    to = clock();
     6327    /* compute a reduced Groebner basis of <Gomega> w.r.t. "newRing" */
     6328#ifdef  BUCHBERGER_ALG
     6329    M = MstdhomCC(Gomega1);
     6330#else
     6331    M=kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,curr_weight);
     6332    delete hilb_func;
     6333#endif
     6334//#ifdef CHECK_IDEAL_MWALK
     6335    if(printout > 2)
     6336    {
     6337      idString(M,"//** Mprwalk: M");
     6338    }
     6339//#endif
     6340
     6341    if(endwalks == 1)
     6342    {
     6343      xtstd = xtstd+clock()-to;
     6344#ifdef ENDWALKS
     6345      Print("\n// time for the last std(Gw)  = %.2f sec\n",
     6346            ((double) clock())/1000000 -((double)tim) /1000000);
     6347#endif
     6348    }
     6349    else
     6350      tstd=tstd+clock()-to;
     6351
     6352    /* change the ring to oldRing */
     6353    rChangeCurrRing(oldRing);
     6354    M1 =  idrMoveR(M, newRing,currRing);
     6355    Gomega2 =  idrMoveR(Gomega1, newRing,currRing);
     6356
     6357    to=clock();
     6358    /* compute a representation of the generators of submod (M)
     6359       with respect to those of mod (Gomega).
     6360       Gomega is a reduced Groebner basis w.r.t. the current ring */
     6361    F = MLifttwoIdeal(Gomega2, M1, G);
     6362    if(endwalks != 1)
     6363      tlift = tlift+clock()-to;
     6364    else
     6365      xtlift=clock()-to;
     6366
     6367//#ifdef CHECK_IDEAL_MWALK
     6368    if(printout > 2)
     6369    {
     6370      idString(F,"//** Mprwalk: F");
     6371    }
     6372//#endif
     6373
     6374    idDelete(&M1);
     6375    idDelete(&Gomega2);
     6376    idDelete(&G);
     6377
     6378    /* change the ring to newRing */
     6379    rChangeCurrRing(newRing);
     6380    F1 = idrMoveR(F, oldRing,currRing);
     6381
     6382    to=clock();
     6383    /* reduce the Groebner basis <G> w.r.t. new ring */
     6384    G = kInterRedCC(F1, NULL);
     6385    if(endwalks != 1)
     6386      tred = tred+clock()-to;
     6387    else
     6388      xtred=clock()-to;
     6389
     6390    idDelete(&F1);
     6391
     6392    if(endwalks == 1)
     6393      break;
     6394
     6395    to=clock();
     6396    // compute a next weight vector
     6397    next_weight = MkInterRedNextWeight(curr_weight,target_weight, G);
     6398    if(polylength > 0)
     6399    {
     6400      //there is a polynomial in Gomega with at least 3 monomials,
     6401      //low-dimensional facet of the cone
     6402      delete next_weight;
     6403      next_weight = MWalkRandomNextWeight(G, curr_weight, target_weight, weight_rad, op_deg);
     6404    }
     6405    tnw=tnw+clock()-to;
     6406//#ifdef PRINT_VECTORS
     6407    if(printout > 2)
     6408    {
     6409      MivString(curr_weight, target_weight, next_weight);
     6410    }
     6411//#endif
     6412
     6413    if(Overflow_Error == TRUE)
     6414    {
     6415      ntwC = 0;
     6416      //ntestomega = 1;
     6417      //Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6418      //idElements(G, "G");
     6419      delete next_weight;
     6420      goto FINISH_160302;
     6421    }
     6422    if(MivComp(next_weight, ivNull) == 1){
     6423      newRing = currRing;
     6424      delete next_weight;
     6425      //Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6426      break;
     6427    }
     6428    if(MivComp(next_weight, target_weight) == 1)
     6429      endwalks = 1;
     6430
     6431    for(i=nV-1; i>=0; i--)
     6432      (*curr_weight)[i] = (*next_weight)[i];
     6433
     6434    delete next_weight;
     6435  }//while
     6436
     6437  if(tp_deg != 1)
     6438  {
     6439    FINISH_160302:
     6440    if(target_M->length() == nV)
     6441    {
     6442      if(MivSame(orig_target, exivlp) == 1)
     6443        if (rParameter(currRing) != NULL)
     6444          DefRingParlp();
     6445        else
     6446          VMrDefaultlp();
     6447      else
     6448        if (rParameter(currRing) != NULL)
     6449          DefRingPar(orig_target);
     6450        else
     6451          rChangeCurrRing(VMrDefault(orig_target));
     6452    }
     6453    else
     6454    {
     6455      rChangeCurrRing(VMatrDefault(target_M));
     6456    }
     6457    TargetRing=currRing;
     6458    F1 = idrMoveR(G, newRing,currRing);
     6459#ifdef CHECK_IDEAL
     6460      headidString(G, "G");
     6461#endif
     6462
     6463    // check whether the pertubed target vector stays in the correct cone
     6464    if(ntwC != 0){
     6465      ntestw = test_w_in_ConeCC(F1, pert_target_vector);
     6466    }
     6467
     6468    if( ntestw != 1 || ntwC == 0)
     6469    {
     6470      /*
     6471      if(ntestw != 1){
     6472        ivString(pert_target_vector, "tau");
     6473        PrintS("\n// ** perturbed target vector doesn't stay in cone!!");
     6474        Print("\n// ring r%d = %s;\n", nstep, rString(currRing));
     6475        idElements(F1, "G");
     6476      }
     6477      */
     6478      // LastGB is "better" than the kStd subroutine
     6479      to=clock();
     6480      ideal eF1;
     6481      if(nP == 0 || tp_deg == 1 || MivSame(orig_target, exivlp) != 1 || target_M->length() != nV){
     6482        // PrintS("\n// ** calls \"std\" to compute a GB");
     6483        eF1 = MstdCC(F1);
     6484        idDelete(&F1);
     6485      }
     6486      else {
     6487        // PrintS("\n// ** calls \"LastGB\" to compute a GB");
     6488        rChangeCurrRing(newRing);
     6489        ideal F2 = idrMoveR(F1, TargetRing,currRing);
     6490        eF1 = LastGB(F2, curr_weight, tp_deg-1);
     6491        F2=NULL;
     6492      }
     6493      xtextra=clock()-to;
     6494      ring exTargetRing = currRing;
     6495
     6496      rChangeCurrRing(XXRing);
     6497      Eresult = idrMoveR(eF1, exTargetRing,currRing);
     6498    }
     6499    else{
     6500      rChangeCurrRing(XXRing);
     6501      Eresult = idrMoveR(F1, TargetRing,currRing);
     6502    }
     6503  }
     6504  else {
     6505    rChangeCurrRing(XXRing);
     6506    Eresult = idrMoveR(G, newRing,currRing);
     6507  }
     6508  si_opt_1 = save1; //set original options, e. g. option(RedSB)
     6509  delete ivNull;
     6510  if(tp_deg != 1)
     6511    delete target_weight;
     6512
     6513  if(op_deg != 1 )
     6514    delete curr_weight;
     6515
     6516  delete exivlp;
     6517  delete last_omega;
     6518
     6519#ifdef TIME_TEST
     6520  TimeStringFractal(tinput, tostd, tif+xtif, tstd+xtstd,0, tlift+xtlift, tred+xtred,
     6521             tnw+xtnw);
     6522
     6523  //Print("\n// pSetm_Error = (%d)", ErrorCheck());
     6524  //Print("\n// It took %d steps and Overflow_Error? (%d)\n", nstep,  Overflow_Error);
     6525#endif
     6526  Print("\n//** Mprwalk: Perturbation Walk took %d steps.\n", nstep);
    60856527  return(Eresult);
    60866528}
     
    61086550 * Perturb the start weight vector at the top level, i.e. nlev = 1     *
    61096551 ***********************************************************************/
    6110 static ideal rec_fractal_call(ideal G, int nlev, intvec* omtmp)
     6552static ideal rec_fractal_call(ideal G, int nlev, intvec* ivtarget, int printout)
    61116553{
    61126554  Overflow_Error =  FALSE;
     
    61256567  intvec* next_vect;
    61266568  intvec* omega2 = new intvec(nV);
     6569  intvec* omtmp = new intvec(nV);
    61276570  intvec* altomega = new intvec(nV);
    61286571
     6572  for(i = nV -1; i>0; i--)
     6573  {
     6574    (*omtmp)[i] = (*ivtarget)[i];
     6575  }
    61296576  //BOOLEAN isnewtarget = FALSE;
    61306577
     
    61676614    NEXT_VECTOR_FRACTAL:
    61686615    to=clock();
    6169     /* determine the next border */
     6616    // determine the next border
    61706617    next_vect = MkInterRedNextWeight(omega,omega2,G);
    61716618    xtnw=xtnw+clock()-to;
    6172 #ifdef PRINT_VECTORS
    6173     MivString(omega, omega2, next_vect);
    6174 #endif
     6619
    61756620    oRing = currRing;
    61766621
    6177     /* We only perturb the current target vector at the recursion  level 1 */
     6622    // We only perturb the current target vector at the recursion  level 1
    61786623    if(Xngleich == 0 && nlev == 1) //(ngleich == 0) important, e.g. ex2, ex3
    61796624      if (MivComp(next_vect, omega2) == 1)
    61806625      {
    6181         /* to dispense with taking initial (and lifting/interreducing
    6182            after the call of recursion */
    6183         //Print("\n\n// ** Perturb the both vectors with degree %d with",nlev);
    6184         //idElements(G, "G");
     6626        // to dispense with taking initial (and lifting/interreducing
     6627        // after the call of recursion
     6628        if(printout > 0)
     6629        {
     6630          Print("\n//** rec_fractal_call: Perturb the both vectors with degree %d.",nlev);
     6631          //idElements(G, "G");
     6632        }
    61856633
    61866634        Xngleich = 1;
    61876635        nlev +=1;
    61886636
    6189         if (rParameter(currRing) != NULL)
    6190           DefRingPar(omtmp);
     6637        if(ivtarget->length() == nV)
     6638        {
     6639          if (rParameter(currRing) != NULL)
     6640            DefRingPar(omtmp);
     6641          else
     6642            rChangeCurrRing(VMrDefault(omtmp));
     6643        }
    61916644        else
    6192           rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung3
    6193 
     6645        {
     6646          rChangeCurrRing(VMatrDefault(ivtarget));
     6647        }
    61946648        testring = currRing;
    61956649        Gt = idrMoveR(G, oRing,currRing);
    61966650
    6197         /* perturb the original target vector w.r.t. the current GB */
    6198         delete Xtau;
    6199         Xtau = NewVectorlp(Gt);
     6651        // perturb the original target vector w.r.t. the current GB
     6652        if(ivtarget->length() == nV)
     6653        {
     6654          delete Xtau;
     6655          Xtau = NewVectorlp(Gt);
     6656        }
     6657        else
     6658        {
     6659          delete Xtau;
     6660          Xtau = Mfpertvector(Gt,ivtarget);
     6661        }
    62006662
    62016663        rChangeCurrRing(oRing);
    62026664        G = idrMoveR(Gt, testring,currRing);
    62036665
    6204         /* perturb the current vector w.r.t. the current GB */
     6666        // perturb the current vector w.r.t. the current GB
    62056667        Mwlp = MivWeightOrderlp(omega);
    62066668        Xsigma = Mfpertvector(G, Mwlp);
     
    62206682        next_vect = MkInterRedNextWeight(omega,omega2,G);
    62216683        xtnw=xtnw+clock()-to;
    6222 
    6223 #ifdef PRINT_VECTORS
     6684      }
     6685//#ifdef PRINT_VECTORS
     6686      if(printout > 0)
     6687      {
    62246688        MivString(omega, omega2, next_vect);
    6225 #endif
    6226       }
    6227 
     6689      }
     6690//#endif
    62286691
    62296692    /* check whether the the computed vector is in the correct cone */
     
    62346697    {
    62356698      delete next_vect;
    6236       if (rParameter(currRing) != NULL)
    6237       {
    6238         DefRingPar(omtmp);
     6699      if(ivtarget->length() == nV)
     6700      {
     6701        if (rParameter(currRing) != NULL)
     6702          DefRingPar(omtmp);
     6703        else
     6704          rChangeCurrRing(VMrDefault(omtmp));
    62396705      }
    62406706      else
    62416707      {
    6242         rChangeCurrRing(VMrDefault1(omtmp)); // Aenderung4
     6708        rChangeCurrRing(VMatrDefault(ivtarget));
    62436709      }
    62446710#ifdef TEST_OVERFLOW
     
    62466712      Gt = NULL; return(Gt);
    62476713#endif
    6248 
    6249       //Print("\n\n// apply BB's alg. in ring r = %s;", rString(currRing));
     6714      if(printout > 0)
     6715      {
     6716        Print("\n//** rec_fractal_call: applying Buchberger's algorithm in ring r = %s;",
     6717              rString(currRing));
     6718      }
    62506719      to=clock();
    62516720      Gt = idrMoveR(G, oRing,currRing);
     
    62566725      delete omega2;
    62576726      delete altomega;
    6258 
    6259       //Print("\n// Leaving the %d-th recursion with %d steps", nlev, nwalks);
    6260       //Print("  ** Overflow_Error? (%d)", Overflow_Error);
     6727      if(printout > 0)
     6728      {
     6729        Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     6730              nlev, nwalks);
     6731        //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     6732      }
     6733
    62616734      nnflow ++;
    62626735
     
    62756748    if (MivComp(next_vect, XivNull) == 1)
    62766749    {
    6277       if (rParameter(currRing) != NULL)
    6278         DefRingPar(omtmp);
     6750      if(ivtarget->length() == nV)
     6751      {
     6752        if (rParameter(currRing) != NULL)
     6753          DefRingPar(omtmp);
     6754        else
     6755          rChangeCurrRing(VMrDefault(omtmp));
     6756      }
    62796757      else
    6280         rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung5
     6758      {
     6759        rChangeCurrRing(VMatrDefault(ivtarget));
     6760      }
    62816761
    62826762      testring = currRing;
     
    62876767        delete next_vect;
    62886768        delete altomega;
    6289         //Print("\n// Leaving the %d-th recursion with %d steps ",nlev, nwalks);
    6290         //Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6291 
     6769        if(printout > 0)
     6770        {
     6771          Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     6772              nlev, nwalks);
     6773          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     6774        }
    62926775        return (Gt);
    62936776      }
     
    63006783        //07.08.03
    63016784        //ivString(Xtau, "old Xtau");
    6302         intvec* Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     6785        intvec* Xtautmp;
     6786        if(ivtarget->length() == nV)
     6787        {
     6788          Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     6789        }
     6790        else
     6791        {
     6792          Xtautmp = Mfpertvector(Gt, ivtarget);
     6793        }
    63036794#ifdef TEST_OVERFLOW
    63046795      if(Overflow_Error == TRUE)
     
    63286819
    63296820      FRACTAL_MSTDCC:
    6330         //Print("\n//  apply BB-Alg in ring = %s;", rString(currRing));
     6821        if(printout > 0)
     6822        {
     6823          Print("\n//** rec_fractal_call: apply Buchberger's algorithm in ring = %s.\n",
     6824                rString(currRing));
     6825        }
    63316826        to=clock();
    63326827        G = MstdCC(Gt);
     
    63366831
    63376832        // update the original target vector w.r.t. the current GB
    6338         if(MivSame(Xivinput, Xivlp) == 1)
    6339           if (rParameter(currRing) != NULL)
    6340             DefRingParlp();
     6833        if(ivtarget->length() == nV)
     6834        {
     6835          if(MivSame(Xivinput, Xivlp) == 1)
     6836            if (rParameter(currRing) != NULL)
     6837              DefRingParlp();
     6838            else
     6839              VMrDefaultlp();
    63416840          else
    6342             VMrDefaultlp();
     6841            if (rParameter(currRing) != NULL)
     6842              DefRingPar(Xivinput);
     6843            else
     6844              rChangeCurrRing(VMrDefault(Xivinput));
     6845        }
    63436846        else
    6344           if (rParameter(currRing) != NULL)
    6345             DefRingPar(Xivinput);
    6346           else
    6347             rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung6
    6348 
     6847        {
     6848          rChangeCurrRing(VMatrRefine(ivtarget,Xivinput));
     6849        }
    63496850        testring = currRing;
    63506851        Gt = idrMoveR(G, oRing,currRing);
     
    63596860        delete next_vect;
    63606861        delete altomega;
    6361         /*
    6362           Print("\n// Leaving the %d-th recursion with %d steps,", nlev,nwalks);
    6363           Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6364         */
     6862        if(printout > 0)
     6863        {
     6864          Print("\n//** rec_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     6865              nlev, nwalks);
     6866          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     6867        }
    63656868        if(Overflow_Error == TRUE)
    63666869          nnflow ++;
     
    63816884    Gomega = MwalkInitialForm(G, omega);
    63826885    xtif=xtif+clock()-to;
    6383 
     6886    if(printout > 1)
     6887    {
     6888      idString(Gomega,"//** rec_fractal_call: Gomega");
     6889    }
    63846890#ifndef  BUCHBERGER_ALG
    63856891    if(isNolVector(omega) == 0)
     
    63886894      hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing);
    63896895#endif // BUCHBERGER_ALG
    6390 
    6391     if (rParameter(currRing) != NULL)
    6392       DefRingPar(omega);
     6896    if(ivtarget->length() == nV)
     6897    {
     6898      if (rParameter(currRing) != NULL)
     6899        DefRingPar(omega);
     6900      else
     6901        rChangeCurrRing(VMrDefault(omega));
     6902    }
    63936903    else
    6394       rChangeCurrRing(VMrDefault1(omega)); //Aenderung7
    6395 
     6904    {
     6905      rChangeCurrRing(VMatrRefine(ivtarget,omega));
     6906    }
    63966907    Gomega1 = idrMoveR(Gomega, oRing,currRing);
    63976908
    6398     /* Maximal recursion depth, to compute a red. GB */
    6399     /* Fractal walk with the alternative recursion */
    6400     /* alternative recursion */
     6909    // Maximal recursion depth, to compute a red. GB
     6910    // Fractal walk with the alternative recursion
     6911    // alternative recursion
    64016912    // if(nlev == nV || lengthpoly(Gomega1) == 0)
    64026913    if(nlev == Xnlev || lengthpoly(Gomega1) == 0)
    64036914      //if(nlev == nV) // blind recursion
    64046915    {
    6405       /*
    6406       if(Xnlev != nV)
    6407       {
    6408         Print("\n// ** Xnlev = %d", Xnlev);
    6409         ivString(Xtau, "Xtau");
    6410       }
    6411       */
    64126916      to=clock();
    64136917#ifdef  BUCHBERGER_ALG
     
    64196923      xtstd=xtstd+clock()-to;
    64206924    }
    6421     else {
     6925    else
     6926    {
    64226927      rChangeCurrRing(oRing);
    64236928      Gomega1 = idrMoveR(Gomega1, oRing,currRing);
    6424       Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega);
    6425     }
    6426 
    6427     //convert a Groebner basis from a ring to another ring,
     6929      Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega,printout);
     6930    }
     6931    if(printout > 2)
     6932    {
     6933      idString(Gresult,"//** rec_fractal_call: M");
     6934    }
     6935    //convert a Groebner basis from a ring to another ring
    64286936    new_ring = currRing;
    64296937
     
    64336941
    64346942    to=clock();
    6435     /* Lifting process */
     6943    // Lifting process
    64366944    F = MLifttwoIdeal(Gomega2, Gresult1, G);
    64376945    xtlift=xtlift+clock()-to;
     6946    if(printout > 2)
     6947    {
     6948      idString(F,"//** rec_fractal_call: F");
     6949    }
    64386950    idDelete(&Gresult1);
    64396951    idDelete(&Gomega2);
     
    64546966 * Perturb the start weight vector at the top level with random element *
    64556967 ************************************************************************/
    6456 static ideal rec_r_fractal_call(ideal G, int nlev, intvec* omtmp, int weight_rad)
     6968static ideal rec_r_fractal_call(ideal G, int nlev, intvec* ivtarget,
     6969                int weight_rad, int printout)
    64576970{
    64586971  Overflow_Error =  FALSE;
    64596972  //Print("\n\n// Entering the %d-th recursion:", nlev);
    64606973
    6461   int i, nV = currRing->N;
     6974  int i, polylength, nV = currRing->N;
    64626975  ring new_ring, testring;
    64636976  //ring extoRing;
     
    64716984  intvec* next_vect;
    64726985  intvec* omega2 = new intvec(nV);
     6986  intvec* omtmp = new intvec(nV);
    64736987  intvec* altomega = new intvec(nV);
    64746988
    64756989  //BOOLEAN isnewtarget = FALSE;
    64766990
     6991  for(i = nV -1; i>0; i--)
     6992  {
     6993    (*omtmp)[i] = (*ivtarget)[i];
     6994  }
    64776995  // to avoid (1,0,...,0) as the target vector (Hans)
    64786996  intvec* last_omega = new intvec(nV);
     
    65147032    to=clock();
    65157033    /* determine the next border */
    6516     next_vect = MWalkRandomNextWeight(G, omega,omega2, weight_rad, 1+nlev);
    6517     //next_vect = MkInterRedNextWeight(omega,omega2,G);
     7034    next_vect = MkInterRedNextWeight(omega,omega2,G);
     7035    if(polylength > 0)
     7036    {
     7037      //there is a polynomial in Gomega with at least 3 monomials,
     7038      //low-dimensional facet of the cone
     7039      delete next_vect;
     7040      next_vect = MWalkRandomNextWeight(G,omega,omega2,weight_rad,1+nlev);
     7041      if(isNolVector(next_vect))
     7042      {
     7043        delete next_vect;
     7044        next_vect = MkInterRedNextWeight(omega,omega2,G);
     7045      }
     7046    }
    65187047    xtnw=xtnw+clock()-to;
    6519 #ifdef PRINT_VECTORS
    6520     MivString(omega, omega2, next_vect);
    6521 #endif
     7048
    65227049    oRing = currRing;
    65237050
    6524     /* We only perturb the current target vector at the recursion  level 1 */
     7051    // We only perturb the current target vector at the recursion  level 1
    65257052    if(Xngleich == 0 && nlev == 1) //(ngleich == 0) important, e.g. ex2, ex3
    65267053      if (MivComp(next_vect, omega2) == 1)
    65277054      {
    6528         /* to dispense with taking initial (and lifting/interreducing
    6529            after the call of recursion */
    6530         //Print("\n\n// ** Perturb the both vectors with degree %d with",nlev);
    6531         //idElements(G, "G");
    6532 
     7055        // to dispense with taking initials and lifting/interreducing
     7056        // after the call of recursion.
     7057        if(printout > 0)
     7058        {
     7059          Print("\n//** rec_r_fractal_call: Perturb the both vectors with degree %d.",nlev);
     7060          //idElements(G, "G");
     7061        }
    65337062        Xngleich = 1;
    65347063        nlev +=1;
    6535 
    6536         if (rParameter(currRing) != NULL)
    6537           DefRingPar(omtmp);
     7064        if(ivtarget->length() == nV)
     7065        {
     7066          if (rParameter(currRing) != NULL)
     7067            DefRingPar(omtmp);
     7068          else
     7069            rChangeCurrRing(VMrDefault(omtmp));
     7070        }
    65387071        else
    6539           rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung3
    6540 
     7072        {
     7073          rChangeCurrRing(VMatrDefault(ivtarget));
     7074        }
    65417075        testring = currRing;
    65427076        Gt = idrMoveR(G, oRing,currRing);
    65437077
    6544         /* perturb the original target vector w.r.t. the current GB */
    6545         delete Xtau;
    6546         Xtau = NewVectorlp(Gt);
     7078        // perturb the original target vector w.r.t. the current GB
     7079        if(ivtarget->length() == nV)
     7080        {
     7081          delete Xtau;
     7082          Xtau = NewVectorlp(Gt);
     7083        }
     7084        else
     7085        {
     7086          delete Xtau;
     7087          Xtau = Mfpertvector(Gt,ivtarget);
     7088        }
    65477089
    65487090        rChangeCurrRing(oRing);
    6549         G = idrMoveR(Gt, testring,currRing);
    6550 
    6551         /* perturb the current vector w.r.t. the current GB */
     7091        G = idrMoveR(Gt,testring,currRing);
     7092
     7093        // perturb the current vector w.r.t. the current GB
    65527094        Mwlp = MivWeightOrderlp(omega);
     7095        if(ivtarget->length() > nV)
     7096        {
     7097          delete Mwlp;
     7098          Mwlp = MivMatrixOrderRefine(omega,ivtarget);
     7099        }
    65537100        Xsigma = Mfpertvector(G, Mwlp);
    65547101        delete Mwlp;
     
    65667113
    65677114        next_vect = MkInterRedNextWeight(omega,omega2,G);
     7115        if(polylength > 0)
     7116        {
     7117          //there is a polynomial in Gomega with at least 3 monomials,
     7118          //low-dimensional facet of the cone
     7119          delete next_vect;
     7120          next_vect = MWalkRandomNextWeight(G,omega,omega2,weight_rad,1+nlev);
     7121          if(isNolVector(next_vect))
     7122          {
     7123            delete next_vect;
     7124            next_vect = MkInterRedNextWeight(omega,omega2,G);
     7125          }
     7126        }
    65687127        xtnw=xtnw+clock()-to;
    6569 
    6570 #ifdef PRINT_VECTORS
     7128      }
     7129//#ifdef PRINT_VECTORS
     7130      if(printout > 0)
     7131      {
    65717132        MivString(omega, omega2, next_vect);
    6572 #endif
    6573       }
    6574 
    6575 
    6576     /* check whether the the computed vector is in the correct cone */
    6577     /* If no, the reduced GB of an omega-homogeneous ideal will be
     7133      }
     7134//#endif
     7135
     7136    /* check whether the the computed vector is in the correct cone
     7137       If no, the reduced GB of an omega-homogeneous ideal will be
    65787138       computed by Buchberger algorithm and stop this recursion step*/
    65797139    //if(test_w_in_ConeCC(G, next_vect) != 1) //e.g. Example s7, cyc6
     
    65817141    {
    65827142      delete next_vect;
    6583       if (rParameter(currRing) != NULL)
    6584       {
    6585         DefRingPar(omtmp);
     7143      if(ivtarget->length() == nV)
     7144      {
     7145        if (rParameter(currRing) != NULL)
     7146        {
     7147          DefRingPar(omtmp);
     7148        }
     7149        else
     7150        {
     7151          rChangeCurrRing(VMrDefault(omtmp));
     7152        }
    65867153      }
    65877154      else
    65887155      {
    6589         rChangeCurrRing(VMrDefault1(omtmp)); // Aenderung4
     7156        rChangeCurrRing(VMatrDefault(ivtarget));
    65907157      }
    65917158#ifdef TEST_OVERFLOW
    65927159      Gt = idrMoveR(G, oRing,currRing);
    6593       Gt = NULL; return(Gt);
    6594 #endif
    6595 
    6596       //Print("\n\n// apply BB's alg. in ring r = %s;", rString(currRing));
     7160      Gt = NULL;
     7161      return(Gt);
     7162#endif
     7163      if(printout > 0)
     7164      {
     7165        Print("\n//** rec_r_fractal_call: applying Buchberger's algorithm in ring r = %s;",
     7166              rString(currRing));
     7167      }
    65977168      to=clock();
    65987169      Gt = idrMoveR(G, oRing,currRing);
     
    66037174      delete omega2;
    66047175      delete altomega;
    6605 
    6606       //Print("\n// Leaving the %d-th recursion with %d steps", nlev, nwalks);
    6607       //Print("  ** Overflow_Error? (%d)", Overflow_Error);
     7176      if(printout > 0)
     7177      {
     7178        Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     7179              nlev, nwalks);
     7180        //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     7181      }
    66087182      nnflow ++;
    6609 
    66107183      Overflow_Error = FALSE;
    66117184      return (G1);
    66127185    }
    6613 
    6614 
    6615     /* If the perturbed target vector stays in the correct cone,
    6616        return the current GB,
    6617        otherwise, return the computed  GB by the Buchberger-algorithm.
    6618        Then we update the perturbed target vectors w.r.t. this GB. */
    6619 
    6620     /* the computed vector is equal to the origin vector, since
    6621        t is not defined */
     7186    /*
     7187       If the perturbed target vector stays in the correct cone,
     7188       return the current Groebner basis.
     7189       Otherwise, return the Groebner basis computed with Buchberger's
     7190       algorithm.
     7191       Then we update the perturbed target vectors w.r.t. this GB.
     7192    */
    66227193    if (MivComp(next_vect, XivNull) == 1)
    66237194    {
    6624       if (rParameter(currRing) != NULL)
    6625         DefRingPar(omtmp);
     7195      // The computed vector is equal to the origin vector,
     7196      // because t is not defined
     7197      if(ivtarget->length() == nV)
     7198      {
     7199        if (rParameter(currRing) != NULL)
     7200          DefRingPar(omtmp);
     7201        else
     7202          rChangeCurrRing(VMrDefault(omtmp));
     7203      }
    66267204      else
    6627         rChangeCurrRing(VMrDefault1(omtmp)); //Aenderung5
    6628 
     7205      {
     7206        rChangeCurrRing(VMatrDefault(ivtarget));
     7207      }
    66297208      testring = currRing;
    66307209      Gt = idrMoveR(G, oRing,currRing);
    66317210
    6632       if(test_w_in_ConeCC(Gt, omega2) == 1) {
     7211      if(test_w_in_ConeCC(Gt, omega2) == 1)
     7212      {
    66337213        delete omega2;
    66347214        delete next_vect;
    66357215        delete altomega;
    6636         //Print("\n// Leaving the %d-th recursion with %d steps ",nlev, nwalks);
    6637         //Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6638 
     7216        if(printout > 0)
     7217        {
     7218          Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     7219                nlev, nwalks);
     7220          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     7221        }
    66397222        return (Gt);
    66407223      }
    66417224      else
    6642       {
    6643         //ivString(omega2, "tau'");
    6644         //Print("\n//  tau' doesn't stay in the correct cone!!");
    6645 
     7225      {
     7226        if(printout > 0)
     7227        {
     7228          Print("\n//** rec_r_fractal_call: target weight doesn't stay in the correct cone.\n");
     7229        }
    66467230#ifndef  MSTDCC_FRACTAL
    6647         //07.08.03
    66487231        //ivString(Xtau, "old Xtau");
    6649         intvec* Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     7232        intvec* Xtautmp;
     7233        if(ivtarget->length() == nV)
     7234        {
     7235          Xtautmp = Mfpertvector(Gt, MivMatrixOrder(omtmp));
     7236        }
     7237        else
     7238        {
     7239          Xtautmp = Mfpertvector(Gt, ivtarget);
     7240        }
    66507241#ifdef TEST_OVERFLOW
    66517242      if(Overflow_Error == TRUE)
     
    66757266
    66767267      FRACTAL_MSTDCC:
    6677         //Print("\n//  apply BB-Alg in ring = %s;", rString(currRing));
     7268        if(printout > 0)
     7269        {
     7270          Print("\n//** rec_r_fractal_call: apply Buchberge's algorithm in ring = %s.\n",
     7271                rString(currRing));
     7272        }
    66787273        to=clock();
    66797274        G = MstdCC(Gt);
     
    66837278
    66847279        // update the original target vector w.r.t. the current GB
    6685         if(MivSame(Xivinput, Xivlp) == 1)
    6686           if (rParameter(currRing) != NULL)
    6687             DefRingParlp();
     7280        if(ivtarget->length() == nV)
     7281        {
     7282          if(MivSame(Xivinput, Xivlp) == 1)
     7283            if (rParameter(currRing) != NULL)
     7284              DefRingParlp();
     7285            else
     7286              VMrDefaultlp();
    66887287          else
    6689             VMrDefaultlp();
     7288            if (rParameter(currRing) != NULL)
     7289              DefRingPar(Xivinput);
     7290            else
     7291              rChangeCurrRing(VMrDefault(Xivinput));
     7292        }
    66907293        else
    6691           if (rParameter(currRing) != NULL)
    6692             DefRingPar(Xivinput);
    6693           else
    6694             rChangeCurrRing(VMrDefault1(Xivinput)); //Aenderung6
    6695 
     7294        {
     7295          rChangeCurrRing(VMatrRefine(ivtarget,Xivinput));
     7296        }
    66967297        testring = currRing;
    66977298        Gt = idrMoveR(G, oRing,currRing);
     
    67067307        delete next_vect;
    67077308        delete altomega;
    6708         /*
    6709           Print("\n// Leaving the %d-th recursion with %d steps,", nlev,nwalks);
    6710           Print(" ** Overflow_Error? (%d)", Overflow_Error);
    6711         */
     7309        if(printout > 0)
     7310        {
     7311          Print("\n//** rec_r_fractal_call: Leaving the %d-th recursion with %d steps.\n",
     7312                nlev,nwalks);
     7313          //Print(" ** Overflow_Error? (%d)", Overflow_Error);
     7314        }
    67127315        if(Overflow_Error == TRUE)
    67137316          nnflow ++;
     
    67257328
    67267329    to=clock();
    6727     /* Take the initial form of <G> w.r.t. omega */
     7330    // Take the initial form of <G> w.r.t. omega
    67287331    Gomega = MwalkInitialForm(G, omega);
    67297332    xtif=xtif+clock()-to;
    6730 
     7333    //polylength = 1 if there is a polynomial in Gomega with at least 3 monomials and 0 otherwise
     7334    polylength = lengthpoly(Gomega);
     7335    if(printout > 1)
     7336    {
     7337      idString(Gomega,"//** rec_r_fractal_call: Gomega");
     7338    }
    67317339#ifndef  BUCHBERGER_ALG
    67327340    if(isNolVector(omega) == 0)
     
    67347342    else
    67357343      hilb_func = hFirstSeries(Gomega,NULL,NULL,last_omega,currRing);
    6736 #endif // BUCHBERGER_ALG
    6737 
    6738     if (rParameter(currRing) != NULL)
    6739       DefRingPar(omega);
     7344#endif
     7345    if(ivtarget->length() == nV)
     7346    {
     7347      if (rParameter(currRing) != NULL)
     7348        DefRingPar(omega);
     7349      else
     7350        rChangeCurrRing(VMrDefault(omega));
     7351    }
    67407352    else
    6741       rChangeCurrRing(VMrDefault1(omega)); //Aenderung7
    6742 
     7353    {
     7354      rChangeCurrRing(VMatrRefine(ivtarget,omega));
     7355    }
    67437356    Gomega1 = idrMoveR(Gomega, oRing,currRing);
    67447357
    6745     /* Maximal recursion depth, to compute a red. GB */
    6746     /* Fractal walk with the alternative recursion */
    6747     /* alternative recursion */
    6748     // if(nlev == nV || lengthpoly(Gomega1) == 0)
     7358    // Maximal recursion depth, to compute a red. GB
     7359    // Fractal walk with the alternative recursion
     7360    // alternative recursion
    67497361    if(nlev == Xnlev || lengthpoly(Gomega1) == 0)
    6750       //if(nlev == nV) // blind recursion
    6751     {
    6752       /*
    6753       if(Xnlev != nV)
    6754       {
    6755         Print("\n// ** Xnlev = %d", Xnlev);
    6756         ivString(Xtau, "Xtau");
    6757       }
    6758       */
     7362    {
    67597363      to=clock();
    67607364#ifdef  BUCHBERGER_ALG
     
    67637367      Gresult =kStd(Gomega1,NULL,isHomog,NULL,hilb_func,0,NULL,omega);
    67647368      delete hilb_func;
    6765 #endif // BUCHBERGER_ALG
     7369#endif
    67667370      xtstd=xtstd+clock()-to;
    67677371    }
    6768     else {
     7372    else
     7373    {
    67697374      rChangeCurrRing(oRing);
    67707375      Gomega1 = idrMoveR(Gomega1, oRing,currRing);
    6771       Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega);
    6772     }
    6773 
    6774     //convert a Groebner basis from a ring to another ring,
     7376      Gresult = rec_fractal_call(idCopy(Gomega1),nlev+1,omega,printout);
     7377    }
     7378    if(printout > 2)
     7379    {
     7380      idString(Gresult,"//** rec_r_fractal_call: M");
     7381    }
     7382    //convert a Groebner basis from a ring to another ring
    67757383    new_ring = currRing;
    67767384
     
    67807388
    67817389    to=clock();
    6782     /* Lifting process */
     7390    // Lifting process
    67837391    F = MLifttwoIdeal(Gomega2, Gresult1, G);
    67847392    xtlift=xtlift+clock()-to;
     7393
     7394    if(printout > 2)
     7395    {
     7396      idString(F,"//** rec_r_fractal_call: F");
     7397    }
     7398
    67857399    idDelete(&Gresult1);
    67867400    idDelete(&Gomega2);
     
    67917405
    67927406    to=clock();
    6793     /* Interreduce G */
     7407    // Interreduce G
    67947408    G = kInterRedCC(F1, NULL);
    67957409    xtred=xtred+clock()-to;
     
    67977411  }
    67987412}
    6799 
    6800 
    68017413
    68027414
     
    68057417 *                                                                             *
    68067418 * The main procedur Mfwalk calls the recursive Subroutine                     *
    6807  * rec_fractal_call to compute the wanted Grï¿œbner basis.                       *
    6808  * At the main procedur we compute the reduced Grï¿œbner basis w.r.t. a "fast"   *
     7419 * rec_fractal_call to compute the wanted Groebner basis.                      *
     7420 * At the main procedur we compute the reduced Groebner basis w.r.t. a "fast"  *
    68097421 * order, e.g. "dp" and a sequence of weight vectors which are row vectors     *
    68107422 * of a matrix. This matrix defines the given monomial order, e.g. "lp"        *
    68117423 *******************************************************************************/
    6812 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget)
     7424ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget,
     7425             int reduction, int printout)
    68137426{
     7427  BITSET save1 = si_opt_1; // save current options
     7428  if(reduction == 0)
     7429  {
     7430    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     7431    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     7432  }
    68147433  Set_Error(FALSE);
    68157434  Overflow_Error = FALSE;
     
    68467465      intvec* iv_dp = MivUnit(nV); // define (1,1,...,1)
    68477466      intvec* Mdp;
    6848 
    6849       if(MivSame(ivstart, iv_dp) != 1)
    6850         Mdp = MivWeightOrderdp(ivstart);
     7467      if(ivstart->length() == nV)
     7468      {
     7469        if(MivSame(ivstart, iv_dp) != 1)
     7470          Mdp = MivWeightOrderdp(ivstart);
     7471        else
     7472          Mdp = MivMatrixOrderdp(nV);
     7473      }
    68517474      else
    6852         Mdp = MivMatrixOrderdp(nV);
     7475      {
     7476        Mdp = ivstart;
     7477      }
    68537478
    68547479      Xsigma = Mfpertvector(I, Mdp);
     
    68677492  Xivlp = Mivlp(nV);
    68687493
    6869   if(MivComp(ivtarget, Xivlp)  != 1)
    6870   {
    6871     if (rParameter(currRing) != NULL)
    6872       DefRingPar(ivtarget);
     7494  if(ivtarget->length() == nV)
     7495  {
     7496    if(MivComp(ivtarget, Xivlp)  != 1)
     7497    {
     7498      if (rParameter(currRing) != NULL)
     7499        DefRingPar(ivtarget);
     7500      else
     7501        rChangeCurrRing(VMrDefault(ivtarget));
     7502
     7503      I1 = idrMoveR(I, oldRing,currRing);
     7504      Mlp = MivWeightOrderlp(ivtarget);
     7505      Xtau = Mfpertvector(I1, Mlp);
     7506    }
    68737507    else
    6874       rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung1
    6875 
    6876     I1 = idrMoveR(I, oldRing,currRing);
    6877     Mlp = MivWeightOrderlp(ivtarget);
    6878     Xtau = Mfpertvector(I1, Mlp);
     7508    {
     7509      if (rParameter(currRing) != NULL)
     7510        DefRingParlp();
     7511      else
     7512        VMrDefaultlp();
     7513
     7514      I1 = idrMoveR(I, oldRing,currRing);
     7515      Mlp =  MivMatrixOrderlp(nV);
     7516      Xtau = Mfpertvector(I1, Mlp);
     7517    }
    68797518  }
    68807519  else
    68817520  {
    6882     if (rParameter(currRing) != NULL)
    6883       DefRingParlp();
    6884     else
    6885       VMrDefaultlp();
    6886 
    6887     I1 = idrMoveR(I, oldRing,currRing);
    6888     Mlp =  MivMatrixOrderlp(nV);
     7521    rChangeCurrRing(VMatrDefault(ivtarget));
     7522    I1 = idrMoveR(I,oldRing,currRing);
     7523    Mlp =  ivtarget;
    68897524    Xtau = Mfpertvector(I1, Mlp);
    68907525  }
     
    68977532  id_Delete(&I, oldRing);
    68987533  ring tRing = currRing;
    6899 
    6900   if (rParameter(currRing) != NULL)
    6901     DefRingPar(ivstart);
     7534  if(ivtarget->length() == nV)
     7535  {
     7536    if (rParameter(currRing) != NULL)
     7537      DefRingPar(ivstart);
     7538    else
     7539      rChangeCurrRing(VMrDefault(ivstart));
     7540  }
    69027541  else
    6903     rChangeCurrRing(VMrDefault1(ivstart)); //Aenderung2
     7542  {
     7543    rChangeCurrRing(VMatrDefault(ivstart));
     7544  }
    69047545
    69057546  I = idrMoveR(I1,tRing,currRing);
     
    69127553  ring helpRing = currRing;
    69137554
    6914   J = rec_fractal_call(J, 1, ivtarget);
     7555  J = rec_fractal_call(J,1,ivtarget,printout);
    69157556
    69167557  rChangeCurrRing(oldRing);
     
    69187559  idSkipZeroes(resF);
    69197560
     7561  si_opt_1 = save1; //set original options, e. g. option(RedSB)
    69207562  delete Xivlp;
    69217563  delete Xsigma;
     
    69367578}
    69377579
    6938 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget,int weight_rad)
     7580/*******************************************************************************
     7581 * The implementation of the fractal walk algorithm with random element        *
     7582 *                                                                             *
     7583 * The main procedur Mfwalk calls the recursive Subroutine                     *
     7584 * rec_r_fractal_call to compute the wanted Groebner basis.                    *
     7585 * At the main procedure we compute the reduced Groebner basis w.r.t. a "fast" *
     7586 * order, e.g. "dp" and a sequence of weight vectors which are row vectors     *
     7587 * of a matrix. This matrix defines the given monomial order, e.g. "lp"        *
     7588 *******************************************************************************/
     7589ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget,
     7590              int weight_rad, int reduction, int printout)
    69397591{
     7592  BITSET save1 = si_opt_1; // save current options
     7593  if(reduction == 0)
     7594  {
     7595    si_opt_1 &= (~Sy_bit(OPT_REDSB)); // no reduced Groebner basis
     7596    //si_opt_1 &= (~Sy_bit(OPT_REDTAIL)); // not tail reductions
     7597  }
    69407598  Set_Error(FALSE);
    69417599  Overflow_Error = FALSE;
     
    69727630      intvec* iv_dp = MivUnit(nV); // define (1,1,...,1)
    69737631      intvec* Mdp;
    6974 
    6975       if(MivSame(ivstart, iv_dp) != 1)
    6976         Mdp = MivWeightOrderdp(ivstart);
     7632      if(ivstart->length() == nV)
     7633      {
     7634        if(MivSame(ivstart, iv_dp) != 1)
     7635          Mdp = MivWeightOrderdp(ivstart);
     7636        else
     7637          Mdp = MivMatrixOrderdp(nV);
     7638      }
    69777639      else
    6978         Mdp = MivMatrixOrderdp(nV);
     7640      {
     7641        Mdp = ivstart;
     7642      }
    69797643
    69807644      Xsigma = Mfpertvector(I, Mdp);
     
    69937657  Xivlp = Mivlp(nV);
    69947658
    6995   if(MivComp(ivtarget, Xivlp)  != 1)
    6996   {
    6997     if (rParameter(currRing) != NULL)
    6998       DefRingPar(ivtarget);
     7659  if(ivtarget->length() == nV)
     7660  {
     7661    if(MivComp(ivtarget, Xivlp)  != 1)
     7662    {
     7663      if (rParameter(currRing) != NULL)
     7664        DefRingPar(ivtarget);
     7665      else
     7666        rChangeCurrRing(VMrDefault(ivtarget));
     7667
     7668      I1 = idrMoveR(I, oldRing,currRing);
     7669      Mlp = MivWeightOrderlp(ivtarget);
     7670      Xtau = Mfpertvector(I1, Mlp);
     7671    }
    69997672    else
    7000       rChangeCurrRing(VMrDefault1(ivtarget)); //Aenderung1
    7001 
    7002     I1 = idrMoveR(I, oldRing,currRing);
    7003     Mlp = MivWeightOrderlp(ivtarget);
    7004     Xtau = Mfpertvector(I1, Mlp);
     7673    {
     7674      if (rParameter(currRing) != NULL)
     7675        DefRingParlp();
     7676      else
     7677        VMrDefaultlp();
     7678
     7679      I1 = idrMoveR(I, oldRing,currRing);
     7680      Mlp =  MivMatrixOrderlp(nV);
     7681      Xtau = Mfpertvector(I1, Mlp);
     7682    }
    70057683  }
    70067684  else
    70077685  {
    7008     if (rParameter(currRing) != NULL)
    7009       DefRingParlp();
    7010     else
    7011       VMrDefaultlp();
    7012 
    7013     I1 = idrMoveR(I, oldRing,currRing);
    7014     Mlp =  MivMatrixOrderlp(nV);
     7686    rChangeCurrRing(VMatrDefault(ivtarget));
     7687    I1 = idrMoveR(I,oldRing,currRing);
     7688    Mlp =  ivtarget;
    70157689    Xtau = Mfpertvector(I1, Mlp);
    70167690  }
     
    70237697  id_Delete(&I, oldRing);
    70247698  ring tRing = currRing;
    7025 
    7026   if (rParameter(currRing) != NULL)
    7027     DefRingPar(ivstart);
     7699  if(ivtarget->length() == nV)
     7700  {
     7701    if (rParameter(currRing) != NULL)
     7702      DefRingPar(ivstart);
     7703    else
     7704      rChangeCurrRing(VMrDefault(ivstart));
     7705  }
    70287706  else
    7029     rChangeCurrRing(VMrDefault1(ivstart)); //Aenderung2
     7707  {
     7708    rChangeCurrRing(VMatrDefault(ivstart));
     7709  }
    70307710
    70317711  I = idrMoveR(I1,tRing,currRing);
     
    70377717  ideal resF;
    70387718  ring helpRing = currRing;
    7039 //ideal G, int nlev, intvec* omtmp, int weight_rad)
    7040   J = rec_r_fractal_call(J, 1, ivtarget,weight_rad);
     7719
     7720  J = rec_r_fractal_call(J,1,ivtarget,weight_rad,printout);
    70417721
    70427722  rChangeCurrRing(oldRing);
     
    70447724  idSkipZeroes(resF);
    70457725
     7726  si_opt_1 = save1; //set original options, e. g. option(RedSB)
    70467727  delete Xivlp;
    70477728  delete Xsigma;
     
    70997780  intvec* hilb_func;
    71007781#endif
    7101   /* to avoid (1,0,...,0) as the target vector */
     7782  // to avoid (1,0,...,0) as the target vector
    71027783  intvec* last_omega = new intvec(nV);
    71037784  for(i=nV-1; i>0; i--)
     
    71147795
    71157796  to=clock();
    7116   /* compute a red. GB w.r.t. the help ring */
     7797  // compute a red. GB w.r.t. the help ring
    71177798  if(MivComp(curr_weight, iv_dp) == 1) //rOrdStr(currRing) = "dp"
    71187799    G = MstdCC(G);
     
    71237804      DefRingPar(curr_weight);
    71247805    else
    7125       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 4
     7806      rChangeCurrRing(VMrDefault(curr_weight));
    71267807    G = idrMoveR(G, XXRing,currRing);
    71277808    G = MstdCC(G);
     
    71497830      DefRingPar(curr_weight);
    71507831    else
    7151       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 5
     7832      rChangeCurrRing(VMrDefault(curr_weight));
    71527833    to=clock();
    71537834    Gw = idrMoveR(G, exring,currRing);
     
    71847865      DefRingPar(curr_weight);
    71857866    else
    7186       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 6
     7867      rChangeCurrRing(VMrDefault(curr_weight));
    71877868
    71887869    newRing = currRing;
     
    72697950          DefRingPar(target_tmp);
    72707951        else
    7271           rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 8
     7952          rChangeCurrRing(VMrDefault(target_tmp));
    72727953
    72737954      lpRing = currRing;
     
    73298010          DefRingPar(target_tmp);
    73308011        else
    7331           rChangeCurrRing(VMrDefault(target_tmp)); //Aenderung 9
     8012          rChangeCurrRing(VMrDefault(target_tmp));
    73328013
    73338014      lpRing = currRing;
     
    75328213    else
    75338214    {
    7534       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 10
     8215      rChangeCurrRing(VMrDefault(curr_weight));
    75358216    }
    75368217    G = idrMoveR(G, XXRing,currRing);
     
    75658246    else
    75668247    {
    7567       rChangeCurrRing(VMrDefault(curr_weight)); //Aenderung 11
     8248      rChangeCurrRing(VMrDefault(curr_weight));
    75688249    }
    75698250    to=clock();
     
    76088289    else
    76098290    {
    7610       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 12
     8291      rChangeCurrRing(VMrDefault(curr_weight));
    76118292    }
    76128293    newRing = currRing;
     
    77778458        else
    77788459        {
    7779           rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 13
     8460          rChangeCurrRing(VMrDefault(target_tmp));
    77808461        }
    77818462      }
     
    78508531        else
    78518532        {
    7852           rChangeCurrRing(VMrDefault(target_tmp)); // Aenderung 14
     8533          rChangeCurrRing(VMrDefault(target_tmp));
    78538534        }
    78548535      }
     
    80938774    else
    80948775    {
    8095       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 15
     8776      rChangeCurrRing(VMrDefault(curr_weight));
    80968777    }
    80978778    newRing = currRing;
     
    82358916
    82368917  //Print("\n// \"Mpwalk\" (1,%d) took %d steps and %.2f sec. Overflow_Error (%d)", tp_deg, nwalk, ((double) clock()-tinput)/1000000, nOverflow_Error);
     8918<<<<<<< HEAD
     8919=======
    82378920
    82388921  return(result);
     
    84219104    delete next_weight;
    84229105  } //end of while-loop
     9106>>>>>>> f533f6f7667328bccb271b19b2f603aaebe41596
    84239107  Print("\n// Mprwalk took %d steps. Ring= %s;\n", nwalk, rString(currRing));
    8424   idSkipZeroes(G);
    8425   si_opt_1 = save1; //set original options, e. g. option(RedSB)
    8426   baseRing = currRing;
    8427   rChangeCurrRing(XXRing);
    8428   ideal Res = idrMoveR(G,baseRing,currRing);
    8429   delete tmp_weight;
    8430   delete ivNull;
    8431   delete exivlp;
    8432 #ifndef BUCHBERGER_ALG
    8433   delete last_omega;
    8434 #endif
    8435 #ifdef TIME_TEST
    8436   TimeString(tinput, tostd, tif, tstd, tlift, tred, tnw, nstep);
    8437 #endif
    8438   return(Res);
     9108  return(result);
    84399109}
    84409110
     
    85159185        else
    85169186        {
    8517           rChangeCurrRing(VMrDefault(cw_tmp)); // Aenderung 16
     9187          rChangeCurrRing(VMrDefault(cw_tmp));
    85189188        }
    85199189        G = idrMoveR(Go, XXRing,currRing);
     
    85899259    else
    85909260    {
    8591       rChangeCurrRing(VMrDefault(curr_weight)); // Aenderung 17
     9261      rChangeCurrRing(VMrDefault(curr_weight));
    85929262    }
    85939263    newRing = currRing;
     
    86519321      else
    86529322      {
    8653         rChangeCurrRing(VMrDefault(target_weight)); // Aenderung 18
     9323        rChangeCurrRing(VMrDefault(target_weight));
    86549324      }
    86559325      F1 = idrMoveR(G, newRing,currRing);
  • Singular/walk.h

    • Property mode changed from 100644 to 100755
    r70bc37 rdbf609  
    5454// compute a Groebner basis of an ideal G w.r.t. lexicographic order
    5555//ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M);
    56 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing);
     56ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing, int reduction, int printout);
    5757
    5858// random walk algorithm to compute a Groebner basis
    59 ideal Mrwalk(ideal Go, intvec* curr_weight, intvec* target_weight, int weight_rad, int pert_deg, ring baseRing);
     59
     60ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg, int reduction, int printout);
    6061
    6162/* the perturbation walk algorithm */
    6263
    63 ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,intvec* target_weight, int nP);
     64ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,intvec* target_weight, int nP, int reduction, int printout);
    6465
    6566/* the perturbation walk algorithm with random element */
    66 
    67 ideal Mprwalk(ideal Go, intvec* curr_weight, intvec* target_weight, int weight_rad, int op_deg, int tp_deg, ring baseRing);
     67ideal Mprwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int op_deg, int tp_deg, int nP, int reduction, int printout);
    6868
    6969/* The fractal walk algorithm */
    70 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget);
     70ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget, int reduction, int printout);
    7171
    7272/* The fractal walk algorithm with random element */
    73 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget,int weight_rad);
     73ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget, int weight_rad, int reduction, int printout);
    7474
    7575/* Implement Tran's idea */
  • Tst/Old/m139si.res.gz.uu

    r7023ce rdbf609  
    11begin 640 m139si.res.gz
    2 M'XL("'**>U0``VTQ,SES:2YR97,`[5SY?]LVLO]=?P7BM%TJ@FQ1OBO3NU';
    3 M-$[3U+738RNK64J";$HD19.4'">;_=O??''PD&A;;;K7>\_]=$3BF`%F!H.9
    4 M`9CSUU^>O&*,V<<$O#!EGK/=J9WKTC9*7YYTV<:E"$7L^IN^-]C(Z[=1/_5\
    5 MW_5]:R.*9\.->EZ[8VI-D[QJ%U6C>1!9&^B1I+$77K(T2=\DJ9O.DS=CSQ?,
    6 M81N!O7V8>)NAN-E$#=&6@Z0J&F;D#J?NI6!?J\%1`8V`/7WS"WI&;NP&(A4Q
    7 MT]B3#LO+@"7L,%:C68^9Q<)CI]G>8VXX8N&18YX>.2U6IR;OZ7]F\+A^=.4R
    8 M1Q9=;+A\P(=\Q`4?\TM^Q3T^X5/N\X"'?,8C?LUCGO"4S_F"W_"W_):_XQ<;
    9 MC3^D]U/>Y5_P+_E7_!G_FC_G)_P%_X:_Y-_R5_P[?LJ_YV?\G+_F/_`?^4_\
    10 M9_Y7_LO'];X@_C.C*%Y'_KJN*AO/8LOS')M*O2-G5_XZGM=HUV6U8B'ZCBW%
    11 MPI[G]1TG877VGI`XP/=!-E)0BH7*G589@:'3VE64[-W=)5(%8FM08TM40=3(
    12 M/<>D93^;IYV:P<RLD!VS%C!2.>F<(N2ZO/W$"NM-NT\*%HMT'H?,HA;UG*3J
    13 M?,1:JR/6E`8B-4JFQ/6.A/^6E&!!RI"24L2D'!$I24C*XI/23$AYKDB)QJ1,
    14 M(U*J`7<S8?]1&'XA)?B9E.%'4HK7I!QGI"2GI"RO2&E>DO*\("5Z3LKTC)3J
    15 M2U*N+G_Z\1B,TA64@CBWVS:BW&TW20<SUN:-CIG=VC&MVGNMI69*9N"S%EE3
    16 MRZPDLA4=^5"K=50+BVIK9<.H#-#Y%R<G91/D>TG*'BM[8\R1#?%>;$CTCR1W
    17 M+M3;8X!/`#X%^`S@3P`60!W@"4`#@`,T`39KVVWZV=X&V`'8!=@#V`<X`#@D
     2M'XL("'Q2TE0``VTQ,SES:2YR97,`[5SY?]LVLO]=?P5LMUTJ@FQ1OBO3NU';
     3M-$[3U+738RNK65J";$HD19.4'">;_=O??''PD&A;;;K7>\_]=$3BF`%F!H.9
     4M`9CSUU^>O&*,V<<$O#!EGK/=J9WKTC9*7YYTV?J5"$7L^IN^=[F>UV^C?N+Y
     5MONO[UGH43P?K];QVQ]2:)GG5+JJ&LR"RUM$C26,OO&)IDKY)4C>=)6]&GB^8
     6MP]8#>_LP\39#<;N)&J(M!TE5-,S('4S<*\&^5H.C`AH!>_KF%_2,W-@-1"IB
     7MIK$G'9:7`4O88:Q&LQXQBX7'3K.]Q]QPR,(CQSRM.2U6IR;OZ7]F\+A^=.TR
     8M1Q9=K+O\D@_XD`L^XE?\FGM\S"?<YP$/^91'_(;'/.$IG_$YO^5O^1U_QR_6
     9M&W]([Z>\R[_@7_*O^#/^-7_.3_@+_@U_R;_EK_AW_)1_S\_X.7_-?^`_\I_X
     10MS_RO_)>/ZWU!_&=&4;R._'5=53::QI;G.3:5>D?.KOQU/*_1KLMJQ4+T'5F*
     11MA3W/ZSM.PNKL/2%Q@.^#;*2@%`N5.ZTR`D.GM:LHV;N["Z0*Q%:@QA:H@JB1
     12M>XY)RWXZ2SLU@YE9(3MF+6"D<M(Y1<AU>?N)%=:;=I\4+!;I+`Z912WJ.4G5
     13M^8BUED>L*5V*U"B9$M<[$OY;4H(Y*4-*2A&3<D2D)"$IBT]*,R;EN28E&I$R
     14M#4FI+KF;"?N/PO`+*<'/I`P_DE*\)N4X(R4Y)65Y14KSDI3G!2G1<U*F9Z14
     15M7Y)R=?G3C\=@E*Z@%,2YW;81Y6Z[23J8L39O=,SLUHYIU=YK+313,@.?M<B:
     16M6F8ED2WIR(=:K:-:6%1;*QM&98#.OS@Y*9L@WTM2MJ'LC3%'-L1[L2[1KTGN
     17M7*BW#8!/`#X%^`S@3P`60!W@"4`#@`,T`39KVVWZV=X&V`'8!=@#V`<X`#@D
    1818ML-,"L`'08P<]=M!C!SUV]FI;P(=&#(T8&C$T8FC$T(@!+0-:!K0,:-GG`!V`
    1919M(P"GMH,&.VBP@P:[0+D+E+M`N0N4NT"Y"Y2[0+F+'KOHL8L>>^BQ9]>P7;`_
     
    2121M@>X>Z.Z#[CY&NH\>^^BQCQ[[Z+&_5_L6^+"3L>\`3@&^!S@#.`=X#?`#P(\`
    2222M/P'\#/!7@%\`>K5]T-T'W7W0/0#=`]`]`-T#T#T`W0/0/<!(#]#C`#T.T.,0
    23 M/0[M&BG/!5#V`7X%>`/P-P`78``P!!@!"(`QP"7`%8`',*D=@O0A2!^"]"%(
    24 M'X+T(4@?@O0AD;9;+0`;H`VPS>2"([`+4)L"G0\0`(0`,X`(X!H@!D@`4H`Y
    25 MP`+@!N`MP&W-;NT#WP$`Z-J@:X.N#;HVZ-J@:X.NO0>`'C9ZV.C11H^V77L'
    26 MA.\!_@[P`>`?-;L--&V@:0--&VC(!8#AP;(W"[:M%^PC+-3'GWSZV9^L^I,&
    27 M;VYNM:CWSN[>_L'AYYTCY_C/?WG:_>++KYY]_?SDQ3<OOWWUW>GW9^>O?_CQ
    28 MIY__^DL/@NK_^N9O[F`X$N/+*V\R]8-P%EW'23I?W+R]???^[Q_^86A+6Y9X
    29 M[X3UN,X<A^E]R6P7VA`EMC)4'ZJZV)5=:#J]QSV[W]RV^^R>WNV'>O/'O7:_
    30 MB9=&`=-#-M(=)#^Z_ER4S20QA`USKVQX[,C=5:,:Z@U4^(G(2YNJ^"&"`R^<
    31 M!9[KEPEJ-[!<,%4CH"Z7>/4[A9>8')S"ZW3J3(OO8>B$G8R-4]J"PN94<Y!>
    32 M';QV"HR>'I&G,8O9]#A4AKWPM[5%>K?`D(=N(A*%(R8<UA1.T9-8(R*'B%D^
    33 M'"__R)D2>M_Q&\M"=V)R2<*&W?3K6WXN;<VS&$Q[@(%C=YC.XKLXR)9YM+75
    34 MO/>/#6=!-">7WIN%[/ZFS68V32D/IRVG2E3]1F-EFK]S=MY@%KK#H7?G[/3D
    35 MI)_NV)S^^V=.TD,<)OW;$#]+\[RB48X;EQTRX`ZCGTOZN5J9]]4:\YX&(IC%
    36 MMW=[*YH%YFDAXD&FX,9,/'*T(ZO'%SHP!]IU*C8\MK6_^UXB<F`ZM!9_J)E0
    37 M##49RO=Y+!#FH0`;#2*RR:DEH2\6PF\N9MY0-+:Y9M'%QM86TY.;)V+$F9NR
    38 M]$JP8!:(,.5L<,M(H[V%8`N7U'K@BX16EN?/!K>IJ']^L9&YZX:ZS7XC^726
    39 MTG+1@Z#X=S9TT^J1G)^\^OJ'ET_/*D>`_XU/:BEL%%XT:-?=KK.1M\#^N[.&
    40 MK,-Y,!#Q&W'W`I::1]$`A9Q&X@LQ9',NY.N\%S;:?:?588*>;/7DB(:M-<*"
    41 M`?=",;(&9+&P:=;+9@A-AE=NG-<[B+2(HVILM(!I;:>P91\R;=;;;RR2N0^/
    42 M_6*CO:EC`L2"3,6<M%`:^'6\9=N'^8HG=LNX\K)3H)H'Q^@<.$'3"+<8BBG/
    43 MA'KW@GYCW@L:F5(SR8V@3Y6)%(%%E?5"I="5GY8J3/"1S44]--04K3FMFJPM
    44 M>)5*I=-F/VXH)JEF6_K%;M5_]8KLROO5[M?5-I=*2O&9&D7/YA"J&4#!>"[;
    45 MTZ7F:^I==+=MS10OI=#SFK\J*E],,6J7G\;"]X+.BC[P**]XA;W1;CT)U:K8
    46 MI@"I+2NBWBNMK9$3-4C#8B=:U9]7!?TAOG5[7M]I/_&:=B=G[,?J=T2B,H^Q
    47 MMZ+J>CPMI<^5VAQ!$PK:#.U6\UO2[U=:O]OWZ'>LM%1\VJ6'@O9>:[V7?%RJ
    48 M$ZKN^HE%2.N-J!<T<]J9@I.*2L3Y0$LX\V*P[/J10SX],F[T=%@YT*4%4Y"Z
    49 M^E/Z@7$5"B-3J-?7]<I"E-2=:IH92O7`#ZLPJX?&Q<9AGJ980FZW[L5NJ2>R
    50 M$DTK?]9<JA<DG8M6;J>J:1TR;FD1U_.6!4K9<+5)4KPX-45%J_7A-W"\9)\B
    51 MSXF\AE3I#Q5S;%6Q[F*C5<VS):S:T%W?;?*6QJIM@G%!"AO']F9N[=H\-(K[
    52 MNTWFDJV,O+N,Y1I6DH@%Y((\')X$,L.")S(UX:7(XXWP.)!\4^4P(*$3,"B'
    53 M;FEJ,I-&2*YY)/68J%M!G:N'L-XQ]G<A%Q4M7_IIJIW^Y@K9>5+N8R>2!*\S
    54 M#+3$5`^^R/L4`AX]`"U@M%STI#HOZIN;MG$&-:<6:[%M-IH/T]4XTAL5&9>[
    55 MM-4^.\W62RFX\=XI9QW&*(G$$/'.6+@T`E'MP&<N,I_P-"UN4.EMASWPM[5U
    56 M@^.1@:`X05"'2+`91@XL<L04S-"`V4^"W7C)%3F4THV\80FU3Z]`Q?>FPC#!
    57 M>FO9Q,56O0YFTTN=;VYN\K=8,<R-!5!ESNXF,ZV9ES!7T2/JT<R_3>3\R3D5
    58 M<2)=5;!:C,"$&R^]`AYOY("`;/C8=$<E.U0H.$,0X!"5MAK&X]ZA?"6*F^RY
    59 M"(>"$^>`BV:2R""7,-%32"LN9B*(TMM-=C(F$LP=C3S(A:21J26UO"3W/>1R
    60 M.*F<Q6@D1N#28TXL8C>"7;GDX%-!(J`+J4##L1?36#'PP)T*-0`!,Y%F\[CR
    61 MAE?4-T'7`7GJM(2]R/?$:+-F!(ZEJN.:S(@DV<'!>ZWOD.EL;#WN)7WR!2XV
    62 MU.@O-A#T5]21S[^Z5106(MH6;&F:ZG2$^DN<I&F73#1R.<?*`WDLNY/$D_[2
    63 MT4<A[W.\E%]"L`^.6-ZHWGAL4,LS/5I?IA%8YHW0]$&-5UH/67^NNU!GC2>]
    64 ME48:)?G&$!HVTPARXXH44'&<LJOFIVFH98*J'&V^%9<Q&TX\&-''M`R&4J6V
    65 M55[FOK@^VUQN(5\L"R-Y*>^1</UB`4DYG<47&T:"645`R]L7Q::!2T;FK9E/
    66 MYG\"HSP=E4^6:H4)UN^0G>X!27CK"*\D.]FY(*=P./.3LJ#RV4OM+DR^M!!T
    67 M"8UW94IJ%2D9*AS09M68G3,'=MZHL\X,YI7ZL2!BEJTGL.D<"R*,9S>)=5[G
    68 M>)93.*_W[^*7[KLNP\K\DIWO5NP5Y6/#69@0E^/<!DC##-.8[7QW*6#&_C2W
    69 M2GF(P*P)W(#)D:.W7WK66296MCXR)].;]-D1TL_44[X<L]6,)::[P+D:QLQB
    70 M[/3Y?K:"F&7[/`7(#_.Q/&DR]O:JWYI)6&EG;]%?RR!!2H;1M$VD^:`_K-5]
    71 M!5=,FTDT"T?2#9BQQ5UF)7,QE)+,0J'3K)C?.Q'/[A!N9K!SDZ<7B#(I*T&I
    72 M431VE"_2JJA$;MUL;,Y`K7$Y8KK?/M+&2ANT?\O-?GG+9H,)V;3D7AU=60CP
    73 MWL;P+:0,M8\N0Y\)HMF)#(TGSD0'ZJKYI.X0H!CH"?69+#F28W)HU_`EDUF\
    74 MOB-I;D'PR80G')-H\1:W>:N8O%CDSGE%ZD`/_A3'T+JTZ"MK[P(I!*QZ*Q?V
    75 MRNY1K#";16FE%?]6>^C-I+ZTF4C!!.3WC&^I*6]GRB#M!\MN>^1V7Z:JJQ1+
    76 M3H@DXWG]1X[\E:=%Q(%!+-QI9V4%R_8>\L`%A=4A`^1$W"U;=6G[=8.L"_FW
    77 MG14G1['UF&*0?Q%;*W<T[?O9RO=3,4/1/RED7-Z*X3P5UL6&2GS9S*'G!A)-
    78 MU,TZK3>(!D?18J5$GLLADXS_<Y12K[&^`C>R3GG!96*LS.)B12)49'-:*`N=
    79 M]I*)8"NVZ0['5]<4';.,1[2TNB'O>KP[X=W!TNX;>8M96M!%J^LYF07I>L<M
    80 M`LVFRB!0RU[7ZSO=0FI"QJ]6=Y(=*!39W24-SN?7G10];$DKI))N>)11;!+J
    81 M;ICOG66#ZF&>/3V.L-\_+KS1$N@7<C9+FV-WX&3=.J6:K-@I8*IN@KQGSK]L
    82 M3L6$3"%CL[P*H2;=V,G=GWN9W8TEI_,)>OU"J*%-KXPFNC&73>IW'#P_TB8O
    83 M-.E3%?MD^8%L2X-U;%<L+QPLR3.D>],,ZGC!;#^+0AR7;Y?JQEBR&BN`-X'<
    84 MHCKEX0=U37G%XV(3Y7/!Z<+/O?[6I']D)H\79S(IY=8"%&HO!X_].U;A0M\:
    85 MT&PPYE!N8R^=@"\ZA7WRY3J;Y#SX[TRVP#5C?TR^A7CP_[F6?U*N1>+]UZ59
    86 M_B^G5]9.I?S7YD76X=?=S"OF-SXJM9)[T7"B[Z(\$CZ93S+69`QB3]WX^<@D
    87 MRD?.OYBO^(].Q-RCI/?F4+"9_;OR)YF3D:=1?E_ZI/5@^L1D3S!=,MVM/RQS
    88 M\@<F3BKS)FOF&VC/>##58$2ZDFZ0=_&/;7V#*;OAZ&.3#^4Y;)MK(PTE-67U
    89 M/FW]#=VL:1H:<]XSS1HV>9PAVE:EKZ7S=#X/`N'DJ8[B73=W/J8`"S_(>N`W
    90 M4[+WNJ.$#>J.6H-!RU-/1C99]VKFC9L.KT:SR]6C2*_HY&G':QB,\@N;*SF.
    91 ME8]GXI"Z.P"TO63-U*#!BS@A)\+)LB$U-9,B;C.\-W$HY@4"TCZ4*HN]R<@<
    92 M,_,Q#WDAQ.$I9Y="W<2*2.U)=?$XI-API#Q20<!3#<A?#*A,$O*]<,K\-\"`
    93 MP#WQ/L>C.;&818*"'%FKIY6'[S>Q1[^JDE_/9[*0=(AX2!#YESQ,UPZZ:JR*
    94 M((*)<^-ZJ?2JK)?<>V*W6K3\,:/AE1C2E&ZNR%$E\1A_S#6'XG).^AJ9IWP"
    95 M,(:"8+O\J8L40WZB[H[*TRE+0\JK7O7=#2VJ)2D_<J3TJ^-D4"U)KZ0$YL]D
    96 M("398@7H/<H&I<[<[PZM\RDZ8T$TRTK%RX?[Q?7$*BSF>%4U/7CS\3Q**SA3
    97 MUM.L9?DBA(+&3"Q_A:2'?K'Q#>$2H_RPC,;RZ#<-!BJUVK#H]8JW$;*BZPUX
    98 MZ,\245:7Y6L0++O"G:W<K\[.OCNCE?!,Q0KQY1SW(K$@,U-4"`\HXDD\>6\3
    99 M0[D4\:9>,P];-N5@G<\'<G$MFS>5KUT.8WUEW>2S7(?JJMJ$)U-/7B+3"2*\
    100 MJK2*047A`G&./`-MUW72U+%9AZR1\1N2.EZ545?LT+<KK$D#.)&#6"0]KU]>
    101 MI-.>C/[]GFJ5>4D3D[Q2`D&=*E&&D.CU#-W^D7SRBS;4F3;D!N;W2BWE)J9;
    102 M]S,A:F9/U[W<,IR)\3A931Z\J,X=,',_Q?/PB9I+9C#;KXM?1)0\LVMGN]UJ
    103 M;=\9WBA7.L^](E53#@FSQ6'4LDUV,Q]?,*?Q#:1C)O,'LFLC%#>T+0AC,K1M
    104 MN%Z^!WU-FY`<G[DTHP9;N`%=O8VNS!/<R%:IL@GR`.(M'T7YW,'<D^6(Y84.
    105 M6.1)C[KZHRZ/!.Y;U=#6+50']@6)S8'LK!.:#8^TUZ2C&\XF]#\"^M*Y!]E0
    106 M^2[%J7<@/SO(\3P<Y,C;[=+-/ZFO7G+79,,A10UXYGH(GH<Q%!.'<%G1HM?.
    107 M`P>\Z]AAY1QCKVX&P@I?K.;IO>61^.9VDSJ;2RQ]#TT=9]1Y=JU03G8R\AT_
    108 M%_L$U(E%5"RS`Z!"SUE<([<#*C"R)$8Z`.1)]K;[^2PGI5E,[IW%I&H6"_D%
    109 M+*ZU3=2X<]PFX9_;*I6A*1"40]JK%QB*]L2N7G:'CEG0RB+)JK$!47%TA047
    110 M"XQ+Q8JR73[,@D.K'9-,PRJ3&*5F6C5_UZV\E,3^3'WY\F[IXKQ<0-Y=MDL>
    111 M[)5\F-*'$,M?-U@EHY3'V/7//E-E9?.O]FTO-6GQ0O$$6=Z6^GJ,Y9\3P^Y6
    112 MN]TECU:FB)9]VBJOEO:IHC?+E#M;8I<E%F1-O'I=GKVJ3N2H)KX0$0V5)8'K
    113 MRQRCB*FAGTA]<:,HWI0GX0EM&*&)?<$C.>'CJF^FU8'.A+9*^,-PB2M]3"D!
    114 M^>\+9,.^V("'>[%AGF[Q.*%H[7WY7%(N9:QD<M0GN7>4.X,5\RO,C':+?$IL
    115 M',\"%LYNJ*R6H\Z<+NT`8#J8<K5SO<X\##,J9F/FDA'-9K`>\@I?\L&X0>$F
    116 M37RTJHIW!P6GI>/Q0F75:61Y$.IT\Y2S"H=>VMW3TU515GJQ>77FDQ='6MCE
    117 M"I/56Z$C/Q4SI>;CB;XC'2V;%T]8S=7DOK/HK#<<\UU0:8;ECX8LM6T]QTI<
    118 MS^"=IZ,E[UAM]O\1MDZ&O/\F\Y:DHY)1*TB_'*I7!>MR+1=C:'G^#(L!GL_F
    119 MZ8I:*;;K:,];2Q/_ERQ"\UNI^^OH/"2UEK[KQ5&QM4<Z",%LSLK9"!T#9L^A
    120 M]L7Q/')4&EM%.U;$%VX,ESISURPX1'!]<5O#.JMWEK_NG%1A\`H*AY3#\:0B
    121 MUQSF6H*!.Y.2SFAO&3H5N$[!W9>IWJVMD2<8!<CO4L%^U">7#*J-\N<NA?SF
    122 M/!-X`K=G)D#6B@88FJ"A%^H"76W*(Q9=><X917)Y9$#<=\:9OT#UEG'MM4EU
    123 M4$8MZIV2]W:_8&<1SB\MTDVNK;#5PF[8WMT#]K.O7O]P]LHJ_$M%>\?J7SE*
    124 5DU2AR/\E(K#GD]K_`#;QH?8G20``
     23M/0[M&BG/!5#V`7X%>`/P-P`7X!)@`#`$$``C@"N`:P`/8%P[!.E#D#X$Z4.0
     24M/@3I0Y`^!.E#(FVW6@`V0!M@F\D%1V`7H#8!.A\@``@!I@`1P`U`#)``I``S
     25M@#G`+<!;@+N:W=H'O@,`T+5!UP9=&W1MT+5!UP9=>P\`/6STL-&CC1YMN_8.
     26M"-\#_!W@`\`_:G8;:-I`TP::-M"0"P##@V5O%FQ;+]@U+-2-3S[][$]6_4F#
     27M-S>W6M1[9W=O_^#P\\Z1<_SGOSSM?O'E5\^^?G[RXIN7W[[Z[O3[L_/7/_SX
     28MT\]__:4'0?5_??,W]W(P%*.K:V\\\8-P&MW$23J;W[Z]>_?^[Q_^86A+6Y9X
     29M[X2U46>.P_2^9+8+;8@26QFJ#U5=[,HN-)W>1L_N-[?M/GN@=_NQWGRCU^XW
     30M\=(H8'K,1KJ7R8^N/Q-E,TD,88/<*QL<.W)WU:@&>@,5?B+RTJ8J?HS@I1=.
     31M`\_URP2U&U@NF*@14)<KO/J=PDM,#D[A=3)Q)L7W,'3"3L;&"6U!87.B.4BO
     32M#EX[!49/CLC3F,9L<APJPU[XV]HBO9MCR`,W$8G"$1,.:P*GZ$FL$9%#Q"P?
     33MCI=_Y$P(O>_XC46A.S&Y)&'#;OKU+3^7MN99#*8]PL"1.TBG\7T<9(L\VMIJ
     34M/OC'!M,@FI%+[TU#]G#39C.;II2'TY93):I^H[$TS=\Y.^]R&KJ#@7?O[/3D
     35MI)_NV)S^^V=.TD,<)OW;$#\+\[RF48X:5QTRX`ZCGROZN5Z:]_4*\YX$(IC&
     36M=_=[*YH%YFDNXLM,P8V96'.T(ZO'%SHP!]IU*C8\MK6_^UXB<F`ZM!9_J)E0
     37M##49RO=Y+!#FH0`;7D9DDU-+0E_,A=^<3[V!:&QSS:*+]:TMIB<W2\20,S=E
     38MZ;5@P3008<K9Y1TCC?;F@LU=4NM+7R2TLCQ_>GF7BOKG%^N9NVZHV^PWDD^G
     39M*2T7/0B*?Z<#-ZT>R?G)JZ]_>/GTK'($^-_XI);"1N%%@W;=[3H;>G/LOSLK
     40MR#J<!9<B?B/N7\!2\R@:H)#32'PN!FS&A7R=]<)&N^^T.DS0DZV>'-&PM498
     41M,.!>*(;6)5DL;)KULAE"D\&U&^?U#B(MXJ@:&RU@6MLI;-F'3)OU]AN+9.;#
     42M8[]8;V_JF`"Q(%,Q)RV4!GX=;]'V8;[BB=TRKKSL%*CFP3$Z!T[0-,(MAF+*
     43M,Z'>O:#?F/6"1J;43'(CZ%-E(D5@466]4"ETY:>E"A-\9'-1#PTU16M&JR9K
     44M"UZE4NFTV8\;BDFJV99^L5OU7[TBN_)^M8=UM<VEDE)\ID;1LSF$:@90,)Z+
     45M]G2A^8IZ%]UO6S/%2RGTO.&OBLH74XS:Y:>Q\+V@LZ0//,HK7F%OM%M/0K4J
     46MMBE`:LN*J/=*:VOD1`W2L-B)EO7G54%_B&_=GM=WVD^\IMW)&?NQ^AV1J,QC
     47M["VINAY/2^ESI39'T(2"-D.[U?P6]/N5UN_V`_H=*RT5GW;IH:"]-UKO)1\7
     48MZH2JNWEB$=)Z(^H%S9QVIN"DHA)Q/M`2SKP8++M9<\BG1\:-G@XK![JP8`I2
     49M5W]*/S"N0F%D"O7ZNEE:B)*Z4TTS0ZD>^&$59O70N%@_S-,4"\CMUH/8+?5$
     50M5J)IY<^:2_6"I'/1RNU4-:U#QBTMXGK>LD`I&ZXV28H7IZ:H:+4^_`:.E^Q3
     51MY#F1UY`J_:%BCJTJUEVLMZIYMH!5&[J;^TW>PEBU33`N2&'CV-[,K5V;AT9Q
     52M?[?)7+"5D7>?L5S!2A*Q@%R0Q\.30&98\$2F)KP2>;P1'@>2;ZH<!B1T`@;E
     53MT"U-36;2",D-CZ0>$W4KJ'/U$-8[QO[.Y:*BY4L_3;73WUXC.T_*?>Q$DN!-
     54MAH&6F.K!YWF?0L"C!Z`%C);SGE3G>7USTS;.H.;4?"6V38>S0;H<1WK#(N-R
     55ME[;:9Z?9>BD%-]X[Y:S#&"61&"#>&0F71B"J'?C,1>9CGJ;%#2J]Z[!'_K:V
     56M;G$\<BDH3A#4(1)LBI$#BQPQ!3,T8/:38+=><DT.I70C;UE"[=-K4/&]B3!,
     57ML-Y:-G&Q5:^#V?12YYN;F_PM5@QS8P%4F;.[R4QKYB7,5?2(>C3U[Q(Y?W).
     58M19Q(5Q6L%D,PX=9+KX''&SH@(!MNF.ZH9(<*!6<(`ARBTE;#V.@=RE>BN,F>
     59MBW`@.'$.N&@FB0QR"1,]A;3B8B:"*+W;9"<C(L'<X="#7$@:F5I2RRMRWT,N
     60MAY/*60R'8@@N;7!B$;L5[-HE!Y\*$@%=2`4:CKR8QHJ!!^Y$J`$(F(DTF\>U
     61M-[BFO@FZ7I*G3DO8BWQ/##=K1N!8JCJNR8Q(DAT<O-?Z#IE.1]9&+^F3+W"Q
     62MKD9_L8Z@OZ*.?/[EK:*P$-&V8$O35*<CU%_B)$V[9**1RSE6'LB&[$X23_H+
     63M1Q^%O,_Q0GX)P3XX8GG#>F/#H)9G>K2^3".PS!NBZ:,:K[0>LOY<=Z'.&D]Z
     64M)XTT2O*-(31LIA'DQA4IH.(X95?-3]-0RP15.=I\*RYC-IQX-**/:1D,I$IM
     65MJ[S,0W%]MKG<0;Y8%D;R4MY#X?K%`I)R.HTOUHT$LXJ`EK<OBDT#EXS,6S.?
     66MS/\$1GDZ*I\LU0H3K-\C.]T#DO!6$5Y)=K)S04[A8.HG94'ELY?:79A\:2'H
     67M$AKOTI34*E(R5#B@S:HQ.V<.[+Q19YT9S"OU8T'$+%M/8-,Y%D083V\3Z[S.
     68M\2RG<%[OW\<OW7=5AI7Y)3O?K]A+RL<&TS`A+L>Y#9"&&:8QV_GN4\",_6EN
     69ME?(0@5ECN`'C(T=OO_2LLTRL;'UD3J8W[K,CI)^IIWPY9LL92TQWCG,UC)G%
     70MV.GS_6P),<OV>0J0'^=C>=)D[.UEOS63L-+.WKR_DD&"E`RC:9M(\T%_6*G[
     71M$JZ8-I-H&@ZE&S!E\_O,2N9B*"69AD*G63&_=R*>WB/<S&#G)D\O$&52EH)2
     72MHVCL*%^D55&)W+K9R)R!6J-RQ/2P?:2-E39H_XZ;_?*.32_'9-.2!W5T:2'`
     73M>QO!MY`RU#ZZ#'W&B&;',C0>.V,=J*OFX[I#@&*@)]1GO.!(CLBA7<&73*;Q
     74MZHZDN07!QV.><$RBQ5O<YJVB#^@-WY"(G(6=":*S5-6:4Q8:EG>ARAC^RCJ]
     75M!535J<VNJL;8W7I^L()JWJKG,8&T-'E849'TT&P_Q0&Z+BUZ^=HO0O)#DL_G
     76MO[3O%2O,;$LVHOBWW,/P8&$;E"H5D,<VNL/DVID:2\O'LGLJ^8XED^Q52T).
     77MB'3*\_IKCOR5YUS$@<M8N)/.DNV1[3UDL`M+30<[T##B;GD_DKN6;I!U(<^\
     78ML^2>*;8>4_3T+V)KY5ZLO59;>:U*TXN>54Y'O!6#62JLBW65LK.90\\-I,BH
     79MFW5:;Q`-CJ+Y4HD\440.'/_G*.6*A&4(W,@ZY05GC[$RBXL5B5#K\;10%CKM
     80M!>/&EJSJ/2Z[KBFZE!F/R"AT0][U>'?,NY<+?D/DS:=I01>MKN=DMJ_K';<(
     81M-)LJ]T$M>UVO[W0+2149>5O=<7844F1WES0XGU]W7(P-)*V02KKA44:Q2:B[
     82M8;[KE[<"#_/LZ7&$_?YQX8V60+^0;5K8UKN73M:M4ZK)BIT"INHFR-CF_,OF
     83M5$PE%7)-BZL0:M*-G=QQ>Y#9W5AR.I^@UR\$27K3D'%0-^:R2?V>(_,U;?)"
     84MD_A545N6V<@V8UC'=L7RPI&8//UZ,$&B#D;,QCDO1*#Y1J_NNB7+40YX$\C-
     85MM5,>?E#7E)=\1396WB+<1?P\Z"F.^T=F\GAQQN-25C!`H?;/\-B_9Q7.]7T'
     86MS09C#N4&_-()^+Q3V.%?KK*]SX+_SC01G$KVQV2*B`?_GR7Z)V6))-Y_78+H
     87M_W)B:.4DT']M1F<5?MW/O&)FYJ.20KD7#2?Z/LI#X9/Y)&--QB#VU%VECTS_
     88M?.3\BYF6_^@4T@-*^F#V!YO9OROSDSD9>0+H]R5^6H\F?DS>!],ET]W*L7QD
     89MSN</3/E49GQ6S)30GO%HDL2(="E1(K\B.+;UW:OL;J:/33Z4)\AMKHTTE-24
     90MU?NT]3=TLZ9I:,QYSS1KV.1QAFA;E7B7SM/Y+`B$DR=IBK?TW-F(`BS\(%^#
     91MWTS)WNN.$C:H.VH-!BU//1G99-5+I;=N.K@>3J^6#U&]HI.G':]!,,ROFB[E
     92M.)8^^XE#ZNX`T/:2-5.#!B_BA)P()\N&U-1,BKC-\-[$H9@5"$C[4*HL]B8C
     93M<\S,9TCDA1"')YQ="76'+"*U)]7%XX!BPZ'R2`4!3S4@?S&@,DG(]\()\]\`
     94M`P+WQ/L<C^:L91H)"G)DK9Y6'K[?QA[]JDI^,YO*0M(AXB%!Y%_R,%T[Z*JQ
     95M*H((QLZMZZ72J[)><N^)W6K1\L>,!M=B0%.ZO29'E<1C_#'7'.?+.>E4E:=\
     96M`C"&@F"[_)&.%$-^%\`=EJ=3EH:45[WJBR%:5`M27G.D]*OC9%`M2:^D!.;/
     97M9"`DV6(%Z*UE@U*W!>X/K?,I.B-!-,M*Q<O7$HKKB558S-&R:GKPYN-9E%9P
     98MIJRG6<OR%0X%C9E8_'Y*#_UB_1O")8;Y,1^-9>TW#08JM=RPZ/6*MQ'RN:L-
     99M>.!/$U%6E\4+'"R[?)ZMW*_.SKX[HY7P3,4*\=4,-SJQ(#-35`@/*.))/'GC
     100M%$.Y$O&F7C./6S;E8)W/+N7B6C1O*E^[&,;ZRKK)9[D.U26[,4\FGKS^IA-$
     101M>%5I%8.*P@7B''D&VJ[KI*ECLPY9(^,W)'6\*J.NV*'OA5CC!G`B!S%/>EZ_
     102MO$@G/1G]^SW5*O.2QB9YI02".E6B#"'1ZQFZ_2/YY!=MJ#-IR`W,[Y5:RDU,
     103MM^YG0M3,GJQZ+6<P%:-1LIP\>%&=.V#F9HWGX>,ZE\Q@ME\7O^4H>68WSG:[
     104MU=J^-[Q1KG2>>T6JIAP29HO#J&6;[&8^OF!&X[N4CIG,'\BNC5#<TK8@C,G0
     105MMN%F\0;W#6U"<GSFNH\:;.'N=O4VNC1/<"-;I<HFR*.3MWP8Y7,'<T\6(Y87
     106M.F"19U3JTI*Z]A*X;U5#6[=0'=@7)#8'LK-.:#8\TEZ3CFXX&]/_".@[6F)2
     107M^<F&RG<I3KT#^=D1E.?A"$K>RY=N_DE]^7J^)AL.*&K`,]=#\#R,H9@XA,N*
     108M%KUV'CC@7<<.2^<8>W4S$%;XUC9/[RV.Q#?WLM2I8F+I&W3J.*/.LPN1<K+C
     109MH>_XN=C'H$XLHF*9'0`5>L[B&KD=4(&1)3'2`2!/LK?=SV<Y+LUB_.`LQE6S
     110MF,MO=W$A;ZS&G>,V"?_<5JD,38&@'-)>O<!0M"=V];+;?\R"5A9)5HT-B(JC
     111M*RRX6&!<*E:4[?)A%AQ:[9AD&E:9Q"@UTZKYN^X3IB3V9^J;G7<+5_[E`O+N
     112MLUWR8*_DPY0^X5C\+L,J&:4\QJY_]IDJ*YM_M6][J4F+%XK'R/*VU'=O+/\0
     113M&G:WVNTN>;0R1;3HTU9YM;1/%;U9IMS9$KLL,2=KXM7K\M18=2)'-?&%B&BH
     114M+`E<7^8814P-_43JBQM%\:8\PT]HPPA-[`L>R0D?5WWMK0YTQK15PA^&2USI
     115M8TH)R'\9(1OVQ3H\W(MU\W2'QS&.=<OGDG(I8R63HS[.O:/<&:R87V%FM%OD
     116M4V*C>!JP<'I+9;4<=>9T:0<`T\&4JYWK5>9AF%$Q&S.7C&@V@]605_B2C\8-
     117M"C=IXMJR*MX?%)R6CL<+E56GD>5!J-/-4\XJ''II=T]/ET59Z<7FU9E/7AQI
     118M89<K3%9OA8[\R,V4FL\^^HYTM&Q>/&$UEZK[SKRSVG#,W8/2#,N?.UEJVWJ.
     119ME;B:P3M/APO>L=KL_R-LG0QY_TWF+4F'):-6D'XY5*\*UN5:+L;0\OP9%@,\
     120MG\[2);52;-?1GK>2)OXO683FMU+W5]%Y2&HE?=>+HV)KCW00@MF<E;,1.@;,
     121MGD/MB^-YZ*@TMHIVK(C/W1@N=>:N67"(X/KBMH9U5N\L?I<ZKL+@%10.*8?C
     122M<46N.<RU!`-WQB6=T=XR="IPG8*[+U.]6UM#3S`*D-^E@OVH3RX95!OESUT*
     123M^<UY)O`$;L],@*P5#3`T04,OU`6ZVI1'++KVG#.*Y/+(@+COC#)_@>HMX]IK
     124MD^J@C%K4.R7O[6'!3B.<7UJDFUQ;8:N%W;"]NP?L9U^]_N'LE57X-Y;VCM6_
     1257SY0FJ4*1_QM*8,\GM?\!V-0IB>%)````
    125126`
    126127end
  • Tst/Old/m24si.res.gz.uu

    r7023ce rdbf609  
    11begin 640 m24si.res.gz
    2 M'XL(")F*>U0``VTR-'-I+G)E<P#L7&M[VS:R_JY?@<C;+AE!MBC?(].[4=JT
    3 M;M,TC7O;RFJ6DB`;$DG))"7;R69_^\X+@#>)<MRFN^?L<X[S9$SB,C,8#`8S
    4 M`]#GWW]V]I(QYIP2B&1XR2)WM]UJ[7+KEM_QMS8?S3NU<].JC5:^#*?,=^M/
    5 M;IBX]8*Y+[:3VZ3>8?C9V6')W5PP&;.G\5!*SH+92+W.EB*ZB60B,FR["ENG
    6 MEO9YPIZ>/SL[P[OJ](3=X#GT`CP7:*%T-A<AE88SO$3"&ZF71#W>H4S1*I:E
    7 M9/=`-DZ\9!%;/F=UX*_;FGV6#D(1):Z+5(O/*;+]%61@JTZ_[T1L<!(R)3%"
    8 M!E[N1*)X%Z-:*\-R`"QR)#R?23?P;M6CU;9SR1^BA1H2(SH.KW?JO*U@/>U7
    9 MYQ(%A4Y'#V$NG-UD#*)!S<GZ'Z_TQZRL26H\BQ1CT)W:3=K7:64,6_6BFA"_
    10 M8<(F[CXXI>XC+_%`VIL3[9$8L63&QM+/M,31FDDS6,938*.`)1+)(B+9,B\F
    11 MQJ'/-)Q.K4W_4S'5WK;YW5M^U^:W;_GM';]5E8:G6D96J?K0G\7"\DM#+I)-
    12 MY:;:C;*^2K'%K1@N:/2*==]>P9$JK692:YIJ/R*&V]#?QX^IQ4B,9:@:T'N&
    13 M?U6#?^.\.JM*6SFO,M0<HK(697T//D(N2HDQ6XM@SI9>E!L%#'$>B:6<+6(U
    14 M_6PX"Q,1)D^RSD?;U!D]K57+DVN\HS1V*GV?15EA6ZGBI4ATYRHE(IZH7O,U
    15 MCF:!UL"U23A/O'#D12/,Q5IEG(S&EWZPJ>Y*^H/*NNO%+)$TTA<R3BH;S+VH
    16 M3<)ZC>>J>F#>6'D=^S*XK*9\&<W$(!11964DXHWLWCL.Y][:]KVUN_?6[M];
    17 MNU<M^3FMKV1<+=C-5>-[ZFZ$O+Q*ONY65I(A$HFDO:.JDBQ[=3FMM:KR)$[>
    18 MZ&7Z1JV)JC:3@F%H*UOYXJS+ZI>TPT2>O^W+03U?">UT>7B^;]7GT6Q86#SM
    19 MW6SQF"9YE;(X>OW4-ZYZM7S(?).VSQ9)S9BVU4&X9&_:>['<#L7--BJ(/^UX
    20 M4)6E?`\[<SZLT=RBUV=V9K^ID=X=U\RX;<PXM2!#/O>&4^]2L"^T(*B`1LN>
    21 MOOD%#-"2HOT](=4W3,8=EI<!2TB#K-&>/&86"T_=9ON`T=IGX8F;/CUR6\RF
    22 M)N]J3%E3A<?SYU<><U711=WC`S[D(R[XF%_R*]J?)WS*?1[PD,_XG%_SB,<\
    23 MX0N^Y#=<#9E?U!M_2.^GO,N?\<_XY_PY_X)_R<_X5_QK_H)_PU_R;_DK_AU_
    24 MS<_Y]_P'_B/_B?_,_\9_^;C>%S2/Z`SI2=E1OSU/EY&/8$GI.E0J3]Q]]=N5
    25 MLM&V5;46(?J.+2W"GI1]UXV9S=X1$A?XWJM&&JIIH7*W54:0TFGM:TK._OX*
    26 MJ0*Q!U!C*U1!-)WW').9>]+Y3BW%S*R0G;(6,%(YZ9PFY'F\_=@*[:;3[S#C
    27 MK3"+6M@Y2=WYA+76.3:4!B))E4Q/%ZT#4H`;4H0%*41,BG%-"C(C10E(8::D
    28 M.)(4Z)(429!"#4FQO&RR_R@,OY`2_$S*\",IQ?>D'*])25Z1LKPDI7E!RO,5
    29 M*=&7I$S/2:D^(^7J\J<?CR%5NH)2D.3VV^E4[K>;I(.9:/-&I^2A[J6MV@>M
    30 ME69ZSB!G,V5-,V>E*5O3D?>U6D>WL*BV5C;"V@`APBF;(!\;_Y:V-ZDY<C"]
    31 M%W6%_I&2SH5^VP+X$\`G`)\"_!G``K`!'@,T`#A`$V"[MMNF7[N[`'L`^P`'
    32 M`(<`1P#'!/9:``X`>NRAQQYZ[*''WD%M!_C0B*$10R.&1@R-&!HQH&5`RX"6
    33 M`2U%9_2C=HX3`+>VAP9[:+"'!OM`N0^4^T"Y#Y3[0+D/E/M`N8\>^^BQCQX'
    34 MZ''@U+`UL;\`_!7@*4`7X!G`9P"?`SP'^`+@2X`S@*\`O@9X43L`W0/0/0#=
    35 M`]`]`-T#T#T`W0/0/03=0W!ZB!Z'Z'&('H?H<7A0^P;X$#^Q;P%>`7P'\!K@
    36 M'.![@!\`?@3X">!G@+\!_`+0JQV"[B'H'H+N$>@>@>X1Z!Z![A'H'H'N$3@]
    37 M0H\C]#A"CV/T.'9JI#P70-D'^!7@#<#?`3R``<`08`0@`,8`EP!7`!)@4CL&
    38 MZ6.0/@;I8Y`^!NECD#X&Z>-CA'\M``>@#;#+U((CL`]0FP*=#Q``A``S@#G`
    39 M-4`$$`,D``N`)<`-P"W`7<UI'0+?$0#H.J#K@*X#N@[H.J#K@*YS`(`>#GHX
    40 MZ-%&C[93>PN$[P#^`?`>X)\UIPTT;:!I`TT;:,@%@.'!LD\7;-LLV$=8J%M_
    41 M^N33/UOVXP9O;N^TJ/?>_L'AT?&3SHE[^I>_/NT^^^SSYU]\>?;5UR^^>?GM
    42 MJ^]>GW__PX\__?RW7WJ8J/ZO;_[N#8;DX%U>R<G4#\+9_#J*D\7RYO;N[;M_
    43 MO/]G2EO9LEB^%=:6S5R7F7TIW2Z,(8H=;:C>5W5Q*KO0<'I;/:??W'7Z[)[>
    44 M[0_UYEN]=K^)ET8!TX=LI#>(?_3\A2B;21((&^9>V?#45;NK034T&ZCP8Y&7
    45 M-G7QAP@.9#@+)'F7)8+&#2P73#4'U.42KWZG\!*1@U-XG4[=:?$]#-VPDXEQ
    46 M2EM0V)P:"=*KB]=.0=#3$_(T9A&;GH;:L!=^=G9([Y9@>>C%(M8XE`,]A5/T
    47 M.#*(D)RQ?#A>_HD[)?2^ZS=6)]V-R"4)&T[3MW?\?+:-S"(([0,"''O#9!9M
    48 MDB!;E='.3O/>'PK^@_F"0@,Y"]G]39O-;)AJ/MRV&BI1]1N-M6'^SM')P2ST
    49 MAD.Y<71F<,I/=QU.__Z=@R2'=E?[MR%^K8SSBK@<-RX[9,!=1K\NZ=?5VKBO
    50 M'C#N:2""672WV5LQ(DB?EB(:9`J>FHE'KG%D#7^A"W-@7*=BPU/'^+OO%"(7
    51 MIL-H\?M:&HJA)D/Y+H\%PCP48*.!"MXM!7VQ%'YS.9-#T=CE1D07=:28]>`6
    52 ML1AQYB4LN1(LF`4B3#@;W#'2:+D4R%));^"+F%:6]&>#NT383R[JF;N>4G?8
    53 M;R2?S!):+H8)BK5G0R^IYN3\[.47/[QX^KJ2`_Q/?5)+8Z/PHD&[[J[-1G*)
    54 M_7?O`7,=+H*!B-Z(S0M8:1Y%`Q1RIC.^%$.VX$*]+GIAH]UW6QTFZ,G13ZYH
    55 M.$8C+*92%F)D#<AB8=.TRV8(38977I37NXBT2**:-UK`M+83V++WF3:;[3<2
    56 M\<*'QWY1;V^;F`"Q(-,Q)RV4!GZ[<M7V8;SBL=-*77G5*=#-@U-T#MR@F4YN
    57 M,133G@GU[@7]QJ(7-#*E9DH:09\J8S4%%E7:A4IA*C\I5:3!1S86_=#00[06
    58 MM&JRMI!5HI3.F/VHH86DF^V8%Z=E_RJ+XLK[U>[7U3972DKQF>:BYW!,:LI`
    59 MP7BNVM.5Y@_4N_EFVYHI7D*AYS5_652^B&+4+G\5"5\&G35]X/.\XB7V1J?U
    60 M.-2K8I<"I+:JF/=>&FV=N_,&:5CDSM?UYV5!?TANW9[LN^W'LNET<L%^K'[/
    61 M::K2QTBNJ;KAIZ7UN5*;Y]"$@C9#N_7X5O3[I='O]CWZ'6DM%9]TZ:&@O==&
    62 M[Y4<5^J$KKM^;!%2NS'O!<V<=J;@I*(*<<YH"6=>#)%=/W+)IT?&C9Z.*QE=
    63 M63"%6=<_6C_`5Z%PGA::]76]MA`5=;>:9H92/_#C*LSZH7%1/\[3%"O(G=:]
    64 MV"W]1%:B:>7/1DIV8:;SJ57;J6YJ8XY;9HKMO&6!4L:N,4E:%J_2HJ+5>O\;
    65 M)%ZR3W/ISF5#J?3[BC&VJD1W46]5RVP%JS%TUYM-W@JOQB:D+DAAX]C=SJU=
    66 MFX>IXOYND[EB*^=RD[%\@)4D8@&Y(!\.3P*58<$3F9KP4N3Q1G@:*+GI<AB0
    67 MT`T8E,.T3&LRDT9(KOE<Z3%1MP*;ZX?0[J3V=ZD6%2U?^M74._W-%9+\I-RG
    68 M[EP1O,XPT!+3/?@R[U,(>`P#9H+1<ME3ZKRTM[>=U!DTDEH^2&RST6*8K,>1
    69 M<E047.[25OOL-%J94'`CWVIG'<8HGHLAXIVQ\(@#4>W`9RXRG_`D*6Y0R5WE
    70 M(4KQ9V?G!D<Q`T%Q@M`7)&;@'%@4QQ3,X#CH)\%N9'R%@Q>XD3<LIO;)%:CX
    71 M<BI2(5BWED-2;-DVA$TO-M_>WN:W6#',B]1I9^;L;K.TM3J:U_2(^GSFW\5J
    72 M_.2<BBA6KBI$+480PHU,KH!'CEP04`VWTNZH9,<:!6<(`ERBTM9L;/6.U2M1
    73 MW&9?BG`H.$E.W0RYPCDR;9F$"5<H:,5%3`3SY&Z;G8V)!/-&(XEYP>E0JI;4
    74 M\I+<]Y`K=A(UBI&Y7;#%243L1K`KCQQ\G%<)Z$(BT'`L(^(5C`?>5&@&!,Q$
    75 MDHWC2@ZOJ&^,K@/RU&D)R[DOQ6B[EDXXEJJ):S(C$F<'!^^,OF-.9V-KJQ?W
    76 MR1>XJ&ON+^H(^BOJR.=?WRH*"Q%M"[8T24PZ0O_$;MQT2B8:N9Q3[8%LJ>XT
    77 MXW%_Y>BCD/<Y7<DO(=B'1"PYLAM;*6IU?DCK*VT$D<D1FGY0X[768ZZ?F"[4
    78 MV>!)[I211DF^,82IF(F#W+@B!53D4W4U\DP;FCE!58XVWXK+F%-)?#"BCV@9
    79 M#)5*[>J\S'UQ?;:YW&%^L2S2F5?SC3/.8@'-<C*++NKI#&85`2UO7Q2;!AX9
    80 MF=MT/)G_N7)^JEMA@/:&N3,],!/R(9-7FCO5N3!/X7#FQ^6)RD>OM+LP^-)"
    81 M,"7$[]J0]"K2<ZAQ0)MU8W;.7-CY5)U-9C"O-(^%*6;9>H*8SK$@PFAV$UOG
    82 M-L>S&L*YW=\D+]/WH0(KRTMUWJS8:\J'&S(Q23G*;8`RS#"-V<ZW20$S\2>Y
    83 M5<I#!&9-X`9,3ERS_=*SR3*QLO51.9G>I,].D'ZFGNKEE*UG+#'<)<[5P#.+
    84 ML-/G^]D:8I;M\T[U=8,RXO*@R=@[ZWYK-L-:.WO+_H,,$F8I%31M$TG.]/L'
    85 M=5_#%=%F,I^%(^4&S-ARDUG)7`RM)+-0F#0KQO=61+,-DYL9[-SDF06B3<I:
    86 M4)HJ&CO)%VE55**V;C9.ST"M<3EBNM\^TL9*&[1_Q]/]\H[-!A.R:?&].KJV
    87 M$."]C>%;J#DT/KH*?2:(9B<J-)ZX$Q.HZ^83VR5`,=!CZC-9<23'Y-`^P)>,
    88 M9]'#'<GT%@2?3'C,,8@6;W&'MXK)BV7NG%>D#@SSKW`,;4J+OK+Q+I!"P*JW
    89 M\LE>VSV*%>EF45IIQ9_U'F8SL5<V$S4Q`?D]XSMJRMN9,BC[P;+;'KG=5ZGJ
    90 M*L52`Z*9D;+_R%6_U6D126`0"6_:65O!JKU$'KB@L"9DP#R1=,M67=E^TR#K
    91 M0OYM9\W)T6(]I1CD/R36RAW-^'Z.]OUTS%#T3PH9%W/+]**N$U\.<^FY@403
    92 M=;->V0VBP5&T7"M1YW+().-_CE+I-=97X,VM5[S@,C%6%G&Q(A8ZLGE5*`O=
    93 M]HJ)8&NV:8/C:VJ*CEDF(UI:W9!W)>].>'>PLOO.Y7*6%'31ZDHWLR!=>=HB
    94 MT&SJ#`*U['5EW^T64A,J?K6ZD^Q`H2CN+FEP/K[NI.AA*UHAE73#DXQBDU!W
    95 MPWSO+!M4B7'V#!]AOW]:>*,ET"_D;%8VQ^[`S;IU2C59L5O`5-T$><]<?MF8
    96 MB@F90L9F=15"3;J1F[L_]PJ[&RE)YP.4_4*H84ROBB:Z$5=-[`T'SX^,R0O3
    97 M]*F.?;+\0+:EP3JV*Y87#I;4&=*]:09]O)!N/\M"')=OE_K&6+P>*T`V@=JB
    98 M.F7V`]M07O.XV$3[7'"Z\.M>?VO2/TD'CQ=W,BGEU@(4&B\'C_T-JW!I;@T8
    99 M,:3F4&UC+]R`+SN%??+%0S;)1?#?F6Q1]U?_F'P+R>#_<RW_IER+PON?2[/\
    100 M7TZO/#B5\E^;%WF(O#8+KYC?^*C42NY%PXG>1'DD?#*?9*S)&$12W_CYR"3*
    101 M1XZ_F*_X7YV(N4=)[\VA8#/[G\J?9$Y&GD;Y?>F3U@?3)VGV!,,ET]WZPS(G
    102 M?V#BI#)O\L!\`^T9'TPUI%.ZEFY0=_%/'7.#*;OAZ&.3#]4Y;)L;(PTE3<OL
    103 M/FW]#=.LF39,S7DO;=9PR.,,T;8J?:V<I_-%$`@W3W44[[IYBS$%6/B%K`=^
    104 M9TKVSG14L$'=49MB,/-I!J.://1JYHV7#*]&L\OUHTA9=/*,XS4,1OF%S;4<
    105 MQ]K',Q$^NG4!:'O)FFFF(8LH)B?"S;(A-3V2(NZ4O3=1*!8%`LH^E"J+O<G(
    106 MG++T8Q[]1>N4JP\"E<M%:D^JB\<AQ88C[9$*`E(W('\QH#)%2'\;_088$+C'
    107 M\@D>TQ,+?(9IZ5HSK#Q\UY_*ZDJ.;]I02#I$,B2(_$L>IAL'73?61?H#UAM/
    108 M)LJKLEYP^=AIM6CY8T3#*S&D(=U<D:-*TY/Z8UYZ**[&9*Z12>T30#`4!#OE
    109 M3UW4-.0GZOBRM3B<\FRH^;*KOKNA1;4RRX]<-?O5<3*HEF:OI`3I3YJ!4&2+
    110 M%:#W*&-*G[EO#JWS(;IC033+2L7+A_O%]<0J+.9X734EO/EH,4\J)%/6TZQE
    111 M^2*$AJF96/T*R;!^4?^:<(E1?EA&O#SZ3<Q`I=8;%KU><3M'5O1A#)MOAHOJ
    112 MLGH-@F57N+.5^_GKU]^^II7P7,<*T>4"]R*Q(#-35`@/*.*)I;JW"58N1;1M
    113 MULR'+9MVL,X7`[6X5LV;SM>NAK&^MF[J6:U#?55MPN.I5)?(3(((KSJMDJ*B
    114 M<($D1YZ!L>LF:>HZK$/6*/4;8ANOVJAK<9C;%=:D`9S(02SCGNR7%^FTIZ)_
    115 MOZ=;95[2)$U>Z0E!G2[1AI#H]5*Z_1/UY!=MJ#MMJ`W,[Y5:JDW,M.YGDVB$
    116 M/7WHY9;A3(S'\7KRX*OJW`%+[Z=(B4_4/#*#V7Y=_"*BY)E=Z[]LL3&\T:YT
    117 MGGM%JJ8<$F:+(U7+-MG-G+]@0?P-E&.F_P@&NC9"<4/;@DA-AK$-UZOWH*]I
    118 M$])?OYI+,YK9P@WHZFUT;9R01K9*LR]K6_Q6_2F/E`,(]VPU8OG*!"SJI$=?
    119 M_=&71[*_2>&8%KH#>T;3YF+NK#,:#9\;K\E$-YQ-Z#\"^M*Y!]E0]:ZFT^Q`
    120 M?G:0(R4.<M3M=N7FG]GKE]P-V7!(40.>N6%!2O!03!S"946+7CL/'/!N8H>U
    121 M<XP#.V6$%;Y8S=-[JYSXZ>TF?3876^8>FC[.L'EVK5`-=C+R73^?]@FHDXBH
    122 M6&4'0(6>L[A&;0=4D,XE"=(%($^RM]O/1SDIC6)R[R@F5:-8JB]@<:UMHOG.
    123 M<:<)_]Q6Z0Q-@:!BZ<`N"!3M25R][`X=LZ"519)5O`%1D;O"@HL$^-*QHFJ7
    124 MLUEP:(UCDFE891*CU,RHYN^ZE8?O_)_K+U_>KER<5PM(;K)=ZF"OY,.4/H18
    125 M_;K!*AFE/,:V/_U4EY7-O]ZW99*FQ0O%^#8>ET;++L,`=K?:[2YYM"I%M.K3
    126 M5GFUZ1]^,=XLT^YL25R66)(UD;:MSEYU)W)48U^(.?[T2!QXOLHQBH@:^K'2
    127 M%V\^C[;527A,&T:8QKZ0D1KP:=4WT_I`9T);)?QAN,25/J::`?,G40S;%W5X
    128 MN!?U].D.CQ.*UMZ5SR754L9*)D=]DGM'N3-8,;["R&BWR(>D__P(_G;++*SE
    129 MJ#.GRS@`&`Z&7.U</V0<J3`J1I..)2.:C>!AR"M\R0_&#1HW:>*C=57<'!2\
    130 M*AV/%RJK3B/+3/RKFZMG;1@&HGM_A3`9%-#0)+47HVR%3,6X'TO(8+!+;+!K
    131 M8A%H?WUUTDF67%&TM62RD8RMCZ>[]W36Z>AFP4B`T"N[6Q0_IS+(8N=JR\G=
    132 MECI>SNDLND*NCHJ94G-XXL05T=HP-\)J?DT^\6L>UQQS+LCKH7]HB&JW=8"5
    133 M&&?PGD6]8,?:V?\+6Z<D[Q^9MTG4GE%S9M^7ZB&QKM:RJZ%5_%EE4Y-C#ME4
    134 MEK#2PXYJKXU"XHTL0G,-8C\&\S!347C'Q1%P[2.*$.A-Z>]&H`:T]P-R<;BO
    135 MN=[&UFJ'CNQ:78!26[I&@1`!]86_-6BYSI>G.[O0&UH'<+#EL.\">\W#C!)H
    136 M..\\S"!;!DSU%7?H/J83J]N&2('\)1KRAI%+`M"&\D,E);^)9\)[^NIH.B"M
    137 ME6S@8$3#<<`"K#;E(QG/+2^EDIN5@1Q]_F[Y@JRGAMJC2>50)I]8YQY[^WUB
    138 M/T:(7U*)3896F.YV:?J09O?@%+=I!A\I'U]>RR?J)$?2.=,^)]'T-)G."4LN
    139 @_3(+F4WHM\WV.@V3F(3^[IP%"<9T=?<-^G938GA1````
     2M'XL("'Q2TE0``VTR-'-I+G)E<P#L7&M[VS:R_JY?@2C;+AE!CBC?(].[4:]I
     3MTS2->]O*:I:2(!L21<DD)=O)9G_[SHL++Q+EN$UWS]GG'.?)F,1E9C`8#&8&
     4MH,^^__39"\:8=TH@EM$%B_W==JNURYT;?LO?N'RTZ-3.3*LV6H4RFK+0KS^Y
     5M9N(FF"U"L9/>I/4.P\_CQRR]70@F$_8T&4K)V6P^4J_SE8BO8YF*#-NNPM:I
     6MV3Y/V-.S3YX]P[OJ](1=XSD*9G@NT$+I?"$B*HWF>(E%,%(OJ7J\19FB52RS
     7M9/=`-DF#=)DX(6=UX*^[FGUF!Z&($M=%JL5GBVQ_#1G8JM/O6Y$8G(1,28R0
     8M@9=;D2K>Q:C6RK`<`(L<B2!DTI\%-^K1:;NYY`_10@V)$1V/USMUWE:P;OO5
     9MN41!H=/1?9B+YM<9@VA0\[+^QVO],2L;DAK/8\48Z4[MVG;U6AF_3KVH)<1N
     10ME+*)OP]&J?<H2`-0#A9$>B1&+)VSL0PS)?&T8M($EO$4N"A@B46ZC$FT+$B(
     11M;Z@SC:93:]-_*Z7:FS:_?<-OV_SF#;^YY3>JTO!4R\@J31^&\T0X86G$1;)6
     12M;*K=*.NK]%K<B.&21J]8#]TU'%9G-9-:T53[$3'<AOH^>D0M1F(L(]6`WC/\
     13MZPK\&Z?56]?9RFF5D>80E;4XZWOP`7)1.HS96LX6;!7$N4W`$!>Q6,GY,E'3
     14MSX;S*!51^B3K?+1#G='363<\N<)[2F&G,@Q9G!6VE2I>B%1WKE(BXHGJ-5_C
     15M>#[3&K@Q"6=I$(V">(2YV*A,TM'X(IQMJ[N4X:"R[FHY3R6-]+E,TLH&BR!N
     16MD[!>X;FJ'IBW5EXEH9Q=5%.^B.=B$(FXLC(6R59V[QR'=V=M^\[:W3MK]^^L
     17MW:N6_(+65SJN%NSVJO$===="7ERF7W<K*\D0B532UE%528:]NIS66E5YFJ2O
     18M]3)]K=9$59M)P3"TE:U\_JS+ZA>TP<1!N!/*03U?"6V[/((P=.J+>#XL+)[V
     19M;K9X3).\2ED<O7[J6U>]6CYDODG;Y\NT9DS;^B!\LC?MO43N1.)Z!Q7$G_8[
     20MJ,I1KH>;^1[.:.'0ZR=N9K^ID=X<-\RX:\PXM2!#O@B&T^!"L"^T(*B`1LN>
     21MOOX%#-"2HNT])=4W3"8=EI<!2T2#K-&6/&8.BT[]9ON`T=IGT8EOGQ[X+>92
     22MD[<UIJRIPA.$B\N`^:KHO![P`1_R$1=\S"_X)6W/$S[E(9_QB,_Y@E_QF"<\
     23MY4N^XM=<#9F?UQM_2.^GO,L_X9_RS_CG_`O^)7_&O^)?\^?\&_Z"?\M?\N_X
     24M*W[&O^<_\!_Y3_QG_C?^RX?U/J=Y1&=(3\J.^AT$NHQ<!$=*WZ-2>>+OJ]^^
     25ME(VVJZJU"-%W[&@1]J3L^W["7/:6D/C`]TXUTE!-"Y7[K3("2Z>UKREY^_MK
     26MI`K$[D&-K5$%43OO.28S]Z3SG9K%S)R(G;(6,%(YZ9PF%`2\_<B)W*;7[S#C
     27MK3"'6K@Y2=WYA+4V.3:4!B*U2J:GB]8!*<`U*<*2%"(AQ;@B!9F3HLQ(8::D
     28M.)(4Z((429!"#4FQ@FRR_R@,OY`2_$S*\",IQ?>D'*](25Z2LKP@I7E.RO,5
     29M*=&7I$R?DU)]2LK5Y4\_'(-5NH)2D.3VVW8J]]M-TL%,M'FC4_)0]VRK]D%K
     30MK9F>,\C93%G3S%EIRC9TY%VMUM$M'*JME8VP-D`(<,HF*,3&_U#;&VN./$SO
     31M>5VA?Z"D<Z[?'@+\">`C@(\!_@S@`+@`CP`:`!R@";!3VVW3K]U=@#V`?8`#
     32M@$.`(X!C`GLM``\`/?;08P\]]M!C[Z#V&/C0B*$10R.&1@R-&!HQH&5`RX"6
     33M`2T%9_2C=HX3`+^VAP9[:+"'!OM`N0^4^T"Y#Y3[0+D/E/M`N8\>^^BQCQX'
     34MZ''@U;`UL;\`_!7@*4`7X!.`3P$^`_@<X`N`+P&>`7P%\#7`\]H!Z!Z`[@'H
     35M'H#N`>@>@.X!Z!Z`[B'H'H+30_0X1(]#]#A$C\.#VC?`A_")?0OP$N`[@%<`
     36M9P#?`_P`\"/`3P`_`_P-X!>`7NT0=`]!]Q!TCT#W"'2/0/<(=(]`]PATC\#I
     37M$7H<H<<1>ARCQ[%7(^4Y!\H^P*\`KP'^#A``#`"&`",``3`&N`"X!)``D]HQ
     38M2!^#]#%('X/T,4@?@_0Q2!\?(_QK`7@`;8!=IA8<@7V`VA3H0H`90`0P!U@`
     39M7`'$``E`"K`$6`%<`]P`W-:\UB'P'0&`K@>Z'NAZH.N!K@>Z'NAZ!P#HX:&'
     40MAQYM]&A[M3=`^!;@'P#O`/Y9\]I`TP::-M"T@89<`!@>+'N[8-MFP3[`0GWX
     41MIX\^_K/C/FKPYL[C%O7>VS\X/#I^TCGQ3__RUZ?=3S[][/,OOGSVU=?/OWGQ
     42M[<OO7IU]_\.//_W\MU]ZF*C^KZ__'@R&Y.!=7,K)-)Q%\\55G*3+U?7-[9NW
     43M_WCW3TM;V;)$OA'.0Y?Y/C/[DMTNC"%*/&VHWE5U\2J[T'!Z#WM>O[GK]=D=
     44MO=OOZ\T?]MK])EX:!4SOLY'!(/DQ")>B;"9)(&R8>V7#4U_MK@;5T&R@(DQ$
     45M7MK4Q>\C.)#1?";)NRP1-&Y@N6"J.:`N%W@-.X67F!R<PNMTZD^+[U'D1YU,
     46MC%/:@J+FU$B07GV\=@J"GIZ0IS&/V?0TTH:]\//X,>G="BP/@T0D&H=RH*=P
     47MBA[%!A%R,TX(QRL\\:>$/O3#QOJD^S&Y)%'#:X;NXS"?;2.S&$)[CP#'P3"=
     48MQ]LDR-9E]/AQ\\X?"OYGBR6%!G(>L;N;-IO9,-5\^&TU5*(:-AH;P_R=HY.#
     49M>10,AW+KZ,S@E)_N>YS^_3L'20[MKO9O(_Q:&^<E<3EN7'3(@/N,?EW0K\N-
     50M<5_>8]S3F9C-X]OMWHH1@7U:B7B0*;@U$P]\X\@:_B(?YL"X3L6&IY[Q=]\J
     51M1#Y,A]'B=S4;BJ$F0_DVCP6B/!1@HX$*WAT%0[$287,UET/1V.5&1.=U9)CU
     52MX):)&'$6I"R]%&PVGXDHY6QPRTBCY4H@2R6#02@26EDRG`]N4^$^.:]G[KJE
     53M[K'?2#Z=I[1<#!,4:\^'05K-R=FS%U_\\/SIJTH.\-_ZI([&1N%%@W;=79>-
     54MY`K[[]X]YCI:S@8B?BVV+V"E>10-4,AI9WPEAFS)A7I=]J)&N^^W.DS0DZ>?
     55M?-'PC$8X3*4LQ,@9D,7"INF6S1":#"^#.*_W$6F11#5OM(!I;:>P9>\R;3;;
     56M;RR290B/_;S>WC$Q`6)!IF-.6B@-_/;ENNW#>,4CKV5=>=5IIIO/3M%YYL^:
     57M=G*+H9CV3*AW;]9O+'NS1J;43$ECUJ?*1$V!0Y5NH5*8RH]*%3;XR,:B'QIZ
     58MB,Z25DW6%K)*E=(9LQ\WM)!TL\?FQ6NYO\JBN/)^M;MUM<V5DE)\IKGH>1R3
     59M:ADH&,]U>[K6_)YZM]AN6S/%2RGTO.(OBLH74XS:Y2]C$<I99T,?^"*O>(&]
     60MT6L]BO2JV*4`J:TJ%KT71EL7_J)!&A;[BTW]>5'0'Y);MR?[?ON1;'J=7+`?
     61MJM\+FBK[&,L-53?\M+0^5VKS`II0T&9HMQ[?FGZ_,/K=OD._8ZVEXJ,N/12T
     62M]\KHO9+C6IW0=5>/'$+J-A:]63.GG2DXJ:A"G#-:PID70V17#WSRZ9%QHZ?C
     63M2D;7%DQAUO6/U@_P52A<V$*SOJXV%J*B[E?3S%#J!WY<A5D_-,[KQWF:8@VY
     64MU[H3NZ.?R$HTG?S92,DMS'0^M6H[U4U=S''+3+&;MRQ0RM@U)DG+XJ4M*EJM
     65M=[]!XB7[M)#^0C:42K^K&&.K2G3G]5:US-:P&D-WM=WDK?%J;()U00H;Q^Y.
     66M;NW:/+**^[M-YIJM7,AMQO(>5I*(S<@%>7]X,E,9%CR1J8DN1!YO1*<S)3==
     67M#@,2^3,&Y3`M;4UFT@C)%5\H/2;JSLSE^B%R.];^KM2BHN5+OYIZI[^^1)*?
     68ME/O47RB"5QD&6F*Z!U_E?0H!CV'`3#!:KGI*G5?NSHYGG4$CJ=6]Q#8?+8?I
     69M9API1T7!Y2YMM<].HY4I!3?RC7;688R2A1@BWAF+@#@0U0Y\YB+S"4_3X@:5
     70MWE8>HA1_'C^^QE',0%"<(/3]B#DX!Q;%,04S.`[Z2;!KF5SBX`5NY#5+J'UZ
     71M"2JAG`HK!.?&\4B*+=>%L.G%Y3L[._P&*X8%L3KMS)S='69;JZ-Y38^H+^;A
     72M;:+&3\ZIB!/EJD+48@0A7,OT$GCDR`<!U?"A[8Y*=JQ1<(8@P"<J;<W&P]ZQ
     73M>B6*.^Q+$0T%)\FIBR&7.$>F+9,PX08%K;B8B=DBO=UAS\9$@@6CD<2\X'3(
     74MJB6UO"#W/>**G52-8F1N%SSD)")V+=AE0`X^SJL$="$5:#B6,?$*QF?!5&@&
     75M!,Q$FHWC4@XOJ6^"K@/RU&D)RT4HQ6BG9B<<2]7$-9D12;*#@[=&WS&G\['S
     76ML)?TR1<XKVONS^L(^BOJR.??W"H*"Q%M"[8T34TZ0O\D?M+T2B8:N9Q3[8$\
     77M5-UIQI/^VM%'(>]SNI9?0K`/B3ARY#8>6M3J_)#6EVT$D<D1FKY7X[768ZZ?
     78MF"[4V>!);Y611DF^,416S,1!;ER1`BKRJ;H:>=J&9DY0E:/-M^(R9BN)]T;T
     79M,2V#H5*I79V7N2NNSS:76\POEH6=>37?..,L%M`LI_/XO&YG,*N8T?(.1;'I
     80M+"`C<V/'D_F?:^>GNA4&Z&Z9.],#,R'O,WFEN5.="_,4#>=A4IZH?/1*NPN#
     81M+RT$4T+\;@Q)KR(]AQH'M%DW9F?,AYVWZFPR@WFE>2Q,,<O6$\1TA@41Q?/K
     82MQ#ES.9[5$,[<_C9YF;[W%5A97JKS=L7>4#[<D$E(RG%N`Y1AAFG,=KYM"IB)
     83M/\VM4AXB,&<"-V!RXIOMEYY-EHF5K8_*R?0F?7:"]#/U5"^G;#-CB>&N<*X&
     84MGEF,G3[?SS80LVR?]ZJO&Y01EP=-QM[;]%NS&=;:V5OU[V60,$M6T+1-I#G3
     85M[^[5?0-73)O)8AZ-E!LP9ZMM9B5S,;22S"-ATJP8WQL1S[=,;F:P<Y-G%H@V
     86M*1M!J54T=I(OTJJH1&W=;&S/0)UQ.6*ZVS[2QDH;='C+[7YYR^:#"=FTY$X=
     87MW5@(\-[&\"W4'!H?784^$T2S$Q4:3_R)"=1U\XGK$Z`8Z!'UF:PYDF-R:._A
     88M2R;S^/Z.I+T%P2<3GG`,HL5;W..MH@\H1Z]IBORUG0E3Y^BJ!WYYTK"\"U76
     89M\%?6F2V@JDYO=E4UUNZZ^<$*JGG+S6,"96GRL*(BZ6'$_A('Z*:TZ.4;OPC)
     90M#T4^'__&OE>LL*,MV8CBSV8/*X.U;5"IU(P\MO$M!M?.U%A9/I;=4\EW+)5D
     91MKUH2:D"D4U+V'_CJMSKG(@D,8A%,.QNV1[67R&`7EIH)=J!A)-WR?J1V+=,@
     92MZT*>>6?#/=-B/:7HZ3\DULJ]V'BMGO9:M:87/:N<CKT?>U[7*3N/^?3<0(J,
     93MNCDOW0;1X"A:;92H$T7DP/$_1ZE6)"S#+%@X+WG!V6.L+.)B12+T>GQ9*(O\
     94M]IIQ8QM6=8O+;FJ*+F4F(S(*W8AW)>].>'>PYC<LY&J>%G31Z4H_LWU=>=HB
     95MT&SJW`>U['5EW^\6DBHJ\G:ZD^PHI"CN+FEP/K[NI!@;*%H1E72CDXQBDU!W
     96MHWS7+V\%$N/L&3ZB?O^T\$9+H%_(-JUMZ]V!GW7KE&JR8K^`J;H),K:Y_+(Q
     97M%5-)A5S3^BJ$FG1C/W?<[A1V-U:2S@<H^X4@R6P:*@[JQEPU<;<<F3\P)B^R
     98MB5\=M669C6PSAG5L5RPO'(FITZ\[$R3Z8,1NG*M"!)IO]/JN6[(9Y4`V,[6Y
     99M=LKLSUQ#><-79!/M+<)=Q*\[/<5)_\0.'B_^9%+*"LY0:/PS//:WK,*5N>]@
     100MQ&#-H=J`G_LSONH4=OCG]]G>E[/_SC21NGG[QV2*2`;_GR7Z-V6)%-[_7(+H
     101M_W)BZ-Y)H/_:C,Y]Y+5=>,7,S`<EA7(O&D[T-LHC$9+Y)&--QB"6^J[2!Z9_
     102M/G#\Q4S+_^H4TAU*>F?V!YO9_U3F)W,R\@30[TO\M-Z;^+%Y'PR73'<KQ_*!
     103M.9\_,.53F?&Y9Z:$]HSW)DGLE&XD2M17!*>>N7N5W<T,L<E'Z@2YS8V1AI+:
     104M,K=/6W_#-&O:AM:<]VRSAD<>9X2V58EWY3R=+6<SX>=)FN(MO6`YI@`+OY"O
     105MP>],R=Z:C@HVJ#MJ+08SGV8PJLE]+Y5>!^GP<C2_V#Q$E44GSSA>P]DHOVJZ
     106MD>/8^.PGQM?"/@!M+UDSS31D$2?D1/A9-J2F1U+$;=E['4=B62"@[$.ILMB;
     107MC,PILY\AZ4]QIUQ]RJA<+E)[4ET\#BDV'&F/5!"0N@'YBS,J4X3T1]VO@0&!
     108M>R*?X-&>M>`#4D?7FF'EX;O^R%=7<GR-AT+2(9(A0>1?\C#=..BZL2[2G]Y>
     109M!S)57I7SG,M'7JM%RQ\C&EZ*(0WI^I(<59H>ZX\%]CA?C<FDJJ3V"2`8"H*]
     110M\D<Z:AKRNP#X)K<XG/)LJ/ERJ[X8HD6U-LL/?#7[U7$RJ)9FKZ0$]L=F(!39
     111M8@7H/<B8TK<%MH?6^1#]L2":9:7BY6L)Q?7$*BSF>%,U);SY>+E(*R13UM.L
     112M9?D*AX;63*Q_/V58/Z]_3;C$*#_F(UX>_"9FH%*;#8M>K[A9()][/X;-U\Y%
     113M=5F_P,&RR^?9ROWLU:MO7]%*^%S'"O'%$C<ZL2`S4U0(#RCB2:2Z<0I6+D2\
     114M8];,^RV;=K#.E@.UN-;-F\[7KH>QH;9NZEFM0WW);L*3J537WTR""*\ZK6)1
     115M4;A`DB//P-AUDS3U/=8A:V3]AL3%JS;J6ASF7H@S:0`G<A"KI"?[Y44Z[:GH
     116M/^SI5IF7-+')*STAJ-,EVA`2O9ZEVS]13V'1AOK3AMK`PEZII=K$3.M^-HE&
     117MV-/[7LL9SL5XG&PF#[ZJSATP>[-&2GQ<%Y`9S/;KXK<<)<_L2O])CJWAC7:E
     118M\]PK4C7ED#!;'%8MVV0W<_YF2^)OH!PS_=<[T+41B6O:%H0U&<8V7*W?X+ZB
     119M34A_MVNN^VAF"W>WJ[?1C7%"&MDJS;X);O$;]3=(+`<0[K/UB.4K$["H,RI]
     120M:4E?>\G^F(9G6N@.[!.:-A]SYSRCT?"%\9I,=,/9A/XCH.^8&5/*3S94O:OI
     121M-#M0F!U!28DC*'4O7[GYS]S-Z_F&;#2DJ`'/W+`@)7@H)@[ALJ)%KYT'#G@W
     122ML</&.<:!:QEAA6]M\_3>.B>AO9>E3Q43Q]R@T\<9+L\N1*K!3D:A'^;3/@%U
     123M$A$5J^P`J-!S%M>H[8`*[%R2('T`\B1[N_U\E)/2*"9WCF)2-8J5^G87%_(F
     124MFN\<MTWXY[9*9V@*!!5+!VY!H&A/XNIEM_^8`ZTLDJSB#8B*W!467"S`EXX5
     125M5;N<S8)#:QR33,,JDQBE9D8U?]=]0OR%@L_U-SMOUJ[\JP4DM]DN=;!7\F%*
     126MGW"L?Y?AE(Q2'F.['W^LR\KF7^_;,K5I\4(QONK'==>RRS"`W:UVNTL>K4H1
     127MK?NT55ZM_9,UQIMEVITMB<L1*[(FTG75J;'N1(YJ$@JQP!]-269!J'*,(J:&
     128M8:+T)5@LXAUUAI_0AA'9V!<R4@,^K?K:6Q_H3&BKA#\,E[C2QU0S8/Z8BV'[
     129MO`X/][QNGV[Q.,&Q;OE<4BUEK&1RU">Y=Y0[@Q7C*XR,=HM\2/H/I^"OSLS_
     130MU<W5\S8(`]$]OX*B#H[$T":%)7*V2IDJ1#^6*`,25`$)BH(5J?WU]=EWQB9N
     131MZZU5IR`[,C[[^?R>#U^_F)HVI`L)`)@#)OO)=8@=-!@>:\@6\U)C05CC'B[Y
     132MHV[0;4LD7EU"\6M1D#OA<:O2%XUT.Z&CFWD2>0B]\KMY?CF57A8[51M.;O?4
     133MVN4L8W$KY.J2&Y72M8\#5T3K-K$CK/11]8&?-V'=H6\/'`O=ZTY,;UL[6(EA
     134M#N]15#-VK#?[/^'KE.3])?<VBLIQ:M;LNU+=)];56K8UM(H_JS1P<LPA#\P<
     135M5GK84>TU04C\)XN0?KW8#\$\S%00WG%Q>+;V`44(6%.XIQ&H`<USCUP<GBNN
     136MC[&UVF%#<BY/0*D-76-`B(#ZPM<:K%ANYO=26U\+C04X.'+8MIZSYGY""72<
     137MMPYFD"T#IKJ26W0?$Z%531U)@?PAZN@%(Y<10!O*=Z64_!3/A':Z<D\&2&\E
     138M.]B3:-CW6(#55#Y$P['AA51RDS*0H\]?#5^0]8RH/;I4#F7R'\N-P]Z^G]BW
     139M`>*73&(S02_,UNLTO4NS&]@45VD&+RGNGYZ+!V:E==+9WMY'47<L'H]Q$I^Z
     140?>?XTDXEPE6UU`BDQ"OW>*7\3C.GUXA.6;?MZ,5(`````
    140141`
    141142end
  • Tst/Short/countedref_s.res.gz.uu

    r7023ce rdbf609  
    1 begin 644 countedref_s.res.gz
    2 M'XL(""2\@U(``V-O=6YT961R969?<RYR97,`S7UM<QLYDN9W_8I:Q46,U.9H
    3 M"D`!5;"&O)C9EXB^V-C=V)EO';TV)94LMBE2)BE;\L3^]\L$JI`/BD5*[AWW
    4 MG:-;)`N)1&8BD<A,O-1?_OI//_Y;411J5OSA#\6_+);MV^)Z_;C:M3>;]O;=
    5 M]F*WW9W\I0/2%PSTUW:[VQ:WZTU!$.VF75VWQ7QU4VSOYIOVIKB9[^;%[OFA
    6 MW:9ZYJ+XUQ__7)P2KHOEXNKT,I54LX(>OENL%KNS\\L3_BQFLYR"5?OE8KN;
    7 M"QEV5J3O[J+8/F]W[?W9::+F]%P:J&>I/-*'A0T@\A?INRKANX+OD7_A^N[Q
    8 M[G&JZH10$:.+U:[XN/ZXSIY7TI"R%T,,#"ZP+O3$=K=9K#Z<<;D0K&HF8+RH
    9 M"4WW3U6="OSL4!T-?&K@4Q.?#!G0I(=&>-#5Q8!`:4]3[P!_B[M%,>VP]1`.
    10 M,!%'#),W!?VB_0B`*6>I?2K+VC=**AMBA*&*S;2</$UN'A(-!K@QQ,WJ\?ZJ
    11 MW8Q@(VZ"6/<*@`G3,?$FLFFJ5$",C!?X6/!#9$TWOB^I2L%;J8CW!Z4)IDRU
    12 M*ST+$GVC2GJ>2*I,U]K@,2A?9:67*P??ZZBXZZM?BJGR24Q5@YWY$(H92`""
    13 M=LUWU!E79UP^*4Z9M-/)Z:<O[:<O,-HL:)M5K,C/N[OUZMWF<75V>M/>%O?/
    14 M#QN6]0_SS8?M^=LB_"KX!V()8[!KL*L!I6:_E"BZ?5Q=OUO-[]$RV`K((;%\
    15 M7"R716#@`1FTT,^V?@$[_;AZ_M/J^=]W=^WFWP;M-:\G#6R1*[G:<K&-0WL2
    16 M_T1M[$%@Z#H2#TO^RR?^C^1_>0*_$A1HOZM&!KNSL_U1YT@4IS=S0GDS3\_J
    17 MJ(I3;C2V1[;T?Q?OB;OW9VS8SDECWL?!^KY8;(O5>E=L'Q\>UALR\!&X?7IH
    18 MK^E7K,7P_'FD['Z>BC<;FH?6U]>/&YY[%JN"?EZU-#FU121QN5BU1.;;XGU.
    19 MY_O$`NGXZ=VBW1#M_)&>^]F^8.IR1#`UF)R:.H`GO_5M;QK3^$D@(/VZB@-O
    20 MU3ZNOK9W*V(0AE^=V5+ZIHII#RE`;@"D"0G#"@1U$@\P>FBF>0E8VIJT[HQ+
    21 M)XR#_QBV>/ZDZ/[O`9N2QSQ#3I5+J!K0PD:_%A6)@G6[6/(_HCLHNJHGRHA^
    22 M-]6^%&*%RQ.:*7_X@9X1>^0[L*7GXA]^2'6C!$4DH)V])(.&<L/_[_2SL:2?
    23 M2&?2SB;V;M]O_Y^2[R+Y'95"?#WKI@,:6O21GH/:-6#L?'D1V6=1\!]S>?*3
    24 M^ODM$T/C[2?=?34GK$PGH$@>AJ`/4P2CH+I3&4W>_&KL40/?M4^[S?QZQZJM
    25 MS_O.@(+4`T$=D_Q?)T1?O<V0=:TD87J[1X3Z^Q-A]XE02`1,A[Z&GJ/9K1_(
    26 M:1A/M`QB[W$0+^EK',0]@"K%\5$EV1(&@?Y)W:-/$A2Y0:<,QD6GE\5)_ST!
    27 M&$#9&=IVN>.&(Z0T3K*E$G*;TA-BM(.:&H&K`6-SF$@C1`8'Z1]3///V[;;=
    28 M+3@>X;H3/1%#ISCN>!FC"J':D`..34ZW'Q</Q9<-H3^]_$."F3:7)U*2*IA1
    29 M-"2FD1&KE)V]AC07IM*[19A*[Q;I>9W,_)35(F.:;,%R&6A(PN>8)3R;IAA*
    30 MZ9*?C;5/0]?TE/3`8@X41S/INX'O%09B#_--4(PE2H-C&2ZX/$F3O>+HA9]!
    31 M?*=T?8@V-49<`\3YY"XPTA%W01D8&$8F627!34'1S=G3Y'GR]7RR?!B;%&5&
    32 M5!#Y*(Y\'M;+Y^*!6']Z\_SF:V+)6`!SF:3BV'T04!@4A@;%0]"3@"Y)C0.>
    33 M_GM5=H1_(C21\DAW7PZ=5^D>7[!B_]E301;LIEWM%K?DL`5C=[M9WQ?!N-$@
    34 M9^PGWV3WJ"$R?*&E]ZEMD%0ET8+B((H&<0@_-Z+(%2O&".L5B2<*^8'%+%HS
    35 M"*X>>L$^@"A`;!P_]<U^DF:M2NBG2IYJJ&BR[DO-"'`%P!(A*NNB\(LWL=:O
    36 MZ(1OZ@/KNCY(#::^L*!CM@&R?A.Z&J1K0!CTD"M'%<.IV9#>H"%OZ@1!O17B
    37 MS[Z\?TX:F/(7_0B_>6F$NZK3B-OIDW[SK-]\U6_RP>U@<#O7V8"GA^F30/1*
    38 M^_PP?9:G3??TZ\,4L&53^VU4+V&"0R8I?J*OTR?1/8Z=I/292Y^A5&/I5R[]
    39 M"J4DGNWC%;D:MY.G"?75QS-&<,YR>B#Y&V+<?$W058+FF9>D^7``T(X",N8]
    40 M4'&'5%U?_(K.JGN1=B98F/.#J*>>"N=-E&D=-"E9FD9UZO)IVIO5T?8_0?N-
    41 M[C%]9P/;Z.A9UC)V./H;Y;V+^`+'WW=H-YW3S4T)7?:WDHG=EPEH5$,:M6J_
    42 M;'>;1_+$3^^?XS=.,[$KNY@$C_87R1PI"*P4!U9]%<Z6I@2L\C%]^GC!J5EP
    43 M8R"(4C&("E!92E!Q%!4K0SI4<804P0409A+ONI"L4^=M-!(Y?`WP(5FV15OH
    44 M??_H8B%!G2[+(:0NU<6`%EV*#ZC+;#K<=HY?SU(/%/F)SE__S%[L/W,CSXB1
    45 M#BTG;ONGU#4=G$HQC.;P(%+ZR[0\65"%OD2)VZ=A$4(K8(77&Z)?37_6M_QW
    46 MVT=??0A&OG;2#PT+$3I?B%BN^YA,4$DU!]6(NPA,WNYX@#;T>+5JH+Z'^IG;
    47 MKX.+#T70S>S09Y3U[?:?@03^K=-O'WZ;]#N1H\GFI9%Q+VS"$H?FZ.!^2ZHF
    48 M/<C1`#WZ1>)!S<$`=$`<K'T/W&]%\+H&U(WTH);LAS9EWB$K^I(Z)*).^&"5
    49 M0W,@$*%#CQ!]I$A)J,;,,A0$0WI.<\+-NMVN?D<&Y,MZ\U$ZP8"*F$Q%^%N,
    50 MGG-T0E27B5SN@F6II0"XYP@A4BN=&$E.,9;F:"%G>PC9`<)JB>;5DB&QNIB*
    51 M9`12]W3J@0G4E3G>LI*F04ZPK**K@:G;;-M/PZ!75S54"+:.P:08M`*6330O
    52 MFW`B]WK]\!Q':\=&J@E^OV:_OX/LM4*2UIJ=_B[R[(!&@D]M+>!S*<>CZFFR
    53 M+Y6PQ5YZMPJ\O5,U)((R*+`&O-3!H,<-296H=CQU$3QG]J37'(P&7@'),=;'
    54 M,<*@=]5`A0(/$5L/`@)Q,2XF:LA6R12I73T[2(+R8S2`1%R02)`AR=F'C*HT
    55 M7X<LB/*$`ZPC+$#H^@C_T'A*;FI8CM"UA+FZ)J7N-23XUHR5YQ+NTP0$,P,[
    56 MP-+[ON_]>M),O/0^+#GH.O:^'Z.U&2&U@>'.ZPU<EV5O$W9V9P]AM&,8@?D&
    57 MF&]LTG4MYK[96VHQ9&`RB#JN-]"3]OYA]QR02&O`.^2]->>]0_R7X?(JX7K!
    58 M#YU_GB^6\ZMERZYF[X]>KU>[]FGW;2XI-=JM1)CDDVH/1L4;$4R%`QRL&SN#
    59 MN!ED&H`AL:8YEPT0?R(0_I1R$G1\(*Z2KY/!XB)J+F)(Y<VL:P[&"Z>=CU0R
    60 MD'4V[#?&1L5,&DXR!Q+SIP:JB=H8=A%QR(0VP[Z670)Q4#4L*!<O"=2$5#,5
    61 MO\[=,J7D)`SGE$'2NNN,A)JSR4.*]6"4&]4)0;]$0*I@N@J=@Y>>5_(<HPK#
    62 M^66I($LO1KDC38,]@[9KX%Y<+:-\)@F#WKEAUS,\1>_<L-?9PQJ!U0(KS8+S
    63 M:#2HA+;PW64!W8XW4G4A71?1#0(Z`WZC8;]1JA3BGQN=Y0IV,;J"<D@A&TXA
    64 M[[HP2@:*,7H6,'9A2)V>`UL&V&+7L)/F;KN]RUH##>>M,5S.060AW6T:`.$4
    65 M^$C+[-MQ52[QF>]B($-L.$,<9/=YOD2&V)/K"%P$>3"`E%99*0V+!820IK+0
    66 M`'5:!P-K\Z:"GF$7+M8'S>7<;:B7/;7$5:1$.+7`CI7PSMAD:YFW8!BL@[G4
    67 M6.%B^9_,XQ)YM&)DEY%^!I)BZ";>V=+!1`-$*CPA!Q*:@AYCIRVBZH<D@8L]
    68 ML#(HV%U;1AF\",H17B"_A[0N`?H$)5.1<6&S3[%=W[?D%5\]?OC`R:WK]?W]
    69 M?'6S35"@M,Y&7;FYNNP^Q0*X;&Z_N8K^-4$F@'H/0`<(5!S7[`&9`1HPSG69
    70 M=B\&T$G<^'@N,;%AURX'V<[OVTE$S9LJ$J`^`J@S2',$DKN\3)#5(4B=@<%H
    71 MJ=V0I>7B8_MEL1VEN1[B'P#G=#<O0)L,VH]!CQ#!3N5!P(R`9J\O`#)KO-GK
    72 MC!XR@]KKB!XJ$V\CD:9AOS2O<AIG[]/<RV!/=01N"`4VK&F&F'E7&L'?7"60
    73 M@4CU"(R'J<:K(<IV]7C?;N:[]KR83H>XI!!DY/<D>1C'(11[8@84_Y"C,(=P
    74 M0!]`8M-P8K.SL??M?99+,%ZB82IC6T$?4MI@J0F&E_PO^BY&UXNMJ$JQ%02S
    75 M;RFJ4K0S`,2A&O&I!*0/`.D,RAR`0NM0E=485*Z\56F!!9>S(,-W2&4].PR8
    76 M4]H<@309I-^'W&M8E0>`LD:5.@"5-:CT&%2P`$DZRHS#9"*$I&VE;"["T=%?
    77 M*3?;AQK"U("UR;&&40VCBP60QKHP"-JI!]HY.D@CFK'Q5>F!2`_5/U1='ZS^
    78 M#UC]P/"NP'FO\GTA5"EZ`C!V*\X$CXZ/.+6DGM/NB';FTU`%GGZEF^C9/%ZU
    79 M3P^;=KM=K%?;5.@AS<*[K<0IK=C1[X))=IS[I^Q:T0-.EH=\EFR[JH+?W\5_
    80 M!$(0PQBY"AGD@"]%8,F?K2!=7$%,P&UHC+`JB`HJC@JZUCIZ`*X!.'\Q;#D%
    81 M9Q7D?JLJ)(.8+030`&`RTD+:)K2?VHT102A2E3P%\P4;YJNJWJ.LDH:!A<HG
    82 MR@3``NDV2ULSSFX=9D`?9W:E5,+1RNYWCTEE'5-YZ\`3YW3WNA^L!.R[J*P$
    83 MTY5%);22@*L<L,8;TSMMM#%\(=AS`87^85^>H#B9QP@%IIKUSVMY:,-#B!1.
    84 M8#-8#\1CCS'9Q+@#9APPPRE73JO3_\1/3@`G7/L$$A?OC0YVT$,)!)]5#:S5
    85 M0?4LYH^J&D9-+:,F])6+HA(Y08ZURG*LRV4]#34$M(G][3@_CO2`J6[*J)%U
    86 MMOLUE2J`E%BT:LS^6O3V+BU%2\JB`G>U8G>U`XV?%.`U`@F,-<(8P[#!W8<G
    87 M[N*#Q;04BH$W7R(6/RVR^IQ0Y0=9YJ."[&;%V4VN>)GE&RKP_BKV_O8%H5D2
    88 MK$,D$Q$%[):M>'F[!TZ\\4F=OAR,AO?(1EB$$((MYRP%P06)=AK!!$+-1MI2
    89 M(%1IV);"O^6U<039WDE"QK*_)\B&A1:PB%/,JQ<E`>8$2]LQI@X@2%(#R/S%
    90 M7JO]!&O17TLPU$#GK$RGP\)2"F7NM<&A$WFSH(H,7Z*,G;KP4%9?+#MQ`PI]
    91 M*D.9E8,R$)F2N<6J-!1RIGBCOU+2+`A)R6*"A5-]ED_U#?LS<8U.TS<+#Z0'
    92 MSI,-)P.[J.:99Q3,F5GVF\*$P&60JK+L*'7/V')U=:6XAA8:D$Y?XSP?(9P/
    93 M34WL&SEKREEJ`A^+[;-&'VHFV1-KS%@SC>"KH!EX#/UN'-ASPO/O_](A?!='
    94 M:]^RM!F"RCU((P"--&JD35D'`78&<YD%E\I6LN?$5AJ^&]Y]N;ZF<?NPG%^W
    95 M/"T6R[OM)!XQNMN>%W_CW[PX?;>]+/X[5:P`>=A8$.L+/1-RHI+QM)4#^&`\
    96 MAY).+HVM@&E\+%.#M>5XAZHTUUNK7B,D6&*WUHS1E3P.:U$#X#%H`'M@TEH!
    97 M1ZHL.%^6G:\QVL17LW94ZUU?[,I16F#MW/+:><Q"!+CS`-B7P2CGG.J+_Q*P
    98 MQ<E,]BA;]M"85JFAA"HX,1#<(0(\']G*2/%/VLMH73A*<#FD0]:-$F#87T)\
    99 M+H,4I\UE1C'[?!EA0^IJ-=SOGTJTS"2?.<C`L<N)U\^?:>88$U-=C1"?6O#2
    100 M@F4D0S@H[Z2*C[+,]6<B84`7^U6!L/3$]\0`!5U94T+$N*>$31`-&W&T[\VH
    101 M6/9ZD\JD-V%IWL+2O&TL?(=ILZGA>]/OQ=6#D]\6W$7+[B)L0!75A)V0UJ>9
    102 MH'AXQ\Z6X/)`H@<2V4>,S9MA\^`26G8)&>7WWF=*#?$&=F[I?6H;O(?@;O;[
    103 MUN7,EH/%<<>+XY%6DM-)>JH!0L[6.%@3=V5_N#JD0&(.B%,QTHS#3*@<`@5"
    104 MCF527?ER)M7!DKA3+V12W3"_-Y9)=</TWF@FU0T3?*.95*=>D4EURKZ<P'3#
    105 MS-]H`M.ID?SJ"%4CN=5]JD"PX'DZK6`;TV9\7X/3H#XZ9``VK]QAX'0U&U[M
    106 M<&R?O=,6FG*A*392,.@=>)E.-P-J6.N/T@-R,.F`$]'V_.(>?`=^IPN;.;GA
    107 M[VL2J!TR"=S0^]2R`2JJL9,L#CQ79]PW2@@V@3HCV1=G,)7$'V2,TT$45Y7]
    108 MX"8I/B5DO`.@([#X),`:@+^S`,.!L;ZQ),2PZV!?<++=(.?"CG*1["&<O7%5
    109 M#2B>!878<5?YT5ZSY6\G%5N.2<6.]I;5HQQ9T$,[KH?L/W=GEN@O:(L=;M!C
    110 M76(8@8B^4-8-O+=AA#S?0WYOF?FXY0X$%K:Y[O/MU#[QG$7=)SZ<'"-(5J!O
    111 M)O^;J'>FHYZ:$OJKWTAVKMJ7'1@IWJ$[)L<1)7"C2N!^*R5P^TI0@_M52S3N
    112 M:@W?3=HY.BDV$Z`<4LP.4LR\8#0V%7/8,'Y7DJOKSJ5'N\PQPV".ZTMB[/"]
    113 M!5;[,(&)N)JR(_-[:WQ3AI:Y)6E<_29,-VK(-(S^=#K$A6M5(#Y].CHQ<\)^
    114 M7_,;VP=RW]V$A&-P?5O"FOMM1.J&(JU'1=I\DTA]TD6Q,+X<D[-7OY':>K6O
    115 MMK#VX7CMXS1<%,671O%G*@%3PJ%MN$/IRZ=XMQ1]264.X&HP.=N[]6:7S(X8
    116 M'0A"G>_6>M=\0N[(M1]U6<YZ0#X%(6G?NA0_NB[U"^CZ3I/\;PV[NFN.8/]`
    117 M7OM_;.:[Q?5\6;1/\_N'9;M]6US/K^_:!$?R:*_OUI+7JCF>A16B[:=0@1>(
    118 M^@VSO%5?EHEJN%6D+ILNO1HJW;S;?GJD.F<=DO@TGON<;SZ<2S62WM_Z'QS@
    119 M%L7BMC@C&-X_47).=M/N'C>KXJP\EZ1LS:<)"TC//;84JH5&+@*5/Q&&E"BJ
    120 M5=4C[N+"4&-2/*XHKCGG1GH45.V_-+63".0%CB+1P->\!5`YFUCS)A2A2\*I
    121 M&O:6G"Y6V]U\N0S"%+F>T9],7I-"$LEUV%O2R2\62Y&&9F2+0+B&L@M9`0_;
    122 MR5`_RH8@&%#*+2!S<:?I;KI;W+<;@:EG17=V]Y?)Q\E*"F@HA-N_RE*>\0YB
    123 M:F%Z5KY="1V\>E'P_9MG!9]>*R_IXX\K^OOFS;DH`>_SIG\?>3T[ZM`"4!@N
    124 M3-+FA8I78+3',-8YQN95&/T1C)7*,')L]S+&RAS#:'.,[E48ZV,8?8;1OJIG
    125 M[+&>L7G/V%?UC#W6,S;O&?NJGK''>L;E/>->U3/N6,^XO&?<JWK&'>L9E_<,
    126 M^-(U^-(U^-)UW=W>RB.6U]3"R"U^+P.<7>KA@*[[)<UKOMN(QND;)434.1\J
    127 M\#'=8Z2.C!"&GQ:\(>IL\5\:D.2<-.6K<#:B9!%OPM?D&M94K\-G#^++]:MI
    128 M7H?/'\+G<^WR^E7XO#F(+]<M_[H^\?407](3GW5(4[ZJ0YKR4(<TI<GQO:I#
    129 MFO)0AS1EG>-[58<TY:$.:536(8UZ58<TZE"'-,KF^,1K;)2LX31P=JN!_0T-
    130 M9)D;SC+W0U:/#-D&)O@&+O]JX(16`R>T&AU.;P<+(#CJ_IF69T`<G.%O./4+
    131 MOM_5S4W:(G7S-.G<B[O%A[O^^W(-=^0VG`FF.L7-8OY!'LKBV==VLYZ64L+'
    132 M[`CT@C%.N5"*JJZ(&AB4V*Z$*`K&-15`1YC`,]_Q?;:8EED7)Q`2P6JJH;Z?
    133 M=:[KW7RQ.NM(9C>UA^";OY*"\/R^QRO/WT`<5>9ODJ1O>`X7EJE<2NH+X3@K
    134 M\!?)\60`$3?/Q$D/85V_L:`JG(,<6/V&$Y`@G%XV1>*45_43IW$&YJ9Y,`3A
    135 M#.CP0(<+UZN&]D"1X9+?QLF*Y&+7;J:9!%VXU^_+W6+9!C>;(5B&YS`V717/
    136 MG?9E4ME*`;NW7,Z"%H`P/H16&*^NCUS"U<;OJ&O/@$AL/5B:;1=AM[Q3A#SX
    137 M-]V%WHG>-SQRDM5M:@61RF*GIOO$U28#*2,(J8-`P%`/LR[',KF44C%3F6B.
    138 MTRD1.V6"WQ3`)-%R3D].B[=%NMB^B9,LP_.?-QEX>4[0YP#+]C")-$RGO;I2
    139 MW7.^JP.K1Y9$>1I4'I]R_4'J.M<-6-9NX@4_.6+Q.AH/(X"7MG.C5J)5XWT_
    140 MP:2%G4"9/>-SW@P>E%\L13C>S4]8Y&#/^,1,?!Y&-Q0T?0$/;G@N8:(O95[P
    141 M8;4ZF:+R+-``ELAS>N!OZ8>Y$"HOTU-[W!3YLCY@BCS/I6.FR"MUP!1YGB[_
    142 M._V0A(M7-B8B_JF=7^\6G^>[MCB]7LZW6\Y*G!9?YL^38C?_V!:[]9HO5OE0
    143 MG-W/5\]\\\>"M">AX:/'(CG/2\`#J^9YP9?[,.S<V-^<,8>]-IX#]&,6T&NP
    144 M]5Z'X<,8IEV/A-X4]G7T%L)3W#GB>7).<M%NQ#1Z+4;(ZSTC5(8-:KD)\OI;
    145 M3%!?*4;4$=N(^?$QJ([E^[;'&[$]WARU/=Z@[?'50=M3CAH?7QTR/N6^]?$5
    146 M6A]??:/U\158'P_G&KR5"<O;W-;L]3Y,M]Z&N2D;B7`GI>>)-2QX\&TDY$3Q
    147 M=LR0!GW/W\/=QR$;Q3<?<RZ48;\I3^K#+92#)MZGYNOHH%V58@?@:+3GF?R,
    148 M"D-_PG!S8I<9*V0MO5-8U$QE@ZGGR)J1L9H-+J+Q/,]S&?5&$<N@'M@/!\+C
    149 MV;O'ASM?/2^(=<APJZJ'BVE\=TKBK$=PGIV']QQA]\6L(4R4.(<>KJCQ''0#
    150 M&6FCFJ\-D*%+>0[\Q+4L%@16#$OF+`&L5<_ZM3$A`QBJLYMVIA3(I%]:KOWR
    151 M33G8BDC`$X81_6W4WI:X;,^H;\2W]`TH.^]K8Z$M^]W%1G#:?,'!G.SGPGU<
    152 M(U&PT]<W]4NT@`C@$AHO9R>$G+0WUOO!ED<[1H[7'3E6'ID7R('%!0\G:SV<
    153 MK%TN#?2'KZ%"V*;#RP`$(Q!P)VO);H$08/8(((BCK/7K!'#O..QZHQ\F=2$A
    154 MGZ:C8U12(1A?*$0TAI:JDQ<:JZ`Q-WN)?KR4/%X5\U/U,UP&7)8HD'#+.$.$
    155 M0V9PM[EZE1R8]FJ/RG!#3)1"15*`2R5+95Z#EHU1CU<,$]5&(2JX4K)DCR::
    156 M8@V-H2PX@T"EG9UY_^X]H/6]M8K%YX-R70[*97,L%<(]F:76V(@'%*+YT,J@
    157 M[S2RI^W%T&#10X<0=3I1!Q!-6I^/HR\5^-G>B#;T3R#,X%)U+A4.#/)IX!KU
    158 MTAC\48V0C?>'EP;'\N!X&Y7*[L[E<ON\NIYFB)H9F,A8V<!U<@3A<R;@2D@3
    159 M?LN5D*"Q<-:!?L2+]<ZDH3"8XY4K$P>-5?H;&BNR^R<!-`R#[JG&IPX(S-Y>
    160 MD$T4P>`Q;0U29O].E#5``RH?7%I(/Z*=43\G6C(I?4N7'*,%Y&'CNB_IQ]\9
    161 M+VHY>ZJ=[R=^Y=_!JV3,XE;*=;\E[W;#V/KJJ3])"&<J"8SL!)455^LG>(AC
    162 MS.))HFD.%P88GVD$KL.F:;[^<F]9G@I]7^&/7#J3:@Y'C0M[?"\6^?6']!SG
    163 M1Q>654=Q59&$`S=["1RRZ>0."3Z,=GK7+A]84-VS/V[:V]FDN+BX.'];M$^[
    164 MEGKMIN"7;.T6Z]5\N=@]YV\N_`->5!=J4_,YLK@_/*G.[[N7Q17K6T&S+1[6
    165 M%-UP.+E;'\`#EQ)$/(^KQ:?'MD?'9'4[/IX9SSB2I(8]DNN[]OKCMOARU_)+
    166 MQV*MXFY.\V+;K@K.$WR(+X')\72"$Z9"=+8M=G>DZXL5$7,_9Y$5]^UV.__0
    167 M[B/H;Y[H$<RO=X\4X/-CD0N1\3S&B9KUN]SYEYZ=$X)=>J]D%,,U;.5<7_W2
    168 M7N^VH@8XS\-9;OKANQ',UV/#U4RJY`@EY*P*G,QK";_B/6'%XE*P\7D>/DU0
    169 M+'E%\)2D^98(_'AZ6:P?VM794L&HX>@EO&+EC`.$3X]K_L:#:Q$NG>&_Y^<(
    170 MCW,_AS5?YHO=[6+37]Y,R"=\VA=V[A.<BSF:^>;#(MS_.K\94$&2X<)+/#LD
    171 M]V@)7)/<$P8?<<T)QN<P>@2F08L`+P&C'R'JQ\L%&0E*@$.AZ^5ZV^8L-"B8
    172 M!GV^QN6=.T%WIZG'^K?);N1*72SE_O4]S-G580_SK+S7M7B3>LF9UM=T+8=*
    173 MHUV[EXH+$'*'?\DQ5.QSZ&#.O4+G[?><=_G5CWWOR&DN@B&9CO00;-RB'S3B
    174 M%G!\6X5W.0WI4;`[BW[($L;5_/HC#_UI_^XWN>!.9:]P"N]PZJ%'7]V%K5FL
    175 MZ/9:"Z=F^Q]P&$YE[W@*+WF2*I@S40JCJO#N)@&<.L''8=4^U6Z,:-6_!T3@
    176 M4Q$*0E4Y5<$3^3,]^+UH^M5F_;%=?>,+"0@S>2F`^KVTB0(-L=?W(<`=)`#[
    177 MA4.[WA!`M!#>'-79`'RS07A[5'8P(#,"V?NBP@NCXF6.T-DZ;J@OWH2B@E?)
    178 M_O2X6],D2>S\[J;MD=/P_)V\Z)7J57V]ZO)$*WE.XJPZ;-ESAY2`QZVTO&*M
    179 MNT]\4DTLC)7N%E!X79F*\=U/]/1GSA&EQ\BNZ5W>#=0[].*9!%#-#KTY*KPZ
    180 MJAMM3^%R"E@TH5(7:YX]A0/&?&HH%=6'BYK#13@,JQ(D!D?857B3%'7:/[*[
    181 MQ)QMR<DHVMM;="M4U=^X>7TW7WUH[UNAFX_PR%.XW#D!X`"I7+<.L6T[NX]W
    182 M_$QZ.Q_.RG>A.Z\3I52Z4A6J.T=;"5-/Q:2`,Y(JO"M*"`3KV`-`=IY^J%P<
    183 M-XO;2-^N^#S?+.;L"Y*#&X6Q7GUN-WP)E52';$!XP91<2L,U1H_[J?"BJ5!.
    184 MKFH'%RL`",]:L70_S#MZP(SJ=F]C.(M(S[\=0=V="]]#<.R^9:K7H&1]7+!+
    185 MHMW=S7?1Q;AIVX=EOS1'=HI^I^DXO#TJCL,)CYO<KKG^U3Z\+%].BGY,%C@H
    186 M.>Z204G&Y9G^AX'IS'!@0AGX7"H<V0]O0'J(M)"W\TQ]67SE[NQC!N+Q=KY8
    187 M;J.%C_#ON?WWD^X(&'WAUXJ>![B]UY'F-?#C_'\*269YLW@2V$#%-\Y$CD\E
    188 MO%X*,E&%FZ?Z>LEH#6M3O0_K]<V)DWHUU`MJ>*`>QW]8K_F5]?ROJU>C':GE
    189 MCJ]^U`?E[?_`Z`^Q5&?LGB^3]+I[0&Z*]8K?6<8FCD+EW>99*@XRR,]I,#Y)
    190 M`OE)AG%=8=Y3A[SGU\N\.8YT*:SDF%G,?VT/-?15&OH*#;F4FXRM/%V*5GQH
    191 M5^V&@MCY<M=N5A1,?Y9W;];U-W*$!J8.!J;X_:_\E_`T8'!"A!HO:D[%R>1<
    192 MTE1)D?V/?.Y^_A1^G%$T$)_^'WKZ(]32^XX6%J,;RZM?W0O1XQ6U\<WQ5`):
    193 MT^"TRO'??@V.HL0?X#"P@_GQ``1*DY?`QHE`*CSJ/.]0/4"%-,)K8:-D``@*
    194 M`^Z/4.'=69D4=29%CMR$`'T(/7H0O%*6T\RO:24V-7()KE1XL]9+7&H.ZHYS
    195 MJ4L]&VGY/%S5F&!,CF8$HD+2[,7+_.MR7THC>&O$*T)B,A;;O_SY%$/T\+JN
    196 M'.4^#+RX2X4W=XU4F!2R^X&`--8PHS24`H"2P!4QK=QH8WEMY!>VV"H->VPI
    197 M!"KWJ2!E`:)UWO/[<M#(E3:'2(,*R)BV^<58J/\Z[@,J_GFU?=SP\%BNYS?!
    198 MB5VWW:NOY_?S#VVX&GYWQR?E4LU:SA*E`49D0,-RZT5W7NL4N1Z^E?&O7];Q
    199 M-4QB.;7!S1Y$NPY^+NQJ4N']7;'VY<F/X2(*^M`_3Y_IP_P\E3E&Q]V_C"7,
    200 MG!VFD+$0T7&\%DUYP#GI:D![<L/(`;Z-/<:W&1ZL'^6[?IGOYM5\^U?PS8MX
    201 G1_G&=PGK+@3\GTZ<FJ/$W7;W;KN;[QZW/!7^KY/_"RAA(I9(B0``
     1begin 640 countedref_s.res.gz
     2M'XL("$1=TE0``V-O=6YT961R969?<RYR97,`S5UM<^,X<O[N7\&X4G7V6N<E
     3M``(DQR>E[BY)U:92EU3NOFUM9F2;'FM'EC22/&//U?WW=`,D^@%)R9[-S293
     4MNY9$-!K=C4:CN_'"/__EGW_X4Y9E:I9]_WWVKXME\R:[63^N]LWMMKE[N[O<
     5M[_8G?VZ!]"4#_:79[7?9W7J;$42S;58W339?W6:[^_FVN<UNY_MYMG_>-+M8
     6MSUQF__[#'[)3PG6Y7%R?7L628I;1P[>+U6)_=GYUPI_9;)92L&H^7^[V<R'#
     7MSK+XW5UFN^?=OGDX.XW4G)Y+`^4LE@?ZL+`"1/5E_*YR^*[@>^!?N+Y_O'^<
     8MJC(B5,3H8K7//JP_K)/GA32D[&4?`X,+K/,]L=MO%ZOW9UPN!*N2"1@OJGS3
     9MW5-5QH)Z=JB.!CXU\*F)3X;T:.)#(SSHXK)'H+2GJ7>`O\7](INVV#H(!YB(
     10M(X9)FX)^T?4(@,EGL7TJ2]HW2BH;8H2ALNTTGSQ-;C>1!@/<&.)F]?APW6Q'
     11ML!$W7JR#`F#"M$Q<!#9-$0N(D?&".A1\%UC35=V5%+G@+53`^YW2!)/'VH6>
     12M>8E>J)R>1Y(*T[;6>PS*5UCIY<+!]S(H[OKZYVRJZBBFHL+.W/AB!A(`KUWS
     13M/77&]1F73[)3)NUT<OKQ<_/Q,XPV"]IF%2OR\_Y^O7J[?5R=G=XV=]G#\V;+
     14MLOYNOGV_.W^3^5\9_T`L?@RV#;8UH-0,2XFBN\?5S=O5_`$M@RV`'!++A\5R
     15MF7D&-LB@A7ZVY0O8Z<?U\^]7S_^QOV^V?^JU5[V>-+!%+N=JR\4N#.U)^!.T
     16ML0.!H>M(/"SYSQ_Y/Y+_U0G\BE"@_:X8&>S.SH:CSI$H3F_GA/)V'I^5016G
     17MW&AHCVSI/V7OB+MW9VS8SDECWH7!^BY;[++5>I_M'C>;]98,?`!NGC;-#?T*
     18MM1B>/X^4/<QC\79+\]#ZYN9QRW//8I71S^N&)J<F"R0N%ZN&R'R3O4OI?!=9
     19M(!T_O5\T6Z*=/^+S>C843)F/"*8$DU-2!_#DM[[K3&,</Q$$I%\68>"MFL?5
     20ME^9^10S"\"L36TK?5#;M(`7(]8`T(6%8@:!.X@%&#\TT+0%+6Y+6G7'IA''P
     21M'\,6KS[)VO\[P"KG,<^04^4BJ@JTL-*O146B8-W.EOR/Z/:*KLJ),J+?53&4
     22M0JAP=4(SY7??T3-BCWP'MO1<_-UWL6Z0H(@$M+.3I-=0;OC_3C\K2_J)=$;M
     23MK$+O=OWV_Y1\%\AOJ13BRUD['=#0HH_X'-2N`F-7YY>!?18%_S%7)S^JG]XP
     24M,33>?M3M5W/"RG0"BE3#$*S]%,$HJ.Y41E-M?C'VH(%OFZ?]=GZS9]76YUUG
     25M0$'L`:^.4?ZO$V)=O$F0M:U$8=9V0(3Z^Q-AAT0H)`*FP[J$GJ/9K1O(<1A/
     26MM`SBNL9!O*2O81!W`"H7QT?E9$L8!/HG=H\^B5#D!ITR&!>1AG5?8[D!C*V=
     27M;99[;C=`2MLD6BHAKRD^(3Y;J*D1N!(P5H=I-$*C]X_^&,.9-V]VS7[!X0C7
     28MG>B)V#G%8<?+&)6/U/H<<&ARNONPV&2?MX3^].K["#.MKDZD)%8PHVA(3",#
     29M5BD[>PUISL^D]PL_D]XOXO,R6ODI:T7"-)F"Y=+3$(7/(8M_-HTAE-(Y/QMK
     30MGT:NZ2CI@,4:*`YFXG<#WPN,PS;SK5>,)4J#0QDNN#J)<[WBX(6?07BG='F(
     31M-C5&7`7$U=%;8*0CWH(R,"Z,S+%*8IN,@INSI\GSY,OY9+D9FQ-E0E00^"@.
     32M?#;KY7.V(=:?+IXOOD26C`4PET@J#-V-@,*@,#0H-EY//+HH-8YWNN]%WA+^
     33MD=`$R@/=73ET7J$[?-Z(_5='!1FPVV:U7]R1O^9MW=UV_9!YVT:#G+&??)79
     34MHX;([OF6WL6V05*%!`N*8R@:Q#[ZW(HB%ZP8(ZP7))X@Y`V+6;2F%UMM.L%N
     35M0!0@-@Z?NF8_2K-61?13)4\U5#1)]\5F!+@`8`D0E75!^-E%J/4+.N&K^L"Z
     36MM@]B@[$O+.B8K8"L7X6N"NGJ$08]Y/)1Q7!JUJ?7:\A%&2&HMWSXV95WSTD#
     37M8_JB&^&W+XUP5[0:<3=]TA?/^N*+OD@'MX/![5QK`YXVTR>!Z)3V>3-]EJ=5
     38M^_3+9@K8DIG]+JB7,,$1DQ0_T=?ID^@>ATY2^LRESU"JL?0+EWZ!4A+/[O&:
     39M/(V[R=.$^NK#&2,X9SEM2/Z&&#=?(G01H7GF)6EN#@#:44#&/``5;TB5Y>4O
     40MZ*RR$VEK@H6YNA?TE%/AO`HR+;TF14M3J59=/DX[LSK:_D=HO](=IF]L8"L=
     41M',M2Q@X'?Z.\MP&?Y_C;#NVJ];FY*:'+_EHRL4.9@$95I%&KYO-NOWTD1_ST
     42MX3E\XRP3N[*+B?=H?Y;$D8*X2G%<U57A9&G,OZHZ9$\?+SDS"VX,Q%`JQ%`>
     43M*LD(*@ZB0F7(ABH.D`*X`,),4KLV(FO5>1>,1`I?`KS/E>W0%M9U]^AR(3&=
     44MSO,^I,[598\6G8L/J/-D.MRUCE_'4@<4^`G.7_?,7@Z?N9%GQ$B+EO.VW5/J
     45MFA9.Q1!&<W@0*/UYFI\LJ$)7HL3MT[`&H16PPLL-P:^F/^L[_KOK@J\N`B-?
     46M.^J'AG4(G:Y#+-==2":HI)J#:L1=`"9O=SP^ZWN\6E50OX;ZB=NOO8L/1=#-
     47M[-`GE'7M=I^>!/ZMX^_:_S;Q=R1'D\V+(^-!V(05#LW1P<..5$UZD*,!>O2S
     48MQ(.:@P'H@#!8NQYXV(G@=0FH*^E!+<D/;?*T0U;T)79(0!WQP2*'YD`@0/L>
     49M(?I(D:)0C9DE*`B&])SFA-MULUO]A@S(Y_7V@W2"`14QB8KPMQ`]I^B$J#81
     50MN=Q[RU)*`7#/$4*@5CHQD!QC+,W10LIV'[(%A,42S8LE?6)U-@7)=("Z(U/W
     51M+*`NS/&&E;0,8H)%%5WT+-UVUWSLQ[RZ**&"-W4,)L6@%+!HHGG1A-.X-^O-
     52M<QBL+1NQ)KC]FMW^%K)3"DE9:_;YV\"S!1J)/;6U@,_%#(\JI]&\%,(6.^GM
     53M&O#N7I60!DJ@P!CP0@>#'K<C1:3:\<Q%\)S7DUYS,!AX_2/%6!['"&/>%3T-
     54M\CP$;!T(",2%L)BH(5,E,Z1VY>P@":H>HP$DXKQ$O`Q)SK7/ITKSI4^"J)IP
     55M@'&$Y0=='N$?&H^I30V+$;J4*%>7I-2=AGC7FK'R5,)]&H%@8F#_5WJ_[GJ_
     56MG%236GH?%AQT&7J_'J.U&B&U@M'.JPU<EV5O(W;V9@]AM&,8@?D*F*]LU'4M
     57MUKX:++08LB\)1!E6&^A)\[#9/WLDTAKP#EEOS5EO'_XEN&H5<;W@ALX_S1?+
     58M^?6R84^S<T=OUJM]\[3_.H^4&FW7(4QT274-1J4V(I@"!SA8-_8%<2O(U`-#
     59M7DUS)AL@?D\@_"GE).CP0#RENHP&BXNHN8`AEE>SMCD8+YQT/E+)0,[9L-L8
     60M&A4S:3C%[$E,GQJH)FICV$/$(>/;]+M:]A'$056_G)R])%#C,\U4_#IOR^22
     61MDC"<4@9)Z[8S(FI.)O<IUKU1;E0K!/T2`;&":2NT_EU\7LAS#"H,IY>E@BR\
     62M&.6.-`WV#-HN@7OQM(RJ$TD8=,X->Y[^*3KGAIW.#M8(K!98:19\1Z-!);2%
     63M[RZ)Y_:\C:J-Z-J`KA?/&7`;#;N-4B43]]SH)%6P#\$5E$,&V7`&>=]&43)0
     64MC-$SC[&-0LKX'-@RP!9[AJTT][O=?=(::#AOC.%RCB$SZ6Y3`0AGP$=:9M>.
     65MJW))G?@N!A+$AA/$7G:?YDMDB#VYEL"%EP<#2&F1E-*P6$`$:0H+#5"GM3"P
     66M,F\*Z!EVX4)]T%Q.W?IZR5-+7`5*A%,+[%B)[HR-MI9Y\X;!.IA+C14NEO_%
     67M/"Z11RM&=AGH9R`IAF[B?2TM3#!`I,(3<B"A*>@Q=MH"JFY($KC8`RN#@MVU
     68M99#!BZ`<X'GR.TCK(F`=H60J,LYO]<EVZX>&O.+KQ_?O.;=ULWYXF*]N=Q$*
     69ME-;9H"NWUU?MIU@`E\SMM]?!OR;("%`.`+2'0,5QU0#(]-"`<2[SN'?1@T["
     70MML=S"8D-NW8IR&[^T$P":MY2$0'U$4"=0)HCD-SE>80L#D'J!`Q&2^GZ+"T7
     71M'YK/B]THS64??P\XI;MZ`=HDT/48]`@1[%0>!$P(J`9]`9!)X]6@,SK(!&K0
     72M$1U4(MY*(DW#?FE:Y33,WJ>IE\&>Z@A<'PIL6%7U,?.>-(*_O8X@/9'J$9@:
     73MIII:]5$VJ\>'9CO?-^?9=-K')84@HWH@R<,X#J$8B!E0_$.*PAS"`7T`>4W#
     74M><W6QCXT#TDNP=02#5,9VPKZD-(*2XTWO.1_T7<QNK78BB(76T$P0TM1Y**=
     75M'B`,U8!/12!]`$@G4.8`%%J'(B_&H%+E+7(+++B4!1F^?2K+V6'`E-+J"*1)
     76M(.LAY*!AE1\`2AI5Z@!4TJ#28U#>`D3I*#,.DX@0<K:%LJD(1T=_H=QL"-6'
     77M*0%KE6+UHQI&%PL@CG5A$+13][1S=)`&-&/CJ]`]D1ZJ?ZBZ/EC]'[#Z@>%=
     78M@/->I-M"J%+P!&#L%IP('AT?86J)/:?=$>U,IZ$"//U"5\&S>;QNGC;;9K=;
     79MK%>[6%A#FH7W6HE36K"CWP:3[#AW3]FUH@><*_?Y+-ET57B_OXW_"(0@^C%R
     80MX1/('E^,P*(_6T"VN("8@-O0&&$5$!44'!6TK;7T`%P%</5EO^48G!60^BT*
     81MGPQBMA!``X!)2/-I&]]^;#=$!+Y(%?(4S!=LER^*<D!9(0T#"T4=*1,`"Z3;
     82M)&O-.-MEF!Y]G-F54@E'"SOL'A/+6J;2UH$GSND.NA^L!&R[**P$TX5%);22
     83M@"L<L,;;TEMMM"%\(=AS`87^85^>H#B9QP@%IIAUSTMY:/U#B!1.8"]8!\1C
     84MCS'9R+@#9APPPRE73JO3_\1/2@`G7+L$$A</1@<[Z+X$@L^B!-9*KWH6\T=%
     85M":.FE%'C^\H%48F<(,=:)#G6Y;*<^AH"6H7^=IP?1WK`5%=YT,@RV?L:2Q5`
     86M2BQ:5&:X%+V[CRO1DK(HP%TMV%UM0<,G!7B50`)CE3#&,&QPA_#$77BPF.9"
     87M,?!6YXBEGF9)?4ZH\H,D\U%`=K/@["97O$KR#05X?P5[?T-!:)8$ZQ#)1$0!
     88M>V4+7MWN@"-O?$ZG*P>C4=?(AE^$$((MYRP%P26)=AK`!$+-1MI2(%1IV.;"
     89MO^6E<039W4M"QK*_)\CZA1:PB%/,JQ<Y`:8$2]LAIO8@2%(%R.K+0:O=!&O1
     90M7XLPU$#KK$RG_<)<"F7NM=ZA$WFSH+($7Z2,G3K_4%9?+#MQ/0KK6(8RRWME
     91M(#(E<XM5<2BD3/$V?Z6D61"2DL4$"V?Z+)_IZ_=GY!J=IJ\6'D@/G"?KSP6V
     92M4<TSSRB8,[/L-_D)@<L@567946J?L>5JZTIQ"2U4()VNQGDZ0C@?&IL8&CEK
     93M\EEL`A^+[;-&'VHFVA-KS%@SE>`KH!EX#/UN'-ASPO,?_]HB?!M&:]>RM.F#
     94MR@&D$8!*&C72IJR#`#N]N<R"2V4+V7)B"PW?#6^^7-_0N-TLYS<-3XO9\GXW
     95M"0>,[G?GV5_Y-R].W^^NLK_%B@4@]_L*0GVA9T).5#2>MG``[XUG7]+1I;$%
     96M,(V/96JP-A_O4!7G>FO5:X0$2^S6FC&ZHL=A+6H`/`8-8`],6LO@0)4%Y\NR
     97M\S5&F_AJUHYJO>N*73Y*"ZR=6UX[#UD(#W?N`;LR&.604[7.XEPE.Y`M.V`A
     98MT2UMP3$`[^10^?G(_D2*:N(&1>NJ_M[Z6`+=6\+,_XF]>QPT[*-]^@0FN]0I
     99MSAC/6$Z.?OIT=0)/BI8/>)2<ROM$J'OM,>MI@V6_P:Z@@OAKT*5E.`=!)A&M
     100MI<]8#G@=2)'*1(K@UUGPZVQEX#MT:V7AN^LVMNK>*6H+&43+&438S2F:`!Z:
     101M!0]M\Y9=%\$%NP]M#23Z4UN^>=-O'APSRXX9H_S6FS:M/R'E6WH7VP9;Q8Y>
     102MW`0NYY\L.'B6';Q`*\FI4RL'B]$N%_/K8/.B8P_-;Q7P"8604>'$QE4$*#"O
     103M*`<JSP7"'LE+NMR]F)=T<`K*Y=7QO*3K)][&\I*NGW@;S4NZ?N)M-"_I^HFW
     104ML;RD&\^\]:DJ7I$.=,H>20=*@R.YH"%5(%A8NW8*-P5MQW<).`WJPXX?0;YR
     105MO=ZQ*]B[)N'8IG4'+I]CEX^:8B,%@]YI"R"N1PUK_5%Z0`[L\,5-[<\O;FAW
     106M6JR-XQV5ON%O:Q*H'3()W-"[V+("*O38L1`'2^O.%%\I(7`BG9'@P1E,$/`'
     107M&>,G:3(N.I`4GP09#]%`8!9W(;HB!^!O+,""!=@U%H7(Z_PC@BOT*!=^Q7_(
     108M1;2'<)#%%190/`L*L>.N*$=[K:A^1:E4HU(9[2V;CW($>PN<'==#VYW">.*_
     109MH"VV?^R>=8EA!"(X0DDW\+Z"$?+*#O(;R\R680,;"(SW+HSQ70^)]_M+!\2[
     110ML!//*]`W/8Y"+;744U.1?J=_)=DY/9`=N/V.W?X1.;H1)7"C2N!^+25P0R6`
     111M/;;.2;K$E3E\5W$?YB3;3H!R2.BZTL!DG$W'IF*.&<;O'7*E;5UZM,O^!H]T
     112MCNM*VL#A&PNL+/T$)N(JJY;,;ZWQ9>5;YI:D\?K78;KN,5W!Z(]'+5RETMCM
     113MZ>C$[+=^##3?7W/B`[EO;D(JTPD4;4A5_"HB]<?I$I':49&ZKQ)I&751+$Q5
     114MC<JY_I74MJJ':@M[7QSO?3GUER[Q!4S\&4O`E'!HZ^\C^OPQW--$7V)9`7`6
     115M3,[N?KW=1[,C1@>"4%>WZY-K/FYVY`H-5U>S#I#/%$@2U<'FDS+/7T#7=9ID
     116M4\M<07U_F/#[[#^W\_WB9K[,FJ?YPV;9[-YD-_.;^R;"D3R:F_NUI)%*CF=A
     117MO67WT5?@Y99N^REO?)=%EQ)6(LK<M<E*7^GV[>[C(]4Y:Y&$I^$0Y7S[_CS6
     118M(N']-?Z@\"/+%G?9&8'P9H2<$YS;9O^X765G^;ED.$O>:YU!,NRQH4C-MW'I
     119MB?R1,,0D4<GG^`+B-BST-2;9XXK"FG-NI$-!U?Y;8SL%U^Q(X`O3/*0<\RMY
     120M.4'`)9@J8:?'Z6*UV\^72R]*D>H9_4FD-<D*0,R^9RN]4!R+(/PLM8KZZB]T
     121M;`-6P>/7'GS](!J"8$`I-X"LO;EE/]TO'IJMP(2;^?@8[,^3#Y.5%-!`\/=H
     122MY;D\*V>^A>E9_F8%=)#Z9WR3Y5G&)\'R*_KXW8K^7ER<BP[PE@OZ]X'7AH,&
     123MR>5K)6^HSD3:O*'B98S&',-H4XSN51C+8QCK!"-'=B]C+-01C(5),1:OPFB/
     124M82Q3C*_JF>)8S]BT9^RK>L8>ZQF;]HQ]5<_88SUCTYYQK^H9=ZQG7-HS[E4]
     125MXX[UC$M[!CSI$CSI$CSIDCUI/V9IQ/+ZE!^YV6]E@+-#W1_097<7W`U?$T3C
     126M]$()$67*A_)\3`>,E($1PO#C@C<7G2W^6P.2E).R>AU.4;*`-^*K4@VK]*OP
     127M5>8@OE2_*O<Z?.5!?*EVU?FK\-7J$+XZU:WZ=7U2VX/XTOZH7]<?]:'^J/*D
     128M/ZK\5?U1Y8?ZH\IMBN]5_5'EA_JCRI/^J-2K^J-2A_JC4B;%)RYCI60!IX+=
     129M!94JX7L%WVL9L7IDQ%8POU=P5W`%UVM5<+U6Q=/V]]][`R`X;/=,RS,@3@-Q
     130MG/<%Q^_Z]C;N-KI]FK3>Q?WB_7WW?;F&RV8K3@-3G>QV,7\?'QI9.?O2;-?3
     131M7$IX&Q>!7C+&*1=*D6Z+J(%>B6E+B")O6V,!=(3Q//-EV6>+:9YT<03A<V%3
     132M#?7Y]AWOM][/%ZNSEF3P42L^11\5A*?W`:\\?0-Q5)F_28:^XBE<6*9R*;&7
     133MPG%2P%?<M'XG`XBX>2*.>@C[&RL+JL()R)[1KSC[",+I9)-%3OF:WLAIF("Y
     134M:1X,7C@I'3S9"AW5K%6W+2@R7*Y;.5F.7.R;[321H/,7[7V^7RP;[V4S!,OP
     135M',:F"S>"9UV95#92P-XME[.@!<"/CTBK@_'JNK#%WQ'\EKKV#(C$UKVEV;7A
     136M=<.;+LB!OVAOQH[T7O#(D89K"%,6>S4=TE:J!"0/(*0-`@$CW<^Y',BD0HK%
     137M3&0D.4RF1.N4Z;W(@$>BY9R>G&9O@-HPQ3(\_[E(P/-S@CX'6#:'4:)^,NVT
     138ME>J>\Z476#VP)+I3H>Y4<CZ#(76J&K"D7=7^!IH4L?@<50T#@)>U4YN6HU'C
     139M'33>HOD]-8DYXT,L#.YU7PP%S\#^"8L<S!D?L`[/_>"&`M<5\-B&YR4P!-."
     140M7ZF.EB@_\S2`(:HY-?#7^$-="I57\:DY;HGJW!ZP1#5/I6.6J.:9=-02U3Q;
     141M_BW^D&1+K4Q(0OQS,[_9+S[-]TUV>K.<[W:<D3C-/L^?)]E^_J')]NLUWU#R
     142M/CM[F*^>^0Z-!6E/1,.7Q8OD:E[^[1FUVI]:IC[TNS:&&S/FL+^EYO#\F`&L
     143M%9CZ6OGAPQBF;8_XWA3V=7`6_%/<-5+SW!SEHHL1RUC#6>5:#VQ0[K=ZI1:H
     144MUK_``M4AG@[81LQ/'4+J4#ZT/;41VU.;H[:G-FA[:G/0]N2CQJ<N#AF??&A]
     145MZ@*M3UU\I?6I"[`^-1PAJ.$VF-JFMF;0^S#;UN&B_&0D6I`<SZM^L8/O]2`?
     146MBC<V^A3H._[N[Q#VJ2B^09CSH`S[53E2:N%-]J[7Q+O8O`W^V74N=@".)-<\
     147MD9]1H>]/&&Y6[#)CA8QES0MZ4E1-9:MFS7$U(V,UZUWI4O,TSV74&UDH@WI@
     148M/QP(CR?O#A_N(:UY,:Q%AIL^:P>L\:Q-@CWK$)PG)\MKCJ^[8M80)DI\PQIV
     149MO=4<<@,9<8=:72H@0^?R'/@)ZU@L"*SHE\M9`EC+SKIUL4@&G$JHX53"<JFF
     150M%,?$7UKNSZK]FA)N_R/@"<.(_I;U8#M<LONRABM@:KAPON8];2RT9;=/-^Z(
     151MJL/:"YQ`/QGFP>NP/J)@SVS-2Q?':0$15"70(EN4(SE6R*E3<NP8.77>DF/E
     152MD7J!'%A8J&O0U;J`WC'0'[6%"GZ+#B\!$(Q`E`!1P5$A`ARV?Y2Q;H4`;N].
     153M+OS.5>Q`PCV-1["H1".8/RADKGQ+Q<D+C1706#$[2CY!6&PGR*/X">[4S9/;
     154MO\.E+`3A#VO!%>'YJ^3`M!<#*CDCT$JA("G`W8RY4J]!RZ:HPRMFB6JC$!7<
     155M@IVS/Q,,L8;&4!:</J#2ULJ\>_L.T):=K0K%Y_WRJE<N>V*I$*[.S76.C=2"
     156M0HO>0RN]OM/(GC:7?7-%#PN$D.N=`,+%E?DP]F)!/,@-YH7^`41OCS*7`@?(
     157MI\E!]GB==\[;Q`9DXVW=N<&1W#LF1J5PW\=R][RZF2:(W`P,9*ALX%HV@NCM
     158M48:;%4WO9D706#BO23_"2;HS:<@/YG!UR<1!8T7^%8UER36.`.J'0?M4XU,G
     159M!.)MXGF13!/>W#%M%5)F_DZ454`#*A_<%D@_@IU1/T5:$BE]39<<HP7E$59\
     160M23_^SGA1RVT>G4OQ*O\./B5C%J=2;LW->9\;1M;73]V)/#B;2&!D)Z@LNUX_
     161MP4,<8[:`#933%,X/,#X;*%S[W6[W?(WD8$&>"LNNPN^X=`;5<-2$P[27B_0:
     162M094[G!^=7U(=P^5T(.'`#5D"AVSZO5QA(9@/=9W>-\L-"ZI]]KMM<S>;9)>7
     163ME^=OLN9IWU"OW6;\JJK]8KV:+Q?[Y_3]?]_CA6^^-C6?(@L[PZ/J_+9]Y5JV
     164MOA,TNVRSIMB&@\G]^@`>.-P?\#RN%A\?FPX=D]7N]7AF/.-(HAIV2&[NFYL/
     165MN^SS?<.O[@JULOLYS8M-L\HX2_`^O$HEQ=,*3ICRL=DNV]^3KB]61,S#G$66
     166M/32[W?Q],T30W>#0(9C?[!\IO.?'(A<BXWF,$S7K]K?S+ST[)P3[^';&((8;
     167MV,2YOOZYN=GO1`UPGG<.#!,'*7Z8\2W3<,41E53MNGN&D[F3X"O<MY4MI-!?
     168M6[E8?<B6O!AX2L)\0_1].+W*UIMF=;94,&@X=/$O*CGCZ.#CXYJ_\=A:^+M;
     169M^._Y.<+CU,\QS>?Y8G^WV'97(!/R"1^:A2W[!%>$!,U\^W[AKU&=W_:H(,%P
     170M87)&2*ZC$C@7O1,&'_'+":9,8?08#!J$LH:.J'S(CW?T,1*4`,=!-\OUKDE9
     171MJ%`P%;I\59'V[02]G<J.=6]Z]>6PA_T>K5?V,*=6^SW,D_*@:RN<4CC-^IJN
     172MK=6!KAWDX3R$W(2?<P`5^APZF!.OT'G#GJN+]`;%KG?D&!?!D$Q'>@AV;-$/
     173M?@,CG(*F)]48/2`3E<ORQ?7\Y@./_&GW`C6Y)X[@%%8B'ZB#'GW_E;26O$')
     174MOT*IUYH_?-K]@"-P2F$TI3B:DBJ8,%')*Y7\.Y4$<.H`'Z_G#:AV8T1S$.75
     175M6^!C$0I"Z90J[XC\@1[\5C3]>KO^T*R^\EI_PDQ."J!^)VVB0'WH]6T(*`X2
     176M@/W"D5UG""!8\.]K:FT`OA_`OZLI.1&0&`&%`9W2X3;SM+-UV$F?7?BBC%?(
     177M?O^X7],<2>S\YK;ID-/P_(V\+97JZ:Y><76BE3PG<18MMN1Y@92`PZVTW&+=
     178M7LL]*286QHH.F]3AI5\JA'<_TM.?.$$4'R.[IO-XMU+/J-GX&T$B@)X=>O^2
     179M?T]3.]J>_!T/L&)"I>T[7LZ>_#E=/BX4B^SA(G>X"(>AJ4!B!F8C_^XFZK0_
     180MLK?$G.W(Q\B:NSOT*E317?QR<S]?O6\>&J&;S^[(4[@C.0+@`.&W+OE%B%W3
     181MVGV\*F?2V7E_Y+R-W'F1*.;1"0.J.P=;$5-'Q22#PY'*OZU)"`3K&`$JQ%BG
     182MXKA=W`7Z]MFG^78Q9U>0_-L@C/7J4[/ENYQB=;C<G7XHB#Q\C=%S?LJ_V\F7
     183MDZ?:PH4*`,*S5B@=1GE'3Y8I_S:H]K8>_CC_>@0V^`)#!,>N+:9Z,!VJ\*I=
     184M$.W^?KX/+L9MTVR6W;H<V2GZ?2OUJFX<3GC<I';-'_EI7YF6Y9.L&Y,9#DH.
     185MNV10DG%YIO]A8#K5'YA0!CZ7X@6#\!ZA3:"%O)UGZLOL"W=G%S(0CW?SQ7(7
     186M+'R`?\?MOYNT9[_H"[^;\]S##=[IF=;`C_/_+229Y>WB26`]%5\Y$SD^CO!Z
     187M*<A$Y>+KFC83,5K]VE3O_7I]>^*DGH5Z7@T/U./P#^NY7UBO_(7UT([PGHQV
     188M5NI&O5?>[@^,_O`*@&#LGJ^B]-KK-&ZS]8K?_,4FCB+E_?99*O82R,]Q,#Y)
     189M_OA)AG&I,>VI?=KSRU7:'`>Z%%5RR"SFOS2'&OHB#7V!AHJ8F@RM/%V)5KQO
     190M5LV68MCY<M]L5Q1+?Y(W6(:S5%_!$1J8,ER^_MM?^$_P@,'Q$6JX[S@61Y-S
     191M15,E!?8_\('[^9/_<4;10'CZ;_3T!ZE5Y4-'"XO1C>6EK_:MXN&FU_#Z=2H!
     192MK:EP6N7X;UB#HRCQ!S@,;&%^.`"!TN3UKW$B$BI0YWESZ@$JI!%>"!LE`T!0
     193M&'!QA%*UZ;W/0R=2Y,A-"-"'T*,'P<MD*<W\LE-B$])^JD97BI?-7N:R?HE+
     194MG>>SD9;/_8V'$4:E:$8@8'[R+\)ZD7__)JP>U`A>BWA%2$S&8O?G/YQBB*XY
     195MY$M1CL#@2U+SND^IKS#)9.N#PA=F*?_&K!$:<@%`2>""F%;%:&-I;>07MM<J
     196M#?MKZ4<UI(*4!8E.>WXH!XU<:76(-*B`C&F\]Y+OYP']UV$34/8OJ]WCEH?'
     197M<CV_]4[LNFG?'SU_F+]O_`WK^WL^(A=KRC6TIW&`09Y=P\VG[3FMI+3L6;>_
     198M?%Z'EQEI`,*-'D2Z]FXN[&@BD'""FVI?G?S@+Z"@#_W3])D^S$]3F6)TV/C+
     199M6/S$V6+R"0N1'(=KP9)[G).VAK1GY&:1<;:-.<:VZ9^G'V,;5O$.L=V^9NLU
     200L;)>O8;MZB6V(<W4;`/YOITW_MJ[];O]VMY_O'W<\$?[CR?\`/I]YE(N(````
    202201`
    203202end
  • Tst/Short/countedref_s.tst

    r7023ce rdbf609  
    567567list ll=list(val);
    568568ll;
    569 link(ll[1])=8;
    570 val;
    571 ll;
     569
    572570shared vv =ll[1];
    573571vv=9;
  • doc/NEWS.texi

    r7023ce rdbf609  
    3131@item brillnoether.lib (@nref{brillnoether_lib})
    3232@item hess.lib (@nref{hess_lib})
     33@item gradedModules.lib (@nref{gradedModules_lib})
    3334@end itemize
    3435
    3536Changed libraries:
    3637@itemize
    37 @item Presolve::findvars (@nref{findvars},@nref{variables})
     38@item Presolve::findvars (@nref{findvars}, @nref{variables})
    3839@item Ring::addvarsTo (@nref{addvarsTo})
    3940@item Ring::addNvarsTo (@nref{addNvarsTo})
    40 @item grobcov.lib (grobcovK) (@nref{grobcov_lib})
     41@item Schreyer::s_res (@nref{s_res})
     42@item grobcov.lib (grobcovK) (@nref{grobcov_lib}) with new routines
     43   AddCons (@nref{AddCons}), AddConsP (@nref{AddConsP}).
    4144@item normaliz.lib (for normaliz >=2.8) (@nref{normaliz_lib})
    4245@end itemize
Note: See TracChangeset for help on using the changeset viewer.