From 091f084b45f718d20f9fbbbf64aae6b9b63f89b0 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Thu, 24 Sep 2015 21:00:31 -0500 Subject: [PATCH 1/3] fixed a thing --- DBEngine.cpp | 8 ++++---- DBEngine.h | 2 +- test.cpp | 34 +--------------------------------- 3 files changed, 6 insertions(+), 38 deletions(-) diff --git a/DBEngine.cpp b/DBEngine.cpp index 96b315d..f622cd5 100755 --- a/DBEngine.cpp +++ b/DBEngine.cpp @@ -85,7 +85,7 @@ void DBEngine::rename(Relation& r, vector oldnames, vector newna } } -/*Relation DBEngine::setUnion(Relation r1, Relation r2){ +Relation DBEngine::setUnion(Relation r1, Relation r2){ if (r1.getAttributeNames() != r2.getAttributeNames()){ cout << "Failure to union: the relations are not union-compatible"; return; @@ -102,17 +102,17 @@ void DBEngine::rename(Relation& r, vector oldnames, vector newna } } - for (int i = 0; i < new_atts.size(); ++i) { + /*for (int i = 0; i < new_atts.size(); ++i) { for (int j = 0; j < new_atts.size(); ++j){ if (new_atts[i] == new_atts[j]){ new_atts.erase(new_atts.begin() + i); continue; } } - } + }*/ //currently all returned relations are called TEMP Relation new_r("TEMP", new_atts); return new_r; } -}*/ +} diff --git a/DBEngine.h b/DBEngine.h index 4b8a309..878a42e 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -21,7 +21,7 @@ public: Relation selection(string attName, string s, Relation r); Relation projection(vector input, Relation r); void rename(Relation& r, vector oldnames, vector newnames); - //Relation setUnion(Relation r1, Relation r2); + Relation setUnion(Relation r1, Relation r2); //void setDiff(); //void crossProduct(); }; diff --git a/test.cpp b/test.cpp index 24d03c1..f21b31b 100755 --- a/test.cpp +++ b/test.cpp @@ -28,31 +28,6 @@ int main() { v.push_back(att3); engine.createTable("Food", v); -<<<<<<< HEAD - - vector tuple; - tuple.push_back("Omelette"); - tuple.push_back("Fried Rice"); - tuple.push_back("Grouper"); - - engine.getTableFromName("Food").insertTuple(tuple); - - vector old; - vector newa; - - old.push_back("Breakfast"); - old.push_back("Lunch"); - old.push_back("Dinner"); - - newa.push_back("Tsafkaerb"); - newa.push_back("Hcnul"); - newa.push_back("Rennid"); - - engine.rename(engine.getTableFromName("Food"), old, newa); - engine.getTableFromName("Food").display(); - cout << "finished"; -} -======= Attribute att4("SecondBreakfast", "VARCHAR(20)", true); Attribute att5("SecondLunch", "VARCHAR(20)", false); @@ -75,12 +50,5 @@ int main() { engine.createTable("MoarFood", v2); - vector test = engine.getTableFromName("Food").getTuple(1); - - for (int i = 0; i < test.size(); ++i){ - cout << test[i] << " "; - } - //engine.setUnion(engine.getTableFromName("Food"), engine.getTableFromName("MoarFood")).display(); -} ->>>>>>> beccadev +} From db4396b95239dfa71083a791844dcd39b8c662a4 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Thu, 24 Sep 2015 21:15:12 -0500 Subject: [PATCH 2/3] remove tuple implemented --- Attribute.cpp | 5 +++++ Attribute.h | 1 + DBEngine.cpp | 18 ++++++++++++++++-- Relation.cpp | 12 ++++++++++++ Relation.h | 2 +- a.out | Bin 0 -> 97311 bytes test.cpp | 8 ++++---- 7 files changed, 39 insertions(+), 7 deletions(-) create mode 100755 a.out diff --git a/Attribute.cpp b/Attribute.cpp index 01437da..5c2a0d6 100755 --- a/Attribute.cpp +++ b/Attribute.cpp @@ -21,6 +21,11 @@ void Attribute::addCell(string v){ size++; } +void Attribute::removeCell(int index){ + values.erase(values.begin() + index); + size--; +} + string Attribute::operator[](int i){ return values[i]; } diff --git a/Attribute.h b/Attribute.h index f721ff7..9bb84fd 100755 --- a/Attribute.h +++ b/Attribute.h @@ -15,6 +15,7 @@ public: Attribute(); Attribute(string n, string t, bool k); void addCell(string v); + void removeCell(int index); string operator[](int i); vector getValues(); string getName(); diff --git a/DBEngine.cpp b/DBEngine.cpp index f622cd5..fb4e210 100755 --- a/DBEngine.cpp +++ b/DBEngine.cpp @@ -87,8 +87,22 @@ void DBEngine::rename(Relation& r, vector oldnames, vector newna Relation DBEngine::setUnion(Relation r1, Relation r2){ if (r1.getAttributeNames() != r2.getAttributeNames()){ - cout << "Failure to union: the relations are not union-compatible"; - return; + vector v1 = r1.getAttributeNames(); + vector v2 = r2.getAttributeNames(); + + for (int i = 0; i < v1.size(); ++i){ + cout << v1[i] << " "; + } + cout << "\n"; + + for (int i = 0; i < v2.size(); ++i){ + cout << v2[i] << " "; + } + cout << "\n"; + + + cout << "Failure to union: the relations are not union-compatible.\nreturning the first relation.\n"; + return r1; } else { diff --git a/Relation.cpp b/Relation.cpp index d2dca12..86a6dad 100755 --- a/Relation.cpp +++ b/Relation.cpp @@ -110,3 +110,15 @@ void Relation::insertFromRelation(Relation r){ } } } + +void Relation::removeTuple(int index){ + if (index >= this->size) { + cout << "Failure to delete: the requested index is out of bounds."; + } + + else { + for (int i = 0; i < att.size(); ++i) { + att[i].removeCell(index); + } + } +} \ No newline at end of file diff --git a/Relation.h b/Relation.h index 7de9d11..2a8846c 100755 --- a/Relation.h +++ b/Relation.h @@ -23,5 +23,5 @@ public: void display(); void insertTuple(vector tuple); //assuming they are in order void insertFromRelation(Relation r); - //void removeTuple(); + void removeTuple(int index); }; \ No newline at end of file diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..c56b01fd09d05495e3e07c266d7bb3f32ed25e2d GIT binary patch literal 97311 zcmeFae_Yg6_CNlbftR9@pjnYwjz)#1h-GGGg()=_7O51q79yZf2n2&sSy75PA?233 zR#sG2R$5ltk{M!JLv0zg)>64i<<^VEO}4CM%i{Aq=id8z-5F-k_xJJs{PBG}KGQ?a z>z;G&Ip>~x?zul+ccwej(l2(qT!#9%jSCDaHTF+sl=y2Ho^~!u+<2ppk!p-EPB(f1 zW8z;bQwWMD1v{l^1!E*%6ks&|jdu&gcy}s4C^%T44F#2j1WBLsNtKTRTAz!eg0P$s zRF7<3_jfJ=&gKUNtH>aH8p$aBc=#`wNA)aO&yw{NjFJefkN&b^7D^So|9z zaYH3M4)7%WOO$2lJ}wckA0yz?BFK3z0)9{g{K^P;iWv|7g?_$`;Gf6A7|#AHfcJz7L3v;VIqebr ze0l`_Ya;MJ9s&OxbceHZUIhL^@O$tt^z&o{zugx>PE`c^eG&L8p)j1CFGY}39s%DP z0lzSU{c|JmpDgXnkn^hY$02Fw?D$lLV)!ZK^vCR%`qgYMi;-#=+ok-f5IF|&ak(!q z_lz?r2ahwdr_P*~otIyhKd-RdmtQt>+T@~=;{2I8bBgkf?Cg2-ONz70eK}>m>}(_Z z(goSmCEw(tobvMga#1~Oz@+o8FlW)w}IXUHpx!EOi%YBeGe`+qIjL9v?Da-bi+{&EnvV7J`s%H4c7lHv&^T$ptF7(-| z$|sK@5z{Z5kpr26^@y~eom*5=ZkwJngQRfvay&yEd<3;56dFVWkE~gOof|L*UN43x zeYpkHDV3GkrTJy$CB->Kg}z&|7o*z3bXJ*e#LG5vf4$+T!Ildg(Olq_6FE;{WRTJP4^0)9tNl|%P z#>LZTl+4H`zt8Z&@G#xXE=-GT!a3P+_ME9R#%7}}GsmzjboUYUVNevvKAYh?Gew1K zQGW3}UqN<$Sy@S$>fVq*lFi90%2+@{Y`z#>c$$}+n_W(&F-CS~@y&(s!u0&|iuw7( zmMaG#J1EDOUs>og=I77PonMN6Cb}Ga^K%M|jY}p^&OR$S#keGW>P3^Y&rCiu`D|ly zR@S78re=>xK1-mpvcNJHnZV8eQA%)QPNz~d{}U8N7hFg=Ock7h+vGY#M*_pgh5w52 zsOGDT({8~M!Zh9xWTw|>^ol`+Sgu4HJ8ZfeJfc3y`|C?LVu=%Fd?@SqhChJij@$TL z@^|i?O>Ddd(bqsK&(Zowt*wYJp>;L^gVsi*M}0gRp4zECNg7_NWKxQTS8FyRjMwmL z{YCgx4X@V9g!gKAwQeJPhKASIm{}U0)@JH6Tf@^jO??V9yjrsotyIISbuZy7HN09I z623~q)7n^lmTGu?eq65MY5k}^t2I2W&DEz)!_&H3eb#AsT6?R{Mh&ml-9)R`@M=v< z_(lz{udSOjJgsrnr&+_(npk~WG(7DC)TdR$pQ4a}mWHRbzWQ`%c(unMTBnBB_Yj7h zw<)GP#3(;88h)rk0>*3jVH)1MXn%|~*^R(kv@>RhVRW56z1d@QojMbL{vcOvA8kIhTh~nTAYT z6_*E5nVQvB%H;u6rXkWco6CKvOhcnBgUfCz(~xLO-ZgrQ$MCMrLVSDF26_R{#0(}@>^73BV0LL%QsM&LbWZP%X6qqq1a|{`C2Md2)1?n*3~uU zUsL@bUGMdO?On95BV*>&Kx5SdsfIVOeK~``^4n4k>k?EvICnY4lDEcm?eZAj>PDZt ztC@ppZgSj^#gJzppp5#_2*gb9s3ZXIqRxI^|37YaU$>*4$W-azb=!#4)fzXXig5K* zQvBOHqrmU=zvbQj&kMb-X0QJp??=B^p#B!(^;Umu*Z*49uR8x-w8yCEpNX2*9q7>O z-Z5VT%Jt(8if`|t^T+=M489X>6Z&UvYsD!H_`8~~Yr73q+7{r?+~p)<1{#^*_1|uJ zYtk&QKVWS}X!G-;M&JWh`=PEbS@ux*3#XjWF#bVk1oAZp>9LVdNaQ=INh~ptN}E@s zeTvt=Lzg%l-O>(6C?u;L7=(n1bI2}#3u#M0_n;>d{&3w6yA4U)27g7X*Pq$qZ(5qR zTQz7O#;)F=L7J^3t*iv%~BEl#IS#G^(>Eb!2UZ zi-`V=k?-!H9!0Gb)N1ip?5=?qR(t*ESZ+YT`k0lab$DwtEpIKLkoFa$-x6FbzrTor z7M4$bXo39pzU?qIV68?QY+W8@p+9qfP1=5MZZo)*;3v7$NH7|~f)D+|Ztb+|$E*6> zI*0KdVF4Jqk3)Qc7I1GVu}|A#!*O>?ZkWZL_}#D6fN-27m%3ZYofaaOdIQwB*HV+N z6W*2>I7*Ag@n}?2!?_q8+i0O?jT2&;ytP>*y~)di>m5P71;hrg97(an>Hm`4oJ06a zCH~-l*>6omh;>uQq&2sngFb8~%-!r~DQ~zgZ!6UUR|5?_Vl5PYWkLTC;n0e3z&{ej zee@ro7dKWssWqSiVpR7(L?$lUIUZpu<4yD-do5sH337}U z+0}*Ib@H~EU&ARMp|r&V_cTy(8|~<=e*q^dHxTPKnwPDOl;s?6i_y>#j0tZ`Ct4!J zb<1-%vdbtmF*>|40>VSP$Vsz=lQ<#nf{gY-Dm{VtCVQ=g`0gX`YMCe`N)am=BpEO@ z-h1v_zA>V}>f~@{ea8xY#214I6m|R=G3~>+0yItFKHu&P60X-*_ce_~v?XX{AB}|v zM07aOF1RRBa?9fZ@Mw6qw?^>{1Y>J6@y{N^?_n(?M5y_~3q|!vN*jR&3|Nn%n-GwV z-auL_^_YyOjWV9@M*mT~0^O*E*>bQhZuFh2q+HEXc0h#;K&eG z)k}}Tb7Ts84mb%#INvB(H?|{8F@ODsj0sqOCAes(S4DA9o<)O^YPWw)E)kJ6DRa_H z6+`Iy3d(ZLB!{H~&Lk~7hcS9E7tvodb9^qtYMQVF7|g3^<5d6K#E@R&QPN%ymU1hK z>HfBKELTLcxikDSQzJfPT(ZPd*?;`_^UvJ4gg;E0HR(E;mk^sWLJ;v3V@?-;C&CX= zqPjSNV@X8`%)OgUPk^1RWPLdo4ez--;#M{WjR2Vs5mF&~{T2IA8v#n8B7;nhJHKws zwL!+%BZ@~6MQf*ws^78ZcJd7Dr5FG)V9kYb;VJ!Wit0<)LpEV}vR8$9A9;sw_xhW> zygrjDB8C}7dKkj3M?EN`^_1!cM%=*B&fQS*lk5g9SHVU*S5be!V$AM-j9Lmgr+EkT z=7lnXd75PAJYd<(B1&gN@Hz;tgW%N=x=s!WKu$z)i(jB&$^_0h#AJIrDDZO^KltfjsFq@{qgn%`L`xK$9;`lKbtcY*ZvZt0tHqSnn z9;70T`+(ICvfENA^+CawX_yNeI5mLu6iM(??t+CV|A!||;M?#D=|ZZCb;~NNr8{n-RVQ+jWMQSJ5e|c1Hj`eqcxzHbMLcCT zd;Oo0aTf@6mUmH_CH)w%+R*N){+)t5i-rJ<#_E=ZP;D#S|CJo~zlqk8ove5R`OHtD zxz6r28d%(Mj}eh6Dy+c-Vz;mcIz~w3dS2E{63Os*Ap(IZ(rRmve_TShKO?@aj(o;W z;6A(d-(*@#J8%JO{txUR>nDLE)U}KXSOW+yy4^A=5}_&B`${@@A%!YWgxvC1X}L}< zpJt&N>}1nlAgt=*nrRBX0HI?|?I1-vXCoPE<4~?5yfxHL48nLpqr5O4qo#mvW=+Ieg2wfa;8e4*%2_q3F`_duc%Vep2!D!D952*!{p_xF)kjhI*Z_w3X2!`ac0GC}+LKg9kMN)*HfGvdl*-A0C5 zyC{nyT&utEjex=?-udjcZvPi%s}r#90HfEx*Lodn>3%ppV7>J{50fOhW>6~uQUSUh zS{(iLyaW~-c2uR8z#`&!ZMKPu+CEl|Dce#Qgy(?ujV*?Y77y*uy~C;Nnz3Gvd!P{u z#8_c}z)IcEy~n&;nU^f!;s!2aHmF7Fs--mwr;fF3nBjGSNhW!yts>_0(yW^YsOr}e zA28+p6oztPdo)VO+4fe)Su|)XqXN#h7`9{#d*>>J;imYTc^wgHm%uSG2vre&(>lbt zj|ll=$OMy*aqKwtaGa`m^3xEZe>7YWV=@8v^!fRq_1-u6=Pn(9uTu0>+t`3*jo>0j=-kbdozzvRn^*Yb|YGVrIY zCT9)U?qNTRaYE@gG=Ysn8&uv8$rw#cV%w30g7R*sojYU?7PW=*SNjR7@0XCP;MZjY z7o~N^FyXwk4y@C$r*8?03p?Xg+7^hopvLHfp2t`Ym_%Hln*-K#)@0`ZI&*j8;tC=z z+UarT+>kbprJXaRTn)x<{*~PVH)DtKR(UT9UmlEbj*28QQTGm>16CrbrN(mNFs=LG zEvn4BThMpu-V2t%V~KkWYH1$eY3DmEH*NEXppG3xa~MO4_d9&z_|5j-J84}aH;VZT zcoy8ESBMm^$J@?PDHKDH2Wt~dX`-CwoB`3zIWbP5BVgT5GnZJLTt*amQq+&0c@-MG z8Q%hX5Ff8VuGM}PXqL8laQAj%LA(}ozY|X(@A;z&D5j#U= z(?;|_r$Q=vbeFv0x@xt4kTr|Ix zJOy_NH!ENM4vi5!NGjB*;ug>n3N03+>Qp@OFdD~mxxJXCS8C`S>KCz-YeBkc7P<9( zsw2iuFVZW<&W-#SuudTuJa%GnN@Kn74N0_@7@XDE@1gH!v?a&YREG>))EGnE`Uzea za+z8$q9~fx(aQ-BLf&W}tx|)mvK3XFmlKfj6v-4O*Y9JKBEMfz&iU}`U^}LDw__p6 zB2z_J!P9&K|CHcFF<|w_%S%5^ww6D`)6LLhLJj?elnO)RgrRD$Lfx690y2=cpBp~X zekp-4STD*(ig7?^*AAnkvw%^6PEieVV0jrW2al%EDNku(6DZ-nXptZ`0 z!YA5$3p=C8Hzcc}yhBrd8L43hbV>`q5vR6FMo^ggGbzs4aeXnHsb*%7=_DENDD7tb z8?TMM{_V6Nu0b_1^GuhD;$zQ|?&aeg;L9tTY#u zR5Y<^erNKyK{y2N<{($|cRWYBT2I+YhkNMnqzQvS=DDDLRgFIy8dT$_g=_pl3Ng5q zO=Pi~XiNmR{1UQLHsXm^(Q;^Lu1WQrm$qM|+$V#YdK!YY~rk!VPSn2o;rL zy2a#tWv?ECQ@YtJ#&FPvW-&bDxc$K1uCB#j_y&a&_YgEIib=*du%X#*LF?afI{Fl{oHF!!GL&DyD*q1U;M51f zZKxEkJ#SOap}rCwvyehrcFa;#3E#x4sFG^p-9dpg1C?a|6m)CvUHg~9Y_I>#$}ZyC zTuPv(nm`S`f2}4wx(~0+^adZ;g9dM=H4L4V)~w`e!rt9@r3-8$utFwBTLWV=>zE=K z-$AeN2x=rRe?_yNJb3*C&lpVu8;lj|z3m;OaEee^6|C@Vh?ahDTf==|@qCjf`=B4_iqvWe&zY`(vsp0LC`MF$;9M{ho0#@k(V z8_qE}am7{N1TShG$Ls;?2|7!bofcO;1w2Afz`cB7 zz&F|ykPFikE3CpfFYia>IdDEP-?fu^U5!#Z>TyxQPEot>?B9@LyT1!7|MuxBx`&4g z+kR+FP3CUVx4$9KwD!{AmSd4mZ&jfFS<7m4>Ja`Nb=KFj4QmuE5bvm|DBe*|1x{>7 z8p6J#4n6hjzK8fTOW<5ZUPwSzMO;+0V!Y!Y7E7Wzizzs1JV zv8d4_Ne@d>+-u@`inyiHT9Yx780i{^wiblEfVB=a)RYF@0qZZ6P(^NC4^!c;ptYc| zm+WM%0c)O6DGkJ?UX>y1PRQz}aa^dzYaEReLNrnj@mhiQClKgGj|=xZzGI&StPl7t z2`?qPzte9ZqGUW7&p`*^M{~^7gG6&)T2tI&zG+A$RGi8I zkC@|4M8LY4WS*DS!t2Ml#a~dyldSKsIyyVyn)h%Kc2~&C{L<*JjKypqsJH!>Xm9-s&x?;Y?xnYEVKG7l3;Kz)vI?4{X%7fN zV4y8fv)9!~mjt%AM&o4=Ei9V6^akhz%8*# zkpsB62}-A8DK7o-EHl%)adr>gwoLc`knaDUs%`+UbI=qAL2VBS*TT>Qsw3W~v*67{ zLEClHr`E>O!EPfvPraJ&P|b#hB{(GzujX;4KAW5a-Ykac{C1B;UmHerx~n7Tb$zRn z+Or2qbQ5BZj>{%pH|hG2bqv3NMI&ecP>1)_r`mp9tgTT6;<4e-UEp;!DIIEb+1%lyA?ZAXQAjs z_xk^KbyYW3^sYzK)Vl!0NqqNXRqno^jp&7F*rE=XIxABBEVJl7Q0+4{Y6E&w5Q@YCJ_>9!ixbNlktDd4bVnj6|6W6@5HaISActuASJ@^byZh|gAuQ*4 z@pLvmXcypQ#3LR(LI>=J@igGznBY56---?Tk-ziYY*(;neXkw&^p@E_Z6nmRV5B10 zxhaoP6+c-(kr}W$RQ&VH9^yu=fOR@$QW%PZVE+!Q_G8fObchHS- zEBPb#wX<^y^=`yBmg8Za9X}o(1GLU@?i8JCw^(f+$Ahbt2fFrJJ(*i+kCq`^i~PZF z5=T%m_}oD1f?tB~Fug1M5ZomlJTU#_F@&I;<#TqyNyJkU>OT z6mg4Rq-@Cqo)VhHGcQz7mvexNhPlI%!q0rYM2M|TTP}O3^`OIvTSZbB3C^P391ICq z>$%Id#lUlfki>8JIaA5oM5Bkr2duHUmep27^8!rSQi$z_eXHnK@~5~}1e*iaiNB#5 z-E0(ZOQ4n=_$UrnfTmzU`|VA0yLcN)#x{$g8@g)p(?o-f8{aNMRk>MZ=jdXfaxNI<3WKl$PqU;~16Bhnit?3PDS0e=d9ohsDcBizZ^>R(-`O zeaCl$U?bL@>v(=9@1UD;YxhTTmfUgv_yK#)x{V=c&{lrL{dIzT^9X?+p@)H(Uexalt**eRnNdxR^TtBaDSCEZOi#qTdiTli4x7aNg)}@ z5_YmN%_0*)2~DkxGRZ#uigMphGLakI{yypEqiagUGVyfSi81_jn`0qSO8~qBgErct zlGcDV5!-!jl{1Qpa+T9c^hO{=>@oXSHai!eMA2F0e1aBXuMmEfBj)mu)ypCF0diUZ z5y0d4e{w^o1-0$DD?UPIeUq7-m4sLycX+$M`FA8lzRU3fr1gB4gEBSzw(MPXxZv0Y zN_efni&}rOThzn7j)%b{x}=db-Grj(!DcGXLDA`wrA(wrmM3*|DF<4f$lt99C~>c& zTSx`Zvt-j@=bt(w55AY!s~(IEWUY=vaI=5kqbqkWgn%?mord zi8^w9tac+wr~=*Cjc7NjQV?U-!Vg8nhuo+-2iK9??hMt-=l z4qpeXcX_dAH+2gYIaTrM<66;Hd-Wk@A_vP|U5{rLy~NDdNO~&%MvdZ$tcl9kkYwk~ zqEQSkW<9w@v|p|}_i{~45J6`aye^`v{&Hh)@@9ypk*4lv7C(!XDJW_h!K2|!Blh)c zpkstY&Z%`|2}{(DC}=)w5m)wwI+`Hphnkcr_kN06-47;mVT6b=cEHE9G~(SG7oXTg zRQq6J5E?DEnCy}-AksOQ_!27)CmxT3C)@54{)7DqFhf6>I7ItNeCHzUVMG-5g7n}H zEaMJ;7_mW$3q647Pp9zgsxbZ$KGlyM^rgBz3Q(U%1@{Y;Yt0wDOd-VYdH=r`@Q-Uu=z=(b)0Fh_Pa-^ob?Sqd2t6wjCw-`4--Hvp9kd?n0rG&ztgYx?;CP7c$Kj8j z-cw)^csZ>$f{%xf56u!oubFaBKDE;6m#a{8hSMA(F4~#GOQ>Lf$r+^#9Ma#&hxTbf zyz+%}M{YVR3RqbzGp#cP26ZB!y4{iUsJfz+ZA4~3^F|7{u>8Cz{=pWxqx*QK}ll| z(`zSZ4}T2w<^GKNHdj-`R*J2G1b*o~uEa6F7{kpY5qNyoxC)3C4M zJWe|+o&b3raw+uzuHmGp{Z9C6ICpMG*NA2CK7I^XYY1|@k_r~~BesK9Vk7X*HJl!< zL3Uv-))pn=SjL{IzXH{XT9fUR*C3s>B!!zj=iw1yueMH@^R#!?Ud=0wVa|wNcL(ME&LNNG^=_w!IIV671QeR)PyNKF-9*~O1I@g~^)jOZN9Jyzds>=`;E(x-=3 zZ8SHNl1n+J$Ppj~tn;Wy*8#*y4t*5kEN0_rBOiQ6a}e;scQhYspmt!~1gt3PCcrlc6&&CL zFcVpm-vr(X@X%CqhTRNMQs4=Am9u+Ggj91pSFmGRrnaEft<+(sh^=^^Dg8-&^_k*h zhNMNAkNS}pwCj}AJviqQiR@)Q9&-9F$YM0V6+MI&s8Qt)H>HQWd|6937x@fDWS6j) zFV!$eu-zngBqy>}32F$$3M1)V`^rZ6o?fEz3@yDx1K)mi5>GK@d*XkqJ#XTA{SmcC z?SH6Eh$rVlC+~f#-hvp!t=#)G%L|?7eHFa-xe;t~@8jFb;nvfI&Io~(h>;L9>g@4& zhfV2WmwUavp2rvrSn+&-M_CC*2P_wgPI^9%1|8;^kX>#I?b|4g9pNtb)DXKoc3j}M zC?JT(=P5|l+O#o{Gq*i$&_2nrYm+#Zk9>Q+9&1)@Bq3*s$e|R}Eh^vUO^6+puW^xY zfc(#*(urC-Oyl)2c|NCLr|-xOot#gxM#N<#=wE?U#CwC9SYc`2RjqaA_Fphxu4UhP-mir zc2JXJIw-w53$yJ!zyel)x1YGlKv3p7zR4fFFv|qHwlE9H*xmCV@1(=rHUF}nMk#sx zi0+#6x`lF<=pnzBvu1ej+8;x^ZU37wbV%giY%o~ai3O3@U(3s+nw5;?b7*$;_pebi zGpoEc)nXmR*qyXfN6N0Pj%OK+{BRGkrd81>{ts8Ho=w!6m0Ha@3c=cyOsK6+b!yij zQ>lAIe4P)sB>3J8w1Kh8aks^1M0)%~ zlV16S_B3b;t+2tVV7Klh;uAvbPU@rKR67f??Skd)>|cYtB@MZ2Cyhq6;K1@X{3W+p zU*nRS_f>Vtjf&!uTOM#CVPQQP{6j3f=5uBmTKmXbcJs&@xfYrM0YUF1E&@WXRj($G zXzQVn)%jYw5RY6FNTr_%L*BGCW+8K~L*}eQimQW9TV;?x^9lrt6p2{je6bBDcY*_1 zmB{q%aOYPBt`$1g)ubkfA5dE7#~W1HOD7_}#m`j98?Z}A0Nk7;`kv$QXHIM_?E^L3 z*AmCwaT7Io(atP;#i9FQ(WmE}_C4dP1uQoFrNMSDRHSZBcO_PL@RaB09=1!1aT%+ZH9WKhG-fVGfM zgKdv66TiTOm!wA+*UalL8KBwZ#^76^_8vj(yRcWFlN9d3Ka1~(;5V*h7varxf<1}G z+pCMJ1Y>4be$wvn$3 zAKy(@1!Rev_e^qDfTSZR$%^qIV{91Y$?hw5> z&?d(kSvz1QZ$nizIX)#dQ;pkET`OLXV*3ydG~4(~iAANb^T`Q!?WERX*vN5z*M9mE zG*%V`H1GH~&t|YPi$QG$K)S!$OQo8X40yWZHns6d`by$KM>fkw-TWf+vH+)ha|m0@ zm(VdoA-z!N(;hfr4Wh61NfL_uR$g}7ja*CYF0#dQ9aZ_;FKFsSZA@JRq8dUlBw&rv z5L{&~s>ld9o19Wp%?-Y5CpBNCa&1j5ZkecEBW2_QJ3rFzzWApt_tvBV2CUjQNi=OY zmQ(Q#Dx$yWJHfc{z78QGev7Pj1LnCMW)|)vi8 zi(=NhjplN{{0hyBFCbftUYUxf2CPXaXdYL!0+#Uxs;F%7Lc9{k&MSaxGfgidq5d!7UM#J&76(<89p!qNw~_Q!V<58~6+zJv;JV z;(69ysMVp^c9dW-g!itV3rOiKhwZUWApz!#Eo>2<91;4n3DMcjkT{u+CbozJK} z2o=R1q!qXbdk{K^5j&ci%tP2J^l7$N3qdDf>L8d$auwuxYv{EzA7IFB3zKgANRas3 zXK5CF5m~=awS;PlpTtShV&fCfQ7r@3PB0p_1drStiu{78Ua37 zL@y>dnUP#k3|KcH9R!8kHJl&VLrG8DA!omDK|SYffydqpiMR0`M3w7;M{VP=J`81q zK|#MGxJqY^x1|Q}u%25BbLbVBItS$4KM$k#-xDM;jIdwxkR`%*d}hD13PP7+2M>6} zH;HKnwbZ_aDtvbaxkp?dOfVvo_u`(=t{X%VLK4sC zXL~38CCx_i1dr~fw3UbfyL8JcOkeg*;uENrc9U3so2wD?8vfbKwyy-6w2CHicH~eV zJDBG}ZW3#8%p(hvb-1gZ%F))FMq8|}&k_p6~ zM!L-x!!?DVyJRnjmc$F0bXZDRm;6d!TeFjZbe_89i>qSKaYiEdEGMHA{sp_#uJqX_ zsIbEt&5+0B3VsY&=>+*M@hGSPsV6nuwHx7h=Q8ogLnIpQ4!TU7NLcm?O<*`J6>X&7 z*|lzcoHWYI#3CPvfo-7%PNC6WesRFc3b~is%+Pzs!ba+SB&gu;)GP@$Rc{l|0^KTPhO5vat%r%z zFlW#`2;Lq7&+#@9mBMFvz7s=vGk{2-u%^c&{?)&cx?GQ)IVm4U{0@yPpHTP>8DF|mi-QT^s;OfK55{_Oypd{6uSW3rpV%)Vlt3>O!O4}6cD20yPN z;Ov0)0OtY<7rvwVC>6E-m!XGjp{>-$qtU3q*TS0MaXjM&gDsbf`|0eZhkJ%2)_^Xn zHZm_QY`E&nT%-kG&^g|HuTqWBdxndNIq06@nPf=NJwp#LLH7(p#vgjy8GHW{Q6#^S zG?!;BYkQEoxgKp7Oi|l>)!56f0>n^8_+(+q@)iO{$O@E~v@gcBuFOt&=iId210bO^t(O#zF(cqB6r#)Rz|k_cC!7b$1R8%TFN zq;^2M_nn)JBgkzSGARV{`aFqS9OfotkOlM|SZz%ve-_-y`aE__FlqM{enx||!A`%6 z=iFELk%%F8?}Ie*@8rYIU)e3P4?|mw)(5PEBucwo`93@lro+JLepvHOu&nUkzT3dc zgZo59D&(DZB)7f(WH*4u^LX@GGy1GC{B5t@)D|Z}YQM<$7ox~xjQi-B*IL21y(R!3 zeA{c|Y6@=dony%@F!}>RaroKS8Rt7;7CI=weFGWZ6NZR@4of za^E0#JHLpxo{NXO4I{>tpVOJNOZt)LGYaU47pQn*zVK1%FMDD}(C{zfU3wsRVjclD zIWeCldQfeP<(LWbH9B6-Bt5T|`Qis|yCl(V7c_-yA&htp7xx22N{{#4D9pib&(ck_ zx_9p8KFv#bd!2ZIQZTNQK%3Y=guk2n%}VkJ2eWq-J>p!LU~n++#mdE6x`HHXzaD1C zu=yY^SoVz9QliZ*)?_4HSOwbgNC8j7!xvf7ngtgSYHZK#)Ljc<_f+Ug;abD7}e zBJQ6M=T6D_N9J5fwY{~QiG+G}Q207x2m?J}l~A9FT2#yk7X7j)a(z(G6h&p?gQ7TE z+7T`6;35tX$qr?4AHjK{()Y zMHWBC6{?l!E>YzApjL^ZGVv=>yh7SBUD&}zob{6(%Hpd9XSU=_5}aJDt~Q+v1~y#Y}=t`yXHyC3>3B#PvblC8)~8(Slkc?WhyVxQKTpWXBiM zj;FceO2WYa>SQ@w@`QROK*4;WKuMJP?vx5H6biVAw}+%)pHwhKC?H(0f+(SY2~ZF# z6ex*O-~Cd-mqH2`5&WcJzf|zeA4&2`!UZdMk|T?msmotrzG@{=>U&%&xLqjVB95F% z!B0}b-9iE3pn#%Ex@eM6zyv6`R47mqrM{P>g26%o7vX49V6IB#*c>Vp5H46js~7-G zfCBpe?twu`l=`+w1#bu`T&%6$ND2l>1&v&BCEBDvQ+T<{UmuM;er*s zDI%Q-Q1A}(RV#^7-vOy$wNSvtT5)OMRH@)mp`f*!f>}ZV6QCepC{PlmzE*BA-n6{N zX7VtC0>=-xzAo&i;0Yq+2m-q-h~O0jmQh>X!7bo<>^UY>58(|!z}hJc=OQvPuni+* zo8G;Tm2zF&*`o?-;@~5KEA}vk3255A%x(*A7e%2tVEHyP^JuAdno!F{q-|2GlHhbv z@j}UYis0lT5-@S9i6%)HNVO?#GpJ61*X)U=ml#t_f{EYNvJpzOS7_q;puQ`p%ES?Z zdWE#(5uuEWNZVwGvbauE%$A%t2~I8|Z4;-OXcjQ%N~%q1n?dz#vRF+tGew9q2{xS_ zEP9nFa(z&b7e!@ar6`t2JKDIol8Z>&WQVf&`(^BiJ0<5f!O2DBU*c2~%}(ZANwr}y zkq`vSb&H=AAytt3i)FG*^J zP{2i`XF0$MOcC{Plmz5`Ohzl9VoA}5jpHPQU+C&?=b2L%+y z(nXua&|v};G%#Pak|_0cNd?P=0xlxAl7h=*3swpRgbP+MQz&2p6kI11D2Y;E9KXxL zuf7QdT*Q0`Y{LwxV60HU@05dD@S_NP^|JZUQno-zl=>RE#R2R6mx#KOhY>p2@k9St znZUslMCg2l3GA{U!d^jO89^7(Q(08?g|bb55QcLRtm9!B$6X9ZR@6 zyJV(dQ-SdJ4Xj9v1mqr3_}0vF#sSkIEhmLOnR zqNv*Y8SWeM|FNZwe)@uT{LXf863kWiE>!jBP+i@z7$TQrer^`;QmK`F!&EENs>R7_ z)4|u)%I^(HYl=kwrP|S|+HjUu{X)rijL_sHGg4b;OZ48wj)5f-cOJ3U+N`A#y-8!e zQ{v)@mA?kf{Z=K>evS2hiTej|ZTuUE%(`5nuh&=~m$)s&8fzO+C(&nVtS?F2{lxke zon)}ojS?NBv2K&NJYs##W^I({zb|q;@S((=ORV&bS|PPrqF>Qi_exwpVx4WXwo3Fp z8tVax`v$nSvu)ORIfu;BScgblJ#gry4q0>3^Qifqe941Am0ZK9ro5Jn^9Qs@goQT8ZSlgtT5~Yps&# zMyf6^blop;gNgNIn{~NFuhdu{m$-ie*TzTv9G!I%eS^mOlEl43tW9*ZDgs%eFVtAK zN!%mED*gwu94T4qaamgu%Br&)U?E{#|(u~}OsxVfaTRH)KP_3wF*3g4nPGJ9gTACTlI{C zQvvt$(+*CJn6EXQ8oRqRT&t9Ku_n)uxMwszH9gjJa;d4m`OG@(@0w^iN*{ z|MfK%iqJ|Le_no3zAr!2{=(wC{7O$@xu>MU=P8-%nNw0xoL8QFIN!`n zo0g&4K(IV#LH^vrqWt8%IgGw|($w_K>1m#sS9qqUT|Q}A+5}H=#r!$>WuzmLweU)q zdgO1d26|!+bwF{>e7Ik_h+Xa}ES8;9l;bNbDNgQdc$B9#KU5ThrraPn%RM>hW9mC5 zj>;{WUkVX((4M}c+Y5{5vFy2pW#v9-w>7XM4j)KYO`1O0J862-nJL4Ki^}qIZk(G_ z?laOWigOE$DTT$w`DI2%PH}F|jrrxq)j4zL76D#VSe{!^=qop7R+QbCe~V{EPI2DN zg{Uw&C%-(W4CSJnJR_s<)?0Io89vA~W)zea&M!5l7tSd+E-op_GcL->Eh#qA=FKaI z_;O#4tTPj6;xQy9Fu_WLrwu44_F461-KZH z{vSxI09OMpL4s`rtRr~5Vf-Di74QctLw_`8(pJC$1i?2F(7^8uKLD5n7)z@ez%v00 z0DXW<0n@QG+Xz?$*bJDARjAR=Fs=sl0ImQ`1$+i@HsC(MD!`cPuC6-3VStT*69HQR zHv-1Q8AbzO65w}$UciCa;uHXm$CiCL;7q`cfDZ#U12zJ70JZ_f z0^SK&0JsKlDWHM3ChGwE0X6|%3TOe|02qTfybUl3@JqlfKzb2X3Ah`u4sai!C&4fZ zRzW^sJYLt90^SO^8gMOO%n7(g2bcu71(z!_s0>&Nxb`9N0Tw@u_5&t70{ws^0AmIj zMiXEPVEr2C2W)r@egmBHIQ%`_Fzy0u0bB)WK;KTn1N!RVN5F3Z*MZ-70__8w3)lhJ z`V{*0M2yq5=vTlgfLVYIfR%uEK8<>SQCM9y1C9jj0HoDc{9wbF4VVJ>EnpVlLBLAD zld;lV4VVR354aSt1#k;sC*X8!Ej%Y7jsa5vUjUp9_yb@S;EB({uYgkk8v$vz)(ZFr zpm8$%2Iv9Idmi-xx8NkD0I&&gDd4Ao>j1~T2)hCE0XqQy379YhdF>^%7w{s$EWiT5 zO2EZ{s{ywH)&qVC*aG+qU?3a}(64~w0e1mr0k#8H0>-?F`hW`o>jCQlTL4=CI|0)h zQ2%tpcnQ!8*a}zx_zU1t!1>!?H{b(+&4B*|>;#N%L_J)q82~sQ@N&Q`z+%8kz&im~ z1FiwA2RsPa0_fh3`hW`n6EF@J1C9sW444HN^A_p@76GmXTn6YFVHm^Tfqj5;0Sf>Z z0(OGl1h@|6?*W?tUkt#nfIFKY{|vMPa6Dk*yO0lP0agKi`ySc@c6X=;Cl>kDPY2G-~m4eYylkj3FHD^0GKce z;~Q{1U>RT*U?*S|V6RUxegQ`VHUiE9Yz2G~&`5?qK1Ut|90TYDOa-KM@a2F@0qOq@ zv=ML*U^C#+U!eVf7XZeOhMxda09OHK0KNxU3fKX-958DS^a9QWYz15oXrv&o0eS%G z|2yUd+yGbr82u&c0Zs(m2v`i*47dWY18^f?{1~(kFa>bdUg!m^1S|!725>oGBj85B z_W+v#_XBnSCbgpenaDSQDS!_HW&v&mtOSht3UL8A0k9r03$O+7cEC=+5nsdZvyjgK zQvojmoDDb&unLg=Pl$DZivb$}Hv_f;HUk=CF)jf;fCIikeLxT3Y`|H7Re%ct>i}y3 z8v#22I{@?c!EVG!C*XL%n18@Nz@filUK)oy1DFKp16&RKeSodR59kFx<`DD%t^lm- zYw%~F0EX+<>4vK^-gRPZ@0jH-#4_-h8jN+t(CNlQzxa#$C0rVJ)Xgzf#)X5<8*x@5 zGMeC-0=WO*;3LGOe(_7(Q~D)L?Z-uuk%xaH7IbwDu<4VJ?lldHP$v3ff}r=)=~Ep# zpf$ig8nt= zNHGpQ&!MjYeLv_Jst&!tp>GBKmmccx0X@1ra{WV~4*)$^H8X$+3JhmS)9r|L>NBF|iNl!HBiJ<4x^MVjPe{kfy5576z zyH(fYu3!f0kNu!;1szkGW5;Z#ery!_3-pV0`t5>Fb}U2veW17CIeJNm9lIPkGa+Y1 z1;)58N7{*WZR~~|qHiZTPik_e)PQ&c_Y=&7J% zYIW={aq1854PSwNs!o^rg2pk~cP;4i@Ejeh`B9DIYlJMSPO(x1d4B}|#e~qtDa8f# z%QDdGL4P-d?%ozGXA}6Yxh=dL(z6@%D$vL4a>|`{9Rz(f=vc})cFcF^12Hi_4|+Ji zk)2~fUkiGiO zz7_P#K__0@pV~Ow1Nx<)ha2xy=Md;wpoeQG(Fgaz-WYUVD%t(z_-P{O6G0!Q>%Y#S z&jS4d&?oBjn;rT>(65c4pZvTA^qHUswO{yI&cY(Dc7ktl4|ePWeF^B;QaFB^>(~*E z20j3KxOtEKkO=xF&?Aj=`afE~4SJ+;oCo@=phxoaV$e7AAb&0B4WNe`hvcV3(072o z0ngD1+Bl?q_LS4k{owQ79=ShbkHVQH=#knn5_Avfk=l_C`k)@_7lBS^wvp;D1KkaJ zBtNeQ{g@u=zYlsp(0NU-;`Iux{Zf9U@emtp7;&hNqa7zsvYh%OL5~GJSEswLX9kLs zbkH+EkL151&@TWzXgr{g)H-Du=+}bo(dBFFyY-SDZXGicbw+}InY1r@?5^%hjJ0!o&E89bHwGi~}pg)M`=u}M}#g*Uj%ao&``;N%%&I7%rAo4u581$b& zKNfmyJ2D*kYeB#7p742$;~(^`uyYaFnH6HET*nb#I`|S`=Q`pm3gLT9=p(*?=)l$B zE5x&H54BmY`3Oz^n+U$o!8e=`D&FM&h2(67zG&F}5}u>)4$=3tqi-MhmVxgk;#(cU zC%06jZ$0#_fWFCiw)NfN$QcQGJ?I~iob@4c0**fqf^W{9k^Sidy%hAVB&R7v&MS_- zHQgsxr`1XbHH9CAd!S@XKo+G|rLiiqc>{=Fw^~_!2*XiWX^`O%&hDY&ix1aju zK_P?C#5Wdv%fWX5&(SA*m>R_U567-q;LEzZtBbw@8a+ni^Dc^t>U1$9$xFmee%#`& zt|fR5l0^#_!r?>xlTLg~!sj=V^FH*YfS!-%=$kct)CM`uiEjnu6oc;;*k$Xx?7pbl z=w;@jUQvZ^s3m<{!PmI7t7`(DZ9cKxV|(_1{yFI3;*;th0(~Fox9aufesLsl3qilY zFZXHBY4)moqV3bj?sO!k55d1!mnY_HxhfTY@`3LRyh}>b`ErFX$*vWkj|Dx_Jh2J% z-c@3UjTZz^#l1k z`WVBQ40^bAInfhAzX9|}ewYG!c@OkF&=>X~e=+D!f*#Hfq<<~wbgg|9p6xi-&VhD< z-U#|ao$eM3P4eRu&}xNLlH(~B3x`YZj~ovpK_4H1PI}fu&uO6Z zzH(u6s%3N2{Vqig6}=>Mcn^^Zh;n1eyhYx)84cs$zK5hTK0`!fbM~cf$puYyXSFf+_ zn|Fi$CFpa4=wf3^`VWHcSrNXUs2u|naE%M}!}a$>@LdnSaB)L=W`UjsI<{So|I?hj zy%6+^K%c17wf*rLDgQE^?!K4>ko>Kn`%ynqeCz@J<{s=j1o}-q&++2D`VAF*&mDd^$)lj33|=r@3VxcPP__%?$tVtj$V1@tVv-D2Jj zI@enRzJErr2Td`yg1!&*Nb#`;^p8QGsO!=Ee+cyNLHFo%&HsZjfQTM${v`bqLEj5H z#5nP#ofpjleGlkY>vZ>YJ3lT2ecL4O}~kKR7bf3rYeToHMFx)AgyK*zGk@t-{Rp?D+v7OufB#o#%5 zt`^^v-!BsLDDfpiP9E%_pJIz%pz+Z@emSk~#kylZ_&$3ivOTdLyw3$aoIT|4k)W5X zi=0o=K~I3ak>dV+=sy|sM#ze;|JWI?)SlOz_8bJ?Yv4PU-d}&F@lktX#JL3bKlH7A zH2iydqVEBH3+UnI8S>jK(078q6VK7T{~B!17RR2&;G6weSJ!XEcap{jd)yrk-+J)n zJ&QXi#5YdkqxQ-3cG9~WeEl9r+*A85*7&G>E~kBKhGMM-zDW6KFzDZd{t(IWX>y=1 z>VD_^W(xRbKY?=|6MWBVe59{4+K!J{Y*Yrq{&4!Z|3U8u`mJb#oolu8lJ(G20Qz>2 zql5 zy_)QOQnQ!(OFJh?JO%Rt_#)-mDWG2udbl_vJM%!NuWyag+oA2>7lZBteY#F}i%kRB z84da~pkEV(=dGHZV*fr(?cd)AU&{-T?br|cSD;5~M=X>zN1&4(%TT`o^y|r{m`|Mk zC4XuA`!-`${30XHQ{Y;&%?QeacuZmy?*|`GrHK5b8ooBRjmrbCr20h~b7xYHZbM^Y#d#Zz=N8|2s zB>4kRM@7&hjn}cD_X9mre9Z(s2J}eldLQUNz&@lOr+wOc;}xJE1bw1T*Y?GmK#z~0 zpZak(=zT#y-1_nm_$Giak{yF_Ks^z3T7TI6;J(D3FD8Os0Qwl6F3)etx3fUM6?80P zocj9vf6yyIM_4*^InJmZWZ&(eZ@_bOsW#3iCbfOoPRMb;6xrYVK;I8Jk;Y#%68Gnz zN9xZ+(0BJxe+uYt^-w<#^sS&r^3!6_Kj@+UTF{$7AE^6D+sEyc@*~CTKG5Go{fO(|z~QzSiHexiLE+4nZ;(|C;jQtL;RFGKceD%tPX;}l zy%an9L0<>D8_()P`lHcFb-?=xdFlP`CB5eMOI_4kyl_*DfL&d#;|H49Z;AJl3FOn8J#GGS{JASs2FL;kXevRuZm+`jC z-0L!0Tqd6PDb_LO6oY<>{~9Sa0q}BjyUVy94>d0HU6=8i3nv#)+0P5q4X5HB>dUfr zOsYAgM1)wkTPM114T3ym4fcdYB^ zv&|ycJQVJB^}R-NfhV3?lmv&IXHGM2Cf+XBfWd$xP5ciyE*xA2sS-N`aDs_nj?FZ0 zF`klG)ISgPGtdS2E{)(!I1%tl6TfnrXFlRGO6h64IhQf}5-jc{_QX?w9cSYI>N0iU&5($PQeYmH-;+~pEBeIxM~P4wW! zjkzhxsB)Q4MH%3nxcZ-tr^{tuEYbRcV&uxvubak3m*;8I_?yeb^A8jw z-y=qLo37Q-sJWHG<3swhv{%~p9%AJGdh7+oVTAY!Z7)WQ9ebcfjNP7SdR*(zQ4wrF zJRfo7#wM6&Afw5zTC?=7)^B-nIs3}9n$aV zEp#0|w2mOu^ekaV0KB9^5N)zEiHOJl)jq(03Gv`bL(G?5#+hb?ae?V~AuHflH;M_h zNsiMIBh5u_<3cmwGOjY8b{TUhX&0McxD4d911{q+7txovg_8zM1iZq0%4J-Khk7aF z*hI4(>ETxV_VouYdi-7zkm@OCU4gX0{W*gA^(yllmr-PX>@x0g4MZwOcjEa)7ooRM z#ZFm!wD%;uOE*7o!;}oe_|au{x{Z6?CVpCFm7AWQB&)urKeaMn)VavO>E_qHk@!FA zZ7iUtYLfSi%X~h@*yb`Hj4}S@`pnhU+h~rW!rmw%{1#>I?_;crHb3cOycBJ2?_>Ns z+T75`SZ$iG#29N$AD%b$GOZY6S1)r%jPZFdb9apKLoc(sk5SXxe5jA{aBt#&t~b@K z?@e+7y-DUT6ki)+@aI4u{5hhecKBHA&Jh%2D&8o@IIq3IdF@%wYk20ob^v+pQ`7ZO z^ySF*l+r$;KQ+D5cJz?fB1O24*XPHeeEYwVe|pYM;pW5e`Nx@^^(>}6lkXzrw21hS z`6Z~m5oGZipxYcCI&wnCb)$KldCy4XNu1l?V7`5lvCL&YdXn*o%Y6AH<8_y5orFF% ze>mA#<2K(o*=TT^51wp%;5MH<*=Tp0U!IKbk(kyHV^@^<@(`mV%JdIGYt2W87>`Dq zyN4K`Mw<_Mj04eT*AU}(e*Uv*Hh7F?(|q1z?B(axz05X`@p3Qo6OYlz&;RXZt{7@O z(A%sUYCO@KoxUUn_oe4A`IP;Z6RokU}IocUX#Q5$dGbDHtzc(eIbBg_en2(=s+&hq-cMLSYJl)tc(0uQ7qn)4E9&7rOj5m)pe>xp^BL8|$vD8zwFxG+63--LG>xoo%)nL-{^kB1dgt2L`x$F#M$6)gO$AhVNz8Y*condqg zHus!ibPYB;&M@vfiK6!2k>L|z=mZ;DK1|Y!FyV$7{=61E{CW?0@rc)ZcFqgC6H(cb za!OA*qK7q^mYGOK!GG=l}ive;)Y%rw8f=q_W}p#|zkJoPgiY60odL zz;FL3V3p)I|~s0^s|3;>mR+K0stMaF*w%fxz5vu4N+0UO!_^pILOV}%3*m<0Ur%5pCM`#dDI+Qu68CSj3))phl@5N2Osug5QndD)_4&NM*is0BV6cV7KWRQ{;&qfX|DO^jCyy?_r93acw0v~s_;K0e#*WS}nmZal99HH_o?(ox zC@&jbUY0w$G$;4QoO$`>qc6&wnm%RpJW@XD%;Yg+lFu3q8;naX&-6^1;W;z;%(Ifm z7_O>&SS^jw7}p*6>v|V|=(AtyRWJuQw<~5I0eA272t@ZzCJ@tmIMaGj)7)wFEIM-sAs(iQXUiZy0yn|B-#++f^er@8w~fWa7gREiirK?|zs6tb zgjk{;9S5OgV?QI#MbGi1E}oR|A5B@`I> z%9RORU*KYdb;NR19NI$G;l(q7qg}44$B?LgLt$~;v98l&sT6NAwZ9|q!q|y4?_P(0 zZiC$Ka{b!xX#91-^K{Ve3Ol|qEadyH;SRYl63^S^T(&cDm%h83! zxkVLu`8doknmfvoi)56SKR3BRygBIOR>J-7tSlj&qz`lDK97~qaT3mh9Y7}7Ph%^3v$W~mPK5Y_a-0dOp{-{ zpw!4Io0qF+Z_d=3zq9enq=ooh(z3FgTQChE4;%E`ps1qZ^NaIz89W0JSGJGjFEHYz zvr;9*1QVm4ACkBz{1;!nlCT>{F27~IFK3RCT<$9q zus}T_2=dEHjb!|kXnyjfi>8k9<;;_%85J|qyw~DHfZz{q*OsZl@|GoWDcHWUw$Q?IS7)=O7e1iIYx4RLH67- z{9tN!K_2R=5`^aFX6IMt=9l`i(UPKkAwz_lkfEM$$VEly%b8!8i+Uwcfj`NtSLm2i zUT!4gms98GVJ94tV%A<_LpV0a= zdT5GQ_HT5jqJ;1LNW^&AVA4S!Ove0Ca;`w>XY7qseYGF7q6FVq0qlL6sxQ&THF%)C zpsKI-iyo<9os>iM$P`sy`6UN9Vo~+g{UV`(fd{?*#{bjWwSd`GRp$%A z2Q`uhfy5AC2oS<6%$>|DF@c**ZeYk{80HQkAaLe&lMKwvoy@(HOd?;6_(F>|fKN&_ zRZ&FwwAAW{VvCm23bbF_kG{1Aq!e4L)B;65#jds2zxLi|pL6C;0tddi_x@*{wfA0o zz4ki$oM8RQ@44l}yt7Td%5QvE@BbP4?O(5{(8CLa@Va;7g5Wwu@1ZaL^;+*(cBfE) zjglwy-(=l%R^_jYhelk#9r~vXRQ~$=kLU}xuh-xD@q#&Z>&MMUj^CN=AEErdODFy7 zpF31A=q5BnSbevz)_{_FLJQSUfB%j;jEYgu>odaai{hwD}U zv|asF{hLFL`|ZE{qkiH>H-dj;KCHdSFE@VW^XA}stykp^%N0wQxp&y>fGr5FU-DGH zIkV&`A<%w;Jkg)UbUpLb@fUFYN?gB^&ihA$|AW3Sqw`D>&a+;BWk9d&^z&?7ACTn^ zJS9kfa3UN}bH??DaXl~G{e#G3$EJ+yFL_$XnvRW;o3Z*xPsa7TpAo9nL4(21+zlDm zfBxU)`qP37f}gn?Gp_&3XXX0serM^s>W{*EaeX*{4gVn&{OpQ<=uiE;1=ssD{JrHl zL0%0`=yeLy=DUPU`P^!D40QC!hy5E~&;D6;*Amf}_uzWkL>4=OpQi0#iVgiCb}V%C zLonykcb28fPvhV5gr&8gTOlo-zKsaHBW&M0mH0Y`de?qzAq78{^20QIPOg@UA4mCI z8a?f-NX6f1>+(78m_u2N=2sp}<9~Bb^QJg{d`|PBI8H%rZo!Al_c@fwY5wA$oI}Zw z<|T3btvSs%;`j+U%_HLYJX^qwlQN zhh9Rj@zOszCwH>Fj}pfh=QO^>@g+HpTXFnt6o>kK$b6rZqb2U)H2jpD#t;9ZIrOx@ z#)UY3s{hk|pTjRxPdVn~PESGEei}0HGcxey8TgqQ_*ohF*%|nX1kQGQT<(87`ZFA;uBZb5DrvAvZM7x ze@yPg-2A|AZ!vh%zH)S=@xR*8C;jah;q-K1!q5LU@GvgiZulhq{9S}ECpmnrSYU?i z+0DWAmxf%@pMM+ljb|1N-S>q&_bl*7P7%BY{LPfyF#pq91-}sZD&YTix!}rY5comx z(f-^4{BO<>dbOAD0YC6g!A}7Hx6(qB+YR}w2mXciLcbRDBZM!+cmLy~pg(n`(C2aT zVc@r1C3qD$Z|~xE|K(i4b-ddNPvgHE^fzo0`WwLK4}iCUzqU)eybb?f_Xs`vWj@xv zF`fUFgmZtI&nXzX<>oIvXA68|N$^F$zXbdTrwhIr_$$C)M1Rf(ekm1pnE%`xg#WT>E(l_=6LItNuI-{H3!6*E;MjvOYUMaX{ zHXj9_p6dlydENv19h>9rJ`a5E_Bj7jDHY~+&x5{c|JM@E{nUC^4#x)2|HC%n(*XQ~ zz@M2CT*vz)@JDYFT;(?REz<4-(}EM3Iog4*yG(HH&wGF$1ik?Dj{`pra_9p71K>}- zP53kb|3BcplY*<<7SEOO&OKRh<$n?IPcIUD6nwT2&T_kZMDPjV5%3q!5nTKKE#M1R z2(EU0%3Fm`IA1$}zq&=}o525%3Fmp~X%hVBz<&(-!|+Ruz~@p2xSyYe+{`<==-m0h zPgq_slsYeKfWH8_eb=0&wI}dUpYH@1^R8U-^#1Tp+614f04mw?lS4;qHBZ?zsre_vk7PZ+xHdBZ=LsRfbWOCsg4Z* zU%6c9o6S|Z+@0XRYmwlsz`p|e&2JZ6P+eJ9bynlWHhF1sgYf?xMk7=1U6(Q8~{&L;49a`*9`V zEVow!dEO8FxXC!5?*T8ICAiw@&k0{Z|7pGVIJEF8=zrEG^yXdObZ!ML#8g*7YChHz z&ix73xnsa@Sza)7JI&u*?hx<>_;Zare-3;Z`~#`0Ip&=y{5QeR5SckH2Oh?+3h?C( z1w*I$c@OY~1;N$cp98+?6u~bxSCRdmCGGxbso?8?PZHjM@BYVagwIc@KYR*&?t}d8 z{8GnQZj;*zhK=H#z}q1QwTt%wzx*t5n_%rZh4Z!aK9Uv`GjYyT&J zhxyVU0DnK?qsr}@gtL9!5(yt27r#@7<^1Wh1>cT#-?UQj`S5S5ht0ryp`U8+?*Jag z(^24u&>!XVDd2B9Pue9nXpR>M=YEFk=r>S@xu5HLgkJl<68J6W2)nw0sjc(Pe0A^ufTU*RWQF*o>!bF{rSmq!8e<;^lx(lfBy=>)h@n3 zIQQqJM!~-X`tO7OHsm?#e_jRt^>sq8?Y5mS?Y;^4d%@?6!1rTbR8Qz}MI*Ox9*@63 z@cn^*z6f{@^QH3nJ>VxSkN4+G!1LXLt3J%53wgdCMgFiJ{k#((g#QgVx3o#x{W|j1GVm7QVI6fl@Hs1m zkLttYzzg?^!k^6C z9DfbGdAH!C9_Dxn_~#*?67XSKAh4eF!%u2IKL`BBurF=*DZ*K9pS-YOIE;YLscph% z=@P;B1MdL-!gj$MfFA%J*0(1cHleC7hLV`W#D04%dZtV z9}EAf`rl1BRe2JA_*&494+wvL=PV!ZBAn;@g6pOs9t@N;5skA1pTA1 zqebAe;$q={EBdK=as}`Qt`t5RkKRdmT0cK#@Z|lYFN4n|uxst-xtB=0VLh`1yc_v| z>cg#svz)sk=?|H?Ilcn?=D~vbt^A(`pGVFTylT$ULmu>#`Md)8=vb~HoaG$Wi`YCF zZ|tHkbZCC^hxC*2)tAs0I@ErbY!Lh-h_g4Cv-Izt01xZWHv#`1{HON+KHy*6QZO8@ z2A@S6g@3r7>H!|MyBGMjbA%72m*)5|;SKoif7}iFyJ1Hvw-Y<0-EjT27Wfx1Uus9= zgsW_Q{3*MmuF=rPAoHUed_q6a zPdLxx6Ke~GZa*$P2s~T|eFyj(riK1~&~GRTpRd8s>pXq{cuz2{M}coWL-^#ur-c-W z`?GYL;Hv+Fz#jr1rT-!DllBY!5cs^|QsMIp*zeiEPbWNWUfz*GKV|4iJ`08apMlQ@ zGWdK>>4W+Db_V@Zg!6dAy5I4a3Eny;?eaUP`6vV5-B2*URZl(-{HF!M`QMo0QaF&11f`S0}dl%@#dgh;lK1NJGehm8XKHbZ}KMQ?67Z)zuBK-;LsH=c~|NMfX zyc6_Q;9;D-6?k|*`eESV{r&$^`rX2x!jL)6?2`V3dHBV^!~Eo3gmXP=>>{^ry~!Uf}W^9UkCi(dWBxw?FYUT$Mw!hxduz2|TZeWfcL`BEC>JAUTHVX+jjt;yHEO)2mNP(zX^JED)3hcXFa(b zepvm$l9KQb>l-V8e{ZkwKMj1|0sNV1!A}7GLEzUd7hL1ZXMykN5&RRNpVKGpPM;-s z6Yx&p%h9gNp$7a{kpDk{{z2fUO$wi8;4cu)<30FJ!TDXseEibj$$jR(0iSRm!kJeI zp9k^3Ll-vOV9vIvVX9tBm9M@My9;Fe~C^uZ5Ebknt z(zD7@Z7dq1=hx|(+!QE^hAYv|(aIn(9IjO+tI@#JbdH|!ofs|G%EPN#8=LdQIfcly zkH^;OdEm)?IeGqgcxr5HA6?@8ia*KDq#J6r$&tY+dW3ptVj>q^TdH-n(*y4n^L%r3 zZF4^2q1Hx*%%vj(qa*w27YSfsd^j2|(<8!DL*{qm$Ve`_wCjqE8@lL{slli-imvTm zWBGS9755PTYrFEqe`jqMNp3hAplkP(qlrDmrp6>nk01Baqu0z{dY53|uIGt+shaDk zj1P}wled?5PtgEs`%2YP)n1z0w6Qq8lb(UjYD3SP5!7hNX@p|~Bjf(d8=`1)?}n|# zsMx)Ult45B-!Y0SHg7H!`=Y)L8@q~3!4kK#$S)c20C^ihwCS4e4O=@qNQ~X3flepe z;-)+ammdvRy}Y)2OR3hnr#wWO)Jek~pg+Z8zA4%o4ecrq-4uFINFB>=*>Q)i-vcp#`;f2QQ6BgL*@~cCnqbDB-}#b(yq>p9ox4@ z^iCy`GEK$mC>p9v?2E=KWIF?$U4xCq9-3p4a$i2`Ym8_nlQyDVa>V{K{UsS5iZYUWO%M&Uy)E<@EL^kcwCid=? z`tr$OTHHf3ZkW-msw;BV2DhMg>V}qY9vUqVOl}w*-8L{fRj#V>v4x~47;Ar#O+wCz z)*bDXl5&$`o0;s0N*h@cehAA`kSSFM#j+YB3O5q}*kMvXd-|f@Ep#KK3mb-Op;OAM=s9zwC?s;Jmv{)yfVIu&e;&hI1|o*Xi4qdYzk? zNQf$JjP;_J%$4bO(#0lbC~+SU!C-7w+eW5avaZ_=E8jR-=J4E69vu~{wtQqR;3V>mQ711A zOxjgXlQSHx@qldKCRHI{ZibLgi^la@AWcsZOOewHxWx@oX^rW79nE&4@EH15XT1lB zdo?+)xNA45&BzYQ*YL`ufzBR}r7+^OQk=E1$zC#0c8XTg`TWRuwLA&m>h(kCo2fll z4A|RA`2ZENIDbkf>uYY#kAIqFI2}mNwbFQ^3;Y}n%ZosS$3GuKQ^Rd=+mRENc@4*z!0>2KGTHPvr8(ic!AJB>qK4x&UZz!(*L^DiKd2T5 zd$)9#qO>I!EqPfyrH;^z1k!e+Rmo6zj;~X_UO?!S2yUgagcVN@30_?K?0k%E6obid zF^Qg7Bh&~;6i4FPy^%P1(lU;Q)kMN77P|)X#iDcal2^M)$!7`=Y8{Jd)LXI8Jmo9S zLha!5?cz8$PgcgX!cr`m`AUr3UZi@j%U?Gn3aciu^<1r$m+!Rd^H%BBOA6}hXCf;g zG5OBSb)JXCl>qiB+46SuoCB#V^}KXKOm5)j^?_z#pBAz`N61T9vo^sBmWmn!RDm>Q zgF=By1oRffh~5j#U8NAxENjZd8Z>(pUI6omW)2|MBleP}YK~6YHd3jYgrvEXN&-A@ ziGC!e+bTtV4OuZ|R#D%CTm4EDw%I=wq^N{gEBEoc6lXDap7JH;g4{}4UCfg~s{eF+ zoXz?vj!^`x6o|(9Jc~TBzg}b-QzY5v_8yZWYz`P0*k&~euxidQ@7BF@$xj9$fs?kjE!_Uv3rB^CXyy&hDerg86MfOgR1=F zL-ZC{o);4Rny7Ak^IS$EoFkhQR|3DAoMbG_tVtkF8d1g6%4_OK^eUD?8D-Wi=7?fj zx-*_3xV5K88aE0JHDn=M)j?1yB+7Lpbs~RFkw`OBG}Rf8<{NG7IgBHsMSo?I-qbGr za0+Iu&W|ltbBnVuHmO0`DQ+b-qqn*idtFbQ@6lzANs?(Dq=k}vD;Jp9PjW!-=IiNZ z2?q(+%d||5OT9_%v647fIZ55Cp>wBXp9-_dWS8i<)i$ZKwKn#f>H2XL?vl#RM$!E&)r~^qrI${*lR89~ zPx%!9uFu$F4QoCH-`Qw>y3g`rf>)tR%we)~E_Ru~W^6_(0Y`qZ7uu6i(YXb6P}!-J zQyA-!%<@Tcf4==(tY=JgA?L>I0a&U>GZ>gbJYQtZ3|)#uE_dh4+~MKc0r{F%dMWjA zWsL484^c7J-rl1ZZSO47?Pj@K7ONmNQ@6!|v__?t^nh~&!t@olp3pq?aNgB-aO~W; ze$wu(&N};eU90;B`nGoPMgrs0S@6!)2U#(lG?NmIxlGavdPp<3x|5k{W~nw>?Id2o zec)m*VXLX~NIL{7bT_0tFxELlOh~2~_xFxuS)AdlX*EnYeZti+c>+6QMRiySm2|ou zCJ*s{{KcrV=3L&C!LFqACmyv_&C*w!&zkzKYue&)2gV4zz!iiMS~9E|(wj|Oj8%i1 z@e*Eiv2u7sY4O&|%<~7HqmuxixKR}J&qKxVFFLW!z#~dobP}Pf zzx9&iAwd}Z&P+8tP3L+J6?44x^AY3>G;z*SHOnee%3#VGuGgIErPIzL)8o77Y~|@T z9>sQdBy76gBxm$$cJ?p%xEp3ZWpX?P@a|2Mp29@J<(tzw4OF2`(6uH+vVSoSTyO5j z{CHRsVRx6dKf(*>Tocrrd8jCJ=u%rx^vtsW-_85VMGV}C0dU|irc33)!Sau}KpnBTl3D3!iRvDaoaUkUzL@uCi(zUPcm^e$*F|Q0`-Qf}5 z5%!Z=>VchWASY@+;6E0{?AW{3#&7jt2qHKlRl?}s>Y2tl-xMYQc>it`IRq}PZN z2aVL5zzp*bipu8Bq01#ynrTxO-@fEGAM~A^cCxzR2Glk@Qk@tbkX=wdn-mwr{@;Z` zzS~yZgD^nbE?B!_CTF#e%{|3BDJS={BERvpFqxH#%+7_Hd#3D~0#8O0W1|wKfZmz_ zyKguRH<@mc{4cgbaFC&~lf#h$pdD$xMalzq#lv;c^vv8|qwA;CT8dk@m;}bno4qRL zwV|D*T6s5Z5%eWWJ0+-aK^2H-WJl-rDwXAEI3rcsj5sjaN$DaZJ9NLvz-MKYx0OX$H?pm5WDmUs1O|kOt0%%!TNBv*dN$_A)j} z#vnybw)c77+GVYA<33k=W3Bdg57|p(6A?Rth*o*Jf0*W*OKr5Iq9G5EaV1vAmVw@F z6B+3gI5}Cdw3vN%vsxph>x;iiFjWcM>qt$&Jo$0XCdL@siaDhpOe5wN%w<= zhLp!hu2uz&&$4o1d9c1Yi4f&XUe<3t&2CAMP7_omIT>QlESqFf2&}j8cb?ce@r=QC zT)b*DT&+aAsLVnCa+q102II6Ww5sRj>w)YnXD^&m21hr8k#hT8v&1StuZy1bdD9Cy zyMc^3yz3Z3;kq1`B6eskf*X%-T{oL_6819-#mT#k z$KHCu3Epm&pJ^$+0RA$Vkt;GOcG1Y1ZuY+!=Mk!I{OZZnpO1K(^zT7LI0$GX}uB?m1M{ znPYV~`Pt|{IsOVi)R3@&dO}Y3c*DfXjJPSb@OD|4Jaxd85zckvX&4ResB)&X>GJcJ zw3NwnSMG9nEC2R^G0)c$89aq|%H%JXB}V9T6SNQ^2WB?`P-vUgoI@GwNZsp8GVVHS z%eP9|-zF3Qn{<9puB%A=0irK^;dHe44H6Q<6op3b@p?Qm!W z9L#teMJO)`oC_v4M%gvQY=c!i=Na_(6u8Pr{8qzE8s@enh^p|mM^oAg){ky<2@e$C z0jXJm(d|0U*(Ol2>a^7iubSgcZf1@_`4;6Bi2`z(4^CGGDQjtLd7Y<;nw-sz|F{Kk z8tKw6mXeCs&PSdrPv-uN$@$4aM)Z%ix(5Sn`Dcwhl|j!qn#Hi#ySq?n@t=w@^9%hv!kUUFR%e~Q8=qZu z#W+&u%Shv->R|_zU+u5M^d2y6k>jd*G7y@3T|*pq5e2##R%xWv{-k+=@H}ii-k z%Qd$;kL`>JJR61Q_+}2@s*<$6_wo`D*Rrmw0;WdSQtvCeOO2x22h!qcgx{+)`K2%E zQ*5tJ=4q$jMve4kH#{Wki63VNkQ}-}nOr(v9&j~jvPf^&r=3vtZPuga8z&|!H`0@C z#-}>v&?UNmRYrH}3C}lO`c5WG1z9Rb@^h5Zb$yW1bCfM3)h%UIy6FgL;(XLQIum2JV^K?XvM~vinO#j^+&N<=PHs|MFmj^@ zqUe#}&N0#o@~<=nG{gzKF=1$cwwaDfGMHvaum8-8K6_KIK_xM6(PJ!2QkQl9!~_ZJ zSb1z{j9#T^o_2Seh3kbt*9m9nUKB`Q|EJ_WPGjmlENk;%E>LK4N6)mf4=Png=_%07 zy`@U2Ztyqsw$rYC)uQ-Xs-8i)>%C{tUe|lTX_BTyhkRf5Ens6SF{`#*W@p@TgNx#3 zU^i~KDz5C3(rej^n&IfVmJxd*(%VczeN8jWtnx?Z=9SlO$un=1rGEO4u-l2@B2D~J z_E=HS4^}+XS=3u81xnVMXx`i;;-MKRxwSBAix*D(m9Mn85%gbCdAm!ibX-X}(zq@L@WWt~s52$+(U6n8%pY?T4tX(Czd4PTiAi zaVOSGY_$|8HMHcWf7!pl6*4(z%4}w*9N*rSdpZ9bJzc zZt^Y1T`v?L!*}=t(mGABQ;UaiYZ_V%sar>CQd@?^C#Zr;-s?P(0$y_qGyT3#oqn`4n7k=ZI*~4RqNFq$r6r*vk5OJM#y8yg}Z9CN{t{Uf6 zt4!H$hsH0F7P}~kk+fIcj6aqkzf)JXeIe4nNZr1{%~8pMOnIM zn;4~@@Y1!e?jV8l(^Ic^VSeg#g!f;2gl@t;y`IHRY`pi$?amDp+*(e!1*Ps@cXy?i zT*~^yx_5i)Nw=@ri&AnTo<@JSsV~}8t52VrjMod;M0^dU*0Hy7nTnT&KsN#5_E_6> zw{hP+A|C6wyWy3#r@*h`Qlv0DY{Kl<+Q(6sw&h_a^R^oZA0<*RwYB8ZQwxKd@a*3V-3}S9Q??dTW%9}FGYb?#1 zC&f2rFD*31vcox&t-Q`iXK|~^#Qd3WS&}9?SL&EUL1!ocIJG0u@p4YQxY?KHt?Ai4 KJGQcg?EeAH390x1 literal 0 HcmV?d00001 diff --git a/test.cpp b/test.cpp index f21b31b..bf7b4c3 100755 --- a/test.cpp +++ b/test.cpp @@ -29,9 +29,9 @@ int main() { engine.createTable("Food", v); - Attribute att4("SecondBreakfast", "VARCHAR(20)", true); - Attribute att5("SecondLunch", "VARCHAR(20)", false); - Attribute att6("SecondDinner", "VARCHAR(20)", false); + Attribute att4("Breakfast", "VARCHAR(20)", true); + Attribute att5("Lunch", "VARCHAR(20)", false); + Attribute att6("Dinner", "VARCHAR(20)", false); att4.addCell("Pancakes"); att4.addCell("Bacon"); @@ -50,5 +50,5 @@ int main() { engine.createTable("MoarFood", v2); - //engine.setUnion(engine.getTableFromName("Food"), engine.getTableFromName("MoarFood")).display(); + engine.setUnion(engine.getTableFromName("Food"), engine.getTableFromName("MoarFood")).display(); } From d5ea5433e04f2d4f00cf13e55522cc08714e18ec Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Thu, 24 Sep 2015 21:33:25 -0500 Subject: [PATCH 3/3] union works --- DBEngine.cpp | 50 ++++++++++++++++++++++++++++++++------------------ a.out | Bin 97311 -> 97311 bytes 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/DBEngine.cpp b/DBEngine.cpp index fb4e210..3ddb6b6 100755 --- a/DBEngine.cpp +++ b/DBEngine.cpp @@ -87,26 +87,40 @@ void DBEngine::rename(Relation& r, vector oldnames, vector newna Relation DBEngine::setUnion(Relation r1, Relation r2){ if (r1.getAttributeNames() != r2.getAttributeNames()){ - vector v1 = r1.getAttributeNames(); - vector v2 = r2.getAttributeNames(); - - for (int i = 0; i < v1.size(); ++i){ - cout << v1[i] << " "; - } - cout << "\n"; - - for (int i = 0; i < v2.size(); ++i){ - cout << v2[i] << " "; - } - cout << "\n"; - - cout << "Failure to union: the relations are not union-compatible.\nreturning the first relation.\n"; return r1; } else { - vector r1_atts = r1.getAttributes(); + //currently all returned relations are called TEMP + Relation new_r = r1; + vector temp; + bool duplicate = false; + + for (int i = 0; i < r2.getAttributes()[0].getSize(); ++i) { + temp = r2.getTuple(i); + + for (int j = 0; j < new_r.getAttributes()[0].getSize(); ++j){ + if (temp == new_r.getTuple(j)){ + duplicate = true; + break; + } + } + + if (!duplicate) { + new_r.insertTuple(temp); + } + + duplicate = false; + } + + return new_r; + + + + + + /*vector r1_atts = r1.getAttributes(); vector r2_atts = r2.getAttributes(); vector new_atts = r1_atts; @@ -116,17 +130,17 @@ Relation DBEngine::setUnion(Relation r1, Relation r2){ } } - /*for (int i = 0; i < new_atts.size(); ++i) { + for (int i = 0; i < new_atts.size(); ++i) { for (int j = 0; j < new_atts.size(); ++j){ if (new_atts[i] == new_atts[j]){ new_atts.erase(new_atts.begin() + i); continue; } } - }*/ + } //currently all returned relations are called TEMP Relation new_r("TEMP", new_atts); - return new_r; + return new_r;*/ } } diff --git a/a.out b/a.out index c56b01fd09d05495e3e07c266d7bb3f32ed25e2d..54f580c771995270a139f89552204b6cc6a36474 100755 GIT binary patch delta 14343 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 Jd)UZl{}0bu;S>M> delta 14245 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