[sword-svn] r540 - in trunk/migratetags: . matchers

scribe at crosswire.org scribe at crosswire.org
Thu Feb 17 12:42:33 EST 2022


Author: scribe
Date: 2022-02-17 12:42:32 -0500 (Thu, 17 Feb 2022)
New Revision: 540

Added:
   trunk/migratetags/tag-exceptions-na28-example.conf
Modified:
   trunk/migratetags/Makefile
   trunk/migratetags/matchers/defaultmatcher.h
   trunk/migratetags/migratetags.cpp
Log:
Committed latest version of migrate tags
made it works with both <w> modules and modules without <w> tags
added parameter -t to specify target module


Modified: trunk/migratetags/Makefile
===================================================================
--- trunk/migratetags/Makefile	2021-03-27 21:28:30 UTC (rev 539)
+++ trunk/migratetags/Makefile	2022-02-17 17:42:32 UTC (rev 540)
@@ -4,7 +4,7 @@
 all: $(TARGETS)
 
 clean:
-	rm $(TARGETS)
+	rm -f $(TARGETS)
 
 .cpp:
 	g++ -g `pkg-config --cflags sword` $< -o $@ `pkg-config --libs sword`

Modified: trunk/migratetags/matchers/defaultmatcher.h
===================================================================
--- trunk/migratetags/matchers/defaultmatcher.h	2021-03-27 21:28:30 UTC (rev 539)
+++ trunk/migratetags/matchers/defaultmatcher.h	2022-02-17 17:42:32 UTC (rev 540)
@@ -1,12 +1,15 @@
 #include "matcher.h"
+#include <utf8greekaccents.h>
 
 #ifndef defaultmatcher_h
 #define defaultmatcher_h
 
 class DefaultMatcher : public Matcher {
+	UTF8GreekAccents sanitizeGreekAccentFilter;
 public:
 
-	DefaultMatcher() {
+	DefaultMatcher() : sanitizeGreekAccentFilter() {
+		sanitizeGreekAccentFilter.setOptionValue("off");
 	}
 
 // Compares 2 words and tries to give a percentage assurance of a match

Modified: trunk/migratetags/migratetags.cpp
===================================================================
--- trunk/migratetags/migratetags.cpp	2021-03-27 21:28:30 UTC (rev 539)
+++ trunk/migratetags/migratetags.cpp	2022-02-17 17:42:32 UTC (rev 540)
@@ -3,6 +3,7 @@
 #include <swmgr.h>
 #include <utilxml.h>
 #include <swbuf.h>
+#include <swconfig.h>
 #include <swmodule.h>
 #include <stringmgr.h>
 #include <iostream>
@@ -14,11 +15,13 @@
 #include "matchers/matcher.h"
 
 // select your matcher here
+//#include "matchers/gntmatcher.h"
 #include "matchers/defaultmatcher.h"
 Matcher *matcher = new DefaultMatcher();
 
-const char *targetModuleName="NA28";
-const char *strongsSourceModuleName="WHNU";
+// hard code your from and to modules here or pass them on the command line with -
+SWBuf strongsSourceModuleName = "WHNU";
+SWBuf targetModuleName = "NA28FromImp";
 
 
 const char *ignoreSeries = "⸆¹⸆²⸆⸇᾿˸¹˸²˸³˸·¹²⟦–ʹ°¹°²⸋¹⸋²⸋⸌¹⸌°*[];⸀¹⸀²⸀³⸁⸀◆⟧ ⸂¹⸂²⸄⸂⸅⸃⸉¹⸈⸉⸊  ";
@@ -30,12 +33,14 @@
 SWBuf findCanonicalBibleText(SWBuf orig, BibMap &bibMap, BibMap &tTags);
 SWBuf buildWordMaps(const SWBuf &markupBuf, const BibMap &bibMap, vector<SWBuf> &targetWords, vector<int> &targetWordStarts, vector<int> &targetWordEnds);
 void pullFromModData(SWModule &fromMod, vector<XMLTag>&wordTags, vector<SWBuf> &fromWords, vector<int> &fromWordTags);
-void insertWordTags(SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, const vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds);
+void insertWordTags(VerseKey *vk, SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds);
 
 // app options
 bool optionFilterAccents = false;
 bool optionFilterAppCrit = false;
 bool optionDebug         = false;
+vector<SWBuf> optionExceptionFile;
+SWConfig *exceptionFile = 0;
 
 void usage(const char *progName, const char *error = 0) {
 	if (error) fprintf(stderr, "\n%s: %s\n", progName, error);
@@ -43,6 +48,10 @@
 	fprintf(stderr, "\nusage: %s [options]\n", progName);
 	fprintf(stderr, "  -v\t\t\t verbose: print lots of information while processing\n");
 	fprintf(stderr, "  -fa\t\t\t filter accents: remove Greek accents from final text\n");
+	fprintf(stderr, "  -fc\t\t\t filter critical apparatus markers from final text\n");
+	fprintf(stderr, "  -ss <moduleName>\t provide the Strong's source module name\n");
+	fprintf(stderr, "  -t <moduleName>\t provide the target module name\n");
+	fprintf(stderr, "  -e <exception file>\t provide an ini-style .conf file with overriding tag exceptions.\n");
 	fprintf(stderr, "\n\n");
 	exit(-1);
 }
@@ -61,6 +70,24 @@
 		else if (!strcmp(argv[i], "-fc")) {
 			optionFilterAppCrit = true;
 		}
+		else if (!strcmp(argv[i], "-ss")) {
+			if ((i + 1) < argc) {
+				strongsSourceModuleName = argv[++i];
+			}
+			else usage(progName, "-ss argument requires a module name.");
+		}
+		else if (!strcmp(argv[i], "-t")) {
+			if ((i + 1) < argc) {
+				targetModuleName = argv[++i];
+			}
+			else usage(progName, "-t argument requires a module name.");
+		}
+		else if (!strcmp(argv[i], "-e")) {
+			if (i+1 < argc) {
+				optionExceptionFile.push_back(argv[++i]);
+			}
+			else usage(progName, "-e argument requires a file name.");
+		}
 		else usage(progName, (((SWBuf)"Unknown argument: ")+ argv[i]).c_str());
 	}
 
@@ -72,16 +99,23 @@
 		exit(1);
 	}
 	SWModule &targetMod = *m;
-	m = lib.getModule(strongsSourceModuleName);
+	m = lib.getModule(strongsSourceModuleName.c_str());
 	if (!m) {
-		cerr << "couldn't find source module: " << strongsSourceModuleName << ".\n";
+		cerr << "couldn't find source module: " << strongsSourceModuleName.c_str() << ".\n";
 		exit(1);
 	}
 	SWModule &fromMod = *m;
 
+	for (int i = 0; i < optionExceptionFile.size(); ++i) {
+		SWBuf fileName = optionExceptionFile[i];
+		if (!i) exceptionFile = new SWConfig(fileName);
+		else (*exceptionFile) += SWConfig(fileName);
+	}
+
 	// we'll do the whole Bible eventually, but let's just get one verse
 	// working well.
-	targetMod.setKey("mat1.1");		// let's try this verse
+	((VerseKey *)targetMod.getKey())->setIntros(true);
+	targetMod.getKey()->setText("mat0.0");		// let's try this verse
 	int z = 0;
 	for (;
 //!z &&
@@ -147,7 +181,7 @@
 		cout << "\nProcessing Verse: " << targetMod.getKeyText() << endl;
 		cout << "---------------------" << endl;
 
-		cout << "\nOur FromMod Verse Markup" << endl;
+		cout << "\nOur strongsSourceModule Markup" << endl;
 		cout << "---------------------" << endl;
 		cout << fromMod.getRawEntry() << endl;
 		cout << "---------------------" << endl;
@@ -157,18 +191,20 @@
 		// grab our raw, fully marked up TargetMod text for this verse
 		SWBuf orig = targetMod.getRawEntryBuf();
 
-		if (optionFilterAccents) {
-			UTF8GreekAccents filter;
-			filter.setOptionValue("off");
-			filter.processText(orig);
-		}
 
+if (optionDebug) {
+		cout << "\nOur Original targetModule Markup" << endl;
+		cout << "---------------------" << endl;
+		cout << orig << endl;
+		cout << "---------------------" << endl;
+}
+
 		if (optionFilterAppCrit) {
 			SWBuf o = orig;
 			const unsigned char* from = (unsigned char*)o.c_str();
 			orig = "";
 			while (*from) {		
-				__u32 ch = getUniCharFromUTF8(&from, true);
+				SW_u32 ch = getUniCharFromUTF8(&from, true);
 				// if ch is bad, then convert to replacement char
 				if (!ch) ch = 0xFFFD;
 				SWBuf checkChar;
@@ -178,13 +214,6 @@
 			}
 		}
 
-if (optionDebug) {
-		cout << "\nOur Original TargetMod Markup" << endl;
-		cout << "---------------------" << endl;
-		cout << orig << endl;
-		cout << "---------------------" << endl;
-}
-
 		// let's find where just the canonical text is amongst
 		// all our markup
 		// newTargetModMarkup will eventually hold our updated markup with
@@ -196,7 +225,7 @@
 		SWBuf newTargetModMarkup = findCanonicalBibleText(orig, bibMap, wTags);
 
 if (optionDebug) {
-		cout << "\nOur Original TargetMod Markup After XMLTag-ifying" << endl;
+		cout << "\nOur Original targetModule Markup After XMLTag-ifying" << endl;
 		cout << "---------------------" << endl;
 		cout << newTargetModMarkup << endl;
 		cout << "---------------------" << endl;
@@ -214,7 +243,7 @@
 		justTargetModBibleText = buildWordMaps(newTargetModMarkup, bibMap, targetWords, targetWordStarts, targetWordEnds);
 
 if (optionDebug) {
-		cout << "\nJust TargetMod Bible Text" << endl;
+		cout << "\nJust targetModule Bible Text" << endl;
 		cout << "---------------------" << endl;
 		cout << justTargetModBibleText << endl;
 		cout << "---------------------" << endl;
@@ -234,14 +263,13 @@
 		//
 		matcher->matchWords(targetWordTags, targetWords, fromWords, fromWordTags);
 
-
 		// ok, now that we have our targetWordTags magically populated
 		// let's do the grunt work of inserting the <w> and </w> tags
-		insertWordTags(newTargetModMarkup, bibMap, wTags, targetWordTags, wordTags, targetWordStarts, targetWordEnds);
+		insertWordTags((VerseKey *)targetMod.getKey(), newTargetModMarkup, bibMap, wTags, targetWordTags, wordTags, targetWordStarts, targetWordEnds);
 
 
 if (optionDebug) {
-		cout << "\nHere's how you mapped things..." << endl;
+		cout << "\nHere's how we mapped things..." << endl;
 		cout << "---------------------" << endl;
 		cout << "Total wordTags: " << wordTags.size() << endl;
 		cout << "\nTargetMod Words: " << endl;
@@ -251,7 +279,7 @@
 			if (targetWordTags[i] == -1 && !strstr(ignoreSeries, targetWords[i])) {
 				if (!warned) {
 					cerr << "*** Error: didn't match all words: " << targetMod.getKeyText() << endl;
-					cerr << strongsSourceModuleName << ":";
+					cerr << strongsSourceModuleName.c_str() << ":";
 					for (int j = 0; j < fromWords.size(); ++j) {
 						cerr << " " << fromWords[j];
 					}
@@ -268,7 +296,7 @@
 				cerr << "  " << i << ": " <<  targetWords[i] << " (" << matcher->sanitizeWord(targetWords[i]) << ")" << endl;
 			}
 if (optionDebug) {
-			cout << targetWords[i] << " : " << targetWordTags[i] << " => " << (targetWordTags[i] != -1 ? wordTags[targetWordTags[i]] : "") << endl;
+			cout << targetWords[i] << " : " << targetWordTags[i] << " => " << (targetWordTags[i] > -1 ? wordTags[targetWordTags[i]] : "") << endl;
 }
 		}
 		if (warned) {
@@ -276,15 +304,22 @@
 			VerseKey *vk = (VerseKey *)targetMod.getKey();
 			for (int j = 0; j < targetWords.size(); ++j) {
 				if (!strstr(ignoreSeries, targetWords[j])) {
-					cerr << targetWords[j] << "\t\t " << vk->getOSISRef() << "." << j << "=" << (targetWordTags[j] != -1 ? wordTags[targetWordTags[j]] : "") << endl;
+					cerr << targetWords[j] << "\t\t " << vk->getOSISRef() << "." << j << "=" << (targetWordTags[j] > -1 ? (const char *)wordTags[targetWordTags[j]] : (targetWordTags[j] == -2 ? "{Using Exception}" : "")) << endl;
 				}
 			}
 			cerr << "---------------------" << endl;
 		}
+
+		if (optionFilterAccents) {
+			UTF8GreekAccents filter;
+			filter.setOptionValue("off");
+			filter.processText(newTargetModMarkup);
+		}
+
 if (optionDebug) {
 		cout << "---------------------" << endl;
 		
-		cout << "\nAND... Here's your final output" << endl;
+		cout << "\nAND... Here's our final output" << endl;
 		cout << "---------------------" << endl;
 }
 		cout << newTargetModMarkup << endl;
@@ -292,6 +327,9 @@
 		cout << endl;
 }
 	}
+
+	delete exceptionFile;
+
 	return 0;
 }
 
@@ -305,6 +343,8 @@
 	int tagLevel = 0;
 	int wTag = -1;
 	int inTag = 0;
+	bool wTagsPresent = orig.indexOf("<w") > -1;
+	SWBuf lastElementText = "";
 	for (int i = 0; i < orig.length(); ++i) {
 		if (orig[i] == '<') {
 			inTag = true;
@@ -312,30 +352,48 @@
 		else if (orig[i] == '>') {
 			inTag = false;
 			XMLTag t = tag.c_str();
+			bool skipTag = false;
 			if (!t.isEmpty()) {
 				if (t.isEndTag()) {
+					// clear out empty w tags
+					if (t.getName() && !strcmp("w", t.getName())) {
+						if (!lastElementText.size()) {
+							out.setSize(wTag);
+							if (out.endsWith(' ')) { // && i < (orig.length() - 1) && orig[i+1] == ' ') {
+								out.setSize(out.size() - 1);
+								bibMap.pop_back();
+								wTags.pop_back();
+							}
+							skipTag = true;
+						}
+					}
 					tagLevel--;
 					wTag = -1;
 				}
 				else {
+					lastElementText = "";
 					tagLevel++;
 					wTag = (t.getName() && !strcmp("w", t.getName())) ? out.size() : -1;
 				}
 			}
-			out += t;
+			if (!skipTag) out += t;
 			tag = "";
 		}
 		else if (inTag) {
 			tag += orig[i];
 		}
 		else {
-// for texts without <w> tags
-//			if (!tagLevel || wTag != -1) {
-			if (wTag != -1 || orig[i] == ' ') {
+			if (
+				   // for texts without <w> tags
+				   (!wTagsPresent && (!tagLevel || wTag != -1))
+				   // for texts with <w> tags
+				|| ( wTagsPresent && (wTag != -1 || orig[i] == ' '))
+			) {
 				bibMap.push_back(out.size());
 				wTags.push_back(wTag);
 			}
 			out += orig[i];
+			lastElementText += orig[i];
 		}
 	}
 	return out;
@@ -480,13 +538,32 @@
 }
 
 
-void insertWordTags(SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, const vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds) {
+void insertWordTags(VerseKey *vk, SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds) {
 	// TODO: this method needs some work,
 	// like putting multiple consecutive words
 	// together in one tag
+
+	ConfigEntMap exceptions;
+
+	if (exceptionFile) {
+		exceptions = exceptionFile->getSection("exceptions");
+	}
+
 	for (int i = 0; i < targetWordTags.size(); ++i) {
+		SWBuf wordTag = "";
 		if (targetWordTags[i] > -1) {
-			insert((const char *)wordTags[targetWordTags[i]], markupBuf, targetWordStarts[i], bibMap, wTags);
+			wordTag = wordTags[targetWordTags[i]];
+		}
+		if (exceptionFile) {
+			SWBuf key; key.setFormatted("%s.%d", vk->getOSISRef(), i);
+			ConfigEntMap::const_iterator it = exceptions.find(key);
+			if (it != exceptions.end()) {
+				targetWordTags[i] = -2;	// note that we are using an exception, not a mapping, not unset (-1)
+				wordTag = it->second;
+			}
+		}
+		if (wordTag.length()) {
+			insert((const char *)wordTag, markupBuf, targetWordStarts[i], bibMap, wTags);
 			insert("</w>", markupBuf, targetWordEnds[i], bibMap, wTags, true);
 		}
 	}

Added: trunk/migratetags/tag-exceptions-na28-example.conf
===================================================================
--- trunk/migratetags/tag-exceptions-na28-example.conf	                        (rev 0)
+++ trunk/migratetags/tag-exceptions-na28-example.conf	2022-02-17 17:42:32 UTC (rev 540)
@@ -0,0 +1,365 @@
+[exceptions]
+Matt.0=<w lemma="strong:G2596" morph="robinson:PREP">
+Matt.1=<w lemma="strong:G3156" morph="robinson:N-ASM">
+Matt.6.24.3=<w lemma="strong:G1417" morph="robinson:A-DPF">
+Matt.9.4.9=<w lemma="strong:G2444" morph="robinson:CONJ">
+Matt.12.47.16=<w lemma="strong:G2980" morph="robinson:V-AAN strongsMorph:G5658">
+Matt.15.6.1=<w lemma="strong:G3756" morph="robinson:PRT-N">
+Matt.15.6.2=<w lemma="strong:G3361" morph="robinson:PRT-N">
+Matt.15.6.3=<w lemma="strong:G5091" morph="robinson:V-FAI-3S strongsMorph:G5692">
+Matt.15.6.5=<w lemma="strong:G3962" morph="robinson:N-ASM">
+Matt.15.6.6=<w lemma="strong:G846" morph="robinson:P-GSM">
+Matt.15.6.10=<w lemma="strong:G3588" morph="robinson:T-ASM">
+Matt.26.60.8=<w lemma="strong:G5305" morph="robinson:ADV">
+Matt.26.60.9=<w lemma="strong:G1161" morph="robinson:CONJ">
+Matt.26.60.10=<w lemma="strong:G4334" morph="robinson:V-2AAP-NPM strongsMorph:G5631">
+Matt.26.60.11=<w lemma="strong:G1417" morph="robinson:A-NUI">
+Matt.27.46.22=<w lemma="strong:G2444" morph="robinson:CONJ">
+Mark.0=<w lemma="strong:G2596" morph="robinson:PREP">
+Mark.1=<w lemma="strong:G3138" morph="robinson:N-ASM">
+Mark.3.20.1=<w lemma="strong:G2064" morph="robinson:V-PNI-3S strongsMorph:G5736">
+Mark.3.20.2=<w lemma="strong:G1519" morph="robinson:PREP">
+Mark.3.20.3=<w lemma="strong:G3624" morph="robinson:N-ASM">
+Mark.3.20.4=<w lemma="strong:G2532" morph="robinson:CONJ">
+Mark.6.27.11=<w lemma="strong:G2532" morph="robinson:CONJ">
+Mark.6.27.12=<w lemma="strong:G565" morph="robinson:V-2AAP-NSM strongsMorph:G5631">
+Mark.6.27.13=<w lemma="strong:G607" morph="robinson:V-AAI-3S strongsMorph:G5656">
+Mark.6.27.14=<w lemma="strong:G846" morph="robinson:P-ASM">
+Mark.6.27.15=<w lemma="strong:G1722" morph="robinson:PREP">
+Mark.6.27.16=<w lemma="strong:G3588" morph="robinson:T-DSF">
+Mark.6.27.17=<w lemma="strong:G5438" morph="robinson:N-DSF">
+Mark.12.14.37=<w lemma="strong:G1325" morph="robinson:V-2AAS-1P strongsMorph:G5632">
+Mark.12.14.38=<w lemma="strong:G2228" morph="robinson:PRT">
+Mark.12.14.39=<w lemma="strong:G3361" morph="robinson:PRT-N">
+Mark.12.14.40=<w lemma="strong:G1325" morph="robinson:V-2AAS-1P strongsMorph:G5632">
+Mark.13.30.10=<w lemma="strong:G3360" morph="robinson:ADV">
+Mark.16.8.20=<w lemma="strong:G3956" morph="robinson:A-APN">
+Mark.16.8.21=<w lemma="strong:G1161" morph="robinson:CONJ">
+Mark.16.8.22=<w lemma="strong:G3588" morph="robinson:T-APN">
+Mark.16.8.23=<w lemma="strong:G3853" morph="robinson:V-RPP-APN strongsMorph:G5772">
+Mark.16.8.24=<w lemma="strong:G3588" morph="robinson:T-DPM">
+Mark.16.8.25=<w lemma="strong:G4012" morph="robinson:PREP">
+Mark.16.8.26=<w lemma="strong:G3588" morph="robinson:T-ASM">
+Mark.16.8.27=<w lemma="strong:G4074" morph="robinson:N-ASM">
+Mark.16.8.28=<w lemma="strong:G4935" morph="robinson:ADV">
+Mark.16.8.29=<w lemma="strong:G1804" morph="robinson:V-AAI-3P strongsMorph:G5656">
+Mark.16.8.30=<w lemma="strong:G3326" morph="robinson:PREP">
+Mark.16.8.31=<w lemma="strong:G1161" morph="robinson:CONJ">
+Mark.16.8.32=<w lemma="strong:G3778" morph="robinson:D-APN">
+Mark.16.8.33=<w lemma="strong:G2532" morph="robinson:CONJ">
+Mark.16.8.34=<w lemma="strong:G846" morph="robinson:P-NSM">
+Mark.16.8.35=<w lemma="strong:G3588" morph="robinson:T-NSM">
+Mark.16.8.36=<w lemma="strong:G2424" morph="robinson:N-NSM">
+Mark.16.8.38=<w lemma="strong:G575" morph="robinson:PREP">
+Mark.16.8.39=<w lemma="strong:G395" morph="robinson:N-GSF">
+Mark.16.8.40=<w lemma="strong:G2532" morph="robinson:CONJ">
+Mark.16.8.41=<w lemma="strong:G891" morph="robinson:ADV">
+Mark.16.8.42=<w lemma="strong:G1424" morph="robinson:N-GSF">
+Mark.16.8.43=<w lemma="strong:G1821" morph="robinson:V-AAI-3S strongsMorph:G5656">
+Mark.16.8.44=<w lemma="strong:G1223" morph="robinson:PREP">
+Mark.16.8.46=<w lemma="strong:G846" morph="robinson:P-GPM">
+Mark.16.8.47=<w lemma="strong:G3588" morph="robinson:T-ASN">
+Mark.16.8.48=<w lemma="strong:G2411" morph="robinson:N-ASN">
+Mark.16.8.49=<w lemma="strong:G2532" morph="robinson:CONJ">
+Mark.16.8.50=<w lemma="strong:G862" morph="robinson:A-ASM">
+Mark.16.8.51=<w lemma="strong:G2782" morph="robinson:N-NSN">
+Mark.16.8.52=<w lemma="strong:G3588" morph="robinson:T-GSF">
+Mark.16.8.53=<w lemma="strong:G166" morph="robinson:A-GSF">
+Mark.16.8.54=<w lemma="strong:G4991" morph="robinson:N-GSF">
+Mark.16.8.55=<w lemma="strong:G281" morph="robinson:HEB">
+Luke.0=<w lemma="strong:G2596" morph="robinson:PREP">
+Luke.1=<w lemma="strong:G3065" morph="robinson:N-ASM">
+Luke.6.18.1=<w lemma="strong:G2064" morph="robinson:V-2AAI-3P strongsMorph:G5627">
+Luke.6.18.2=<w lemma="strong:G191" morph="robinson:V-AAN strongsMorph:G5658">
+Luke.6.18.3=<w lemma="strong:G846" morph="robinson:P-GSM">
+Luke.6.18.5=<w lemma="strong:G2390" morph="robinson:V-APN strongsMorph:G5683">
+Luke.6.18.7=<w lemma="strong:G3588" morph="robinson:T-GPF">
+Luke.6.18.8=<w lemma="strong:G3554" morph="robinson:N-GPF">
+Luke.6.18.9=<w lemma="strong:G846" morph="robinson:P-GPM">
+Luke.6.18.10=<w lemma="strong:G2532" morph="robinson:CONJ">
+Luke.6.18.11=<w lemma="strong:G3588" morph="robinson:T-NPM">
+Luke.6.18.13=<w lemma="strong:G575" morph="robinson:PREP">
+Luke.7.18.9=<w lemma="strong:G2532" morph="robinson:CONJ">
+Luke.7.18.10=<w lemma="strong:G4341" morph="robinson:V-ADP-NSM strongsMorph:G5666">
+Luke.7.18.11=<w lemma="strong:G1417" morph="robinson:A-NUI">
+Luke.7.18.12=<w lemma="strong:G5100" morph="robinson:X-APM">
+Luke.7.18.13=<w lemma="strong:G3588" morph="robinson:T-GPM">
+Luke.7.18.14=<w lemma="strong:G3101" morph="robinson:N-GPM">
+Luke.7.18.15=<w lemma="strong:G846" morph="robinson:P-GSM">
+Luke.7.18.16=<w lemma="strong:G3588" morph="robinson:T-NSM">
+Luke.7.18.17=<w lemma="strong:G2491" morph="robinson:N-NSM">
+Luke.13.7.25=<w lemma="strong:G2444" morph="robinson:CONJ">
+Luke.17.23.5=<w lemma="strong:G2228" morph="robinson:PRT">
+Luke.22.67.0=<w lemma="strong:G3004" morph="robinson:V-PAP-NPM strongsMorph:G5723">
+John.0=<w lemma="strong:G2596" morph="robinson:PREP">
+John.1=<w lemma="strong:G2491" morph="robinson:N-ASM">
+John.18.2.0=<w lemma="strong:G1492" morph="robinson:V-2LAI-3S strongsMorph:G5714">
+Acts.0=<w lemma="strong:G4234" morph="robinson:N-NPF">
+Acts.1=<w lemma="strong:G652" morph="robinson:N-GPM">
+Acts.2.11.0=<w lemma="strong:G2453" morph="robinson:A-NPM">
+Acts.2.11.1=<w lemma="strong:G5037" morph="robinson:PRT">
+Acts.2.11.3=<w lemma="strong:G4339" morph="robinson:N-NPM">
+Acts.2.11.5=<w lemma="strong:G2532" morph="robinson:CONJ">
+Acts.3.20.0=<w lemma="strong:G3704" morph="robinson:ADV">
+Acts.3.20.1=<w lemma="strong:G302" morph="robinson:PRT">
+Acts.3.20.2=<w lemma="strong:G2064" morph="robinson:V-2AAS-3P strongsMorph:G5632">
+Acts.3.20.3=<w lemma="strong:G2540" morph="robinson:N-NPM">
+Acts.3.20.4=<w lemma="strong:G403" morph="robinson:N-GSF">
+Acts.3.20.5=<w lemma="strong:G575" morph="robinson:PREP">
+Acts.3.20.6=<w lemma="strong:G4383" morph="robinson:N-GSN">
+Acts.3.20.7=<w lemma="strong:G3588" morph="robinson:T-GSM">
+Acts.3.20.8=<w lemma="strong:G2962" morph="robinson:N-GSM">
+Acts.4.25.12=<w lemma="strong:G2444" morph="robinson:CONJ">
+Acts.5.39.14=<w lemma="strong:G3982" morph="robinson:V-API-3P strongsMorph:G5681">
+Acts.5.39.15=<w lemma="strong:G1161" morph="robinson:CONJ">
+Acts.5.39.16=<w lemma="strong:G846" morph="robinson:P-DSM">
+Acts.7.26.17=<w lemma="strong:G2444" morph="robinson:CONJ">
+Acts.13.33.0=<w lemma="strong:G3754" morph="robinson:CONJ">
+Acts.13.33.1=<w lemma="strong:G3778" morph="robinson:D-ASF">
+Acts.13.33.2=<w lemma="strong:G3588" morph="robinson:T-NSM">
+Acts.13.33.3=<w lemma="strong:G2316" morph="robinson:N-NSM">
+Acts.13.33.4=<w lemma="strong:G1603" morph="robinson:V-RAI-3S strongsMorph:G5758">
+Acts.13.33.5=<w lemma="strong:G3588" morph="robinson:T-DPN">
+Acts.13.33.6=<w lemma="strong:G5043" morph="robinson:N-DPN">
+Acts.13.33.7=<w lemma="strong:G846" morph="robinson:P-GPM">
+Acts.13.33.8=<w lemma="strong:G1473" morph="robinson:P-1DP">
+Acts.13.33.9=<w lemma="strong:G450" morph="robinson:V-AAP-NSM strongsMorph:G5660">
+Acts.13.33.10=<w lemma="strong:G2424" morph="robinson:N-ASM">
+Acts.13.38.14=<w lemma="strong:G2532" morph="robinson:CONJ">
+Acts.13.38.15=<w lemma="strong:G575" morph="robinson:PREP">
+Acts.13.38.16=<w lemma="strong:G3956" morph="robinson:A-GPN">
+Acts.13.38.17=<w lemma="strong:G3739" morph="robinson:R-GPN">
+Acts.13.38.18=<w lemma="strong:G3756" morph="robinson:PRT-N">
+Acts.13.38.19=<w lemma="strong:G1410" morph="robinson:V-AOI-2P-ATT strongsMorph:G5675">
+Acts.13.38.20=<w lemma="strong:G1722" morph="robinson:PREP">
+Acts.13.38.21=<w lemma="strong:G3551" morph="robinson:N-DSM">
+Acts.13.38.22=<w lemma="strong:G3475" morph="robinson:N-GSM">
+Acts.13.38.23=<w lemma="strong:G1344" morph="robinson:V-APN strongsMorph:G5683">
+Acts.19.40.21=<w lemma="strong:G2532" morph="robinson:CONJ">
+Acts.19.40.22=<w lemma="strong:G3778" morph="robinson:D-APN">
+Acts.19.40.23=<w lemma="strong:G3004" morph="robinson:V-2AAP-NSM strongsMorph:G5631">
+Acts.19.40.24=<w lemma="strong:G630" morph="robinson:V-AAI-3S strongsMorph:G5656">
+Acts.19.40.25=<w lemma="strong:G3588" morph="robinson:T-ASF">
+Acts.19.40.26=<w lemma="strong:G1577" morph="robinson:N-ASF">
+Acts.24.19.0=<w lemma="strong:G5100" morph="robinson:X-NPM">
+Acts.24.19.1=<w lemma="strong:G1161" morph="robinson:CONJ">
+Acts.24.19.2=<w lemma="strong:G575" morph="robinson:PREP">
+Acts.24.19.3=<w lemma="strong:G3588" morph="robinson:T-GSF">
+Acts.24.19.4=<w lemma="strong:G773" morph="robinson:N-GSF">
+Acts.24.19.5=<w lemma="strong:G2453" morph="robinson:A-NPM">
+Rom.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Rom.1=<w lemma="strong:G4514" morph="robinson:A-APM">
+Rom.7.10.0=<w lemma="strong:G1473" morph="robinson:P-1NS">
+Rom.7.10.1=<w lemma="strong:G1161" morph="robinson:CONJ">
+Rom.7.10.2=<w lemma="strong:G599" morph="robinson:V-2AAI-3P strongsMorph:G5627">
+Rom.9.12.0=<w lemma="strong:G3756" morph="robinson:PRT-N">
+Rom.9.12.1=<w lemma="strong:G1537" morph="robinson:PREP">
+Rom.9.12.2=<w lemma="strong:G2041" morph="robinson:N-GPN">
+Rom.9.12.3=<w lemma="strong:G235" morph="robinson:CONJ">
+Rom.9.12.5=<w lemma="strong:G1537" morph="robinson:PREP">
+Rom.9.12.6=<w lemma="strong:G3588" morph="robinson:T-GSM">
+Rom.9.12.7=<w lemma="strong:G2564" morph="robinson:V-PAP-GSM strongsMorph:G5723">
+1Cor.0=<w lemma="strong:G4314" morph="robinson:PREP">
+1Cor.1=<w lemma="strong:G2881" morph="robinson:A-APM">
+1Cor.2=
+1Cor.10.29.10=<w lemma="strong:G2444" morph="robinson:CONJ">
+2Cor.0=<w lemma="strong:G4314" morph="robinson:PREP">
+2Cor.1=<w lemma="strong:G2881" morph="robinson:A-APM">
+2Cor.2=
+2Cor.1.7.1=<w lemma="strong:G3588" morph="robinson:T-NSF">
+2Cor.1.7.2=<w lemma="strong:G1680" morph="robinson:N-NSF">
+2Cor.1.7.3=<w lemma="strong:G1473" morph="robinson:P-1GP">
+2Cor.1.7.4=<w lemma="strong:G949" morph="robinson:A-NSF">
+2Cor.1.7.5=<w lemma="strong:G5228" morph="robinson:PREP">
+2Cor.1.7.6=<w lemma="strong:G1473" morph="robinson:P-1GP">
+2Cor.1.7.15=<w lemma="strong:G2532" morph="robinson:CONJ">
+2Cor.8.14.0=<w lemma="strong:G1722" morph="robinson:PREP">
+2Cor.8.14.1=<w lemma="strong:G3588" morph="robinson:T-DSM">
+2Cor.8.14.2=<w lemma="strong:G3568" morph="robinson:ADV">
+2Cor.8.14.3=<w lemma="strong:G2540" morph="robinson:N-DSM">
+2Cor.8.14.13=<w lemma="strong:G3588" morph="robinson:T-ASN">
+2Cor.8.14.14=<w lemma="strong:G1565" morph="robinson:D-GPM">
+2Cor.8.14.15=<w lemma="strong:G4051" morph="robinson:N-NSN">
+2Cor.8.14.17=<w lemma="strong:G1519" morph="robinson:PREP">
+2Cor.8.14.18=<w lemma="strong:G3588" morph="robinson:T-ASN">
+2Cor.8.14.19=<w lemma="strong:G4771" morph="robinson:P-2GP">
+2Cor.8.14.20=<w lemma="strong:G5303" morph="robinson:N-ASN">
+2Cor.10.4.15=<w lemma="strong:G3053" morph="robinson:N-APM">
+2Cor.10.4.16=<w lemma="strong:G2507" morph="robinson:V-PAP-NPM strongsMorph:G5723">
+2Cor.13.12.5=<w lemma="strong:G782" morph="robinson:V-PNI-3P strongsMorph:G5736">
+2Cor.13.12.6=<w lemma="strong:G4771" morph="robinson:P-2AP">
+2Cor.13.12.7=<w lemma="strong:G3588" morph="robinson:T-NPM">
+2Cor.13.12.8=<w lemma="strong:G40" morph="robinson:A-NPM">
+2Cor.13.12.9=<w lemma="strong:G3956" morph="robinson:A-NPM">
+2Cor.13.13.0=<w lemma="strong:G3588" morph="robinson:T-NSF">
+2Cor.13.13.1=<w lemma="strong:G5485" morph="robinson:N-NSF">
+2Cor.13.13.2=<w lemma="strong:G3588" morph="robinson:T-GSM">
+2Cor.13.13.3=<w lemma="strong:G2962" morph="robinson:N-GSM">
+2Cor.13.13.4=<w lemma="strong:G2424" morph="robinson:N-GSM">
+2Cor.13.13.5=<w lemma="strong:G5547" morph="robinson:N-GSM">
+2Cor.13.13.6=<w lemma="strong:G2532" morph="robinson:CONJ">
+2Cor.13.13.7=<w lemma="strong:G3588" morph="robinson:T-NSF">
+2Cor.13.13.8=<w lemma="strong:G26" morph="robinson:N-NSF">
+2Cor.13.13.9=<w lemma="strong:G3588" morph="robinson:T-GSM">
+2Cor.13.13.10=<w lemma="strong:G2316" morph="robinson:N-GSM">
+2Cor.13.13.11=<w lemma="strong:G2532" morph="robinson:CONJ">
+2Cor.13.13.12=<w lemma="strong:G3588" morph="robinson:T-NSF">
+2Cor.13.13.13=<w lemma="strong:G2842" morph="robinson:N-NSF">
+2Cor.13.13.14=<w lemma="strong:G3588" morph="robinson:T-GSN">
+2Cor.13.13.15=<w lemma="strong:G40" morph="robinson:A-GSN">
+2Cor.13.13.16=<w lemma="strong:G4151" morph="robinson:N-GSN">
+2Cor.13.13.17=<w lemma="strong:G3326" morph="robinson:PREP">
+2Cor.13.13.18=<w lemma="strong:G3956" morph="robinson:A-GPN">
+2Cor.13.13.19=<w lemma="strong:G4771" morph="robinson:P-2GP">
+Gal.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Gal.1=<w lemma="strong:G1052" morph="robinson:A-APM">
+Gal.2.19.9=<w lemma="strong:G5547" morph="robinson:N-DSM">
+Gal.2.19.10=<w lemma="strong:G4957" morph="robinson:V-RPI-1S strongsMorph:G5769">
+Gal.3.19.8=<w lemma="strong:G891" morph="robinson:ADV">
+Gal.4.19.5=<w lemma="strong:G3360" morph="robinson:ADV">
+Eph.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Eph.1=<w lemma="strong:G2180" morph="robinson:A-APM">
+Eph.1.10.21=<w lemma="strong:G1722" morph="robinson:PREP">
+Eph.1.10.22=<w lemma="strong:G846" morph="robinson:P-DSM">
+Eph.2.14.17=<w lemma="strong:G3588" morph="robinson:T-ASF">
+Eph.2.14.18=<w lemma="strong:G2189" morph="robinson:N-ASF">
+Eph.2.14.19=<w lemma="strong:G1722" morph="robinson:PREP">
+Eph.2.14.20=<w lemma="strong:G3588" morph="robinson:T-DSF">
+Eph.2.14.21=<w lemma="strong:G4561" morph="robinson:N-DSF">
+Eph.2.14.22=<w lemma="strong:G846" morph="robinson:P-GSM">
+Eph.3.17.10=<w lemma="strong:G1722" morph="robinson:PREP">
+Eph.3.17.11=<w lemma="strong:G26" morph="robinson:N-DSF">
+Eph.3.17.12=<w lemma="strong:G4492" morph="robinson:V-RPP-NPM strongsMorph:G5772">
+Eph.3.17.13=<w lemma="strong:G2532" morph="robinson:CONJ">
+Eph.3.17.14=<w lemma="strong:G2311" morph="robinson:V-RPP-NPM strongsMorph:G5772">
+Eph.5.14.0=<w lemma="strong:G3956" morph="robinson:A-NSN">
+Eph.5.14.1=<w lemma="strong:G1063" morph="robinson:CONJ">
+Eph.5.14.2=<w lemma="strong:G3588" morph="robinson:T-ASN">
+Eph.5.14.3=<w lemma="strong:G5319" morph="robinson:V-PPP-NSN strongsMorph:G5746">
+Eph.5.14.4=<w lemma="strong:G5457" morph="robinson:N-NSN">
+Eph.5.14.5=<w lemma="strong:G1510" morph="robinson:V-PAI-3S strongsMorph:G5719">
+Phil.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Phil.1=<w lemma="strong:G5374" morph="robinson:A-APM">
+Phil.3.7.0=<w lemma="strong:G235" morph="robinson:CONJ">
+Col.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Col.1=<w lemma="strong:G2857" morph="robinson:A-APM">
+Col.1.22.0=<w lemma="strong:G3570" morph="robinson:ADV">
+Col.1.22.1=<w lemma="strong:G1161" morph="robinson:CONJ">
+Col.1.22.2=<w lemma="strong:G604" morph="robinson:V-AAI-3S strongsMorph:G5656">
+1Thess.0=<w lemma="strong:G4314" morph="robinson:PREP">
+1Thess.1=<w lemma="strong:G2332" morph="robinson:A-APM">
+1Thess.2=
+1Thess.1.2.14=<w lemma="strong:G89" morph="robinson:ADV">
+1Thess.2.7.0=<w lemma="strong:G1410" morph="robinson:V-PNP-NPM strongsMorph:G5740">
+1Thess.2.7.2=<w lemma="strong:G922" morph="robinson:N-DSN">
+1Thess.2.7.3=<w lemma="strong:G1510" morph="robinson:V-PAN strongsMorph:G5721">
+1Thess.2.7.5=<w lemma="strong:G5547" morph="robinson:N-GSM">
+1Thess.2.7.6=<w lemma="strong:G652" morph="robinson:N-NPM">
+1Thess.2.7.11=<w lemma="strong:G1722" morph="robinson:PREP">
+1Thess.2.7.14=<w lemma="strong:G5613" morph="robinson:ADV">
+1Thess.2.12.0=<w lemma="strong:G3870" morph="robinson:V-PAP-NPM strongsMorph:G5723">
+1Thess.2.12.3=<w lemma="strong:G3888" morph="robinson:V-PNP-NPM strongsMorph:G5740">
+1Thess.2.12.15=<w lemma="strong:G4771" morph="robinson:P-2AP">
+1Thess.2.12.20=<w lemma="strong:G2532" morph="robinson:CONJ">
+2Thess.0=<w lemma="strong:G4314" morph="robinson:PREP">
+2Thess.1=<w lemma="strong:G2332" morph="robinson:A-APM">
+2Thess.2=
+1Tim.0=<w lemma="strong:G4314" morph="robinson:PREP">
+1Tim.1=<w lemma="strong:G5095" morph="robinson:N-ASM">
+1Tim.2=
+2Tim.0=<w lemma="strong:G4314" morph="robinson:PREP">
+2Tim.1=<w lemma="strong:G5095" morph="robinson:N-ASM">
+2Tim.2=
+Titus.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Titus.1=<w lemma="strong:G5103" morph="robinson:N-ASM">
+Phlm.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Phlm.1=<w lemma="strong:G5371" morph="robinson:N-ASM">
+Heb.0=<w lemma="strong:G4314" morph="robinson:PREP">
+Heb.1=<w lemma="strong:G1445" morph="robinson:A-APM">
+Heb.1.2.0=<w lemma="strong:G1909" morph="robinson:PREP">
+Heb.1.2.2=<w lemma="strong:G2078" morph="robinson:A-GSM-S">
+Heb.1.2.3=<w lemma="strong:G3588" morph="robinson:T-GPF">
+Heb.1.2.4=<w lemma="strong:G2250" morph="robinson:N-GPF">
+Heb.1.2.5=<w lemma="strong:G3778" morph="robinson:D-GPF">
+Heb.1.2.6=<w lemma="strong:G2980" morph="robinson:V-AAI-3S strongsMorph:G5656">
+Heb.1.2.7=<w lemma="strong:G1473" morph="robinson:P-1DP">
+Heb.1.2.8=<w lemma="strong:G1722" morph="robinson:PREP">
+Heb.1.2.9=<w lemma="strong:G5207" morph="robinson:N-DSM">
+Heb.3.10.0=<w lemma="strong:G5062" morph="robinson:A-NUI">
+Heb.3.10.1=<w lemma="strong:G2094" morph="robinson:N-APN">
+Heb.3.13.7=<w lemma="strong:G891" morph="robinson:ADV">
+Heb.12.4.2=<w lemma="strong:G3360" morph="robinson:ADV">
+Heb.12.22.13=<w lemma="strong:G3831" morph="robinson:N-DSF">
+Jas.0=<w lemma="strong:G2385" morph="robinson:N-GSM">
+Jas.1=<w lemma="strong:G1992" morph="robinson:N-NSF">
+Jas.1.20.5=<w lemma="strong:G3756" morph="robinson:PRT-N">
+Jas.1.20.6=<w lemma="strong:G2716" morph="robinson:V-PNI-3S strongsMorph:G5736">
+Jas.2.4.5=<w lemma="strong:G2532" morph="robinson:CONJ">
+Jas.2.15.9=<w lemma="strong:G5600" morph="robinson:V-PXS-3P">
+Jas.4.10.3=<w lemma="strong:G3588" morph="robinson:T-GSM">
+Jas.5.10.4=<w lemma="strong:G2“552 morph="robinson:N-GSF">
+1Pet.0=<w lemma="strong:G4074" morph="robinson:N-GSM">
+1Pet.1=<w lemma="strong:G1992" morph="robinson:N-NSF">
+1Pet.2=<w lemma="strong:G4413" morph="robinson:A-NSF-S">
+1Pet.1.6.8=<w lemma="strong:G3076" morph="robinson:V-PAP-APF">
+1Pet.3.16.0=<w lemma="strong:G235" morph="robinson:CONJ">
+1Pet.3.16.1=<w lemma="strong:G3326" morph="robinson:PREP">
+1Pet.3.16.2=<w lemma="strong:G4240" morph="robinson:N-GSF">
+1Pet.3.16.3=<w lemma="strong:G2532" morph="robinson:CONJ">
+1Pet.3.16.4=<w lemma="strong:G5401" morph="robinson:N-GSM">
+1Pet.4.16.12=<w lemma="strong:G3313" morph="robinson:N-DSN">
+1Pet.5.1.1=<w lemma="strong:G3588" morph="robinson:T-APM">
+2Pet.0=<w lemma="strong:G4074" morph="robinson:N-GSM">
+2Pet.1=<w lemma="strong:G1992" morph="robinson:N-NSF">
+2Pet.2=<w lemma="strong:G1208" morph="robinson:A-NSF">
+2Pet.2.6.10=<w lemma="strong:G764" morph="robinson:V-PAN">
+2Pet.2.11.13=<w lemma="strong:G2962" morph="robinson:N-DSM">
+2Pet.2.15.0=<w lemma="strong:G2641" morph="robinson:V-2AAP-NPM strongsMorph:G5631">
+2Pet.2.18.10=<w lemma="strong:G3689" morph="robinson:ADV">
+2Pet.3.6.2=<w lemma="strong:G3739" morph="robinson:R-ASM">
+2Pet.3.10.25=<w lemma="strong:G3756" morph="robinson:PRT-N">
+2Pet.3.16.4=<w lemma="strong:G3588" morph="robinson:T-DPF">
+2Pet.3.16.21=<w lemma="strong:G4761" morph="robinson:V-FIA-3P">
+1John.0=<w lemma="strong:G2491" morph="robinson:N-GSM">
+1John.1=<w lemma="strong:G1992" morph="robinson:N-NSF">
+1John.2=<w lemma="strong:G4413" morph="robinson:A-NSF-S">
+1John.2.14.2=<w lemma="strong:G3813" morph="robinson:N-NPN">
+1John.2.14.6=<w lemma="strong:G3962" morph="robinson:N-ASM">
+1John.2.14.11=<w lemma="strong:G1097" morph="robinson:V-RAI-2P strongsMorph:G5758">
+1John.2.14.16=<w lemma="strong:G1125" morph="robinson:V-AAI-1S strongsMorph:G5656">
+1John.2.14.19=<w lemma="strong:G3754" morph="robinson:CONJ">
+1John.2.14.28=<w lemma="strong:G4771" morph="robinson:P-2DP">
+1John.2.14.32=<w lemma="strong:G3588" morph="robinson:T-ASM">
+1John.3.7.0=<w lemma="strong:G3813" morph="robinson:N-NPN">
+1John.5.10.12=<w lemma="strong:G846" morph="robinson:P-DSM">
+1John.5.18.18=<w lemma="strong:G1438" morph="robinson:F-3ASM">
+2John.0=<w lemma="strong:G2491" morph="robinson:N-GSM">
+2John.1=<w lemma="strong:G1992" morph="robinson:N-NSF">
+2John.2=<w lemma="strong:G1208" morph="robinson:A-NSF">
+3John.0=<w lemma="strong:G2491" morph="robinson:N-GSM">
+3John.1=<w lemma="strong:G1992" morph="robinson:N-NSF">
+3John.2=<w lemma="strong:G5154" morph="robinson:A-NSF">
+Jude.0=<w lemma="strong:G2448" morph="robinson:N-GSM">
+Jude.1=<w lemma="strong:G1992" morph="robinson:N-NSF">
+Jude.1.5.10=<w lemma="strong:G2424" morph="robinson:N-NSM">
+Rev.0=<w lemma="strong:G602" morph="robinson:N-NSF">
+Rev.1=<w lemma="strong:G2491" morph="robinson:N-GSM">
+Rev.2.25.4=<w lemma="strong:G891" morph="robinson:ADV">
+Rev.2.28.0=<w lemma="strong:G5613" morph="robinson:ADV">
+Rev.2.28.1=<w lemma="strong:G2504" morph="robinson:P-1NS-K">
+Rev.2.28.2=<w lemma="strong:G2983" morph="robinson:V-2RAI-1S strongsMorph:G5719">
+Rev.2.28.3=<w lemma="strong:G3844" morph="robinson:PREP">
+Rev.2.28.4=<w lemma="strong:G3588" morph="robinson:T-GSN">
+Rev.2.28.5=<w lemma="strong:G3962" morph="robinson:N-GSM">
+Rev.2.28.6=<w lemma="strong:G1473" morph="robinson:P-1GS">
+Rev.12.17.28=<w lemma="strong:G2532" morph="robinson:CONJ">
+Rev.12.17.29=<w lemma="strong:G2476" morph="robinson:V-API-3S strongsMorph:G5681">
+Rev.12.17.30=<w lemma="strong:G1909" morph="robinson:PREP">
+Rev.12.17.31=<w lemma="strong:G3588" morph="robinson:T-ASF">
+Rev.12.17.32=<w lemma="strong:G285" morph="robinson:N-ASF">
+Rev.12.17.33=<w lemma="strong:G3588" morph="robinson:T-GSF">
+Rev.12.17.34=<w lemma="strong:G2281" morph="robinson:N-GSF">
+Rev.17.9.19=<w lemma="strong:G2532" morph="robinson:CONJ">
+Rev.17.9.20=<w lemma="strong:G935" morph="robinson:N-APM">
+Rev.17.9.21=<w lemma="strong:G2033" morph="robinson:A-NUI">
+Rev.17.9.22=<w lemma="strong:G1510" morph="robinson:V-PAI-3P strongsMorph:G5719">



More information about the sword-cvs mailing list