[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