From b98c3966370b570e3a6a4c14af1d57e4ccbd1169 Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 16:25:22 -0500 Subject: [PATCH 01/54] updating --- a.out | Bin 0 -> 17470 bytes db_engine.cpp | 3 ++- db_engine.h | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100755 a.out diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..e63ad4387585e2180cc535465889233c33d32134 GIT binary patch literal 17470 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 aZCRU)?Kd&lr6OUw?{!EedD+T~Qv4Sup7)Ue literal 0 HcmV?d00001 diff --git a/db_engine.cpp b/db_engine.cpp index 30fa0b7..4afe038 100755 --- a/db_engine.cpp +++ b/db_engine.cpp @@ -5,7 +5,8 @@ db_engine::db_engine(){ } //create a new table in memory -db_engine::createCmd(){ +//creates a vector +void db_engine::createCmd(){ //// } diff --git a/db_engine.h b/db_engine.h index f319f02..a949dfd 100755 --- a/db_engine.h +++ b/db_engine.h @@ -1,5 +1,8 @@ +#include +#include + class db_engine { - //member variables + std::vector cmdList; public: db_engine(); From 83d0ae00fe395e7472644851590356441f660620 Mon Sep 17 00:00:00 2001 From: scho4077 Date: Mon, 14 Sep 2015 16:46:41 -0500 Subject: [PATCH 02/54] Update README.txt --- README.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.txt b/README.txt index bc38460..f0ade72 100755 --- a/README.txt +++ b/README.txt @@ -2,24 +2,26 @@ I changed the name of the repo. To make everything pretty, rename your working f git remote set-url origin https://github.tamu.edu/USERNAME/DMS.git -I also set up development branches for each of us. I think this is the way we’re supposed to have it, but this is my first GitHub project so I’m not at all positive. +I also set up development branches for each of us. I think this is the way we’re supposed to have it, but this is my first GitHub project so I’m not at all positive. When beginning to work: git checkout beccadev -This switches to your development branch. At any time, just type git status to see what’s going on. +This switches to your development branch. At any time, just type git status to see what’s going on. Before doing anything, type: git merge beccadev master git push -This updates your branch with the master branch, and pushes the update to GitHub. There is probably definitely a better way to do this. (I’m pretty sure you can use git clone somehow) -Don’t forgot to use git add filename.txt to add any files you want saved to git. Or just use git add * to grab them all. For some reason it’s making me do this every time I edit anything, which is weird. -Commit changes with git commit –m “something descriptive”. +This updates your branch with the master branch, and pushes the update to GitHub. There is probably definitely a better way to do this. (I’m pretty sure you can use git clone somehow) +Don’t forgot to use git add filename.txt to add any files you want saved to git. Or just use git add * to grab them all. For some reason it’s making me do this every time I edit anything, which is weird. +Commit changes with git commit –m “something descriptive”. -If everything works the way you’ve anticipated and it compiles properly and completely done, return to master with git checkout master and merge: +If everything works the way you’ve anticipated and it compiles properly and completely done, return to master with git checkout master and merge: git merge master beccadev -Type git push and you’re done. +Type git push and you’re done. + +MAKE SURE TO: commit often and delete your .o file before pushing. From 0b3fa73bda56028ffd22d7878d37d6fa3aa998a8 Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 16:46:49 -0500 Subject: [PATCH 03/54] done saveCmd --- dbCmds.txt | 5 +++++ db_engine.cpp | 20 ++++++++++++++++---- db_engine.h | 1 + test.cpp | 5 ++++- 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 dbCmds.txt diff --git a/dbCmds.txt b/dbCmds.txt new file mode 100644 index 0000000..9405325 --- /dev/null +++ b/dbCmds.txt @@ -0,0 +1,5 @@ +a +b +c +d +e diff --git a/db_engine.cpp b/db_engine.cpp index 4afe038..d6346c8 100755 --- a/db_engine.cpp +++ b/db_engine.cpp @@ -1,13 +1,16 @@ #include "db_engine.h" db_engine::db_engine(){ - // + cmdList.push_back("a"); + cmdList.push_back("b"); + cmdList.push_back("c"); + cmdList.push_back("d"); } //create a new table in memory //creates a vector void db_engine::createCmd(){ - //// + // } //open a txt file, parse SQL script, load data in table @@ -15,9 +18,18 @@ void db_engine::createCmd(){ // //} -//save all the commands to the db text file +//should write cmdList to a .txt file void db_engine::saveCmd(){ - // + std::ofstream dbCmdFile; + dbCmdFile.open("dbCmds.txt", std::ios_base::app); + + std::vector::iterator it = cmdList.begin(); + while (it != cmdList.end()){ + dbCmdFile << *it << "\n"; + ++it; + } + + cmdList.clear(); } //display the table currently stored in memory diff --git a/db_engine.h b/db_engine.h index a949dfd..7c9b31c 100755 --- a/db_engine.h +++ b/db_engine.h @@ -1,3 +1,4 @@ +#include #include #include diff --git a/test.cpp b/test.cpp index 491d9f9..0eafca0 100755 --- a/test.cpp +++ b/test.cpp @@ -1,5 +1,8 @@ #include +#include "db_engine.h" int main() { - std::cout << "Hello World!"; + db_engine engine; + engine.saveCmd(); + std::cout << "succesfully traversed the code!"; } \ No newline at end of file From efb56324cffc36335328eb440deb642c1034637b Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 16:49:57 -0500 Subject: [PATCH 04/54] fixed desync --- README.txt | 16 +++++++++------- a.out | Bin 17470 -> 0 bytes dbCmds.txt | 5 ----- 3 files changed, 9 insertions(+), 12 deletions(-) delete mode 100755 a.out delete mode 100644 dbCmds.txt diff --git a/README.txt b/README.txt index bc38460..f0ade72 100755 --- a/README.txt +++ b/README.txt @@ -2,24 +2,26 @@ I changed the name of the repo. To make everything pretty, rename your working f git remote set-url origin https://github.tamu.edu/USERNAME/DMS.git -I also set up development branches for each of us. I think this is the way we’re supposed to have it, but this is my first GitHub project so I’m not at all positive. +I also set up development branches for each of us. I think this is the way we’re supposed to have it, but this is my first GitHub project so I’m not at all positive. When beginning to work: git checkout beccadev -This switches to your development branch. At any time, just type git status to see what’s going on. +This switches to your development branch. At any time, just type git status to see what’s going on. Before doing anything, type: git merge beccadev master git push -This updates your branch with the master branch, and pushes the update to GitHub. There is probably definitely a better way to do this. (I’m pretty sure you can use git clone somehow) -Don’t forgot to use git add filename.txt to add any files you want saved to git. Or just use git add * to grab them all. For some reason it’s making me do this every time I edit anything, which is weird. -Commit changes with git commit –m “something descriptive”. +This updates your branch with the master branch, and pushes the update to GitHub. There is probably definitely a better way to do this. (I’m pretty sure you can use git clone somehow) +Don’t forgot to use git add filename.txt to add any files you want saved to git. Or just use git add * to grab them all. For some reason it’s making me do this every time I edit anything, which is weird. +Commit changes with git commit –m “something descriptive”. -If everything works the way you’ve anticipated and it compiles properly and completely done, return to master with git checkout master and merge: +If everything works the way you’ve anticipated and it compiles properly and completely done, return to master with git checkout master and merge: git merge master beccadev -Type git push and you’re done. +Type git push and you’re done. + +MAKE SURE TO: commit often and delete your .o file before pushing. diff --git a/a.out b/a.out deleted file mode 100755 index e63ad4387585e2180cc535465889233c33d32134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17470 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 aZCRU)?Kd&lr6OUw?{!EedD+T~Qv4Sup7)Ue diff --git a/dbCmds.txt b/dbCmds.txt deleted file mode 100644 index 9405325..0000000 --- a/dbCmds.txt +++ /dev/null @@ -1,5 +0,0 @@ -a -b -c -d -e From f710bc5f9113864cca232a1ddbfc04cc50da64e9 Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 16:54:10 -0500 Subject: [PATCH 05/54] Revert "Update README.txt" This reverts commit 83d0ae00fe395e7472644851590356441f660620. --- README.txt | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/README.txt b/README.txt index f0ade72..bc38460 100755 --- a/README.txt +++ b/README.txt @@ -2,26 +2,24 @@ I changed the name of the repo. To make everything pretty, rename your working f git remote set-url origin https://github.tamu.edu/USERNAME/DMS.git -I also set up development branches for each of us. I think this is the way we’re supposed to have it, but this is my first GitHub project so I’m not at all positive. +I also set up development branches for each of us. I think this is the way we’re supposed to have it, but this is my first GitHub project so I’m not at all positive. When beginning to work: git checkout beccadev -This switches to your development branch. At any time, just type git status to see what’s going on. +This switches to your development branch. At any time, just type git status to see what’s going on. Before doing anything, type: git merge beccadev master git push -This updates your branch with the master branch, and pushes the update to GitHub. There is probably definitely a better way to do this. (I’m pretty sure you can use git clone somehow) -Don’t forgot to use git add filename.txt to add any files you want saved to git. Or just use git add * to grab them all. For some reason it’s making me do this every time I edit anything, which is weird. -Commit changes with git commit –m “something descriptive”. +This updates your branch with the master branch, and pushes the update to GitHub. There is probably definitely a better way to do this. (I’m pretty sure you can use git clone somehow) +Don’t forgot to use git add filename.txt to add any files you want saved to git. Or just use git add * to grab them all. For some reason it’s making me do this every time I edit anything, which is weird. +Commit changes with git commit –m “something descriptive”. -If everything works the way you’ve anticipated and it compiles properly and completely done, return to master with git checkout master and merge: +If everything works the way you’ve anticipated and it compiles properly and completely done, return to master with git checkout master and merge: git merge master beccadev -Type git push and you’re done. - -MAKE SURE TO: commit often and delete your .o file before pushing. +Type git push and you’re done. From 0678531d8114fbf23045ccc4c5d4427796a0eec1 Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 16:59:59 -0500 Subject: [PATCH 06/54] testing real quick --- db_engine.cpp | 2 +- db_engine.h | 2 +- test.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/db_engine.cpp b/db_engine.cpp index 30fa0b7..fc004f9 100755 --- a/db_engine.cpp +++ b/db_engine.cpp @@ -1,7 +1,7 @@ #include "db_engine.h" db_engine::db_engine(){ - // + //USELESS COMMENT } //create a new table in memory diff --git a/db_engine.h b/db_engine.h index f319f02..3543acf 100755 --- a/db_engine.h +++ b/db_engine.h @@ -1,5 +1,5 @@ class db_engine { - //member variables + //useless comment public: db_engine(); diff --git a/test.cpp b/test.cpp index 491d9f9..cc7dc7c 100755 --- a/test.cpp +++ b/test.cpp @@ -1,5 +1,5 @@ #include int main() { - std::cout << "Hello World!"; + std::cout << "Hello nothing!"; } \ No newline at end of file From f0d54ab69d9ed244bf8afd4cc16fb0a24e2e0c48 Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 18:31:05 -0500 Subject: [PATCH 07/54] got our stuff together --- a.out | Bin 0 -> 36339 bytes db_engine.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++-------- db_engine.h | 9 ++++++--- test.cpp | 11 +++++++++-- 4 files changed, 59 insertions(+), 13 deletions(-) create mode 100755 a.out diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..16a80ad064e9ab6d2b417cf7053568de4e208a4b GIT binary patch literal 36339 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 literal 0 HcmV?d00001 diff --git a/db_engine.cpp b/db_engine.cpp index 10abbbf..c4df4ba 100755 --- a/db_engine.cpp +++ b/db_engine.cpp @@ -1,13 +1,49 @@ #include "db_engine.h" +using namespace std; + db_engine::db_engine(){ // } //create a new table in memory //creates a vector -void db_engine::createCmd(){ - // +void db_engine::createCmd(string tableName, vector attributes, vector pkeys){ + string output = ""; + output += "CREATE TABLE " + tableName + " ("; + + vector::iterator it = attributes.begin(); + while (it != attributes.end()){ + if (it == attributes.begin()) + if ((it + 1) != attributes.end()) + output += *it + ","; + else + output += *it; + else + output+= " " + *it; + + ++it; + } + + output += ") PRIMARY KEY ("; + + vector::iterator it2 = pkeys.begin(); + while (it2 != pkeys.end()){ + if (it2 == pkeys.begin()) + if ((it2 + 1) != pkeys.end()) + output += *it2 + ","; + else + output += *it2; + else + output+= " " + *it2; + + ++it2; + } + + output += ");"; + + cout << output; + //cmdList.push_back(output); } //open a txt file, parse SQL script, load data in table @@ -17,10 +53,10 @@ void db_engine::createCmd(){ //should write cmdList to a .txt file void db_engine::saveCmd(){ - std::ofstream dbCmdFile; - dbCmdFile.open("dbCmds.txt", std::ios_base::app); + ofstream dbCmdFile; + dbCmdFile.open("dbCmds.txt", ios_base::app); - std::vector::iterator it = cmdList.begin(); + vector::iterator it = cmdList.begin(); while (it != cmdList.end()){ dbCmdFile << *it << "\n"; ++it; @@ -30,13 +66,13 @@ void db_engine::saveCmd(){ } //display the table currently stored in memory -void db_engine::showCmd(){ - // +void db_engine::showCmd(string tableName){ + cmdList.push_back("CREATE TABLE " + tableName + ""); } //add a tuple to a table in the memory void db_engine::insertQuery(){ - // + //table.push_back(); } //remove a tuple from a table in the memory diff --git a/db_engine.h b/db_engine.h index ba2ea28..e7192d7 100755 --- a/db_engine.h +++ b/db_engine.h @@ -2,15 +2,18 @@ #include #include +using namespace std; + class db_engine { - std::vector cmdList; + vector cmdList; + //vector> table; public: db_engine(); - void createCmd(); + void createCmd(string tableName, vector attributes, vector pkeys); //void openCmd(); void saveCmd(); - void showCmd(); + void showCmd(string tableName); void insertQuery(); void deleteQuery(); void selectQuery(); diff --git a/test.cpp b/test.cpp index 37541d8..a5a6be7 100755 --- a/test.cpp +++ b/test.cpp @@ -1,8 +1,15 @@ #include #include "db_engine.h" +using namespace std; + int main() { db_engine engine; - engine.saveCmd(); - std::cout << "succesfully traversed the code!"; + + vector attributes; + vector pkeys; + attributes.push_back("username VARCHAR(20)"); + attributes.push_back("password VARCHAR(20)"); + pkeys.push_back("password"); + engine.createCmd("users", attributes, pkeys); } \ No newline at end of file From e9e631aa6b5b8256b58863d896afaeaa186e7a3f Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 18:34:55 -0500 Subject: [PATCH 08/54] changed show --- db_engine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db_engine.cpp b/db_engine.cpp index c4df4ba..02d0a90 100755 --- a/db_engine.cpp +++ b/db_engine.cpp @@ -65,9 +65,9 @@ void db_engine::saveCmd(){ cmdList.clear(); } -//display the table currently stored in memory +//display the database void db_engine::showCmd(string tableName){ - cmdList.push_back("CREATE TABLE " + tableName + ""); + cmdList.push_back("SHOW " + tableName + ""); } //add a tuple to a table in the memory From 7fe87111fc2f9ae30cac72f5dde463b9fec78089 Mon Sep 17 00:00:00 2001 From: Becca Date: Mon, 14 Sep 2015 18:39:04 -0500 Subject: [PATCH 09/54] assignments for the night --- db_engine.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/db_engine.cpp b/db_engine.cpp index 02d0a90..ff96c0c 100755 --- a/db_engine.cpp +++ b/db_engine.cpp @@ -8,6 +8,7 @@ db_engine::db_engine(){ //create a new table in memory //creates a vector +//DONE void db_engine::createCmd(string tableName, vector attributes, vector pkeys){ string output = ""; output += "CREATE TABLE " + tableName + " ("; @@ -52,6 +53,7 @@ void db_engine::createCmd(string tableName, vector attributes, vector Date: Tue, 15 Sep 2015 10:21:16 -0500 Subject: [PATCH 10/54] updates --- a.out | Bin 36339 -> 36312 bytes dbCmds.txt | 2 ++ db_engine.cpp | 25 +++++++++++++++++++++---- db_engine.h | 2 +- test.cpp | 15 +++++++++++++-- 5 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 dbCmds.txt diff --git a/a.out b/a.out index 16a80ad064e9ab6d2b417cf7053568de4e208a4b..0ade4b55f0bfeb69d4ca4750456a87693da31d04 100755 GIT binary patch delta 12580 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 attributes, vector pkeys){ + //creates the proper command and adds it to the cmdList + //make this better, we need a heterogenous container string output = ""; output += "CREATE TABLE " + tableName + " ("; @@ -43,8 +45,7 @@ void db_engine::createCmd(string tableName, vector attributes, vector t){ + string output = "INSERT INTO " + tableName + " VALUES FROM ("; + + vector::iterator it = t.begin(); + while (it != t.end()){ + if (it == t.begin()) + if ((it + 1) != t.end()) + output += *it + ","; + else + output += *it; + else + output+= " " + *it; + + ++it; + } + + cmdList.push_back(output + ");"); } //remove a tuple from a table in the memory diff --git a/db_engine.h b/db_engine.h index e7192d7..e56f754 100755 --- a/db_engine.h +++ b/db_engine.h @@ -14,7 +14,7 @@ public: //void openCmd(); void saveCmd(); void showCmd(string tableName); - void insertQuery(); + void insertQuery(string tableName, vector t); void deleteQuery(); void selectQuery(); void projectQuery(); diff --git a/test.cpp b/test.cpp index a5a6be7..392549b 100755 --- a/test.cpp +++ b/test.cpp @@ -5,11 +5,22 @@ using namespace std; int main() { db_engine engine; - + vector attributes; vector pkeys; + //we need a better way to do this + //going for function right now attributes.push_back("username VARCHAR(20)"); attributes.push_back("password VARCHAR(20)"); pkeys.push_back("password"); + engine.createCmd("users", attributes, pkeys); -} \ No newline at end of file + + vector tuple; + tuple.push_back("csce315"); + tuple.push_back("12345"); + + engine.insertQuery("users", tuple); + + engine.saveCmd(); +} From cdc2b3ccf6fe84c34e8646a363afb3346b75581f Mon Sep 17 00:00:00 2001 From: Becca Date: Tue, 15 Sep 2015 10:21:27 -0500 Subject: [PATCH 11/54] updates --- a.out | Bin 36312 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 a.out diff --git a/a.out b/a.out deleted file mode 100755 index 0ade4b55f0bfeb69d4ca4750456a87693da31d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36312 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 Date: Tue, 15 Sep 2015 10:22:56 -0500 Subject: [PATCH 12/54] updates --- dbCmds.txt | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 dbCmds.txt diff --git a/dbCmds.txt b/dbCmds.txt deleted file mode 100644 index 8aae8f5..0000000 --- a/dbCmds.txt +++ /dev/null @@ -1,2 +0,0 @@ -CREATE TABLE users (username VARCHAR(20), password VARCHAR(20)) PRIMARY KEY (password); -INSERT INTO users VALUES FROM (csce315, 12345); From a449b76e2124ab83157260a7fc76d4b0174dd85c Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 16:30:25 -0500 Subject: [PATCH 13/54] updating structure --- Attribute.h | 37 ++++++++++++++++++++++++++++++++++ DBEngine.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ DBEngine.h | 25 +++++++++++++++++++++++ Relation.h | 16 +++++++++++++++ test.cpp | 24 ++++------------------ 5 files changed, 139 insertions(+), 20 deletions(-) create mode 100755 Attribute.h create mode 100755 DBEngine.cpp create mode 100755 DBEngine.h create mode 100755 Relation.h diff --git a/Attribute.h b/Attribute.h new file mode 100755 index 0000000..2c1bd3d --- /dev/null +++ b/Attribute.h @@ -0,0 +1,37 @@ +#include +#include + +using namespace std; + +//Funtional, might need more functionality + +template +class Attribute { + //a named column of a relation + string name; + vector values; + bool isKey; + int size; +public: + Attribute(){ } + + Attribute(vector v){ + this.values = v; + } + + Attribute(const Attribute& a){ + this.values = a.getAll(); + } + + Attribute& operator=(const Attribute& a){ + this.values = a.getAll(); + } + + string getName(){ + return name; + } + + vector getAll(){ + return this.values; + } +}; \ No newline at end of file diff --git a/DBEngine.cpp b/DBEngine.cpp new file mode 100755 index 0000000..a2842e4 --- /dev/null +++ b/DBEngine.cpp @@ -0,0 +1,57 @@ +#include "DBEngine.h" + +using namespace std; + +DBEngine::DBEngine(){ + // +} + +//create a new table in memory +void DBEngine::createCmd(){ + // +} + +//open a txt file, parse SQL script, load data in table +//void DBEngine::openCmd(){ + // +//} + +//should write cmdList to a .txt file +void DBEngine::saveCmd(){ + // +} + +//display the database +void DBEngine::showCmd(){ + // +} + +//add a tuple to a table in the memory +void DBEngine::insertQuery(){ + // +} + +//remove a tuple from a table in the memory +void DBEngine::deleteQuery(){ + // +} + +//search and return one more tuples from a table in the memory +void DBEngine::selectQuery(){ + // +} + +//return a subset of attributes (columns) +void DBEngine::projectQuery(){ + // +} + +//each row in the first table is paired with all the rows in the second table +void DBEngine::productQuery(){ + // +} + +//true if relations have the same # of attributes and each attribute must be from the same domain +bool DBEngine::unionComp(){ + return false; +} diff --git a/DBEngine.h b/DBEngine.h new file mode 100755 index 0000000..9ec458b --- /dev/null +++ b/DBEngine.h @@ -0,0 +1,25 @@ +#include +#include +#include +#include "Relation.h" + +using namespace std; + +class DBEngine { + //member variables + //NOT DONE + //vector tables; + +public: + DBEngine(); + void createCmd(); + //void openCmd(); + void saveCmd(); + void showCmd(); + void insertQuery(); + void deleteQuery(); + void selectQuery(); + void projectQuery(); + void productQuery(); + bool unionComp(); +}; diff --git a/Relation.h b/Relation.h new file mode 100755 index 0000000..222b8a5 --- /dev/null +++ b/Relation.h @@ -0,0 +1,16 @@ +#include +#include +#include "Attribute.h" + +using namespace std; + +//NOT DONE +class Relation { + //a table with rows and columns + string name; + vector< Attribute > att; +public: + Relation(); + Relation(vector< Attribute > a) { att = a; } + void addTuple(vector< Attribute > tuple); +}; \ No newline at end of file diff --git a/test.cpp b/test.cpp index 392549b..a419a4a 100755 --- a/test.cpp +++ b/test.cpp @@ -1,26 +1,10 @@ #include -#include "db_engine.h" +#include "DBEngine.h" using namespace std; int main() { - db_engine engine; - - vector attributes; - vector pkeys; - //we need a better way to do this - //going for function right now - attributes.push_back("username VARCHAR(20)"); - attributes.push_back("password VARCHAR(20)"); - pkeys.push_back("password"); - - engine.createCmd("users", attributes, pkeys); - - vector tuple; - tuple.push_back("csce315"); - tuple.push_back("12345"); - - engine.insertQuery("users", tuple); - - engine.saveCmd(); + DBEngine engine; + Relation r; + Attribute a; } From 0e99c2e305da2d7c929906caeb0a78855fc6d46a Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 16:32:05 -0500 Subject: [PATCH 14/54] updating structure --- db_engine.cpp | 127 -------------------------------------------------- db_engine.h | 23 --------- 2 files changed, 150 deletions(-) delete mode 100755 db_engine.cpp delete mode 100755 db_engine.h diff --git a/db_engine.cpp b/db_engine.cpp deleted file mode 100755 index d4060eb..0000000 --- a/db_engine.cpp +++ /dev/null @@ -1,127 +0,0 @@ -#include "db_engine.h" - -using namespace std; - -db_engine::db_engine(){ - // -} - -//create a new table in memory -//creates a vector -//DONE -void db_engine::createCmd(string tableName, vector attributes, vector pkeys){ - //creates the proper command and adds it to the cmdList - //make this better, we need a heterogenous container - string output = ""; - output += "CREATE TABLE " + tableName + " ("; - - vector::iterator it = attributes.begin(); - while (it != attributes.end()){ - if (it == attributes.begin()) - if ((it + 1) != attributes.end()) - output += *it + ","; - else - output += *it; - else - output+= " " + *it; - - ++it; - } - - output += ") PRIMARY KEY ("; - - vector::iterator it2 = pkeys.begin(); - while (it2 != pkeys.end()){ - if (it2 == pkeys.begin()) - if ((it2 + 1) != pkeys.end()) - output += *it2 + ","; - else - output += *it2; - else - output+= " " + *it2; - - ++it2; - } - - output += ");"; - - cmdList.push_back(output); -} - -//open a txt file, parse SQL script, load data in table -//void db_engine::openCmd(){ - // -//} - -//should write cmdList to a .txt file -//DONE -void db_engine::saveCmd(){ - ofstream dbCmdFile; - dbCmdFile.open("dbCmds.txt", ios_base::app); - - vector::iterator it = cmdList.begin(); - while (it != cmdList.end()){ - dbCmdFile << *it << "\n"; - ++it; - } - - cmdList.clear(); -} - -//display the database -//DONE -void db_engine::showCmd(string tableName){ - cmdList.push_back("SHOW " + tableName + ""); -} - -//add a tuple to a table in the memory -//maybe make a table object? -//BECCA -void db_engine::insertQuery(string tableName, vector t){ - string output = "INSERT INTO " + tableName + " VALUES FROM ("; - - vector::iterator it = t.begin(); - while (it != t.end()){ - if (it == t.begin()) - if ((it + 1) != t.end()) - output += *it + ","; - else - output += *it; - else - output+= " " + *it; - - ++it; - } - - cmdList.push_back(output + ");"); -} - -//remove a tuple from a table in the memory -//BECCA -void db_engine::deleteQuery(){ - // -} - -//search and return one more tuples from a table in the memory -//WILLIAM -void db_engine::selectQuery(){ - // -} - -//return a subset of attributes (columns) -//BRANDON -void db_engine::projectQuery(){ - // -} - -//each row in the first table is paired with all the rows in the second table -//BRANDON -void db_engine::productQuery(){ - // -} - -//true if relations have the same # of attributes and each attribute must be from the same domain -//WILLIAM -bool db_engine::unionComp(){ - return false; -} diff --git a/db_engine.h b/db_engine.h deleted file mode 100755 index e56f754..0000000 --- a/db_engine.h +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include -#include - -using namespace std; - -class db_engine { - vector cmdList; - //vector> table; - -public: - db_engine(); - void createCmd(string tableName, vector attributes, vector pkeys); - //void openCmd(); - void saveCmd(); - void showCmd(string tableName); - void insertQuery(string tableName, vector t); - void deleteQuery(); - void selectQuery(); - void projectQuery(); - void productQuery(); - bool unionComp(); -}; From 91ae6e305ad99640e7f7ab430a77ae5ecf38cb64 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 18:56:40 -0500 Subject: [PATCH 15/54] Create Attribute.h --- Attribute.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Attribute.h diff --git a/Attribute.h b/Attribute.h new file mode 100644 index 0000000..87b2c25 --- /dev/null +++ b/Attribute.h @@ -0,0 +1,58 @@ +#include +#include + +using namespace std; + +//Funtional, might need more functionality + +//template +class Attribute { + //a named column of a relation + string name; + vector values; + bool isKey; + int size; + +public: + + void initializeAttribute(string n, vector a){ + + name = n; + values = a; + } + + string getName(){ + return name; + } + + Attribute(){ } + + void display() + { + cout<<"Atribute name:\t"< v){ + this.values = v; + } + + Attribute(const Attribute& a){ + this.values = a.getAll(); + } + + Attribute& operator=(const Attribute& a){ + this.values = a.getAll(); + } + + + + vector getAll(){ + return this.values; + } +*/ +}; From 163270d71a8ceceaa595f84264e9bb813c88fd37 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 18:59:58 -0500 Subject: [PATCH 16/54] Create test2.cpp --- test2.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 test2.cpp diff --git a/test2.cpp b/test2.cpp new file mode 100644 index 0000000..5b0a6f8 --- /dev/null +++ b/test2.cpp @@ -0,0 +1,26 @@ +#include +//#include "DBEngine.h" +#include +#include "Attribute.h" + +using namespace std; + +int main() { + + /* + DBEngine engine; + Relation r; + Attribute a; + */ + + vector shamWow; + pendejo.push_back("rag"); + pendejo.push_back("sponge"); + pendejo.push_back("wooow"); + pendejo.push_back("cloth"); + + Attribute atributo; + atributo.initializeAttribute("atributo",shamWow); + + atributo.display(); +} From 0dba891839ed0880f8d16f875f16306d0fd86cc3 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 19:11:46 -0500 Subject: [PATCH 17/54] Update test2.cpp --- test2.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test2.cpp b/test2.cpp index 5b0a6f8..280656a 100644 --- a/test2.cpp +++ b/test2.cpp @@ -14,10 +14,10 @@ int main() { */ vector shamWow; - pendejo.push_back("rag"); - pendejo.push_back("sponge"); - pendejo.push_back("wooow"); - pendejo.push_back("cloth"); + shamWow.push_back("rag"); + shamWow.push_back("sponge"); + shamWow.push_back("wooow"); + shamWow.push_back("cloth"); Attribute atributo; atributo.initializeAttribute("atributo",shamWow); From 758d3e55cc0e719083c60ef43b008226f7617913 Mon Sep 17 00:00:00 2001 From: Brandon Jackson <1drummer@att.net> Date: Tue, 15 Sep 2015 20:21:06 -0500 Subject: [PATCH 18/54] Update DBEngine.cpp --- DBEngine.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/DBEngine.cpp b/DBEngine.cpp index a2842e4..a854dec 100755 --- a/DBEngine.cpp +++ b/DBEngine.cpp @@ -3,7 +3,7 @@ using namespace std; DBEngine::DBEngine(){ - // + // } //create a new table in memory @@ -42,10 +42,26 @@ void DBEngine::selectQuery(){ } //return a subset of attributes (columns) -void DBEngine::projectQuery(){ - // +/* +vector DBEngine::projectQuery(Relation table, string query){ + + /* + So basically this is what's going on: + - Take the table to iterate through, this is the relation (input 1) + - Take a string that will be used for the program to search for in the attributes (input 2) + - Iterate through each attribute until the attribute (string) matches the input query + - For every iterator, have a counter that counts how many attributes are skipped over in the vector until the attribute is found + - This counter will be used to iterate through each vector (row) in the list, skip over that many attributes, and push that into a result vector + - Once all vector's elements at the specified attribute are pushed back, return the result vector + + + for(int i = 0; i < table.getSize(); i++) { + + + } + } - +*/ //each row in the first table is paired with all the rows in the second table void DBEngine::productQuery(){ // From f748c986fa156e5c33682cb2e87642103e393c00 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 20:21:19 -0500 Subject: [PATCH 19/54] Update Attribute.h --- Attribute.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Attribute.h b/Attribute.h index 87b2c25..5be40a0 100644 --- a/Attribute.h +++ b/Attribute.h @@ -29,13 +29,18 @@ public: void display() { - cout<<"Atribute name:\t"< v){ this.values = v; From d4e1e5bc04ebb6f673ac817eb382ce380fa94fe9 Mon Sep 17 00:00:00 2001 From: Brandon Jackson <1drummer@att.net> Date: Tue, 15 Sep 2015 20:21:26 -0500 Subject: [PATCH 20/54] Update Attribute.h --- Attribute.h | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/Attribute.h b/Attribute.h index 2c1bd3d..08e12c9 100755 --- a/Attribute.h +++ b/Attribute.h @@ -5,33 +5,43 @@ using namespace std; //Funtional, might need more functionality -template +//template class Attribute { //a named column of a relation string name; - vector values; + bool isKey; int size; + public: - Attribute(){ } - - Attribute(vector v){ - this.values = v; - } - - Attribute(const Attribute& a){ - this.values = a.getAll(); - } - - Attribute& operator=(const Attribute& a){ - this.values = a.getAll(); + + vector values; + + void initializeAttribute(string n, vector a){ + + name = n; + values = a; } string getName(){ return name; } - vector getAll(){ - return this.values; + Attribute(){ } + + void display() + { + cout<<"Atribute name:\t"< getElements(){ + return values; + } + */ +}; From 2b1141bfe7763ced81537203e2c9f15bfe71d958 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 20:21:50 -0500 Subject: [PATCH 21/54] Update test2.cpp --- test2.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/test2.cpp b/test2.cpp index 280656a..2a02bcb 100644 --- a/test2.cpp +++ b/test2.cpp @@ -1,7 +1,8 @@ #include //#include "DBEngine.h" #include -#include "Attribute.h" +//#include "Attribute.h" +#include "Relation.h" using namespace std; @@ -23,4 +24,25 @@ int main() { atributo.initializeAttribute("atributo",shamWow); atributo.display(); + + vector doom; + doom.push_back("zombieman"); + doom.push_back("revenant"); + doom.push_back("imp"); + doom.push_back("archvile"); + + Attribute atributo2; + atributo2.initializeAttribute("atributo2",doom); + + atributo2.display(); + + vector setOfAttributes; + vector attNames; + attNames.push_back("attName1"); + attNames.push_back("attName2"); + + Relation myLittleRelation; + myLittleRelation.initializeRelation("randomName", attNames, setOfAttributes); + + myLittleRelation.display(); } From 6fa6ad2b44bfe6828b4577d6a7fd21d177454d9e Mon Sep 17 00:00:00 2001 From: Brandon Jackson <1drummer@att.net> Date: Tue, 15 Sep 2015 20:22:17 -0500 Subject: [PATCH 22/54] Update Relation.h --- Relation.h | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/Relation.h b/Relation.h index 222b8a5..8aadaf7 100755 --- a/Relation.h +++ b/Relation.h @@ -7,10 +7,41 @@ using namespace std; //NOT DONE class Relation { //a table with rows and columns - string name; - vector< Attribute > att; + string name; //The title the user gives it + vector< Attribute > att; //A vector of the columns + public: Relation(); - Relation(vector< Attribute > a) { att = a; } - void addTuple(vector< Attribute > tuple); -}; \ No newline at end of file + + //constructor + Relation(string n, vector< Attribute > a) { + name = n; + att = a; + } + + void addTuple(vector< string > tuple) { + + //Loop through the attribute columns + for(int i = 0; i < att.size(); i++) { + + //Loop through the elements in the i'th column + for(int j = 0; j < att[i].values.size(); j++){ + + //In this column, at this element's spot, assign an element from the tuple vector to this spot + (att[i].values[j]).assign(tuple[i]); + } + } + } + + void displayTableName() { + cout << "The table name is: " << name << endl; + } + + vector< Attribute > getAttributes(){ + return att; + } + + int getSize() { + return att.size(); + } +}; From 560e345828b1964e534d8163dd77769eb71b9af1 Mon Sep 17 00:00:00 2001 From: Brandon Jackson <1drummer@att.net> Date: Tue, 15 Sep 2015 20:22:35 -0500 Subject: [PATCH 23/54] Update test.cpp --- test.cpp | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/test.cpp b/test.cpp index a419a4a..0c956a1 100755 --- a/test.cpp +++ b/test.cpp @@ -1,10 +1,67 @@ +/* #include #include "DBEngine.h" using namespace std; -int main() { +int main() { + + + //DBEngine engine; + vector my_vector = {"Name", "Grade", "Happiness"}; + string at1 = "Name", at2 = "Grade", at3 = "Happiness"; + + + Attribute attribute_1(at1);//, attribute_2(at2), attribute_3(at3); + + + //Relation r(line1, my_attributes); + + //r.displayTableName(); +*/ + +#include +//#include "DBEngine.h" +#include +#include "Attribute.h" + +using namespace std; + +int main() { + + /* DBEngine engine; Relation r; - Attribute a; -} + Attribute a; + */ + + vector shamWow; + shamWow.push_back("rag"); + shamWow.push_back("sponge"); + shamWow.push_back("wooow"); + shamWow.push_back("cloth"); + + Attribute atributo; + atributo.initializeAttribute("atributo",shamWow); + atributo.display(); + + vector doom; + doom.push_back("zombieman"); + doom.push_back("revenant"); + doom.push_back("imp"); + doom.push_back("archvile"); + + Attribute atributo2; + atributo2.initializeAttribute("attribute_2", doom); + atributo2.display(); + + + + + string line1 = "Table_1"; + + + + //Relation r(line1, my_attributes); +} + From c052e7cbf09b7922b7d37dafb098c78e70faa847 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 20:23:47 -0500 Subject: [PATCH 24/54] Create Relation.h --- Relation.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Relation.h diff --git a/Relation.h b/Relation.h new file mode 100644 index 0000000..69ccfea --- /dev/null +++ b/Relation.h @@ -0,0 +1,45 @@ +#include +#include +#include "Attribute.h" + +using namespace std; + +//NOT DONE +class Relation { + //a table with rows and columns + string name; //the name of the relation (table) + vector att; + vector attributeNames; + +public: + //Relation(); + + void initializeRelation(string n, vector attNames, vector a) + { + attributeNames = attNames; + name = n; + att = a; + } + + void addTuple(vector< Attribute> tuple); + + void display() + { + cout<<"\n\nDisplay of relation--------------------------------"< Date: Tue, 15 Sep 2015 20:35:43 -0500 Subject: [PATCH 25/54] Update Attribute.h --- Attribute.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Attribute.h b/Attribute.h index 5be40a0..b57879e 100644 --- a/Attribute.h +++ b/Attribute.h @@ -29,8 +29,8 @@ public: void display() { - cout<<"\nAtribute name:\t"< Date: Tue, 15 Sep 2015 20:36:07 -0500 Subject: [PATCH 26/54] Update test2.cpp --- test2.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test2.cpp b/test2.cpp index 2a02bcb..0167b02 100644 --- a/test2.cpp +++ b/test2.cpp @@ -37,6 +37,9 @@ int main() { atributo2.display(); vector setOfAttributes; + setOfAttributes.push_back(atributo); + setOfAttributes.push_back(atributo2); + vector attNames; attNames.push_back("attName1"); attNames.push_back("attName2"); From b2fa6c1a556167f37e7051581ba25abb0beb523e Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 20:36:33 -0500 Subject: [PATCH 27/54] Update Relation.h --- Relation.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Relation.h b/Relation.h index 69ccfea..8668481 100644 --- a/Relation.h +++ b/Relation.h @@ -32,12 +32,7 @@ public: cout<<"\nAttribute name: "< Date: Tue, 15 Sep 2015 20:55:21 -0500 Subject: [PATCH 28/54] attribute works as expects --- Attribute.h | 25 ++++++++++++++++++------- Relation.h | 14 ++++++++------ a.out | Bin 0 -> 29594 bytes test.cpp | 38 ++++++++++++-------------------------- 4 files changed, 38 insertions(+), 39 deletions(-) create mode 100755 a.out diff --git a/Attribute.h b/Attribute.h index 9d53d4c..2c51e1b 100755 --- a/Attribute.h +++ b/Attribute.h @@ -9,25 +9,36 @@ using namespace std; class Attribute { //a named column of a relation string name; - - bool isKey; + string type; + bool key; int size; public: vector values; - - void initializeAttribute(string n, vector a){ - + + Attribute(string n, string t, bool k){ name = n; - values = a; + type = t; + key = k; + size = 0; + } + + void addRow(string v) { + values.push_back(v); } string getName(){ return name; } - Attribute(){ } + string getType(){ + return type; + } + + bool isKey(){ + return key; + } void display() { diff --git a/Relation.h b/Relation.h index c41db03..568f020 100755 --- a/Relation.h +++ b/Relation.h @@ -6,21 +6,19 @@ using namespace std; //NOT DONE class Relation { - //a table with rows and columns string name; //The title the user gives it - vector< Attribute > att; //A vector of the columns + vector att; //A vector of the columns public: Relation(); //constructor - Relation(string n, vector< Attribute > a) { + Relation(string n, vector a) { name = n; att = a; - } + } void addTuple(vector< string > tuple) { - //Loop through the attribute columns for(int i = 0; i < att.size(); i++) { @@ -28,11 +26,15 @@ public: for(int j = 0; j < att[i].values.size(); j++){ //In this column, at this element's spot, assign an element from the tuple vector to this spot - (att[i].values[j]).assign(tuple[i]); + att[i].addRow(tuple[i]); } } } + string getTableName() { + return name; + } + void displayTableName() { cout << "The table name is: " << name << endl; } diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..d8082f0af5f9dda34369707a36b35b40de1e84a9 GIT binary patch literal 29594 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 E01-!;=l}o! literal 0 HcmV?d00001 diff --git a/test.cpp b/test.cpp index b6b03b0..03a58ce 100755 --- a/test.cpp +++ b/test.cpp @@ -5,40 +5,26 @@ using namespace std; -int main() { +int main() { + Attribute atributo("shamWow", "VARCHAR(10)", false); - /* - DBEngine engine; - Relation r; - Attribute a; - */ + atributo.addRow("rag"); + atributo.addRow("sponge"); + atributo.addRow("wooow"); + atributo.addRow("cloth"); - vector shamWow; - shamWow.push_back("rag"); - shamWow.push_back("sponge"); - shamWow.push_back("wooow"); - shamWow.push_back("cloth"); - - Attribute atributo; - atributo.initializeAttribute("atributo",shamWow); atributo.display(); - vector doom; - doom.push_back("zombieman"); - doom.push_back("revenant"); - doom.push_back("imp"); - doom.push_back("archvile"); + Attribute atributo2("doom", "VARCHAR(20)", false); + + atributo2.addRow("zombieman"); + atributo2.addRow("revenant"); + atributo2.addRow("imp"); + atributo2.addRow("archvile"); - Attribute atributo2; - atributo2.initializeAttribute("attribute_2", doom); atributo2.display(); - - - string line1 = "Table_1"; - - //Relation r(line1, my_attributes); } From e90e0c990f9c3f90c3200d60f8f12d7213beadb5 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 21:03:01 -0500 Subject: [PATCH 29/54] Update Relation.h --- Relation.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Relation.h b/Relation.h index 8668481..6f69bfa 100644 --- a/Relation.h +++ b/Relation.h @@ -21,7 +21,16 @@ public: att = a; } - void addTuple(vector< Attribute> tuple); + void addTuple(vector tuple) + { + else + { + for(int i = 0; i < att.size(); ++i) //for all the attributes + { + att[i].pushBack(tuple[i]); + } + } + } void display() { From 6004fe724f5d771999d1c05bb6e65ea8ba2804ab Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 21:03:35 -0500 Subject: [PATCH 30/54] Update test2.cpp --- test2.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test2.cpp b/test2.cpp index 0167b02..1c23c06 100644 --- a/test2.cpp +++ b/test2.cpp @@ -47,5 +47,14 @@ int main() { Relation myLittleRelation; myLittleRelation.initializeRelation("randomName", attNames, setOfAttributes); + + //adding tuple business----------------------- + + vector tuple; + tuple.push_back("hadoken"); + tuple.push_back("soryuken"); + + myLittleRelation.addTuple(tuple); + myLittleRelation.display(); } From 70e29704301f9c16d5c608ec3a448801b29b5828 Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Tue, 15 Sep 2015 21:04:08 -0500 Subject: [PATCH 31/54] Update Attribute.h --- Attribute.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Attribute.h b/Attribute.h index b57879e..92c435b 100644 --- a/Attribute.h +++ b/Attribute.h @@ -41,6 +41,11 @@ public: { return values.size(); } + + void pushBack(string s) + { + values.push_back(s); + } /* Attribute(vector v){ this.values = v; From 92a5ba2e9388746268e52b43f0c15b03d1f645b1 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 21:13:15 -0500 Subject: [PATCH 32/54] updated DB engine --- DBEngine.h | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/DBEngine.h b/DBEngine.h index 32e96c2..e889297 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -5,21 +5,17 @@ using namespace std; -class DBEngine { - //member variables - //NOT DONE - //vector tables; +class DBEngine { + vector tables; public: DBEngine(); - void createCmd(); - //void openCmd(); - void saveCmd(); - void showCmd(); - void insertQuery(); - void deleteQuery(); - void selectQuery(); - void projectQuery(); - void productQuery(); - bool unionComp(); + + void addRelation(Relation r) { + tables.push_back(r); + } + + vector getRelations() { + return tables; + } }; From dce018766019028ef22322c8fa3128bc2c2f991e Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 21:33:15 -0500 Subject: [PATCH 33/54] new framework --- DBEngine.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/DBEngine.h b/DBEngine.h index b621ed4..ed5de9c 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -22,14 +22,14 @@ public: tables.push_back(r); } - void showTable() {} - void saveToFile() { /*???*/ } - void insertTuple() {} - void deleteTuple() {} - void selectTuples() {} - void project() {} - void product() {} - void unionComp() {} + void showTable() { /*Becca*/ } + void saveToFile() { /*Becca*/ } + void insertTuple() { /*William*/ } + void deleteTuple() { /*William*/ } + void selectTuples() { /*Becca*/ } + void project() { /*Brandon*/ } + void product() { /*Brandon*/ } + void unionComp() { /*William*/ } vector getRelations() { From 8dc821422bd10ad809295cf53ed2b522978eac96 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 21:42:08 -0500 Subject: [PATCH 34/54] oosp --- DBEngine.h | 10 +++++++++- test.cpp | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/DBEngine.h b/DBEngine.h index ed5de9c..4452ec2 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -22,7 +22,15 @@ public: tables.push_back(r); } - void showTable() { /*Becca*/ } + void showTables(String name) { + for(int i = 0; i < tables.size(); i++) { + if (tables.getTableName() == name) { + name.display(); + break; + } + } + } + void saveToFile() { /*Becca*/ } void insertTuple() { /*William*/ } void deleteTuple() { /*William*/ } diff --git a/test.cpp b/test.cpp index bd7f2f3..017d8e9 100755 --- a/test.cpp +++ b/test.cpp @@ -26,5 +26,8 @@ int main() { vec.push_back(att1); vec.push_back(att2); + //beginning testing of core DB functions engine.createTable("table1", vec); + engine.showTables("table1"); + } From 3a18ac0608126a5572c0cb8eeaf34c5b2356ac73 Mon Sep 17 00:00:00 2001 From: Brandon Jackson <1drummer@att.net> Date: Tue, 15 Sep 2015 21:49:49 -0500 Subject: [PATCH 35/54] Update Relation.h --- Relation.h | 85 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 30 deletions(-) diff --git a/Relation.h b/Relation.h index b27f6fc..18a79f1 100755 --- a/Relation.h +++ b/Relation.h @@ -4,57 +4,82 @@ //Functional class Relation { - string name; //The title the user gives it - vector att; //A vector of the columns + //a table with rows and columns + string name; //the name of the relation (table) + vector att; + vector attributeNames; public: - Relation(); + //Relation(); - //constructor - Relation(string n, vector a) { + void initializeRelation(string n, vector attNames, vector a) + { + attributeNames = attNames; name = n; att = a; } - void addTuple(vector tuple) { - //Loop through the attribute columns - for(int i = 0; i < att.size(); i++) { - - //Loop through the elements in the i'th column - for(int j = 0; j < att[i].values.size(); j++){ - - //In this column, at this element's spot, assign an element from the tuple vector to this spot - att[i].addRow(tuple[i]); + void addTuple(vector< string > tuple) { + + + if(tuple.size() != att.size()){ + cout << "\n ERROR" << endl; + } + else { + //Loop through the attribute columns + for(int i = 0; i < att.size(); i++) { + att[i].pushBack(tuple[i]); } } } - string getTableName() { - return name; + void removeTuple(int tupleNum) + { + if (tupleNum > att[0].getSize() || tupleNum < 0) + { + cout<<"ERROR! index out of bound"< getAttributes() { - return att; - } - - int getSize() { - return att.size(); - } - - void display() { + + void display() + { cout<<"\n\nDisplay of relation--------------------------------"< Date: Tue, 15 Sep 2015 21:51:50 -0500 Subject: [PATCH 36/54] Update Attribute.h --- Attribute.h | 59 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/Attribute.h b/Attribute.h index 9d8587b..6621b08 100755 --- a/Attribute.h +++ b/Attribute.h @@ -9,41 +9,29 @@ using namespace std; class Attribute { //a named column of a relation string name; - string type; - bool key; + bool isKey; int size; public: + vector values; - - Attribute(string n, string t, bool k){ + + void initializeAttribute(string n, vector a){ + name = n; - type = t; - key = k; - size = 0; - } - - void addRow(string v) { - values.push_back(v); + values = a; } string getName(){ return name; } - string getType(){ - return type; - } - - bool isKey(){ - return key; - } + Attribute(){ } void display() { - cout<<"Atribute name:\t"< v){ + this.values = v; + } + + Attribute(const Attribute& a){ + this.values = a.getAll(); + } + + Attribute& operator=(const Attribute& a){ + this.values = a.getAll(); + } + + + + vector getAll(){ + return this.values; + } +*/ }; From 5010901a322a601f6af8bd45fa4cb00a344d2095 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 21:58:44 -0500 Subject: [PATCH 37/54] added function to DBEngine.h --- DBEngine.h | 27 ++++++++++++++++++--------- a.out | Bin 58342 -> 67444 bytes test.cpp | 21 ++++++++++++++++++--- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/DBEngine.h b/DBEngine.h index 4452ec2..f701b20 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -22,22 +22,31 @@ public: tables.push_back(r); } - void showTables(String name) { + Relation getTableFromName(string n) { + //will return first occurence for(int i = 0; i < tables.size(); i++) { - if (tables.getTableName() == name) { - name.display(); - break; + if (tables[i].getTableName() == n) { + return tables[i]; } } } + void showTables(Relation r) { + r.display(); + } + void saveToFile() { /*Becca*/ } - void insertTuple() { /*William*/ } - void deleteTuple() { /*William*/ } - void selectTuples() { /*Becca*/ } - void project() { /*Brandon*/ } + void insertTuple() { /*DONE*/ } + void deleteTuple() { /*DONE*/ } + void selectTuples() { /*William*/ } + void project() { /*DONE*/ } void product() { /*Brandon*/ } - void unionComp() { /*William*/ } + + bool unionComp(Relation r1, Relation r2) { + //Two relations are union-compatible if they have the same # of attributes and each attribute must be + //from the same domain + + } vector getRelations() { diff --git a/a.out b/a.out index 3b18417de0c281f8c617229deafd3b3a74e85387..b0c907a543bd46c03dbca52ef7cdc401cadaf480 100755 GIT binary patch literal 67444 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 RX2T*Z8fDim(UDka{XZY1qR{{V literal 58342 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 SIrYo1&XVo0#94f)_5T3N@Z vec; vec.push_back(att1); vec.push_back(att2); + + Attribute att3("name", "VARCHAR(20)", true); + att1.addRow("Fry"); + att1.addRow("Bender"); + att1.addRow("Leela"); + att1.addRow("Zoidberg"); + + Attribute att4("age", "INTEGER", false); + att2.addRow("22"); + att2.addRow("5"); + att2.addRow("22"); + att2.addRow("50"); + + vector vec2; + vec2.push_back(att3); + vec2.push_back(att4); //beginning testing of core DB functions engine.createTable("table1", vec); - engine.showTables("table1"); + engine.createTable("table2", vec2); + engine.showTables(engine.getTableFromName("table1")); } From 856c73172af5090f0460269f0419f2867444d995 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 22:02:16 -0500 Subject: [PATCH 38/54] something --- Relation.h | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/Relation.h b/Relation.h index 18a79f1..ee95ad7 100755 --- a/Relation.h +++ b/Relation.h @@ -8,20 +8,21 @@ class Relation { string name; //the name of the relation (table) vector att; vector attributeNames; + int size; public: //Relation(); - void initializeRelation(string n, vector attNames, vector a) - { + void initializeRelation(string n, vector attNames, vector a) { attributeNames = attNames; name = n; att = a; + size = 0; } - void addTuple(vector< string > tuple) { - - + int getSize() { return size; } + + void addTuple(vector tuple) { if(tuple.size() != att.size()){ cout << "\n ERROR" << endl; } @@ -33,8 +34,7 @@ public: } } - void removeTuple(int tupleNum) - { + void removeTuple(int tupleNum) { if (tupleNum > att[0].getSize() || tupleNum < 0) { cout<<"ERROR! index out of bound"< Date: Tue, 15 Sep 2015 22:08:18 -0500 Subject: [PATCH 39/54] fixed my stuff --- Attribute.h | 2 +- Relation.h | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Attribute.h b/Attribute.h index 9d8587b..8c9435c 100755 --- a/Attribute.h +++ b/Attribute.h @@ -41,7 +41,7 @@ public: void display() { - cout<<"Atribute name:\t"< att; //A vector of the columns + itn size; public: Relation(); @@ -14,6 +15,7 @@ public: Relation(string n, vector a) { name = n; att = a; + size = 0; } void addTuple(vector tuple) { @@ -25,10 +27,13 @@ public: //In this column, at this element's spot, assign an element from the tuple vector to this spot att[i].addRow(tuple[i]); + size++; } } } + int getSize() { return size; } + string getTableName() { return name; } @@ -57,4 +62,4 @@ public: } } -}; +}; \ No newline at end of file From 773544da13ead426ffd8ecfd1dcc962fd013dd5e Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 22:20:14 -0500 Subject: [PATCH 40/54] use THIS --- DBEngine.h | 2 +- Relation.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DBEngine.h b/DBEngine.h index f701b20..64fcef2 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -45,7 +45,7 @@ public: bool unionComp(Relation r1, Relation r2) { //Two relations are union-compatible if they have the same # of attributes and each attribute must be //from the same domain - + //return (() && ()); } diff --git a/Relation.h b/Relation.h index 64b8aa3..7a90300 100755 --- a/Relation.h +++ b/Relation.h @@ -6,7 +6,7 @@ class Relation { string name; //The title the user gives it vector att; //A vector of the columns - itn size; + int size; public: Relation(string n, vector a) { From d69186dc44169f653c27890d54a6441c51e55855 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 22:23:41 -0500 Subject: [PATCH 41/54] use THIS --- Attribute.h | 6 ------ Relation.h | 10 ++++------ a.out | Bin 67444 -> 67444 bytes 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Attribute.h b/Attribute.h index fde2fcc..4b60d4d 100755 --- a/Attribute.h +++ b/Attribute.h @@ -41,12 +41,6 @@ public: cout< a){ - - name = n; - values = a; - } void erase(int position) { diff --git a/Relation.h b/Relation.h index 7a90300..3082e02 100755 --- a/Relation.h +++ b/Relation.h @@ -22,7 +22,7 @@ public: for(int i = 0; i < att.size(); i++) { //Loop through the elements in the i'th column - for(int j = 0; j < att[i].values.size(); j++){ + for(int j = 0; j < att[i].getValues().size(); j++){ //In this column, at this element's spot, assign an element from the tuple vector to this spot att[i].addRow(tuple[i]); @@ -46,8 +46,6 @@ public: } } } - - int getSize() { return size; } string getTableName() { return name; @@ -68,7 +66,7 @@ public: cout << "Column Title: " << input << endl; for(int j = 0; j < att[i].getSize(); j++) { - cout << att[i].values[j] << endl; + cout << att[i].getValues()[j] << endl; } break; @@ -81,10 +79,10 @@ public: void display() { cout<<"\n\nDisplay of relation--------------------------------"<U$~Yp4ZYgfV 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 Date: Tue, 15 Sep 2015 22:27:32 -0500 Subject: [PATCH 42/54] fixed a dumb thing --- Relation.h | 2 +- a.out | Bin 67444 -> 67444 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Relation.h b/Relation.h index 3082e02..5edec44 100755 --- a/Relation.h +++ b/Relation.h @@ -12,7 +12,7 @@ public: Relation(string n, vector a) { name = n; att = a; - size = 0; + size = a.size(); } int getSize() { return size; } diff --git a/a.out b/a.out index 6c894cd3d756f418cb03f5bad74ce7eb0120aa7a..14839936c51fc6bdf006db0a5ae3fea6b3db8a09 100755 GIT binary patch delta 3885 zcmYkDQ?26X^2Q4t0OK|o=x4J=njmu$>6M#Bxwm+@^EMG$q}$K1@x^a0<& zi8oJAJN2N8WJYcUc`GL~97JV&sZenn?L~51yBQX?W|Ql7_j?Cy;}1UP{LcCP&bjxV zxdS)Kd)z4RQP~<+_N)^8DXY40xL@(|u1@iCTd+|qUlIR~vNRo=o6>A9t+z$AOwOx( z?b0h}bhW{h5H8}?)`-g@G-s(zv9~nkst50yBgE%2Dl%DIQ>~FRh4@}A@7GJ1e_Uo$ zv;qH--k4(q&dO}*9U^(q=DmvMO`p(rZC4F;qPzC z$hc(rN%W^8RUV8v)hok@CdtDwDYD*DYaV5EXWcMz)u&^lgehXVtQwRg9#G#L#6})c z!{d4h@v!U{e@aZ1pT?guKW1d;-vn1XJEYb;-{{}p)!&scPApb0B#>FCrVr&3mK&q1 zz7Ed*V^XcT(CF{I8tmVlTq{V1A`|tYG2X}@$wcHQn%F!12 z-l9RK^JnFwSur9-USAYzn)`RTVd6kpkrg9v%}SDU^BxjOa%WzmsFIER-Y+lZMMuBF z#n?+*>}9JPw5i-G#e7E70CnfvIw*4G_8#SLr}9A0gx%w9aK zXsXYc*i34THo&Oo%HV41>@KU_#WN_qpq=~Pm@!EUhFQ%u(`|RH*0cdPh;N#tr5Sa# zp51lG&35I62J1DSFzOkFGzw*xUeUJwT#J;mExI0M4?Ydn3*JRzU9Cg*$bU$5$gKP+ z886luC77JTWMf%6?COX%=|a~4#r?$FwKW8^8L}xqs$aU1^oxtHkXQ022`TR>7$P>x zM+(NL#a<6qD`uPRTH{_iWi!3pM-JWkO6`XqjQ}HG$TtdxC%tEkm+maobv<}WURp`( z>uJpJYM1^&^DlDbl7x^-?Or)}$rw>A81f8h3G+`h_f6Owd=pCB()iHLqY{D9YWf>yc(fiC`0v(TXw|Gw=`CkgO;>8+F~u zcs;tY5k07(AHxspdH`QXODJ))Vt=o$J1`ra=tMVeMGroU{!pbzX`m4x(1w;UMY(}i zG&NBGGtr4t(2WlCU;+B^2@K#qw1g|lA+(|&9oU0A<-~i@jZ@HrPoh7(NKtBN1PB~L zOK(MKM=R>+z&<=kC&r;0N1z8Y(T@%c;5xKKD9U!UVl_H&FFLUi-FO~7*n$2c8iS5f z03Se0A4Pctt+)vtxC@$u2R}kTUdI5Y9V7oPMX{q5XQ2ag(TPrUV+DF}7Z&+x z_-F+1EL!?1%2l*t%5e%{COYvkbmJoQ;FIXb=P-bK&=RRAN70JCctJRDI683*y0Hp9 zc&J4$()~1!6A0jEXz8aY79RyL1085bC(cJVu0s!QM?dbt0PaUie=Y>A7{%Mpfm6_l z%g~MM(1Tk~6j6Z2E&>7cqh)}ibfOhQdHp(Y1Uk`*Zp=mxE=NB;g#q+oVib9&blrxF zFc-_P7(c-}j61FCJ{(a*L!*(4p#v3VEvDfMXvdGS5P!lFbi7Xi+=M>-5<4-CFR&aw zwsu^JYq1iKVgru*kd5N#R$W(O6y*x0VbOnS*lFB-hK2C=Sb`N;hx^foXHml*XW6KQ z_XDP38|L6>zEqt!72WtWdT)OgniP`8j#P7ZO?{Rgn#2{}BoW_6JNEp6M0^-4(Txr0 z$5vc>i^GH(TKJNhcAIC4PRzv{a?+}a!mgICs_QGN<=l;fWcJ2BqK;N-$l(f`TvudK ztBHsot(-nA?K$$$aEj6UNJL&ee6~ZHzl`Ju}1*fPTCD#ONUEKb% zDXl74rP|d;{6_9`rJAz30v!Zq%UiD0ki}J9OJ_c_g1=?c#Ir2aZdmnjVU`T(ZSS~ye6MH8iSik#M zh!Uk#t5pXcGzqJE<{h&TZh7Hgy69BH-d!TZ8TIi)e-+${u*SY7aZAQ}(|HDyz2CCH z*ru2HSMBpAa-LAXI`TJ@u&JfTiiDV}hP4p1$bPU3Wr>ebTsTTH?sr?qB@(dzT92TY>3I_+HYsQ&=~DC#%> delta 3959 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 O?IsbW-uYqLq<;fh7ZNW3 From fc0f899568e65ed6d1830e6b509acfa0042bbfbe Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 22:36:44 -0500 Subject: [PATCH 43/54] union comp done --- DBEngine.h | 4 +--- Relation.h | 12 ++++++++++++ a.out | Bin 67444 -> 72106 bytes test.cpp | 38 ++++++++++++++++++++++++++++++-------- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/DBEngine.h b/DBEngine.h index 64fcef2..ecb9590 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -43,9 +43,7 @@ public: void product() { /*Brandon*/ } bool unionComp(Relation r1, Relation r2) { - //Two relations are union-compatible if they have the same # of attributes and each attribute must be - //from the same domain - //return (() && ()); + return ((r1.getSize() == r2.getSize()) && (r1.getDomains() == r2.getDomains())); } diff --git a/Relation.h b/Relation.h index 5edec44..525a0d9 100755 --- a/Relation.h +++ b/Relation.h @@ -88,4 +88,16 @@ public: } } + + //make this better + vector getDomains() { + vector ds; + + for (int i = 0; i < size; ++i) + { + ds.push_back(att[i].getType()); + } + + return ds; + } }; diff --git a/a.out b/a.out index 14839936c51fc6bdf006db0a5ae3fea6b3db8a09..428fec69e91141398d3a78fd8715e16fc279e764 100755 GIT binary patch literal 72106 zcmeFadtj8s)jvL)WFaa-P_%fdMny%1kU+$ssLN$B(SVTzOD%Q@NrY%fXtDvkpjgln zF_kK@+FFa2TH1O^Em~?NMu~#0ZK)z}yi}=0ebS(!rIxm6zMs#TncXM5&yx+l@B90H z|M(5;b7sytbLPyM+nISTxhY&cEiDjGHl(Qw6jOT#hXkdsO6`A2k_K0x4pAX>mKv!B z029P7Bosm&vv9u=ZDFS2O9#xruOLk$3erLnvG90}Ru)e=65^_*$S^Rr8)(ceN-T{Whr zdfxc_F*TK=YpQD-myTXqFn;v-{G5imoUu~xEGR19FWZl>w6QeI9~lDb z&@|$P;m4+6z8fyO{@)*7vaz-FC)?ktee$`le`EfF$WYL-@jC*)qwqTtzhm$_5kH3G z@cWX)lrpB0)L>k{jNf7S9g5#@{QLs-u=S*_rfUd0ZES5f2yxcy1pHWE>c((5euv=4 zzI!x&L-0EmKX+g~87P~4EKj#zmO3erCB+j@olp8~-ytKzuNDuxXV8>ui>`SRDBo}> z6rybs!`+bRg{R)xiOfjTo?iHnkNisTd&w{M!H@KjbGr}zGavnz`ta}fDfbE=yyJtv z%?E#tk3PTf!C&ixzr{!Ybw2#J`rya;==m!j{Lg&wpZMS-K6?JZhd^2$hgO-)_JVi0Cr zQreK;P<>rhSW=}8Q}Y;$R4grz)K^Ica+O94s_Pn%wV^7%sJ1$)xqxq&k{2$yq+;eJ zrR7BxVPS13FAXEjVrK{zELP+^XjU7kD34YwpyErHMiy1oH`LXZ*HlNZjV#VZp3-Q3 zMO|Z5a@W-~gy$hvyJVqIY8r}Ale~%r<@J$heR*}X0fmNV0yhq-RaZpn8lv@8iOMRolIT6@#UQua&1a&FP6It5i#=fP|vAMQcYpQDJM;An@>g((3 zb-j~XO*h09l{F=c*^3tH4ushJii$`BQ+X;ft9D5>sx`B!p>bgq*(z*5W1lFGRxPcL zs)bbxD;6$76OwNF-oowexw&Y1d+@3#$8pV<5fOMQ=Q| z8cS4$dMHLu1BcE}{#PEm21{SMdfeoRo^dCZy)?Di@b7Y*_BX(~q!Wl?%@{w_%M7Z~YO{?s4Hc zpW3j_g+J0F0XMkt)>k39)rF`3Wy2;Ho<5Ha?Jhk185_2_@YY`=ZMzHa_R%_Bc`<(}~RnMuraUF7E z2r;G?Fk9EI9)we0XPRBQYrCXhW}02Ot6kE+WjdYdR!Kj{G+oTDb&`IHX?F3hHIjau zX?E?d<&ypx)9lh+izNLZ)9lJ!b0z&frrCwNN+f+J)9kukAxYoHG`nn9uB5-oG`nP1 zwxq9Pnq9FgOVagBvkP`9Nng!0yI$Ac&w)5~9@Fe{UArWG1=H+mUE3u+lWBIbu69XZ z%=D2=w@P|4)9g}R>m+?H)9gxJYa~6EX?CHm<&r*=X?BsWMUp<5X?BgSxspDXX*PXV ziKLHUnoZsnlJucWv#GmskT~Z)uOF^=y|eaaGQc6IVhW9Qza1tiq;uOUbzW{9PzWHD0o5 zIJSs|tB-me$->cDOgy_ky|8(9PvL~u8%`Z^;&Ns!Y@Qq_YzjUBrk-KX3)kwSe!?sh zUax=Wh2UL?23XwJUfgokRq-Nc6|Ojc{{1KjYA=p|JO z(ZB~?B~j#Em?SA{SIl#R&D&Ui2J-631``6M@QK9Q`y zlXwf`KxF~6O`sW$WMLPiFoPKK7_Y**-Z)+ALV=Jgb$R-7sS8ogTJ*e>brH_1rN<_A z9M(nj|31mho5xUSkHlLT2Pzw&EyTK9#KKb5MWjvlDy(aWt_ua)y6nXAEn^G6CAAu`buMuvB#sX*YWn)-~lcX%`B#bs3@S zLX>j=(_PAT5zd#v>0KAmKV8@5QVN|f@fOBWW(c6In00xKg{7*CNPEJou&yPiN+U#A zhAyv#agEAxYNg`sOLpfvJmWNvC3_G$K*XdDJXbBMRqG zFYz)MrRtMOZr*$og+3(l7RG^E1kg60X87$31GZ^xRYea|z_mSTu^ehSuiytJIju^SI&czp z@Kq8;s=f5=x)-N0Xi4e>TbrH^!y~NA3 zD*Bg_j14D+{z~F4j03e7pzSW!rRT$b)J3EPy$b8vgJTBNg#v9|He4)qA<9`!@u}(} zoR@>syN`+f-y#{?JnU7SZi%-r4wM3DyN`7l$HG$eF_AXGtFW$YsmtaQS%xmJg>jUT z#WL2jj6Z%rL<B9xv@VNlI(|o@DIi$eJfLX<;0wY=E{6wCc6s zNjXVMm3}zpi&RMznd+ry*I776LrYQ@s3c{)e~~mIQO+~n{b)qtYyoGou|u}%FOZCl zAcdYOCTU?Ds9b=ypVJKWEG$(A7DF!eDy-{hoDrff6lm*moURK|&fovmkGcrwi{SLG zi|GGvlAAYQN}*qudbKbPR0u#f=|e0mRb52d!(N4TU5xWj)P(|VT`rv_?Lw4uI>o1& zScLPlF2A~n{yDlX5emIi;w_A$%o2dMN7yc}Lqy8Dh_qc^g>~I{l+=X+ZCzG`r7lD{ zU!(X`brH@yFY(BVO)3S=BN?5TzULxJT^HcUpZ3zmSwqHbJsh85 ze1vG#!Z;Ld1!(&fjZ^bJ5iR6LZsM(R7U|PAqMXyfmC`uEdEh-r@HCF7F_0nGa7m^Rx+K*xU8xn6}92Lq2Xlvt;{WV0S^k1Y(Z}Y77psOU^W~G;& zU9aIjC0dfYn3i--*LR7Ca(dqBM-`dMVH~Is zK--I~%X@$6M_okP9&jcZu514wsS5?#y4-QT)P*Q#KEu`DcAyNI-Gufn=U>AFy$t;?2)QWv6}@9*kIU4-)+;7l@=)J61v zkYpTFQ|JI)7si2_3!pc7Ggw%vx`?zgufn?K;yC~ayoqJ#@>&>Yy;z29^8WTV5iKkf zLyLHjL!2aKlXv3DB7%75hhR6eUp-Cg3lcebKkd!GEbuLD{Ka(U?a+;}4lH632 zq?9?q5ReFl&&Ies3 zQ6z#wlCpMPgNH-VlGFt%Nf~LpiJ{eVUjK7H8j+cuR&XYXmkumd{|m{@n}0~wFg0mz zVH~J60Bvv349zSoRRa zb`kxHNN(Qz423=-@fOB`Y6WO}i|z7{H~LW*k@g>OCK;})4G%1#T`17j<$nEC2vN>r ziceJ+;VkwNkE}-jWhA5H{s%%|5hwZydKMNnZBjord18osuX4KnDNnUL!7*Y*{yii$ zV~Ieuvo^E!==q58IigSt;~?(>XnThSUH>`}E#!w?hzD7`_YFnT#zZ+^2UkkF2xmU! zCG}Ts@B%2la!+-UoBEq>IoXLXDfuJ!I z^eV~C%N}zkN{wbchQvBOGHzoTsg?i{vc{{7F23P{Viuv8!sc1)V(l->z_O2=-%8Q5 zK0=ARbe9{hm1zb0F3Y}3*ju!eMv!!0d2O7luWa8bm1uRI$NiV?g1(z#S*vqDZ_^|h z_ZTYTL?J7sh+WQf7MUdCREYS^YuN|K^g|=z+yYJ?LH~xJ8&FQls;wjEOka(*lRU0J zf`s!BUqS7x+7bP!ns7S4##R*c01m}dR!umU@c7)**z(-o?EVN6&KyrcXW7}}UUaif z+!Ynx+`$K8zcy*ki(C5c*Ls?n+pB*TuHKwWlZRgE>5*r4o0jb_Y--$FxH`O7KXY4X zFs{_<@cz}I>=(D_r+i5Vrf_vAv#{wo9fb-0RCva-g-zS|0J57?%LaEAizs|{7amW} zNHZLKnt3=1+yxq@%h|)*R^4P5`1}9F5x%vs=`H84I@)$Gh|aA@w0%Fuwgkzo;eE7B zcg~vC;eCY_s0?Po>o{pQy`Y!k2aJS=C}AoRE5iE%!rUp$r;vHVmLYexuWWDpHJ--q z7>XhwiXaOj=8VbT$Km~>)?l><= z9M8jV8Pd{j8b3BVL{B{A9=BnC>?ETDqolbJKNR;&f<4?eU5(-6VqF_!jp^|JW{C&i z7h)CiXu`OClZb_@58D2Iy7}}&xBOVIN8jXJw`{+IGcvrAV0(HTk6F~bs=${YV(g!w zLnTN-3w94#Bf@^q_FWO)j~M~2eqMNQ?%C<^LjHPI3iw=ZHe6FsK|=2lZi_wE(`bLJ*s8<)lF}L zC)^n`Q7_3agnQ7aECD5P^;st7vRcP7=>htGqo>5j!KPU{1U9`<~d`5t|Hb-z(gN z_x~6Mc+}$FPu=Yu%MxpDzN}}xn%E#(*6FOohN`e>3%dF)XDQ-EO&!whYXlDm|MlXg z_w*}eD>|}eUqj)&$9)q=BgV?Vq|;H@Ugrbd0cE6Om#~!0s2z7v?qCM=iiNv4d@+Xg zpzL(Uyg+IH-2v@q6YkTkO)3$$HkmDWYm+;4jZ)d<-G5qPd!5%LzSYkrrp0|{MLS|K zHoK2o1IKm0vrnG#-|Bpcl8N{wwQ9yx&%`=Vv1Qtk%7M8bnPPpa*L2vgiS~gGl=(k6 z(du@g9-Wx*w`0QJhAy?u*(H6P-D|t^87i#XrPKM?m{s>xX%{$DumU$byPT)^Oggu) zD>`yhbl?s;TQVB=c!>m>>lH*2NXXtJ@Z^+ZjVZ4gHY`cn{0|FLp6#Ys&&L~HMw_PjP z&MZRtjpVqpT`Sq{yhf!HJ4LTHZQSdugt+AP^ltrZ=ki2uGub6<99)}+4&=~dFWyJs z*BI|(=QAu_PtU()e8QH-38;+YJnf>CK!%;9riuo3lA`x=OMBxXFNEI?bZ4&V4y-{8 zH$lR0CpJbe4ZBaZZq$CK93oci4XkXB4tOE_zUn?!?~Y`=)BEKX=}!>*eqasczVAJc zB)L_$LaKMQ#l6GIbev3Wy6Qs^w-rnmysco;EbL{)cjTF8Eovv@u;N5mahEd~J=+T2 ziQcVk?Kq!Gd}}d24}ifp%bMVz4T(bbIv;P2^=z{S$M=vcmhDy1VO;$=Dp%`{VRn=W zoBcyR~B(T64%E?1~Ym7MBXfb8k zp^I_VsmB#Y8y#@NbQzhNuI$uftJ7K5h5^scAD_&1uSWB(n$AhWaX!`)GiK?f!=0y} zHpMnC&2}D(C*TEQs=5H;q&!eL(w)%;G33cvJ64s9ByDSG6lcWPh~^Z)wPWh)s%@C4 zFb{B1fb@?kz3Iw!`3ykSwr&i0PtM`a*3_J+#}7Y`$wR%`otx3#Np-h{M{U(sv=65- zk)zXz0NFhj$!$=0I~3jyg`qSQcC!^|b+&26w|Ac`9JUFDQw=+vdCIb!AATkZQx1yX z=4^*tGf`#foin=7d1%qtVAg0l9tp=J=x$~XIGAG+4^QS$nVh#eQFbIcFW==5w4MxK z;yGwfrq`5)itcshKNTAd|2rem>ufY(Xx_vMa*WPEjgzN94vYnS0$)xo9QVk)pAF1D zVcYR4ib^#yCy~iDGXDx2xO%6V4`gU$I<=yltBB`+-H#&Hk;zrWauku&pPC>#b${YW zKKNrdy|anWs%-1)H~oLn)(PkSer$?gM?KC9j`Ig z5_)nj>FsHA62i&k61V`;5jJ7M-K2f4`SQdyCd(De+Ew%t&cx`-?M~!Zn7<|>+Xl>E zt(d=BF@J4fJ|Rz*Y*%j3^UVe)8)|`w&W*{Z0iC`3G;>D7(;B#qa4NPBx#fE3sg+pK zQ6iqZ^W>B4X}yba9zf~nelhU@h)?NveTKml>yEu=il*sU_*^bpYs_9rlZLP+uy2U5 z_hH_yRrK32(czp**5NQrmT2z%e8QM(Q_S38g1PrTVa&Y_=H38v!_-%FK9Gt?hL$)(w!#-e}k@&_;JnHWl@zgfLYl-Mgp8{de)!i$M`0U4_ zjj`asXK&p5l(651K?7Sl@F%y19iqTuZs{cMO7tcN6ChmKdg*j#!*_=W(aV7xiGwGL zatfPDG6hO3B2e<6zmqerYyp(z_(`;$J)6%Ll^_-eFJc>RBwoREEoC(?$~MSs zr_CUTJgN5zddskDb;&5QGy%BWsO^|uIx(waZNu>fZBMzsp$I6ao$pTBH6(Dt-gj|N zqq$(2?M@?Z`?$QVTv!`TiN=;5K#Op;z?lYKQdZ8ux0pNmOyi%JGQH0<-v6_d7dz7k zqCC_ke$ds&8kD%iiwY}6pnJ{HOMH|n_%HDhtw(GPK3@!OmiS+xUG);5%k?G~HuYcP zUwKq)(94r>+8&c?#>Afh@hKOY|96)7YdAMIB`on`?xWrmO41S^#1>7=z0Pxq-}{Ex zBeulj*j#40AYOZ;uX_$={XeMEHWRiZOhnj^l%uSYtiC9OG zeBvp+P?i%EUy{}JhSqbN^AkR2P5tlUBKZ{&GadTqL$htpwGw|`@ZXU*7Yx)%+DF&# zrxM4C@ClcL8@b#y@o25M=|iUyBcpo}H7Q=54FH1<7hyRpSRP2rPuKVYWN~idR)R*^ z1}p1T2ssyIlBHN1Cnlo1(~6jwu9u_Yrca$icz!5m^QbxH&~xKC^`t8&eLc2AfQ8MI zANHw_Zj4ZH!(EWY2M-cqk+}QkF(hk4WVUm&L7K&9zg~Ry>cwY27awrON=jHFcx#QT zzrE4zeZrvceB(wLCfJ3YXl-#PI-Lu+LVm#;Wi`mFwMtxnwfEBL40{XG&FOR|;`Su< zfOKfzBU-w{bUXH90HJ2AAy&@YrI)kE>~)q)Ja+G8snkNA`ZH6{f5S+6mh5y+;SiIl z5swGZY+vZ{fJ7rvF^nyYWP8`@#@I;M?yT5ljnwHZL7e`h&t0o5&LaK0Yc*9S9BsJ* ziN`F*jU2i&pO^ffvs~AK{|(D=N=0w5t`X+=Ct^Kfm-ADZTlBr@ADG_ZvYhqaSV`~h zHJbB@xwUta#A8NE=w5M;33DN4_@-H#&=8n3#Q_Jzbc@a9%BQu5PedjjLD;XE%>3N6 z)fp>O6*CGwQ|RKw<5;8_zTp`UNfR4}*+xJpv$%OKW))1LFYhEnf$1Xma48|WhiJKn zx7|4vk8+Bz;~}i;H(Y}fjz@(0`Hz_;enj$?6uoTQQ-|T+UmJ4iZ&TSN2lGd#lOf(X z&-cYmb!6JT>{SZdB6^Gy^)T76js;j)c5&(2fn^nPzz($B(}4M~+@8Xnh@3WX`aZ{>nb2jHBVyk~7+k%8cB_YiK3H_D+ZE;i8hVEl|+ZpxRq;DwS zbZ7S&u;@CBP1o@kG#bV+r}II>b5*CE9_KbhapN!y1tG8T9_L-GAUaC`xb48LbN(ba<_C_i6JeZJ{ngw- zZ5;H%Ei`GM`!Kl`D+%0<6}ak_C`ijUOWBQO-Cx7|19O4FN39nCtiFZUrtr$b)dqbF z=PkpJQ!bWt6vxyY2&SZiJ()S4irK@4ew@r;`rsVc>n(y|?6#O&`Z%Kr%fuEx_Lzif_i;vZ zC;FjY$vU0=e_%XzMspS`%9E7Sz>{!BQ~jrSwkC!oZ{~66E>|(An znziftKBJlXL#hO^eCAu9rDQrMik@Mdzho2F1YlQiv{U>BGu%SS@4B}%qE~sjy`2VG zs4)BDJY^);v|qhMWs}cSE}5*CW=1J zQ-)|gVh0`{+)p#w^Axm!K2I6R6?G(R=zpHF;s;^_Omgu%GfpkVx%`1YAZ;AP?AR(G z&$zqpgZyuwr?}P`w(B-b%bn1AyM5H@HZ*B$m4SbFuh>XG=5#*2Y;K^rusn){_$a%a zAZowzjmFcui_s5aPXv*v`#v#2?Bwisv=i>S+h?CpK!GWs>22p2ER--a`W6nHPv&YQ zd~C~3XXo!gG%qL(x#g?qTx*j1OviH6=^oT+4eGQCa_%t;I-v0=w{blZf-K%xQOG3Y z1{t?H8@ojbW}wHJD|GEqu0qAvIe+A>h?s!cMu2#f>%g$axtsGv%%iO1s3*EvrV&0B zw$3^1V?nNS&V3sm<=@4lG%L!i>ihQ z`49SB`alEf!@HDM>*Ypv%)7kDsiPsK<<>aezo!sg$GCU-)jcA|(N(7l4^zUsyq7hX z-5knwPB(I33gca_alS9|3XlV{v3Qq<$7CVPzTZ+XXTZ40amaEeE2u4+6(g%u+i@cX z%0u$EMZ_$KWliaBG72T=Zo*IOwO+*hPBb|D&Lvo8#n?@=V0UfZcfLoJAb1j0c6pyS zzNHBwmEPwtlez0Uzxc1y`V=YT(=J>2JjAO0Cu zy7C?oy2&+5ZgL96bn$b*4M=mAoYdDjU>aXb=L|n*tBAxP#7^Ny+mMK#18$L#4yIQ` ze|=8&cZs9#_?!b?Mj6sYx4F*&zlGTj#s$uM1B4t&??A@Hu#0YUxl)%lej)2?3C*0s_&P$Jt7?X z5i4qs2oHmDa=V%_2&!dS^8tWK2TePZ}iPjT+k!$;qzG#a~4 z^MDAR#B)U5v$?im^v4c59H+fSggUZs3d$7CXY??Fr+qh00Rqp}$vT9N|9J=2ILfp{alb)oBooT|!S=c#}_JDew&O9tJ|5L|x*$HidJD{=@ zvRC3;4T#$_%>`zOJg7sbb7P}>uahHjuR|w0$5I(gk$j$viI$tAC_uC9;yG9kt1ZhEY$oSmFdsaX3t3z3wc{x1mFKh^ zRNr_i>zwb1JPLA*r}E2~EM(!+|9bvLamLK>RJL~lt*wYb%b5XWmEfr)4Kl;WWnhC5 zF$?*ur@|uueQxh&Pz?;&+IQH`W=HxuRo{I3{Md;+miOc|!IK{oA--GE(AkzobMOHtv^v zf|)IT7v$zWYq;z+ErX_w%W*Wbl#|iwCj{^eGrX5+khsMtWUZQKwWEh({|i6+pZ_8P zlv+@_3*eS5VE!ig{0u(FvPh);K#*j+hyt1Xt zvVT(V@BC|buD^Fz*iePBCB|H<%r?Mh-DYAj*b{vy!wU_xJlGeu*Lk{K6|GD+`;yoY*n~o ze^2z7->66D;;#WtMITwwor%8_xH_GL#*dLz{(>Lodj5e)d?gJW9hp~dakkvi(*t)f zfWN8AFew_Xub$T!t;((~Us!eSA^0QZ;hL(2RkhKEbF)>p1o9nv=+x?lMK$HuX4hSn zU0+pG9<8pc9i1YmnTAmd&sK*f6^B9=S5-vo>d!qlGCfjV+faqSqg>v&R9!x4=9I!o zGe_p-o}n5RlrQ{B-4az_K3_E~s;iw}rIysy0Z~y?7hMoz9ShdVy1Iqxy1Iq)s;d^3 z*Q)xe#Z|TCwNX`#zn5EHU$J0ubxoCGRn@fmYt>}@3E`@GRa^x<)fIKsmGi3V=c}R_ zW#Nm$GgUdt89P>;t(eimURe2hWRbQ>Y3U#Zjt(vDM)gZIFsJ?1mWnJ}kDnDQ4 z<>J4|F;11k*2krvmy3_?y$d_$-`>+xjQC!3j~aaCWi*=OcEHJi8K)|>{;8gxji5gX zxC5{Qa3A1Kz+ssX@SC2Ve87_d%K%>hj1vEJPtRJwGXXaORs!w-Tm!fd@P5Ey_#orM zfcb#i0LuXP07d}^ZAN~;V*xh;mI3YnoCmlMa1r1z{B_S80rLTG2P^}84loM118^R1277>A8;+;m!3g>z*7Nt0OkYk1Dp&v z3|~Yo1I!0p1Xu>R7BC9a}?gZQi_yOQBeCal$9r*#r0+s>J0*nGy z0Imi6KHx^cCjoZ=wgc`1>;xQ!ul{}nm=Aae)|oQE5MUH=F5p_gTELBfO96KPt^wQ! z_!GckLm(G0AFu&gzmX@L6xZvY%NRH^#_^8p_LECU>f#Xkx-7H}=#M8J)JWq>;X zzYVw#@FBoq`0!yHU_Ri>fMtN607d~7oTIgX#{zBy90|Asun=$`;BA1z@M-pTzR6JQ43$L<6i1$a4J@iM^0fKk8=fNKFi0o(|<;E$*uVC8n?!1sn+vdL!U&z#V`&ufxuOwSdFEjCx?BIT7$-z)HYH zZ=$|{4&X+>7yb-=0Y3md066?D=!-8LUIaK1F!VO^0nP_p33w;qdcgc$&=+vjJ17tE zZopyq7G>bC&=+tNU>V@`fHwgC2Jk+>({{s7fR_Qj3HStHMz&J_02~20_g(zKSiseQ zm4L4U-VS)|d$1GWgAVEmnAL@H0doO|ourid8}tQSjKiimfZG6X0LHy;P#j{#f?m=CxHunh1Wz$oC!a7EVwcKiqS0UUb( z_5ob~8T#F+n709^0^aaB__5w$$Vv!YH&X?cW(AHLG%#~b0ObRV=2yE`_VjE=S`E&c zHhB2OLk?S#xm;a%?0IL78-ZGAo~evLKTLmcbOvYLnl^Rt@S?$zqzs0@btT18!oc*_ z!6B8NZptB@Wvw|cq%eKqFV-W7j46lHnXTW}YKtI!mJ_7Wk&-c$i74#C& z&+^G%3HlA7``KqD=(qJjUk~~{po^|3BhmgHpl<}7-7mv~z8myT&`o1pu(?^Mt;FZAy}m7tFW-B12X&}V?|Cx1QY*YzR41N8NM$lncmJLsqQ z)Gq^_W;f`5{bK~^=^_92oeKKUKIoO8XZJy033?9be(kd!^bqKN_UizB4(NXM+YS2i zKFZGs!oTaI{1Kq910C+W=lGfm`p-az`{GHj1pT=_=qo{gtq=No(D#C#<0HQV^b;oa zQGd`Uf$ldxGcb`~3VMN${1Kpk3v{?Sp7omw`h%eR*{2fphe7wV&q~lc`k=1|{f$1# z?*RQDp!<%0&__)UscawpGqBDUgYIXa5ujfIx?laKf?f%_U;QdUzo8HMO3?4>qx|)t zKiCJo1N2tV{n}?Y=)VQsZ+*?czIY$#e)Ssx`sbkg)o&{3M^EuzA1XmF0o^bEO3)Yd zL0=F0O`!X=PY3AV2A#eVhI-QaxEu5bLHC>AGO(|It`GSmK;Pa+{;8nv1%0wl`IVrL zo$B8|SAxC(^lYE}>p@=yy5IcR0s6h5U*VH~H|T!{-EV!#K*OI9?xX!d9|^i&`%MKs z1iGJpRSEiaedJ#W`kj5y*Mt5u(EZxC1N1h~{n~do=x>4U*MBk&gZ~G*-}o5;`haQv z`KN+D40ONpD?!f(-LHSF1bs2+e)HFQ&>sffuYYua{u1bZ{bM)iZ-EXoc#e+@oC`Ui z`?c=~(A7o$?K>6pb3ymZUkUomKIkh!zZ&$Dee_!o`t6|mwOQV{SDABP1NtA6&bgu1BpQ2q!@f>7KT&^@eKT8e!B5PYe2smbiZ+W zJLnytpOu&&Y3lJX=pTWeN)MjbT~Oq&2hZ_t1U=iM9M)qP41GW7lYHp;puY|JDL(Wv z(9RCg^Vt390iF=}5Dl2S7h2 zE2MC|)w{h6{dk-=j=ChIMkmrCpL$LN{R+^J2q6EQhhQ-7t+6jo(6bVJHN_!*c0Z{c z%2^5eD$tjb9`%>=F!zt)^`u+UjhAemV;kRUqq?LAe;!?2>SJi z_o64%Cm($O0^encd`PpLGSDxc;orVd&>KO&G%>%c9O`o)_&UIMV;_7huLFFOFZCba zyFs4^dS0R&q?tbh6X#mci#+JmV+81Lf!;{^@`pUznS90ID=P`9|B&x?f4(UAN-hhj zR`UJGn~!?k2R=2^e_nkW^e=&)Lpk`l+mrd<1U(G8-#9%0`U24X#`*C$@cC&U`6q(@ z66k*O>KxGbfS%{0-wmLjQ0hHT(4O~!z7%w^`zCKYk*@=MAA)Zl%jxjuqdoS3ucXZ1 zo`Z0{J|A>HdyWFV1#~}q7K6SCbU%C4fZhqZpFM5|{m@zd_IMcdO3=j~JN)a(`vtFq z&ucxVy?7ttW6|J_IUWn@A20WwFKEw+pnnRw*E~-89MDhtN=S`iIrzEzC-t}i z^b*kjMfw4MJ=TM-Xtuu|9iT4)-A|9*px+1j(<}$Sm>y={%s5J^*;RwimpR^itS9dWJ^pq7cB%pW zHPHRq>2}aFBL4m5VbI5cF8yVxzaBflH)^iG9=tzQ3c8mbv>)$V-3a=FwBK6qa>&Q~ zTG{0xwV&%h(y?~CWW|8ngUuP=MvF-MgKv06NL@{NZa&0GUkUm*LBGa_z8>@sK=;#^ z_s@n`_Pw66oIT*1557=hIc6LT8jkz3p!?~;`*BB9`Rh>(`uU(&Cdzm9JLST`wQrPdhotq@m2nM>;QcU=zaMY)Z+m7UI3q$9wR_M{uu20=7-d`($H?L-u-}b zrh@O=)ge`jcm{s4et;uEwxd(iW>~B3TzCwMU zgZDG%)%g2mywAB2^bpIz&#fo*;Qh~ipnsqABRBZYL;2uav(U^#*)G0>d1wy!Cf0`3 zBFY=<;&b%}sXzE02H#ThP4?$|7MH6M|0ANb}j38}{r&)DHDk9r-COV-kmnnphSV)97CZz3+2 zgYGv@=Yak!=w5cF9yfr#2lPu3?WKUmIsT+X}Jqu-i&s{`~KK%bc?2WjTtjmsar z@`FY_GQO0KXmhCSotXBkk4!R}BuW82Ih<=8W5eF-|N@FI1!iJuuPQj2u_$g_ek2UJ0DLqHWBeWUu+un+xG zaGV+yyh(inY(KX$T=@ol34i5rB#2ig%1l2dFyxZp%=B*s#^SHMzs9^U&oZjnL)zDZ z^U}W?I3Eh`>qYAc95O1n5V~uDgYy9w23G~tPYmXWer;aA2{n+8{}fQuf|sjH zgZBp1oq^z^X;_y*SewS^4;bCe3(WDIffIuNNJm%1fW9GkM?kF#1m6#+KL>(OrK?}2 z2cHe9XETC3GSu%g7=J1lY#ykZ2L#s*Q1=dC{MLcN*D}>>1A}`8s&^&+a%S+yhpHbR z65Mo%`o$rP-+yTEdxO^AE7=U8vM=?>b4^o|K}0G=ZC4^9vS@ek!t6W zjJFM&{ZyHH;;7)q!_{j?1@Hfo+J97V_0ekO(ZRnStzJ7i_~dZ)*zn-yW7Xzkg4>T# zFCN4Alg9>|j#o{`1@AjfwH(LzH;)g#`epU%@j>T!^%sf%;mbk%q1p#d2yQ$!+?lW1@`5YIsXylh_vWdtyx_L6s%>oW`}t~Ze(=HZ z>cO*vPn@kDJ)80Gj}Lx$j{0zX@aA*Wza{?uIl-qUsHX~ozb{ZP6fpkF3Bg;>Q@5TQ zy!Tvn=edmcoE!Yl1?sQo1vi|pzBw`2GEsedV(^2B>aP=n?H8zDUl80HQd=(!zJ8&4 z|C_; zWCUg&9+KGMCcWS$ofiKKxYjhC{>SG%bx5k^={jxOaMJ*t9zY_(CPP0|C)JClyu(Zy zTPz7UYUmZPHP)eZu0WGbtuqn&KMVskkh3gC7aSTAjKvq2bf#e85Eyuffwp`+PAB!* zc1TDlu(PDC9(e3e(%&?6ll^}kjC^#iXBp!U4+(ynftMS2m4S;5yw$+F4SdMJCk=eT zz?}xZXW*v>4j8PNrg~mQq@tlQa#eM0wSrgf#sL*& zM%93yQ6D++Sbrm>-Z zOhbLem__9k*Wj&8t@gQ)hN_EO+^qhsyt6Df^C^I4ErkJ zjO6q~m}%#Qf)PD3bjiWMzkmy@4A{(fn&wSgk~tvo1Zh_X))|}?46NFT-@sPVtGWA~ zz+@H*2~?B9W*_)-Ty*lsh-Lnj$?LjsJp?~>XtfGlpO45JOsT^%-<0b+xEdo2BK7bg z5K0{ft04i#vshdf3y}*lk~(xdE`jqtCkK{xh z7#cWr@R5h54?b=%DOs4T(?+Pn4!Zy-w2FzM!)NFyS|nek4?g#>^A0OI^1?xBn9K*9 zriyTzAeE@2W7%TD(jhmPqb?kz1)e^LDugI9Cy;;~5I_+FgE1LtP&6~H2~2rdU>0zP z0+*?^Bgcs14w^U!99QC(rfB{^ z;6H;8$29=UbBPUjjxP*LGr-8E4oS14GQC{|(z9|dIO&4o5$S`o8y7GA8U}qJfPEDT z_%dZC7N9uPb1EoD-HBhCJPnYe`B$#>y(C zFb9l|%f)0=S#?#;0_`&#l4kpU`iel{*z~V|l0NkQ^tzqtLo=i4braKvUX@;Var)qi zUwdThooS~)VNp%y0{SAT&eAONEI28{G&wdJ&2la0C?wgz)MWS)k0<&)Mb+T-w(Q2* zhU)pXRh8MCMj95>)knQhBqq$lv5XZ9%IlTLA{XbqDg9kps%jVWUAg%cNi(&}-Vwa3 zSB*FI>g&s|#WH|-ST$5%SA{GtJl?Kz%a9d-T#+c{FIHK`SRn(kz+~F^y#|-Amb9B_ z9N3Jr3@V^z+2|cH)Ys$uI+mQP%;vf+mWzX=S4hrvnay>JVGO7_y|N%-5!c69N)uU* zHHeW0TB(aoy2wDTqYNRrDmBHxB#_f^?Lxe#sB#*j^%^d)F?52e`b8?Iwk}$gGih?s z=qO&L)Tz?O(y)onuWihk*H~RsIl8)115)sh& zZYVRD*rJ-K%3+sKInk=6xJoC;sjsUnkCv;Pss)j&>hU&aWI-kJ+7yIVR79$lR#YvD zM&!*)mBV*L8=!&)S66@?rIatMt^ju(1mlt;rD@6Y8o*sqw~(*0#v(a%v~n&jDWjyS zd5!bYfy?naX)L*@aUNd|jisw=ud0i&&YK4>%%(6MRoS>y!6smG8?C8>a=IK-Oj4U2 zEaEt1;8bPjpMtayQh3kDAdZ(*{9>lH7=lwY_YgLJSy~7wockL@wxr@0yFaoR-otn2 zkEVr$6gBznzC)0>B<7z8oIC&RX(3>6R%`N)kW~DVn4hDFOTE>g;$yCY<|1XTb{1@xH>XWM+Tc;r|@1KB8TB;^V@ykCX-(o$b7WD&2Q~e z4jfrx`3HoM!hRC#JA>Uv>XepY(A-go!{XfKsT zSZWQZld=3JseX)zJHI`LSa6f(INCBAX#1^2i}#I$wZGj&EI0YDp>S8Q_P3~CB0?6M zf6wxekoGJWpz>|U(aEIo`z-M8{MoBQ!kN8FXW%=P?vPmi??80t=i`G6a~=|)R@;Wv z$)xiC3_SDO;kN&gxx%^s5dlfT^j_p=6|MgE9Au=)Z~LFkXQ9=LyCQe_`yZPN4BlgVOh9bB=u}*PE9Y|%-1$}O zT+Q05!F~;5SDVkmfynI6zu)BFZ}M9`tpJd=u`R67O676xmPySYuKa!B& zmTS?|eew@^Tyu=I1KVUs%>PxN{F6574C4|qBqY^*pZw7$bp8_(G9)BbgHQf@p49ng z8@(+^>_5v*{>1j*Yw{nJP@qj(xZ32m@+}N*(lL$?cd+>^?rxv_>A%(-C6>{^#QZ~n zw|(EuT59t1omY2ANJ>9UXkuaC^t{fs{6r1U1PJ42?Pu3TF7saH7rd+U)msNhCu9BI zB>M#E;4VlDCGn(VwJGz&r>m$ZJ_G(>NF|1Jcz&&(_yMu=dUu|5cp=t5>y6KZzZG($ zB%Y2VEbC9XiRpNQ#QI6S@rNnv|MbQWik;W@#vdN@S9;?IE9-~!#t(@dg!aZ~DeE`% z#t&82ALxxgLfLh`H~vUv*YDo=VOWntZj{8+@y38%Z{5Unb+oeUXm9+NlwBWt^%r8k~OQ^_G+B{(gHC0(9e^Wx7= zMgo&AZ|WzL(&Y^wFZ?OVNRczb2Y;#${xl!_=}CCbCmHJFo+N?~p7Vzn|B=9_sUfk0 zaw|{QC`&E9DP&Osb8z*N!}U7g(XTENd~(0yAxQvt#S;6~Jm9HMXh;aLcvy;P0R18N z@wtMu^Xaz?zQEw^JlO&~<+LWq@zehSk#m&FG=88If(zZbfI3pmP8df|3qD!@ZNRhK z+yuM%+5au@d)f1SBZu$*Fq|(}yf1-@(+;5oJDdhQ%eD7ok23t@f%lS6vKM}m$WI=p zUjbgBegFB$Tt;GHfe-$Ak&`?>tOP#WW4z-j7mThU@|-(`)4mK(89d)_VJMO--VHH$ zz7ND;M@SkLRm$P>@C;VYc!Pf~r15x^Si)5X&+kJpoGVwHZ3BOViMzpO!_W6o8P1Zc zQe6hm_r4e^<%;i8VUeajf4n>-7^~;a2G8eJ8NM%9rG8=Xd|sNt%Ky;d`Mwx~zT)w@ z3~xQlfoHi7PSKpkolq+cp6{bF43n!;zczTjH^(qZuGr%QwH!X*%kW3JDs_^<^L-(P z|HxITa}1vEc`!7}74HWCe+2Zghxss<1U|z@J^B3yhU4Xm@9h{o-?L+|c6i6gvHNu) z;?iaK`JO35wp^9U!$yGe`CLB37`fsZMuWd$a!4??KRj&k%R?GJSg82?jKT9e3k>xC z7%m*B<@5a=hIw+udm#qT@4hgcBv+-bF?hbG!;m9a+>JGOz9+(Px?J&msloI684UCX z8IH=-pKePQ`Cp=D>ICjE1qFCc)st&kSABA+6|uXA2T2+VUNM{yA=%9K0^-E z^7$SV!xeJH9aw|scUBnAlq=354W92mGuVFhAn-@v)XDmXSwhA4!wf&44`;Cb2@U#!#CuXqy{|A(n zezxIXV(|Qq2?JJW3EO?-{LS$5y>bRS&!2#fMEU$47K63zX$H^tOc`wdpKb7b-;<$L zu6PgJ;Q3w^1N|6=rwyL(MKaj_|GvTVeNYB#{~$U%_2Kt>7*3QczNcyM{O$pRwcE7@ z&+id1OqMIYpJ?#>4ikgr=Qj^2f53c==esZr(@=5Nz5VbIld*6OkmTq4I}F#zRjJ<@ zJii0QVC84RfhIrSGi9*zz|{tyZu+_9{{!$WH!&QE2BMt1CWnM%`7bp1N`tp{D>Hb$ z=fN;WuK2#4!Sj7R27Og(3-Ckn&+aQTgo@7x8h*Za!C>z{{Tp~MJ%_@vq@Mg<3d6Z_ zg}-3%d=H#~{yIa{;6ug^$7{4|Gx(Q`-E6!6%iz};emmcuaI`L$@82<;C0C`&4W8f6 zVzA@!QQ)&Y{LJ4Ne!fS>ps#pF+~E0s7=x9c4TH13d=Htywr{b)^ZjLp9J%5Ve}m_H zLkx@Ls?^N}&-YOnrpXoW;~G4_&&6QN{iVV4yB!R+KkPR62hBWS?K5<^)|20%U^rQ> zfCm5D$sxgF;25nB z-}hqRJ6{Z^8a%)6z@V>qAI{+Uo(qG%!fpo7?{hI&J3MOeH%{01>xGKVp_1m+7 zXT4e{Yknjp++pziZUuw2e}}>IyD|*c&L0~*zemPk>-(kSwER(XHU4y=Dz(Dk`F$-0 zG@pd;7(Bo0$8fG(;fEVMzsJX5^?B3a`Ti)wzvPPVs$xK~UL7++g1OP)n+=}t$1_Zl ztA3Zr%RYREh;lxk91>2e=Me_a_Z1neKGT373a`qZ&+y?ghAS=q1U?JnG&5mbJZJd% zT`~r1pZ5)(-#1~f_AfZqdtNQ|!9NTzUyG{{2myCwf`}vX@0&Z%J86E zmAb{?M@QdXERv)WR2AFAE?rJeZ_m+2G8#!FnmX@_&$-vPYwyjt}nke_)AUu78w3r z2G94?87k$9@8O`KSucLKfC1`BSPi^ay?$u;vqK@_v+dqx@cdp7!)UqUtnp0Ue+nO; zYcLuN0NzXf2;iv?-v?%>l`Ec0GI)MxmBE&Km%;P<7Yue@O+$oo_}wZ7Yv(Zr&+i{F zSpJ_GJilYcVB5C?crQJ78Ge3mh{4u(zYqTjqqIJJZ=B&_xx$Y#c)owj@L-w%^`OD? z{b>fiL(R}*@ciB$!(_SQyAV)-_2v7-47R?D44&WRV$fHmnhpM&W&!4%uDFkytM%b` zUl`Eb5+(yrIjsqHt1$fhUKGP+a)qB@@cd2`gO#(<$PuLLvegIwwvqE(!aSUrr}gCb zO&F|y5;k~#FOlI2xhnMogWqoC*#7^h!Iv1kZI|r^&+is8So}WVz3e%7tk!4W*AogEn}6Pl&ntpEWrp9Uc{7x(bx|4)s44&UJVR%rk_#UId z^SgKqR{oC-p5G~AKy@VS0-k;s-&<#xX9|8-@X7acyNw)vAB};}t1zVHYd!h>1qQ4C zRD~HZELvtt}@!W2zK0ZRVuu;fPJK7#ok5B9Hb;DbcD1yd zqT)*@Pb!W?iXsckt83ja3Ru#m)25Y%%OYiyCKrck59TwEv+Kv!T?qYrdt~ZYXH1%2 zG)3_NV{7XxW?WJl9k2g{O;Kq>X*n+8aNbz_F`J47RTbAnYN~3(3rj9R16(nqGz!Ay z^5JckWo4|vXES^A}7TDq7IAB zjeLQ!<2vDwf)0*^IMnOe6UbU)@UMsw%(XqLaNOVDc-4a%Jesn>ks=mIi9vX*2 z7Zn#xo-%uO1TVEoE9H%gL@MeQT^m_gx40@&UQ|3UH(Ub4LG`k{NLg+Kl`PFei=ajG z@_X@)73LWeA`v{A9;sNmH1C{9q_(bpA$n>xo^LNlrz|SD1j3SABpjXrsYNVlJd9+^ znj9&eWXdXNtYwo+N2{t79fh5WLq_-cgjW@j#Z^hKo)#}BE*niwsc6V>7^R~Rm}d0s_vowWk+w7D zM@q+`Zf3SgS^Oob%3rj|4o~#I-o4ulz7m%RtvF{8-Q7i-nHZDWc=1_6X09X~#_7Fg zk^iO%^I2GOm-`~EQEBAFG`BOItMTmoUA;8SiPqg?OJez?6WUhwnl)1O8^0M!x`K?* zNs-bCV)s60;j`ye&9AQ2*72xBc`3V}ZNH>7O7~7pPSHv}3cLEZYjnk?43~OtL#DEh z&(Oy((Sv^`#us{M7;ARi>7lQ2@#4r#7^DF!!IYZvh6cRF!(m@u6mL09%VwFi=7`bk zTrgo#W5WWh&K1|tdby_eTXxrYG0Uy(MJ^L2Oo*`}!UblQtfEIiMJj7blBZvnB(Hv+ za@gx;;Y{M5LTan9G`iG}FOjYpD?D%JB{NDRUh67cCC&|{Q;bF8<6Y(hmt^aQjDrtU z30G7W2KX;9rg$%|`uSSQG?csFaOu{4ATJW{10GIQ%-*(1t#joXOkSOI#w9MzzL4eh z6eDlAiTmO;ImG7?E)sgGHH$r5nsPYr;z)%;aGLOYV#(b2VilIlr4(;2YLV& zOr0FA#pG3$msf%9O0=qse_xS{b*x|Z?onJ&wH;y%N$rd->EU&|`w%-&Nf~=Ed{*B@ z5n8|vMK^{g?`j~u7HTg+)@a#VnC6J!n*up!8x0f2My#{-VGvi>OBfV!J0#B^Uehj{ zpL)bhY-gyXhKftJBPA~n7L1M9gwZN9h`WVi^$Pc6-k2=&Mog)^@#q-R=+o-!7S6ys zmuP%3pUVJD3T_Pm-OGYx*W#cS&6EYXmd^s3pfp<3P((BLKJ^LD1a2I<368(& zuw||)UszO8774>{9;Yg1ZgQ>eaWBJFpxFwz9pczv^Ir|)O>%HM#CS(dTvU30I7s@U zzkjWFF|ysld4*pu^_%KqcrzSjYV@B~vEomtsH@dyi#(RHqs5iQYf*~ZDBitXZnd5V zbRArh5~lQc-wEgC_Hvx_QaR4hyN{NXu~^<~EJC^1xt4gJ;!$IM;M5RTkxRbMGM0L$ zz=O3&ud`D2X;H==fhFkV_O@hfcpsX?4aGf$Jw35&jC)>iPe0(~2p{Vn;Xb_a9e(_n zNw=ZQTCvvFeN%8=dy8>6NY=hs+@g8@jgCDJy4ykY61%U7IaSv6^HQewk*%wZ6E#9# zO4_H+h@1SJO8s}>?MC|GJp^52D?|roIHbL^eT;3l0A>SIeLsF)N4TRpS(Aw-1<4zQC3PGZ#F&*OXS!CtE|0)r4=~nfgktrW&YPw zl=Xs=SGKrbwsHLTR&lrI930b>dfxW)oK4YJ<73;-9^v>Nx-_b9XSzmJ(lICwJ6+w; zs~GQ6D)kK>OrgDQF~=7qegBvaEgga0D^ki_F7qYNCa$SHHd=e%NRU1E7pj);`BS|8 zUBlTNHl!#i*7aPi<=U?pOPbXvd2R3SpzJ*@&nt>+>{@Yp9|jzhi{fgNc&~G>D6X?M zv)fMEfW%F~W|g~dc8%!Q7>Z5jy>^(fqcqnRAw`>bcWS-uFgy4EQ_IygwGG6;{v=BI z=zAue;h{53OrJd=c-qcjLK_0>D z*E&ze?qbS5Tc`*}GlI*89FRnr-yxptm+{o6)S=z`S!KEoqt*nYj~Xh~c>Okz^Q)n` z#8V>o@IWt;YdNnKDe2YQ@Kh)&Nh5VBa+F2e@OT6WEIFRi&9cB`=cLkw#d6}iWpGI0 zPbi&qZFw`)oeq?h%ue%}q-s@P;3~T6al8et@YraoCHL_+-fa+l z*KhjA(VbA~kjMjW zo#Z{Sk64PnNAc#FAM)73F}L}Zj{5BuBHuTp|BwuVw+5WVWqG@XdytG3rIAg26A&^H zv~+zV17rXQXxn%AVRzkMIAZsQfp}FyG@?#HAeBncG={!+_;6z%e1uli*xzmV#tWJx z_ZEVj+v|}fz>7No(*8l5%(7qL$XE+tbAMIfDkC)IqRsUaDtFJors~u!OMye+2V^Mq z%TyO+h_gSf4DvCEL@~^sDZphGhcZyg&FQzRXfY%vn1qsCYH5y0*N^h--PWeil8Jc7 zKP@eq%3DPWTlTdh;a{V@l_?5dJ1cOqj5Q*?Z#A75h*zJHAx!!bDcZ!fz;JB2gm&OHn*|1)_Po$q7U&l@_$5 zm@9h4OIzzjOD$TfRI8;{Vkju6twoD%)Lu;~)g7@GE!xzo{GMmc%s%^^vv&^I+t2U& zM<<`N*PgZJWzCv3Yu3!(dvbHQbVgbrV409+U1Tw~ZbV2>>S|f`LlV`vB5Q~hvd*^h ztURM@%)qZGO(BZXLULo^2?}i)XgDNfeX$VIw+eRNrJ@E} zR*oQ;kG%GOSE7Iwa${g78A2!^QxbCIO7@s9?_P-lR>+NkJ2hhln)b06{$}g;%}xs; z#(0Rpx<;-sXsRvyQ?!Qn%dS@mmR%o`8w2-~83Y4OzAKSWlT?BfSHtHlU7xR9H2;|z z>gHNw>+7l}P8eHXGp4?-v8{bfd(p%(6DQ=iHsz0#c4wh}roH6yIl_sNBl%_j5tg@= zhxucIfHgFYxFhjnS1@1pmS^YXZXMk5XlVHMlIqnzdh5ZL4~zosWc&!3_Hg{N@jD4W zhU4%%TJ9`su!aO|FLh}cenas)20y<*K1@5wt5yw3Ze%SdS_*%Q_{HCDjs7UQhXK|B$@!tEES-9X{=blIx!Y%0GY^ z$|5n`h7!H-Tx znSR+}A&HyIo46T8t-h~9P)gG+>v_bOz9OL<3-+ZoT2p=Y*|aGWtw>~HLsMg8?T+$%%`qmQgUs%1UvLzC2sjQ2(qN?yL;KqZYy6Q+%YqX`dvZ17Ub|hSWZUp?O za%vlE>PxB*F7NEf>;mMT2ni~o)Ko?*wNThJmt0V+X@Zu3l3i1MYq)I2tn#Mv2qjS- z1>+vIi%h)O*DRbDf%K|M$|pq7mf3|;mJ+mGZM2J;P#LXluZvm@wGGt` z&FDDNwZ=76)-_s}Oq&)NpI=~IQd%-~T4Y@QxcqaiX>;dJnOYJl%pb4NbLS$-1gdzN z%nyX=a-V@Kf3ZKtNK^EnL*d*Iz~3bplg3V$opA%EuAp@na15l^xae)i)nVGnu-7EqQ^8_oE^^OzX1sD92-VM@}2Tsq$b>zt*+%dk0O}rwaEq zOMExuRNcM`iNDS`Rkp88;;%4HRqYE&`~}9TqJ0Gt{{`bz!M+@cKgBpzuP;mDk1$4>O5aU#}zI~qqar*s?Q^opvCH`&3sakzIC4ML4hcn(S@ozGI1mhbe{&mKwLVfEb zek0>loxar)Z(*FO(YH+E*D+3&=xdgE731vkz6y!YW1L;xS0?dUjI)dTLWmdsxuoOe zYl}N}7cbwluWWY7_U^K}kX5{WOND^#Z;lLE_BW7l|AN)jh2mAgQ|`#Iif`$TrXAQR zs<0q`h5#eOaxlf}rE{`BI`xd)0T zz218I$di{bYjNk)KygR#PhjrAkZUe0D>gTsESP-jnPVw>! zfBK)O2=zvf+ayJSx2$J!P*F+8*5{`j_#^caxmJ@mu$I-a^wW;E{^d(Q4YZy4wWa+B z4uH**p2@kt!m>L*J8<9``c_Z%V?cBX?m^(5-^$EgO!^FU+1`k*R>&!{%ZtDEUKupF zxN~ze(%P#}m;1MPUkcF`cdp?*$U6bL{%{>cdY3}{g=z9s8r~yKFVp;)X;>KYGE;Hq z6U2iY0{EG*aP?@ZhIsp2T=rg2+;PjgPm!u)%?5z!tG-WAyz0AxR3+QPSWJhYF00;C z+97H7Edqbw_3rX(WJQ8|kzbN->cn_2X(DiqU;RsfCQ3^4L zAdmH`tZx%c5Zb~5QLeP5d789^D0}@U2hkQuc_UILD-PQt{C|h!&dn#Y&;xS6hW9{a z0d!f{qb--PvQ%x6(k}C=tnWRTSG0u%nzpQ;Ds3Uk?)m#cv_(=rf|TBE5&nNoa_8o; zEOfkT3-5u-0q7dUwtR(^rD}_m_BF4{`f^lTSfFW3&lG73QTA{apUO~3%H1%G-fa>7 z(^Xq8W}yq^ehu$YX8}OhaJJ=96p^wmQrZ(8JPU>&NyHN0oLSVuPNn8}=- zYgj3|ka&=@Fi3vJxxk*NY%%e67THPFc1ij6-%w1FF{6y-XqOArn!(3-v1#HYnTZ&5DzjP zLgjnDg?((D-u@Yqrqp7VVBgL{lguB@s_?Q=>J&!p8r&a@StU#MWjWv`soYd%RqCAV z#Zr=4r5Nm&Kk(w7zNbk0Ly|i;Kf|O~NlVu79;l4~T~jI5dyyukS(PT;NC6*mlZ25v zFFyMgV@ZpiBrjk|{I%{$(uqXb`}ZA0CrZi}kTRLGkZJl}k~=s5nuT5=B3Z+Gpt=FN zW>5_O&B{^@UlHVYy(;Ug#Bv>NVS%PC`-`M4MA>;PK9yOOl%M~_uPws=$*L`HvC!pm zzlQgyb04wM9~n^D17nZo!;tn+PE-x}Vd4sQE& z)v%6V|Cxw2tQ1{HJjfeqB*pi93cD;iy?qywrffS)u&-mGNh6;|Qg~S`VkyZ;QVjOP?|E@gBPqT0E0VFAV?zt2C2M#OR2D$jB1-iJ zq)BNcrAc!r;3QF{YLYNA-HXq@Ozb0~C&>$0;A;_eoMI>u@4^$37*Yy-b3oA>dz$deWcCX6%{)#mH9`>rN?@ZMe7HHa%uG&JB zeIAQX)fP#4m{;*)Brj$``6OeJ$NM|wehu$|3ITLAuwP#9JBYSi%o2K$GD!*guEyRr z`h^9WwwyOk`h_U_dKRCmEs}DISMkWI`L7}wZXY}T4CU|AvoNSTy$%+Cxfo7JfHFZL9v zcFtcA=~X>{``aRnjc9ByyPkc1vGjQxa7qV0l1X&wMtcyMP1W#?_FG;|>^+v1+9Oe4 z$|8Dg`%hl7J6#$vTv%44>T_(h?QKmVzQ5S7c@~#ymZGBA_i!^WQKEZKfNa$KcLW$n zWh*4**+}VKkgPU_A51}#ayNHpyg4Gnd$D7enj@y%!o5Aug0e`y5%r`jNK%&hawLnK z!h2G@XJ^=CV2&h8c6Z9l`4#ckPmuy;`Hg$TBMl2N?rhYzVxJo3?B#0yS|2#+e~>?`irSsdst z4(x;=G9ZY6E9C$(l{(UkH~s3DDx|DqOK+O0gwjSOaV?3j(-qU*uKEgEkfmwM-^)QK z*=UDd+}WH7!?VxcPKk+*nCF-}O&ijH{(}U%)*4rBs=ZlWI+Q}D$QfTw>X^|q^Z*!K z1qOSB!ED^y_Alig&vv(tT+^*P-x&ab-_d&LCT-o)e)|vT5~BflV(;L8 zBY0_*8$Iz&^E95%_a!xYaPP>~QrNH9zstk@un6e&3&Q)_-dXL`$x);XaK{`dDh)B} z|8cCI6ZP)~zVK~{N#DDM!X~%Z^*Pt7{W)V=O zgwS_@xwr8ayBoui~}pS>0IgKwc`S@o_O3mqQ4>u3>%QUL~s4JLbwJLdFYKBeD) zxXbmRA>Df-G+nHGkA2S@U}<^S&cvk$mxg}4wX?L}y7~7=6Yg;u8&~pk;REO%)_|Hg zKP;7o8{_3b@I`J>0~FSlO0gl9d@sbAa>MF`^WH0RIm5g z-=~kl#i)z~>2)|%kOCJwz4lXlzRD%+@@)kvhQ|UrTOCRj=E?nbqYBlr;bH84f;Y$^ zg-PGc*lH}tyv5~9_gT>+#UO&$Rmy+VzN0Bo&sp$2R{8ojj@wfJLBN+IU%dGYovrJ3 z4;zm9d-!Noyd^lTSR!&>UR7kD$rmPMj)rh(UKXo1ssV$^x@StquHsemG1YP+*NLuV zqK^4JCDow8K5a*vh5uN$IbOiZ%b3Qt-(t_Pkk0mO`{-AkNRB-u7Qt-N)@!dsaXM)Z z5Iy!1jTrgloLwu+@<`hrI!7Ec)1lz4n_4n`RqYP&+imjOGg*4a{BC)9wRXqeOrMn5 z_9>}Tq8kZo4-NZbPF`CmE`F`SZimJ){M z&1@itCf`p4_u@<+ztH>9jP>exxBB(*2D~i7k@O=4^Y0XX==Ad%BvP4d+WG?e;Ey32Xm|5lmlQ z4>H-R zJy^}BZ=6(@FYUIXGqoOc+dqE+dN3K34Vb+)V)ohy`EFo7RM>4_FWKgAz^sM%2D_eZ zP>cN?_Nw=g_YA$#=b9gl!T#FLk+*zBnnEU)Zz~fI%|09zC01kqS&*^fFGKO#_#_ww z*XG=3ju7wUymj-lYUo=)#8D8|MPR?3N@W7sZ@@m<=(~n{e8*2e-O|6YQ8KL$NN`_0mFyN`^3L6 zpW}&h?I(p*PA-$5rNOs90>aCGkQLkU=wp}+tk~N2JtfJ%i9rKd+E`6& z58Ff`iQc-8%}TJSW+#+h7Zx&AqI7!G@^&diIRmn>iZod)r?{gmQ=mk9<(X_irz^{H z3_cierVBcf2i_)AvFU>Sq2~QLil=O6OmWe+_K!@?UV>f1^AkLarRHG?ZJ$fdsD%rV zMwZy&-qKZhlJs$>b9?OH$o=-xjz5%kyvqsoa9J>uRg{B9a4%`fHB;vE!MB^)UV8+5 zBsa4wo>k@~QF>;FcY?5lV&M*mY`BaZyN!GbGDjnG?Bg_YgM05bKT;>Z3%7>M&E?4c~KBUb!%h^L%r{@B62guPX}g2x91f9 zM7Qt~SEIdp3z4y!_9329@`pUd$22t*=Ztn-)=dM0rtP$&vWW{zNaOSe5x^Ghr!mnE z`$2AY(o`=v&&FQWKvE8K|@7p(FWbADwC#9=$ z03cA9ax{7dE0!0JCZsET5wh5mxRfBh7gAQU5OOZcWRg;~Q{ohn?i4XOT}?-&9Ut36 zupi3$ie(~AXgSNF=f>63l=)MxP2R3RFYN;Z{r29^q#U>lGWpiH=ix4^(Q^q{xJo#?SIIsksY;NzBhytO|_iyFE-$ zq*Y`VrxK!%c?~zRv$WIxkEaBQ4L20l_jArciMueYY96a{`A?&n4QBMI7qKJNgjRTYpQ%KHa#QV6C>m@Bfxn>j_PZ8PnhmuQL}}K))C= zq+m3f=foH^ctt^NdzeF}L2!&|P;OD@)JzoABeM>2q|4Yq8_Kfw)*7jzfDQJ;n^*u! zx|%F0gMyNNVgH#u0|JWdp$)c&qAGj-Pk~M76}yOKxO!wQ<7T%-Rt)j`c6|0H3J53) z7|jQ>h=?Tmm8AFCXUSrcct`0#E6c>o>zuT9^N}pqbaT`sHvBVV$BNVuC7-gjq+=p)%AAiG?ncgxp%Fu z|C{cN=r{O>g7~kl&zBve*jB(9U^eD==Qy*w5!>58AxpB5=D6TP+D!Xo;WLbtGyNO8 z1Hjl`^i%Bd6PCh~-}Tt($tT?PCCo#vm2e)d(HZifGkGOE6ZLzqga=8E*h=^kR0rN- zkM?7B-8DheMkQ}{3k%=dNy#Q}cJF}WFu+RqtCB6YRJ~cmh<6TXFb=>TsFiRYZDAf{ z=)V#^{c&Mn1D7ynPu;dyoXc)hAg-r&b|D5kpQmv5+O>oIuU-kqb~v^z0~2e(#A-0H z63tty%@&}ZH+QIclL*e6J5?evW5~GOeu+k3G76pZ3-GjkZ7VTPth4*LY3U@Gs|%2M za~%?_ws&xBIrC=6M~D&qj0`zGky&S-zF&~*?5p6b_VEB)e1*|Yhr+)2Jk&-yFprWSk|O3H&Y{dnmA5dTQ_*pl4dZMp%2Tr| zJ2q?Y5|`|YS1IWh|ClVH;MQOBM#c{c{)PSRw-iB2_DdT{O6W2Pp(B{dhDi` z7>VEQxK|AmpWTijY_xl~V<^OC|K<@Xbd$@XY_cB_(ZzNcxxMNte@ zbca2dE3w4w4{GPmcS@S<*-Y=q2{0(;PQwJ6zP--RwJ=};RX z56ivU2pNid)AZ4DZ#F{CR`0v$jgT|ZK6xkz4NBY#8O^%Uz_>Bg8MiNz{#UjQjht?H zVkzGHB5%ClRh)Z|WQX!1A-Ms?10p&kakoUxvjvVnA#Z)dADH+sS%gN@k9bY&lsp0H zwIBXbj3Q=p>1WcK9=ianiZ0m7(@?WH#szvO;Wa6i`eRxBIxuFkazH2zRotvb$MVy@*I0Own zd1yW+3;2gsoQwXCHYIWr`l834EmI*~%3iw|_hxB5S@3b262`rwN$}pesdrR-pIxC; z9D@qRI_~9RBWp4P6KT8@EJ|LbE_kgXa(_s9W2pkgcYPe!vE7~rinBKtE79l4T#_e)4mcj`=Pwti1vKBM_M*9wW9FmC% z=IR2(YuShd>+HukEFG_Udu-NGL8!tb`ci6eZN(!{gvQ(HB@~yRGkje zMmvW~;*R+%)&BKLd-6jpdFck1r*ewyK8dG-X24U~$ok?vl@0b~^3b22$~yZ9VGov+ z?JiOs{F?n6I#)7H0WF@&S`=s7N3gZZ!(F<;4(f7{S9>b!?5)p}DHdew)&4h}vXJE! zKCqXe9}_b?mG@+YO%}{*AGcP5r;;?t=MmCd*+XrA5( zSV@7SsFn8jHn0sSGgn?Oh&d@?wGn`V^+v!FAne&cV4K2{-*lKgmSwm)>vqPMZ)+CE zM0@sG&X|!Ue_19N?$@g6y$|qToLp2Qs%xIy$NZA7ONYe#k`LqjlCQnDn$up#QgGU~ z3@5>gC%ozj?GSg{$9}-lLE>vnT@N7AIj5U%IsviT{@dS)0A&v-dyC+fEut~&SknxE zPyPwuUJH`RHnV^ZiOa)PNwD`y6wz(Jg&h|8Jbs`eR@?d9I!Y>npT`fBuiIY64IC$5 z@v6;CZVzWap?}e$)%Fc)Ag;DwVA`*3qiFQgr2z|HZGX$N@JG?wlnb^`zHjWCnoV=i z88$kDbAxT40IKpSdhIOUPukixNhoP9%B{FJcKt@d8@s*~jl8A1ZOC)sw*q@JSK~z% z+*u=^48P?p=3^^5`F?8$>h9r`YhH%?CZyoJ42S9J^sQt`y$E+=5ANySv2%-1m+Tkz z+OMw1qsKSe&e&UuLEyYG$V5K}1!KT@TW}TG#l&sijzb08exWMpc+0-zFQn2H#EUDZ z@-;b0*8>S)-efxcQTWJPzKq&eJG%hpi0Qxb^k>)k&&3_}xjm&FH|1iQAG2aYj#b)u z;ZlN*n%v$}5be^AXfCFqYjSsD%}`W&)@M^XJ}>F`sCdg~=_MVz?Bl85x5ZOVZoA=0gZ;z@g3-Ys5rO)ds*eQs9is+!#FQrzW~u8QX7m9Dxe7Y`t| z6>Zh$SevO9se=~yC|=%wAbRZ2Eu2O@@?@U%yL@jZ&dpwxPD0xU$SNmVqtAHII*&Cc zYW`OHamW=;cmV%HfMH5B+EQ257Ol-`tZb+~e+d4`PPo3dp|&yFdVY?TBZ29L4xL`t z+FW0GLr&9zoR-@9%4l6v{|TvV zYqzeNGHY7#lv#O&1!q~Uiz*ww)U?EEsa$BaHa9gcthJUjH33mw-xOWsBprvOHBC(o z){RXKRduxum5o+Q?c&itLkeD6&MG31ddO?fd9+se{o-N-+=>J zIN@nHM4N>}8A<>P0Ivnyc$#H>x9h-xcF-RMTnpF*xCzh(>;WA5%z*>_fR6xXX95pc z1bBG&fdg{^O99&f+X2@C-U_%0@Gig}z>R?YfV%**hv0uq0TuzK;ko==z{!B^fR_TU z1)K}G32*^m4`39qAMhc-Y#bZ+G++^658zzD42++4zD$8z*hk`0lo*=1IRad`T;Kl%*KiOGXaYLmjliPyce(?a0B34z;3`zfWHIm0sH{4 zA29D(9A6`vH3ZvvK0fKENWtOt^=00Y?M20~P_U1uO;J z1b97Q58w@e{eU|Fb8vi1Cf2qgz$(BBz)rwrfWHUa0C)n{vpWF!hPDmJ_nk9wqRowf zd4S&rECzf7a1r3=fGYv#VjE!tAh#2C0KNmb4=@i4lroIhV!&p=8v$1XZUfv1cs{l# zdH^Tx#5w&qE$D5)JiyNYiviEZHuECD%K=vc-VV3{@G-z0fUf}BfEifSWa6vPYXS2B zcLA0GPQ(hU9q=;1wSZp%+yr`E0IUKm1I*YBegQxIBkBWOum|-4z6{t)JRtv}+{`~g zzJRL$ivd3dTm;B>r&j{r0=NL1-ui`%7J}+5A_1R4p;_w>7T(b;4c8z0j_%=?F8HoXajx-n0bn2oeJkA z4{-Mf$Ol*kN4**FL%_9wqp=9;2IL9MHek-j$agB*2bc%=Bw#UM@NdWmI0JAs;99_q zfIWaa0eK>RKcEemjd|(HPtl)%?SK`4`vF%1?!=O^2e21#AK-@1ArH(?3>a<_0yoaG z0_|CW$htLc`iSh35fWt?41pWVN~MOu>HHUC>FK&2(plGuqeJrl$1<2$%9wT-y&Te6 z{#ejqlJTFF5EAG$KwSj-Sw8d?z%K$FqV~+c9{6v9{=GzcczHVO--ciQ*&*xvL^|T6 z@4;^o=%an;8Ia$d1LV&I{g4GkwjcCC=lIiCfPN(C`b zpifL}pXqCbe~9~q$h8qi-Dp!^k} ze>_0>>p{=S_ve2b=#xP|Em1y*i~fUN0lJ@lWI$*)gFeD1e=g{q1JI{~e$N1O{-f51 zK!?lYsh=xAe;RbZ{#g%t59ogF+Xnil1Ju6<^r2(@>(9Wcq$hw5m)euRT+q(|9WI3@ zeLCnD4M48}ea-;%6`C1TO*9y=-2Hnp-tq1++asK6R13edX zzx;bZpAPy|pZYU~U~L6@jt@N-^anuqvtQFe|0(G6eDc?TK5D%G{IUY{$)Nl7?|RT@ zfbQ47+d#h-bie-H1Nzzl@@JspjRVkgLEizoU;j-9{r8~z$-f5lPeJ$7j}@Q~o#1bO z)`Ol4x?lcnppOIHul_xt&jQ`I|FIWx7w8ic`%n89xuCxQx}Sbb2mM{pM&ix52kzpqzh+bj1@xRtWcTc1HK( zd!Vlb-EW)@KMZyX^s^K5BThcf0sXM^Qu8qz>8?S#P+~cnk0|K(fbJ*HyFh;kbU%Ik z3Fy6`AD37@;*`TK&_4k^$A`Wj^y7*`))XK5kznj<(Ea?437~%!^m#t{XM^4Yx}O}Q zpr=m?Sv86I6Z-QWq+5t|p~Q4rj!%Pr+sKf0VIm!I%Hj8*KM(p*KJ-sP-+=P{^zwv} zuzR2v`sAMs`X`{5c+jaY*ML6#{E*c~`aQQp;9PrS-Rx>7)2%?dr;zR+Ot-;5-NQ)t zzYFwPp!>=FC!ntY-An%{&t0Iu3A)IAm$#gl?o*_jeNo7&!hJ@scRI== z7l!>wq&tS`@Jp1}bkKhVx}Q92K>r8me)3!a`bii2%VRz07lB^rQ~x&5n?d)J#~#pM z0A1v<&%d3+4~L%~@@^;Pbq?rrL2oA?pZb?G8|ii;-C2qJ8v6(OC!mkN_(BC9I$G@D6BP?tDw2*Zs)8Uuczqz2# z1KrD>k&o%1-vatrkNo7L2K1kR{&&(R`}1)d(*0<4_h{O5o^;Sz6qM>&*&{#DRJiS;8+In;yR1^OMN&-IoA)7^!1WyK-u zVWz8fr7Kw;ye*?M9cU@9#W65?8te`??3|x=Xa)cKW9qj)|h^Qmrrdc&B4K zCm`L?GyVH%Hs}|E?$=LI&=-O3r!RMb{@kQ@53w~^eYncyZW2;>_WO1kuH>&PLG5Apbxv!pN}J9=of?TC$|Zp z-v@e4V)+StT!VDMS^j+71bP^BKY82(`bN3`5GuJWJ9>Oo%y`jtNUZv*`m&_f<{^7%06hkq$# zeTVeCJ3QwFrrU*dk071ck8@q=670vPNH=e8$ZBSJm$=fo`jO@39*g-C>Drm@OaAFf zk#6djwf(5^PDeRKkuGPR|G2#i^h-eZ>UZY<3Fs}L``M3Opx+PrGwjc0{(O9jbXD`c z`;+ZH;W*6Wpx=-Cj7{FwcEFZ;lB^+@+nMaX&-_Zhpq%VYcQLb`dC zA!`QH;pdcxTWLS&>p=G#H@iR|R^=@}^06QEiJ+$%Hz&ZcxCQA#$P>qhwj+~4e-89n ziFCxt=QW^bS9|0KjeOh$`drZOr`&9Rd8|jePip=9X&dN^7KE%i+UJ}*W8>n|`1SF7 zNcZwWZ@nWw!@+bv=wHEoTzeD7!vv&@E(%$@nC?nfeF^EVLAp0bhVVEN>1ti+Tznmg zGWH;>u03A6F3VG*VC^2Rz~2lbi}(dj(;t~ z`g;a$(Nq;6f3#x$sF0@j^@;3H|6S3$Tdjkn+B?H*px@~ra#FA2`KW&z%Gn&7^dF)8>_I#duw z;ilm20c&L-_)ft3-$3xGbnEf-;Fh4ZB_p^i!}?VQ@1F_=I|o~xgM#Y@S>GDO`&$PG zU(2*!8ytLZu=OXoexOLyK;7^8GKN=Ri zZMgOI;lZ~Kvw98-zCF@BdiZc@cyll!N*2fk7Wg)&9b_(c>lvu!Osu3J|7jl z<8bSnhx7h#hXD;Qt%pAh%2TY* zbAoT2YVA5TxI5R{eOmCN)2#PTlup=-_i_TW^jIelXg4SMHxVI|%$!=kWUK zIl*VgSbgUN|9+13q1<+JWNHcyz5k4 z*5$x$OjGfXK0nZesMVgX;>J5%J4nR`k%+KS(}$|4><#gDn2u*_h%Mo`fUR8>)>Q~J zYxI@+hU<5R!3xMTGTs&q4GG5JGj%*uuvpM)I7CBJKVE&7_N*Ne5(?xjal^+x9iOY| zI{UvIQY7 z{8+<5BXs>5o}uAH4QFV0m4?_!5q=kIc&mnYYbZq5<&tUB&dO|8vK7Gm!hWhs?W z8n8~+Gul;$`&Ok-!*EgQ%j!Zx{+2tD>;4qnr&&vIU4>s0evy(ZBCXMyy2eObYi$h> z*!06M&0?Vi_+5rrBvM~jRUN5rZHp|ZYpk=dv*X4A6$Qq!TJh8DBPX^WHTy4Un4dqk z^@i4(+UC}=?L`wK6DN$VtzR&l z3t9P?aruRX`Qyie2kVl{=j2Q&&l#6LZhU^B6hpr3Z2CpW4iPv+`?ldccJI%_o#3GoU>C-*55;$FQ`VeON?Ztu-J~C9z!NA{v z3#YJErj8u9ySt%lE)F&$N=xNSX~w?kqa`C zI%+2_feYT}H89F1xKKr`z$hzg(5S%Sf%MGdGf&Svf`&OTDscLUBZj4qIDP~vSuoCN zxz?~@7XgJ{(YH|e40VehnP8=lIDgm$!%B|0cz7C&_n;-xS_yhD(;wM*hsX6+znSu9u^3c z9KoVSoC1zV9u+uqIAd8sX~L*jffo;-JRB+Jz$ zO_7vLMlwb%1~?3#9_wRTVPVG9(=3jKRUBK_SY6*%Q)^kU0b^q2!Wh-mF34Y`e1sus zM)%W~2Li{XU;APDsC(0!ew#ijGn(EsIepZE^rlPGM@+u@N89gAI}HpAYx0gAeGfFJ zJxhP1LkevKgDF%`&+?pscr%zf7(qzfPCsZ9RgcesbJ`kP>lQZF*5uHPv@U9DiF%<( zOt8XE#_C0tEtZtURJ4234t7SVZCuQ6ix*ZWS!$QOBlxzt4qrC6v{c@JX#jTEYOTAm z7Fk?)e2wfbLuLS`ibPrdVk=9@$_i<_IT{tP=9t^t9n`h4 z^y)4-*KCvPn@%nclDLqZ>q?XB7M(C)T@#lD5rg2f9)^Hbu5MyiJhhRKr=clzv5uE$ z$a$0@Bv;FtrePAuZ@r-b-*sF0tLwJ7OTN^mO0H@}>guKje){j+cwZ(4b5v{Yr3oeik(=B4CNQV!(bXjN*`XqiM+TZIV}FX$ zLWp5Kpb>ba7ZQOU<9bbiwL<}Cy@W|wf+^<;#PE4( zlgV$^b?xaY9cM=d^2lKFtC(ed88^f5Gx^QBZ==p{YXb98_9nlPOC@kjYVwrmn{|HjO+F3(8g0?! zQI;mZv+jhW!%(0=lKf2jX`bEr%{sP7=QrzK@(-WQso&)1v_P3?aam>^-%SSx!K72M zWc|Af1b6=4;UP)dtMhj!2;5kI1OF!>zj2Ayky(V5S1V|)CZCCaA2;s$&Avn4bt=Wt zCZUE#Zw*?!Z$ymz%_1VC^Iw#}e`5bVj=W4_@-MqSgqUS5yIz3BGeF!SvHmR}y7RZU zgd}-;i^`Qt@6Qzy>wgh6cYeOM&2W#Nw?9azFd-`ElQ6#?ZdU(yE0`TnKvMrF*1reI z-1)Qat&oga_p1Df{gs%1Z$kbYoj*tCPfVW}--rAZvEkqBd*tc-JINe^$!DP9i>o3x z|NZ|{!Q@sy6%)avSFu>!;6De!o!?qlp^~msfc&|G$!FkTWOnD@r}OVyr*auSO&KPi zi64f{#F_S6_f;s;eG25Ua97B2-Sd|3EHg<#0^ZX3CnexbaRwfb8{Q}8pLCzfn4tcW zmK2jeU*}h;W7m+*UlBveU7|cL^vSff)G#ssDBvC4ccq>7po;J;0(VG=iXJ9(u_WK{ zgvzzyBn3wUgz+=-GxH*+d9V7*cBy>1;}ta5#QF{13#Nm+qO?#FDIK%TY)^c;74^ht zz#j}*i6I@H-$qaTAZLHxohKb$i1E+j@tKzKyW;UfEaOkbmp%kQ*iU>DCdJnZMn{bnJGR zc{v_`lr!JP!gD-lSRWinBKY8GKfKZ(0eqS@(%C3C<*62BSw+`{3`$@=u3qJEz7F6ELgUAo zOqU2gS+BTB62MciM7^p4p8V_^5yD+8wBt5_w}rFruMniMXW!8HY>hW|at-h-r($GC z(wmDP|MwvQ`OnmTph^FT;E%A@YX8>YpB8*F|2u#e{_8>}sX#yZzX__BJl_GHr zh709tS;wH^ltYegFQO98zzx%z=dVX;{6yfr$|u>&QqfV?N8hc`B`dJV z2mci*C)qx%06xcKyyFc{jINRLT^38Gd>Nk7cz!?1P$E}+v!?NUPn*GvkTguHEQjB3 zF_>~DYCO*$VZf&z5*BDY&-GzAU#{5O2L5n;?*^N7dY)6jaJF3WFSj+G-|I5e$Q9q! zVUi|4{BDlH@cA{3=XV+m-;t|j{aEAqeGh{v|9y?;cfJhjiv8&fZ$2x5XT3Zxg5hMj z;`=0x=Q#xoN6OW*ex~vK-kD*FT(QOps&e?bb6jMz>p(Xd}juSpY7%MVhm&DihUl9 z=eZ*crr+<-c%FyDFhZ`-D~;zlI1Kdj7;*=z^7$PsLzP_d9<#>tTrP%Frg1;a$ST2`IL^Sfz= zLb+NN-u4#$dHw_gq7q)#c%Cc7VC1u3bsi9tNX_!;z8t84AVYPtvDLm2!pZb=};t= z!}ACkjBJN#JkM)jF#3O?#`D|+hK+KytSdC0-}^GqUtzdU<9WUSgVFzAYCO+XU@-E3 zSL1oU8iTPvhhrd+Po8_jVB~hK#`8QHhN*JJJgM+F*1ymE6!rocz#FDpsqNl1Nc$+GwVl8>k@uy%DGmh zG|!pd0^W!k5K-;lwK$NvI8%fp{sr_=NMW(IY&tY2$9zguQ72?_wF6<%;t}48AfXm>C*>qsH_6LJkKLwD3L4rOXGQ7D8u*Uiu2<% ze$Ld8V9a>`xyJK+4hAEiw>6&U_%Ns|UJN=`@x$*r8PpZySmQer#!HjN^SerhugKN1 z-qLuU6H=a0eY+hHdvet6CggBhn6Ydp`*VlegA zX*|zcWiax*RpWV%EyG!Ig?|P7sI=p){&f`^qrhW2Jxh#S zpFD?_!N~u7jpzBH3`P!>8qaf>80N_p>q_89r5$Z$-&>(E3Ty|S>zBm$fPSaT;rU<; zMh>57JkQ-^FmgB<0%ZT@X*rwp=W6`0;aigBUwJQt0@@OitzYq=SIeyj2PZk^$Jx#H8?Q&qh~wVgap<2Pvh zEma}Gs4HH8)Oeov$6)kiBsz%v^ZX5l>*R{{oyH$|PDn5qCK75jp68)482$OB#)lI6 zH<+u+=ea%%M*mL*KFc*8g@{YOPS0~88H{|&fj?X@@s~y){B~Uq&kbOBRIZlwk;XqT zE+iNu=Lx54KIbd^{W|?Rjo+Z#m80?RXgtq%VleugafT{~=T^zdvLYW8DL;}sSAHX6_Ka~STBEA}@up68b`n0et( z8qafI8H(hJeGZN1`6UcBa>e-#d8%HXYr}wK5*`5Ft6fj&^!FspcNtI&^3U^~7{3#1Q8O65dPL)SJ`#hmlP8W={P6rh1|#Q7 zHU6ii3UAUstMNQflEL)vTflqq`41obDJYO~;5j4=56cyPipKNY2ZsC81X$nKc%IwA zVBWJyJ4cl>UF-Q&p~6qp_=!~^!I*ZnYCO+DWKdU}6QuDxe~00Ex#C?N;MuN%5h0CH z;1YBk`RBR348|@!1iY6VcIfmxXPp6Jk?@|z^PDDzt#ZX)Y`!X==aMp*ad(c!^Snz2 zW8Z2tp6BT?w8@p{Rx3Z*_yZbk-Kx{`oF4|$UK@BX{?o=Pet3>O!w9+JT`G;Ar^he4 zNkSNSmQ#@+w*?xnlR4l9AN(Du(y*^JW>0-M*qg@t>>l zMsF)Lp6B~A7&(7k<9Y6@8~*_CUh?VI>5FwaLnW7G{Ym3_J~P8ax#B$ALd6fywPP^+ zEY|p8RUx9Car&6X^Bimjbd!V^HGX$#NaFV^v~|unRX)!ZWiaJ`N#l859s{yVxD$B# zKRl0wfoGC1;7fbplb?HjSC_+c=ot832g6S^p6By07=8Fy<9YrOgW+eyc*Q5r?`1IZ zH}9MC)lhc3mcjm_4~?^mfFgC^;t@FOSCoGhJTmEcb=!szG7CSw4{7? zB!bxVxY(uBT%?+&$in)jDik7brOLl~!W*Z}^|jI3n*51{=T5Rnh}6}zBQ~+nQm?w! zv^6x`VCo59K3%GrF>A_Y;fRT`8gn13MP7lGTB5bBc$vPr*^11YP#9r*qIK2s=5<|V zecg@n&#WSqjWv-PBy4G`=0CTJ6x7ureR;IB2rp?j$ve4`OG>YpI;AucDTy>x)-}3c zs5hi5X3QuL&yLKVGPN{Jc`%=T?OVOx?Lw&cz$4SYeEF2iN~T$S5!c9i-sLmPqZ8G? z#wsaqEw98S94;J(f09+bsJ8n0NPTT%xS?z&I$+-Al7FKWsj6(Pjb)fVF1%Q$ zDC8^dk!VY0U9`2NI(!}_U)fR{Mj7SfA`MLCs&bO^pSoCeLF5b69pefAe5-zXq2gq~ zI*O_*@kvr$^ae>=9vxQ@i9{E*G%aCs7e*IFYFk>GTEKBAbV+H+)M<0)M)1*>^itvY zNTj-{`G!bC)8g7lWl3pOLAVTp1M9O3BeM%4Xk>XIdIUXMI3X_WI7xi@q(}s>a7U`! z+Y8T&L>ik~8lb6lcn`c1N?B4i6NM%BNH}~sN-bec6Cos1*VIV)6kS(QTO+$%6s@*K zc$DO1tRONw##eGTCU?TLap8tpGfg|jjdQo73LkSVscfk+jd$fPbc8UT^@$KBP+BGb zN3E8Im_}b--Z~Avo!Cci^>Q@2sG+hw!fzb3cDOoWd}HmB2y9SOwRAwNIpO$B<k(GwDnc<%Gof@^ zxS554r-TgcDdSy{dX(CeE zsmLjM$%kQ=e!E7OV;5ZPxdoX@IzHnY!$ghnSr}i?&@d+Em}f(W;?l*DSrAAo%>A_b z%GOqV(!yb1SrY3x*j_!C8gV!@V+$rVx3w<96kL5hrB|S}-z0Y_nVwUP7P&;2VD+3T z!bRE?)^ge>BQ^D9$u`zil9!&R9QLYPXi3~Aq_GzBpNoCZF%qttHS_ZFh}Yx^e~7lB ze43U>Y`lv-aFuMFjqz}FYT$2*^@o!JVTz05YM-y9bVs@MhV!%1fx<{k2Ru9{N8YAO zjR)l#OkPTQ`AipQUr6%G#K`Af;-h#OhnOAVB%w^Lp3&jARKi0SZz&XlXN0fTBKVG* z9f=`0LCvvAb25Zf*VHOr5^EUdL4{2Dlb9iXjwq$?ug(6`}}h?hY4fDQMLgD z;!?eYK@pQfviwU1zY9qb75 z<`e^{&41o5!XtFA~I8M+CNBI*x>Bc1uWoEhPv!H}0nqZh)RZlzX#hAu$ z^%n0r%92BjK%u93b1Bt$$Co@eQa<5e=M8PG-NQCkrWw92#g7q<7P}mef8M6MH7jwA zo?LZoEcEN3akdh;OoO^`( zq>ZicFL!!Y^`TfT2d8vXa9(SR@z^a^zF176h5nt6H4oJ75VXXsYaFM_xPD&D#P7?x z`Z$pz=u*-;)wQK|UQJzVbA6@S-i6^gbPoXvMWd@cYrW^?v(>`x_2{%DEkcowI-5OW zWfa|8>Q28olS`sy(yK|g$#f=6$Qmwd08*OGm$y(V$38Yg1$qeCK+c9OY$i%3ED_ zM(scPPalpB#``VUAu~I_F1>aVd#JT5nX6~eGT2pD(`clObB~8~UtmE1lf->)Js8i6 z;F%lT1bO6a9{)P$C-R|NiZN%Vyx0OMsg<#gLAzs(GagfHqol9^=Z-CrO$p3_<{^<{ z;LxWzrvS0w%Jvu^C3$X&@nt&4f8~>UQ46Jv4Pv99;n-5PJgOcYx`t2EZY1^`U3%wb zcD-wk~}*f?C6WPzf~nMj$Ly`{F?lboD5f=#M`deNKY z!No+uZk2~%W->Ua!Q$BMxP_jxqvi6{zfkWh@83L2qcQkD><;Ma7uza}%~tMbu8t@R z$C*7=*XAT-9`$j8W24L1jQHX?@u8z*`{D9- z5xe~$-nfu=Rp6DWr(Rfg%Bv)9m&D7Ux)_KJB$q*O9_Yv3mT*Mn?2NjNPO{$<|K5e$ zRdH3Wr~QPq(yu-nFo!%nrV@our*Til_zu$|Jgistn)P~zO?;b9(3SGvR!>l3$e z(=QJJbsimYWxEV-$+pXxnBYqCJ)nd4@SGi<@p$2;qyY;@=oP9puOfH}A*GlPxp_*A zrhSmT*Mcok_AYzgP}@-5&^+Ly4zHo%=(%f(ca4mgYvbOkfcZ0)PhQ-EyWLdZ8ZMhL ztGub)!|ue&c8Ns~hIl_h^%|V!m0Pe`dNb>##hqc==N;Mu`Y&nWUC5Ote>%)l~ZlcQa_LiqIyVfzTlC}Ps zU8WdCDXwfoAA~`QZDGVT!h5qLMt3{aG4*v+OFb{Hl~ah-p2k1BNf2vXnaejWGH-Z_ zD}rVx4RF3tRZd9^U|iM8)3KAHtTFo&S=inlX~s#DAmVDVyKCqC_CpZ?IOmUBp1{$bN4#-5Dl$akG8?YE;&N6>uWlhbjrX^T3%C23a JBeB@}{{Wzo9Ap3h diff --git a/test.cpp b/test.cpp index 884021d..93f1781 100755 --- a/test.cpp +++ b/test.cpp @@ -25,16 +25,16 @@ int main() { vec.push_back(att2); Attribute att3("name", "VARCHAR(20)", true); - att1.addRow("Fry"); - att1.addRow("Bender"); - att1.addRow("Leela"); - att1.addRow("Zoidberg"); + att3.addRow("Fry"); + att3.addRow("Bender"); + att3.addRow("Leela"); + att3.addRow("Zoidberg"); Attribute att4("age", "INTEGER", false); - att2.addRow("22"); - att2.addRow("5"); - att2.addRow("22"); - att2.addRow("50"); + att4.addRow("22"); + att4.addRow("5"); + att4.addRow("22"); + att4.addRow("50"); vector vec2; vec2.push_back(att3); @@ -45,4 +45,26 @@ int main() { engine.createTable("table2", vec2); engine.showTables(engine.getTableFromName("table1")); + Attribute att5("name", "VARCHAR(20)", true); + att5.addRow("Yrf"); + att5.addRow("Redneb"); + att5.addRow("Aleel"); + att5.addRow("Grebdoiz"); + + Attribute att6("age", "INTEGER", false); + att6.addRow("44"); + att6.addRow("10"); + att6.addRow("44"); + att6.addRow("100"); + + vector vec3; + vec3.push_back(att5); + vec3.push_back(att6); + + engine.createTable("table3", vec3); + + cout << "a"; + cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table2")); + cout << engine.unionComp(engine.getTableFromName("table2"), engine.getTableFromName("table3")); + } From 38a4fdefe310d69f3f31d46509bbe928d88f254b Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 23:13:28 -0500 Subject: [PATCH 44/54] more testing --- Attribute.h | 1 + DBEngine.h | 27 ++++++++++++++------------- OUTPUT.txt | 45 +++++++++++++++++++++++++++++++++++++++++++++ Relation.h | 11 ++++------- a.out | Bin 72106 -> 76409 bytes test.cpp | 16 +++++++++++----- 6 files changed, 75 insertions(+), 25 deletions(-) create mode 100755 OUTPUT.txt diff --git a/Attribute.h b/Attribute.h index 4b60d4d..c38f0df 100755 --- a/Attribute.h +++ b/Attribute.h @@ -23,6 +23,7 @@ public: void addRow(string v) { values.push_back(v); + size++; } vector getValues() { return values; } diff --git a/DBEngine.h b/DBEngine.h index ecb9590..c720c03 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -18,9 +18,9 @@ public: tables.push_back(r); } - void createTable(Relation r) { - tables.push_back(r); - } + void createTable(Relation r) { tables.push_back(r); } + vector getRelations() { return tables; } + void showTable(Relation r) { r.display(); } Relation getTableFromName(string n) { //will return first occurence @@ -31,23 +31,24 @@ public: } } - void showTables(Relation r) { - r.display(); + void saveToFile(vector cmds) { + ofstream file; + file.open("savefile.txt"); + + for(int i = 0; i < cmds.size(); ++i){ + file << cmds[i] << endl; + } + + file.close(); } - void saveToFile() { /*Becca*/ } void insertTuple() { /*DONE*/ } void deleteTuple() { /*DONE*/ } - void selectTuples() { /*William*/ } - void project() { /*DONE*/ } + void selectTuples() { /*DONE*/ } + void project(Relation r, string n) { r.projectQuery(n); } void product() { /*Brandon*/ } bool unionComp(Relation r1, Relation r2) { return ((r1.getSize() == r2.getSize()) && (r1.getDomains() == r2.getDomains())); } - - - vector getRelations() { - return tables; - } }; diff --git a/OUTPUT.txt b/OUTPUT.txt new file mode 100755 index 0000000..526f77f --- /dev/null +++ b/OUTPUT.txt @@ -0,0 +1,45 @@ +Assuming previously defined Attribute, compiled in a vector known as 'vec' and with subsequent numbers added + +To create a table: + + engine.createTable("table1", vec); + +This creates a Relation object with the appropriate Attribute objects. It displays nothing. + +To display the table: + + engine.showTables(engine.getTableFromName("table1")); + +This results in such output: + + Display of relation-------------------------------- + Relation name: table1 + + Attribute name: name + Elements: Fry Bender Leela Zoidberg + Attribute name: age + Elements: 22 5 22 50 + +With table3 having an equal domain to table1, this: + + cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table3")); + + +This will display: + + 1 + +To project a table's column: + + engine.project((engine.getTableFromName("table1")), "name"); + + +This will display: + + -----------Initiated Query Projection--------- + Column Title: name + Fry + Bender + Leela + Zoidberg + diff --git a/Relation.h b/Relation.h index 525a0d9..40084c8 100755 --- a/Relation.h +++ b/Relation.h @@ -59,11 +59,11 @@ public: return att; } + //assumes that all attribute titles are unique void projectQuery(string input) { cout << "-----------Initiated Query Projection---------" << endl; for(int i = 0; i < att.size(); i++) { if(att[i].getName() == input) { - cout << "Column Title: " << input << endl; for(int j = 0; j < att[i].getSize(); j++) { cout << att[i].getValues()[j] << endl; @@ -77,15 +77,12 @@ public: } void display() { - cout<<"\n\nDisplay of relation--------------------------------"<_31P}wF9xlN|BSr!kFL-hVq9I9>6AUU91uSVy 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 X%Ll_MY+SX=<-_(Zc19_edHwBw#`Rsm literal 72106 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 cmds; + cmds.push_back("CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind);"); + cmds.push_back("SHOW animals"); } From 1902e6f3d55a76545f786789a84ef9c21edf0f8e Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 23:21:38 -0500 Subject: [PATCH 45/54] fixing more things --- Attribute.h | 5 +++++ OUTPUT.txt | 23 +++++++++++++++++++++++ Relation.h | 20 ++++++++++++++++++++ a.out | Bin 76409 -> 76922 bytes savefile.txt | 2 ++ test.cpp | 4 +++- 6 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 savefile.txt diff --git a/Attribute.h b/Attribute.h index c38f0df..fb3fd48 100755 --- a/Attribute.h +++ b/Attribute.h @@ -26,6 +26,11 @@ public: size++; } + string getElementAt(int pos) + { + return values[pos]; + } + vector getValues() { return values; } string getName(){ return name; } string getType(){ return type; } diff --git a/OUTPUT.txt b/OUTPUT.txt index 526f77f..c79684b 100755 --- a/OUTPUT.txt +++ b/OUTPUT.txt @@ -4,12 +4,14 @@ To create a table: engine.createTable("table1", vec); + This creates a Relation object with the appropriate Attribute objects. It displays nothing. To display the table: engine.showTables(engine.getTableFromName("table1")); + This results in such output: Display of relation-------------------------------- @@ -20,6 +22,7 @@ This results in such output: Attribute name: age Elements: 22 5 22 50 + With table3 having an equal domain to table1, this: cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table3")); @@ -29,6 +32,7 @@ This will display: 1 + To project a table's column: engine.project((engine.getTableFromName("table1")), "name"); @@ -43,3 +47,22 @@ This will display: Leela Zoidberg + +With an arbitrary vector of strings as cmds (until we are able to parse effectively): + + engine.saveToFile(cmds); + + +This will result in a text file with the contents: + + CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind); + +SHOW animals; + +//insert + +//delete + +//select + +//product \ No newline at end of file diff --git a/Relation.h b/Relation.h index 40084c8..f8e7a49 100755 --- a/Relation.h +++ b/Relation.h @@ -47,6 +47,26 @@ public: } } + vector findTuple(string attributeType, string type) + { + vector tupleSlot; // tuples that have the attribute in question + for (int i = 0; i < att.size(); ++i)// find attribute in question + { + if(att[i].getName() == attributeType) + { + for (int j = 0; j < att[i].getSize(); ++j)//search through all the values of the attribute column + { + if (att[i].getElementAt(j) == type) + { + tupleSlot.push_back(j); + } + } + + } + } + return tupleSlot; + } + string getTableName() { return name; } diff --git a/a.out b/a.out index eb1cbf71b518fb4e78ded57887ae17b53da75cfb..6c65e5bc42aff5db3790aee350e4e214c6c2fd3d 100755 GIT binary patch literal 76922 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%0AO55%V=xj` zf+WZPih4XH+eK9k=+h`~v)7La*@7p##J%}!YLJbB?-)j~>VOl2a97k%f^eVmY|-eo z;i}9=eZ3*ecpVN9n|6-0Qd#v~Kgn#>g>#x2Q54L$+entavIyp+)_rl-{7|tZA#DS z)q5H-=`b8hgNyc`=h^D$V;mTnRC8`7!K;)!kZ{ha5Y7pQ+dqpuk+7&KHGzV*x}xj~ z#SfKs(LlN60!U2)KY9l{Hi1OKoicD4fyjW^w{VRl)PFqKu0s81GX*{mMmRdaxO}<@ z>Qjb}uqPk>q0l&l;?K93ukbmnbl{Sa{>Zz#S1NLrp4>2{tH#%UwNEU$6zre9@#@Vj z4tJ3~lWQ3%McJX7n4E?Q=6|2tuiwL*<%q(3lodVB@c&X8kpEO{-8MB3g2;(Z#A$|f zubbz(C;>+I;hth1^Ceq2UWShls!<5Wz2)Sq?*i>jC&dnz#M+fR!;!4%8g)8wjAgmY zGhl@Ge?6&e;`?FQQX#xYSgqUjV!aD-<7S{EfujI)8pY*$({{dl1pbcH%||<->8N3G z_wl~o)&-ukXFIQlQ0WVy$i-=emESikZ>5=$PsGrh9Ch1pbRa$?|MQU{*NPoL$e@tS zhTWX957?WtK{;Zm$&vIq+&<}mjy^2JOr%*_#+=^7hvbY8R8 zRMhjx6M)TXTF_N{B-Le;;4gMY-p~_u+fv|A-~ck@`YLUXGQ{}+U>W55$SrmRZA}3# zD^7%gmIv&9yGmiM$LNwv&CL<%`Y2y%*xnRcBtw2`TK)}lX)OI{r^dE@=L&}Fc&-@l zvY>d)0-Vm|@xhusge_22?uDDenKYoA&LzISHaq-I{C0zHGdz87UQSX9s-F<&QYvr_ z5y}QW)K1k6)d1&o;!b#p+WJ&i5L?K}cPvELoQ7*~b|Zn{@0)LrAi(>!dtSHr+wCom z=ATeW;ZkodCxw5dbQ`|VY&+Pw)4|c?q?^6858IEAbbiaQ9Yr2(37GpqcLPYJst_>j zLQW}zTLGB&M(rgP_Y6{Ox04Ea?>V8OZIdA~4N2WHW*nz=4n80?>@E$jug64;n7X@%-L^6kecNTWkr$?4{N}y3&)ADO@P5u|Rfe+V&n8 zDXoE0w##ndeA=6-(>YfDx)Fbwi14d7UHJ*-J_6A@U=xxKu8HHtk%8lKwp`wCzr_+P J6-_Tc{U1FP)=~ff literal 76409 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 X%Ll_MY+SX=<-_(Zc19_edHwBw#`Rsm diff --git a/savefile.txt b/savefile.txt new file mode 100644 index 0000000..e5ca19f --- /dev/null +++ b/savefile.txt @@ -0,0 +1,2 @@ +CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind); +SHOW animals; diff --git a/test.cpp b/test.cpp index 3e02259..1b99116 100755 --- a/test.cpp +++ b/test.cpp @@ -72,5 +72,7 @@ int main() { vector cmds; cmds.push_back("CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind);"); - cmds.push_back("SHOW animals"); + cmds.push_back("SHOW animals;"); + + engine.saveToFile(cmds); } From ed1a6fa87908680c306b5b519d9fd3b81326cd4e Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 23:38:44 -0500 Subject: [PATCH 46/54] message --- Attribute.h | 5 ----- DBEngine.h | 17 +++++++++++++---- Relation.h | 7 ++++--- a.out | Bin 76922 -> 76899 bytes savefile.txt => savefile.db | 0 test.cpp | 21 ++++++++++++++++----- 6 files changed, 33 insertions(+), 17 deletions(-) rename savefile.txt => savefile.db (100%) diff --git a/Attribute.h b/Attribute.h index fb3fd48..50949a1 100755 --- a/Attribute.h +++ b/Attribute.h @@ -46,10 +46,5 @@ public: { cout< cmds) { ofstream file; - file.open("savefile.txt"); + file.open("savefile.db"); for(int i = 0; i < cmds.size(); ++i){ file << cmds[i] << endl; @@ -42,10 +42,19 @@ public: file.close(); } - void insertTuple() { /*DONE*/ } - void deleteTuple() { /*DONE*/ } - void selectTuples() { /*DONE*/ } + void insertTuple(Relation r, vector t) { r.addTuple(t); } + + //need to add find by name + void deleteTuple(Relation r, int n) { + cout << "a"; + r.removeTuple(n); } + + void selectTuples() { + // + } + void project(Relation r, string n) { r.projectQuery(n); } + void product() { /*Brandon*/ } bool unionComp(Relation r1, Relation r2) { diff --git a/Relation.h b/Relation.h index f8e7a49..85a9f15 100755 --- a/Relation.h +++ b/Relation.h @@ -31,7 +31,7 @@ public: } } - void removeTuple(int tupleNum) { + void removeTuple(int tupleNum) { if (tupleNum > att[0].getSize() || tupleNum < 0) { cout<<"ERROR! index out of bound"<+5%a2YNn5Frv!MDY@m0MU@784#){6|lq@ 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 bI*NG*U8^*g-TnRT?hQFVyFn_pUO)X0_$guP literal 76922 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%0AO55%V=xj` zf+WZPih4XH+eK9k=+h`~v)7La*@7p##J%}!YLJbB?-)j~>VOl2a97k%f^eVmY|-eo z;i}9=eZ3*ecpVN9n|6-0Qd#v~Kgn#>g>#x2Q54L$+entavIyp+)_rl-{7|tZA#DS z)q5H-=`b8hgNyc`=h^D$V;mTnRC8`7!K;)!kZ{ha5Y7pQ+dqpuk+7&KHGzV*x}xj~ z#SfKs(LlN60!U2)KY9l{Hi1OKoicD4fyjW^w{VRl)PFqKu0s81GX*{mMmRdaxO}<@ z>Qjb}uqPk>q0l&l;?K93ukbmnbl{Sa{>Zz#S1NLrp4>2{tH#%UwNEU$6zre9@#@Vj z4tJ3~lWQ3%McJX7n4E?Q=6|2tuiwL*<%q(3lodVB@c&X8kpEO{-8MB3g2;(Z#A$|f zubbz(C;>+I;hth1^Ceq2UWShls!<5Wz2)Sq?*i>jC&dnz#M+fR!;!4%8g)8wjAgmY zGhl@Ge?6&e;`?FQQX#xYSgqUjV!aD-<7S{EfujI)8pY*$({{dl1pbcH%||<->8N3G z_wl~o)&-ukXFIQlQ0WVy$i-=emESikZ>5=$PsGrh9Ch1pbRa$?|MQU{*NPoL$e@tS zhTWX957?WtK{;Zm$&vIq+&<}mjy^2JOr%*_#+=^7hvbY8R8 zRMhjx6M)TXTF_N{B-Le;;4gMY-p~_u+fv|A-~ck@`YLUXGQ{}+U>W55$SrmRZA}3# zD^7%gmIv&9yGmiM$LNwv&CL<%`Y2y%*xnRcBtw2`TK)}lX)OI{r^dE@=L&}Fc&-@l zvY>d)0-Vm|@xhusge_22?uDDenKYoA&LzISHaq-I{C0zHGdz87UQSX9s-F<&QYvr_ z5y}QW)K1k6)d1&o;!b#p+WJ&i5L?K}cPvELoQ7*~b|Zn{@0)LrAi(>!dtSHr+wCom z=ATeW;ZkodCxw5dbQ`|VY&+Pw)4|c?q?^6858IEAbbiaQ9Yr2(37GpqcLPYJst_>j zLQW}zTLGB&M(rgP_Y6{Ox04Ea?>V8OZIdA~4N2WHW*nz=4n80?>@E$jug64;n7X@%-L^6kecNTWkr$?4{N}y3&)ADO@P5u|Rfe+V&n8 zDXoE0w##ndeA=6-(>YfDx)Fbwi14d7UHJ*-J_6A@U=xxKu8HHtk%8lKwp`wCzr_+P J6-_Tc{U1FP)=~ff diff --git a/savefile.txt b/savefile.db similarity index 100% rename from savefile.txt rename to savefile.db diff --git a/test.cpp b/test.cpp index 1b99116..726d10d 100755 --- a/test.cpp +++ b/test.cpp @@ -44,6 +44,7 @@ int main() { engine.createTable("table1", vec2); engine.createTable("table2", vec); engine.showTable(engine.getTableFromName("table1")); + cout << "\n\n"; Attribute att5("name", "VARCHAR(20)", true); att5.addRow("Yrf"); @@ -63,16 +64,26 @@ int main() { engine.createTable("table3", vec3); - cout << "\n"; - cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table2")); - cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table3")); - cout << "\n"; + //cout << "\n"; + //cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table2")); + //cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table3")); + //cout << "\n"; - engine.project((engine.getTableFromName("table1")), "name"); + //engine.project((engine.getTableFromName("table1")), "name"); vector cmds; cmds.push_back("CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind);"); cmds.push_back("SHOW animals;"); engine.saveToFile(cmds); + + vector t; + t.push_back("Professor"); + t.push_back("180"); + + //engine.insertTuple((engine.getTableFromName("table1")), t); + engine.deleteTuple((engine.getTableFromName("table1")), 2); + + cout << "\n\n"; + engine.showTable((engine.getTableFromName("table1"))); } From 5a43be3b80e7a2cbc41fd0bb8deed083d1f7f66d Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 23:42:40 -0500 Subject: [PATCH 47/54] final turnin --- a.out | Bin 76899 -> 0 bytes savefile.db | 2 -- 2 files changed, 2 deletions(-) delete mode 100755 a.out delete mode 100644 savefile.db diff --git a/a.out b/a.out deleted file mode 100755 index 020464293aa1dbfa12d513402d44cb74c2455f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76899 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 bI*NG*U8^*g-TnRT?hQFVyFn_pUO)X0_$guP diff --git a/savefile.db b/savefile.db deleted file mode 100644 index e5ca19f..0000000 --- a/savefile.db +++ /dev/null @@ -1,2 +0,0 @@ -CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind); -SHOW animals; From e2776d245960cb227fca10b32bef6664c3560460 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 15 Sep 2015 23:44:58 -0500 Subject: [PATCH 48/54] to turn in --- DBEngine.h | 6 +++--- Relation.h | 4 ++-- a.out | Bin 0 -> 63298 bytes test.cpp | 23 +++++++++++++++-------- 4 files changed, 20 insertions(+), 13 deletions(-) create mode 100755 a.out diff --git a/DBEngine.h b/DBEngine.h index 4834ed6..dadb143 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -42,12 +42,12 @@ public: file.close(); } - void insertTuple(Relation r, vector t) { r.addTuple(t); } + //void insertTuple(Relation r, vector t) { r.addTuple(t); } //need to add find by name - void deleteTuple(Relation r, int n) { + /*void deleteTuple(Relation r, int n) { cout << "a"; - r.removeTuple(n); } + r.removeTuple(n); }*/ void selectTuples() { // diff --git a/Relation.h b/Relation.h index 85a9f15..995e3ea 100755 --- a/Relation.h +++ b/Relation.h @@ -17,7 +17,7 @@ public: int getSize() { return size; } - void addTuple(vector tuple) { + /*void addTuple(vector tuple) { //Loop through the attribute columns for(int i = 0; i < att.size(); i++) { @@ -66,7 +66,7 @@ public: } } return tupleSlot; - } + }*/ string getTableName() { return name; diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..e1e1dddf7af997bedbbd9fe4c73080e53b082138 GIT binary patch literal 63298 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 vec; vec.push_back(att1); - vec.push_back(att2); + vec.push_back(att2);*/ Attribute att3("name", "VARCHAR(20)", true); att3.addRow("Fry"); @@ -41,17 +41,24 @@ int main() { vec2.push_back(att4); //beginning testing of core DB functions + cout << "\a"; engine.createTable("table1", vec2); - engine.createTable("table2", vec); + cout << "\a"; + //engine.createTable("table2", vec); engine.showTable(engine.getTableFromName("table1")); + cout << "\n\n"; - Attribute att5("name", "VARCHAR(20)", true); + cout << "\a"; + + /*Attribute att5("name", "VARCHAR(20)", true); att5.addRow("Yrf"); att5.addRow("Redneb"); att5.addRow("Aleel"); att5.addRow("Grebdoiz"); + cout << "\a"; + Attribute att6("age", "INTEGER", false); att6.addRow("44"); att6.addRow("10"); @@ -62,7 +69,7 @@ int main() { vec3.push_back(att5); vec3.push_back(att6); - engine.createTable("table3", vec3); + engine.createTable("table3", vec3);*/ //cout << "\n"; //cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table2")); @@ -71,18 +78,18 @@ int main() { //engine.project((engine.getTableFromName("table1")), "name"); - vector cmds; + /*vector cmds; cmds.push_back("CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind);"); cmds.push_back("SHOW animals;"); - engine.saveToFile(cmds); + engine.saveToFile(cmds);*/ vector t; t.push_back("Professor"); t.push_back("180"); //engine.insertTuple((engine.getTableFromName("table1")), t); - engine.deleteTuple((engine.getTableFromName("table1")), 2); + //engine.deleteTuple((engine.getTableFromName("table1")), 2); cout << "\n\n"; engine.showTable((engine.getTableFromName("table1"))); From 7d858e8b10463e2cb1cdd27e9b3a76e5132d3c57 Mon Sep 17 00:00:00 2001 From: Brandon Jackson <1drummer@att.net> Date: Tue, 15 Sep 2015 23:48:50 -0500 Subject: [PATCH 49/54] Update DBEngine.h --- DBEngine.h | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/DBEngine.h b/DBEngine.h index dadb143..57ea9d8 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -3,10 +3,10 @@ #include #include "Relation.h" -//still in progress +//still in progress class DBEngine { vector tables; - int size; + int size; public: DBEngine(){ @@ -55,7 +55,24 @@ public: void project(Relation r, string n) { r.projectQuery(n); } - void product() { /*Brandon*/ } + /* + Relation product(string p_name, Relation table_1, Relation table_2) { + + vector all_att; + + //Insert table 1 attributes + all_att.insert(all_att.begin(), (table_1.getAttributes()).begin(), (table_1.getAttributes()).end()); + //Insert table 2 attributes + all_att.insert(all_att.begin(), (table_2.getAttributes()).begin(), (table_2.getAttributes()).end()); + + Relation temp(p_name, all_att); + + vector table1_stuff; + + + return temp; + } + */ bool unionComp(Relation r1, Relation r2) { return ((r1.getSize() == r2.getSize()) && (r1.getDomains() == r2.getDomains())); From 6b2039896da2f691dec0acc1e449bf8a368bdae9 Mon Sep 17 00:00:00 2001 From: Alexander Huddleston Date: Wed, 16 Sep 2015 16:43:49 -0500 Subject: [PATCH 50/54] Lexical Parser cpp file. --- LParser.cpp | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 LParser.cpp diff --git a/LParser.cpp b/LParser.cpp new file mode 100755 index 0000000..624d094 --- /dev/null +++ b/LParser.cpp @@ -0,0 +1,2 @@ +// Lexical Parser +// Test file \ No newline at end of file From f755bbc42ac8def26d5a9119575311f815895752 Mon Sep 17 00:00:00 2001 From: Alexander Huddleston Date: Wed, 16 Sep 2015 17:28:32 -0500 Subject: [PATCH 51/54] Updated LParser.cpp 9-16-15 --- LParser.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/LParser.cpp b/LParser.cpp index 624d094..2a17ee5 100755 --- a/LParser.cpp +++ b/LParser.cpp @@ -1,2 +1,50 @@ // Lexical Parser -// Test file \ No newline at end of file +// Test file + +#include +#include "DBEngine.h" + +using namespace std; + +int digit(char c) +{ + if(isdigit(c)) + { + return atoi(c); + } + return 0; +} + +char alpha(char c) +{ + toupper(c); + string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + int x = 0; + while(x != a.length()) + { + if(c == a[x]) + { + return c; + } + x++; + } + return "?"; +} + +char space(char c) +{ + if(c == " ") + { + return c; + } + return "?"; +} + +char arnold(char c) +{ + if(c == ";") + { + return c; + } + return "?"; +} \ No newline at end of file From c8ecb606fd061fb899b1cbf77f0d925fe65f8c4d Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Thu, 17 Sep 2015 17:14:28 -0500 Subject: [PATCH 52/54] cleared out the bad code --- Attribute.h | 30 +++++++-------- DBEngine.h | 45 +++++++++------------- OUTPUT.txt | 4 +- Relation.h | 91 ++++++------------------------------------- a.out | Bin 63298 -> 63265 bytes test.cpp | 108 ++++++++++++---------------------------------------- 6 files changed, 73 insertions(+), 205 deletions(-) diff --git a/Attribute.h b/Attribute.h index 50949a1..084706a 100755 --- a/Attribute.h +++ b/Attribute.h @@ -6,7 +6,7 @@ using namespace std; //Funtional, might need more functionality //template -class Attribute { +class Attribute{ vector values; string name; string type; @@ -21,30 +21,28 @@ public: size = 0; } - void addRow(string v) { + void addCell(string v){ values.push_back(v); size++; } - string getElementAt(int pos) - { - return values[pos]; - } - - vector getValues() { return values; } + string operator[](int i){ return values[i]; } + vector getValues(){ return values; } string getName(){ return name; } string getType(){ return type; } bool isKey(){ return key; } - int getSize(){ return size; } + int getSize(){ return size; } //may need to change primary key implementation - void display() - { - cout<<"Attribute name:\t"<< name <<"\n"; - cout<<"Elements: "; + void display(){ + cout << "-------------\n"; + cout << name << "\n" << type << "\n\n"; - for (int i = 0; i < values.size(); ++i) - { - cout<::iterator it = values.begin(); + while (it != values.end()){ + cout << *it << "\n"; + it++; } + + cout << "-------------\n"; } }; diff --git a/DBEngine.h b/DBEngine.h index dadb143..2b25e6f 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -13,25 +13,37 @@ public: size = 0; } + void createTable(string n) { + Relation r(n); + tables.push_back(r); + size++; + } + void createTable(string n, vector a) { Relation r(n, a); tables.push_back(r); + size++; } - void createTable(Relation r) { tables.push_back(r); } - vector getRelations() { return tables; } - void showTable(Relation r) { r.display(); } + void createTable(Relation r){ + tables.push_back(r); + size++; + } - Relation getTableFromName(string n) { + vector getRelations(){ return tables; } + //void showTable(Relation r){} + + Relation getTableFromName(string n){ //will return first occurence - for(int i = 0; i < tables.size(); i++) { - if (tables[i].getTableName() == n) { + for(int i = 0; i < tables.size(); i++){ + if (tables[i].getTableName() == n){ return tables[i]; } } } - void saveToFile(vector cmds) { + void saveToFile(vector cmds){ + //writes nothing meaningful ofstream file; file.open("savefile.db"); @@ -41,23 +53,4 @@ public: file.close(); } - - //void insertTuple(Relation r, vector t) { r.addTuple(t); } - - //need to add find by name - /*void deleteTuple(Relation r, int n) { - cout << "a"; - r.removeTuple(n); }*/ - - void selectTuples() { - // - } - - void project(Relation r, string n) { r.projectQuery(n); } - - void product() { /*Brandon*/ } - - bool unionComp(Relation r1, Relation r2) { - return ((r1.getSize() == r2.getSize()) && (r1.getDomains() == r2.getDomains())); - } }; diff --git a/OUTPUT.txt b/OUTPUT.txt index c79684b..2d883ab 100755 --- a/OUTPUT.txt +++ b/OUTPUT.txt @@ -53,12 +53,14 @@ With an arbitrary vector of strings as cmds (until we are able to parse effectiv engine.saveToFile(cmds); -This will result in a text file with the contents: +This will result in a db file with the contents: CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind); SHOW animals; + + //insert //delete diff --git a/Relation.h b/Relation.h index 995e3ea..a404706 100755 --- a/Relation.h +++ b/Relation.h @@ -9,76 +9,21 @@ class Relation { int size; public: + Relation(string n) { + name = n; + size = 0; + } Relation(string n, vector a) { name = n; att = a; size = a.size(); } - int getSize() { return size; } + //addAttribute - /*void addTuple(vector tuple) { - //Loop through the attribute columns - for(int i = 0; i < att.size(); i++) { - - //Loop through the elements in the i'th column - for(int j = 0; j < att[i].getValues().size(); j++){ - - //In this column, at this element's spot, assign an element from the tuple vector to this spot - att[i].addRow(tuple[i]); - size++; - } - } - } - - void removeTuple(int tupleNum) { - if (tupleNum > att[0].getSize() || tupleNum < 0) - { - cout<<"ERROR! index out of bound"< findTuple(string attributeType, string type) - { - vector tupleSlot; // tuples that have the attribute in question - for (int i = 0; i < att.size(); ++i)// find attribute in question - { - if(att[i].getName() == attributeType) - { - for (int j = 0; j < att[i].getSize(); ++j)//search through all the values of the attribute column - { - if (att[i].getElementAt(j) == type) - { - tupleSlot.push_back(j); - } - } - - } - } - return tupleSlot; - }*/ - - string getTableName() { - return name; - } - - void displayTableName() { - cout << "The table name is: " << name << endl; - } - - vector getAttributes() { - return att; - } + string getTableName() { return name; } + vector getAttributes() { return att; } + int getSize() { return size; } //assumes that all attribute titles are unique void projectQuery(string input) { @@ -98,24 +43,12 @@ public: } void display() { - cout<<"\nDisplay of relation--------------------------------"< getDomains() { - vector ds; - for (int i = 0; i < size; ++i) - { - ds.push_back(att[i].getType()); - } - - return ds; + cout << "--------------------------\n"; } }; diff --git a/a.out b/a.out index e1e1dddf7af997bedbbd9fe4c73080e53b082138..1a24079c2b46a44cf732db100bd1f54b509a9514 100755 GIT binary patch literal 63265 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 vec; - vec.push_back(att1); - vec.push_back(att2);*/ - - Attribute att3("name", "VARCHAR(20)", true); - att3.addRow("Fry"); - att3.addRow("Bender"); - att3.addRow("Leela"); - att3.addRow("Zoidberg"); + vector v; + v.push_back(att1); + v.push_back(att2); + v.push_back(att3); - Attribute att4("age", "INTEGER", false); - att4.addRow("22"); - att4.addRow("5"); - att4.addRow("22"); - att4.addRow("50"); + Relation r("AltFood", v); + //r.display(); - vector vec2; - vec2.push_back(att3); - vec2.push_back(att4); - - //beginning testing of core DB functions - cout << "\a"; - engine.createTable("table1", vec2); - cout << "\a"; - //engine.createTable("table2", vec); - engine.showTable(engine.getTableFromName("table1")); - - cout << "\n\n"; - - cout << "\a"; - - /*Attribute att5("name", "VARCHAR(20)", true); - att5.addRow("Yrf"); - att5.addRow("Redneb"); - att5.addRow("Aleel"); - att5.addRow("Grebdoiz"); - - cout << "\a"; - - Attribute att6("age", "INTEGER", false); - att6.addRow("44"); - att6.addRow("10"); - att6.addRow("44"); - att6.addRow("100"); - - vector vec3; - vec3.push_back(att5); - vec3.push_back(att6); - - engine.createTable("table3", vec3);*/ - - //cout << "\n"; - //cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table2")); - //cout << engine.unionComp(engine.getTableFromName("table1"), engine.getTableFromName("table3")); - //cout << "\n"; - - //engine.project((engine.getTableFromName("table1")), "name"); - - /*vector cmds; - cmds.push_back("CREATE TABLE animals (name VARCHAR(20), kind VARCHAR(8), years INTEGER) PRIMARY KEY (name, kind);"); - cmds.push_back("SHOW animals;"); - - engine.saveToFile(cmds);*/ - - vector t; - t.push_back("Professor"); - t.push_back("180"); - - //engine.insertTuple((engine.getTableFromName("table1")), t); - //engine.deleteTuple((engine.getTableFromName("table1")), 2); - - cout << "\n\n"; - engine.showTable((engine.getTableFromName("table1"))); + engine.createTable("Food", v); + engine.createTable(r); + engine.createTable("Sadness"); + //vector rs = engine.getRelations(); + Relation r2 = engine.getTableFromName("Food"); + r2.display(); } From 58e37d41c3a69e379e25b2c358e237ffdabb215f Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Thu, 17 Sep 2015 17:20:01 -0500 Subject: [PATCH 53/54] removed LParser --- LParser.cpp | 50 -------------------------------------------------- 1 file changed, 50 deletions(-) delete mode 100755 LParser.cpp diff --git a/LParser.cpp b/LParser.cpp deleted file mode 100755 index 2a17ee5..0000000 --- a/LParser.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// Lexical Parser -// Test file - -#include -#include "DBEngine.h" - -using namespace std; - -int digit(char c) -{ - if(isdigit(c)) - { - return atoi(c); - } - return 0; -} - -char alpha(char c) -{ - toupper(c); - string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - int x = 0; - while(x != a.length()) - { - if(c == a[x]) - { - return c; - } - x++; - } - return "?"; -} - -char space(char c) -{ - if(c == " ") - { - return c; - } - return "?"; -} - -char arnold(char c) -{ - if(c == ";") - { - return c; - } - return "?"; -} \ No newline at end of file From 684cf1f81130f6e7443d90c104dd50e43dee8ca7 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Thu, 17 Sep 2015 18:30:45 -0500 Subject: [PATCH 54/54] Updated DBEngine functions --- Attribute.cpp | 57 ++++++++++++++++++++++++++++++++++++++++ Attribute.h | 44 ++++++++----------------------- DBEngine.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ DBEngine.h | 60 ++++++++++++------------------------------- Relation.cpp | 44 +++++++++++++++++++++++++++++++ Relation.h | 56 ++++++++-------------------------------- a.out | Bin 63265 -> 0 bytes test.cpp | 6 +++++ 8 files changed, 213 insertions(+), 124 deletions(-) create mode 100755 Attribute.cpp create mode 100755 DBEngine.cpp create mode 100755 Relation.cpp delete mode 100755 a.out diff --git a/Attribute.cpp b/Attribute.cpp new file mode 100755 index 0000000..9a66043 --- /dev/null +++ b/Attribute.cpp @@ -0,0 +1,57 @@ +#include +#include +#include "Attribute.h" + +Attribute::Attribute(string n, string t, bool k){ + name = n; + type = t; + key = k; + size = 0; +} + +void Attribute::addCell(string v){ + values.push_back(v); + size++; +} + +string Attribute::operator[](int i){ + return values[i]; +} + +vector Attribute::getValues(){ + return values; +} + +string Attribute::getName(){ + return name; +} + +string Attribute::getType(){ + return type; +} + +bool Attribute::isKey(){ + return key; +} + +void Attribute::setName(string s){ + name = s; +} + +//may need to change primary key implementation +int Attribute::getSize(){ + return size; +} + +void Attribute::display(){ + cout << "-------------\n"; + cout << name << "\n" << type << "\n\n"; + + vector::iterator it = values.begin(); + while (it != values.end()){ + cout << *it << "\n"; + it++; + } + + cout << "-------------\n"; +} \ No newline at end of file diff --git a/Attribute.h b/Attribute.h index 084706a..30f10ee 100755 --- a/Attribute.h +++ b/Attribute.h @@ -3,9 +3,6 @@ using namespace std; -//Funtional, might need more functionality - -//template class Attribute{ vector values; string name; @@ -14,35 +11,14 @@ class Attribute{ int size; public: - Attribute(string n, string t, bool k){ - name = n; - type = t; - key = k; - size = 0; - } - - void addCell(string v){ - values.push_back(v); - size++; - } - - string operator[](int i){ return values[i]; } - vector getValues(){ return values; } - string getName(){ return name; } - string getType(){ return type; } - bool isKey(){ return key; } - int getSize(){ return size; } //may need to change primary key implementation - - void display(){ - cout << "-------------\n"; - cout << name << "\n" << type << "\n\n"; - - vector::iterator it = values.begin(); - while (it != values.end()){ - cout << *it << "\n"; - it++; - } - - cout << "-------------\n"; - } + Attribute(string n, string t, bool k); + void addCell(string v); + string operator[](int i); + vector getValues(); + string getName(); + string getType(); + bool isKey(); + int getSize(); + void setName(string s); + void display(); }; diff --git a/DBEngine.cpp b/DBEngine.cpp new file mode 100755 index 0000000..a813c90 --- /dev/null +++ b/DBEngine.cpp @@ -0,0 +1,70 @@ +#include +#include +#include +#include "DBEngine.h" + +DBEngine::DBEngine(){ + size = 0; +} + +void DBEngine::createTable(string n){ + Relation r(n); + tables.push_back(r); + size++; +} + +void DBEngine::createTable(string n, vector a){ + Relation r(n, a); + tables.push_back(r); + size++; +} + +void DBEngine::createTable(Relation r){ + tables.push_back(r); + size++; +} + +vector DBEngine::getRelations(){ + return tables; +} + +Relation DBEngine::getTableFromName(string n){ + //will return first occurence + for(int i = 0; i < tables.size(); i++){ + if (tables[i].getTableName() == n){ + return tables[i]; + } + } +} + +void DBEngine::saveToFile(vector cmds){ + //writes nothing meaningful + ofstream file; + file.open("savefile.db"); + + for(int i = 0; i < cmds.size(); ++i){ + file << cmds[i] << endl; + } + + file.close(); +} + +//assumes that all attribute titles are unique +Relation DBEngine::projection(vector input, Relation r){ + + +// for(int i = 0; i < input.size(); i++) { +// it = find(r.getAttributes().begin(), r.getAttributes().end(), input[i]) + + //if(r[i].getName == input[]) +// } +} +/* +void renameAttribute(vector v, string o, string s){ + for(int i = 0; i < v.size(); ++i){ + if(v[i].getName() == o){ + v[i].setName(s); + } + } +} +*/ diff --git a/DBEngine.h b/DBEngine.h index 792c36b..f2e5e3f 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -4,53 +4,25 @@ #include "Relation.h" //still in progress -class DBEngine { +class DBEngine{ vector tables; int size; public: - DBEngine(){ - size = 0; - } - - void createTable(string n) { - Relation r(n); - tables.push_back(r); - size++; - } - - void createTable(string n, vector a) { - Relation r(n, a); - tables.push_back(r); - size++; - } + DBEngine(); + void createTable(string n); + void createTable(string n, vector a); + void createTable(Relation r); + vector getRelations(); + //void showTable(Relation r); + Relation getTableFromName(string n); + void saveToFile(vector cmds); - void createTable(Relation r){ - tables.push_back(r); - size++; - } - - vector getRelations(){ return tables; } - //void showTable(Relation r){} - - Relation getTableFromName(string n){ - //will return first occurence - for(int i = 0; i < tables.size(); i++){ - if (tables[i].getTableName() == n){ - return tables[i]; - } - } - } - - void saveToFile(vector cmds){ - //writes nothing meaningful - ofstream file; - file.open("savefile.db"); - - for(int i = 0; i < cmds.size(); ++i){ - file << cmds[i] << endl; - } - - file.close(); - } + //operations + //void selection(); + Relation projection(vector input, Relation r); + //void renaming(); + //void setUnion(); + //void setDiff(); + //void crossProduct(); }; diff --git a/Relation.cpp b/Relation.cpp new file mode 100755 index 0000000..09eeaf7 --- /dev/null +++ b/Relation.cpp @@ -0,0 +1,44 @@ +#include +#include +#include "Relation.h" + +Relation::Relation(string n){ + name = n; + size = 0; +} + +Relation::Relation(string n, vector a){ + name = n; + att = a; + size = a.size(); +} + +string Relation::getTableName(){ + return name; +} + +vector Relation::getAttributes(){ + return att; +} + +vector Relation::getAttributeNames(){ + vector temp; + for(int i = 0; i < size; ++i){ + temp.push_back(att[i].getName()); + } + return temp; +} + +int Relation::getSize(){ + return size; +} + +void Relation::display(){ + cout << "--------------------------\n"; + cout << name << "\n"; + for (int i = 0; i < att.size(); ++i){ + att[i].display(); + } + + cout << "--------------------------\n"; +} diff --git a/Relation.h b/Relation.h index a404706..75ef810 100755 --- a/Relation.h +++ b/Relation.h @@ -2,53 +2,17 @@ #include #include "Attribute.h" -//Functional -class Relation { - string name; //The title the user gives it - vector att; //A vector of the columns +class Relation{ + string name; + vector att; int size; public: - Relation(string n) { - name = n; - size = 0; - } - Relation(string n, vector a) { - name = n; - att = a; - size = a.size(); - } - - //addAttribute - - string getTableName() { return name; } - vector getAttributes() { return att; } - int getSize() { return size; } - - //assumes that all attribute titles are unique - void projectQuery(string input) { - cout << "-----------Initiated Query Projection---------" << endl; - for(int i = 0; i < att.size(); i++) { - if(att[i].getName() == input) { - cout << "Column Title: " << input << endl; - for(int j = 0; j < att[i].getSize(); j++) { - cout << att[i].getValues()[j] << endl; - } - - break; - } - else - cout << "Attribute input not valid" << endl; - } - } - - void display() { - cout << "--------------------------\n"; - cout << name << "\n"; - for (int i = 0; i < att.size(); ++i){ - att[i].display(); - } - - cout << "--------------------------\n"; - } + Relation(string n); + Relation(string n, vector a); + string getTableName(); + vector getAttributes(); + vector getAttributeNames(); + int getSize(); + void display(); }; diff --git a/a.out b/a.out deleted file mode 100755 index 1a24079c2b46a44cf732db100bd1f54b509a9514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63265 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 rs = engine.getRelations(); Relation r2 = engine.getTableFromName("Food"); r2.display(); + + vector v1 = r2.getAttributeNames(); + + for (int i = 0; i < v.size(); ++i){ + cout << v1[i]; + } }