User:Souravmohanty2005/vector.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
![]() | The accompanying .css page for this skin is at User:Souravmohanty2005/vector.css. |
importScript('User:Gary King/script installer.js');
importScript('User:TheDJ/qui.js');
importScript('User:Carbonrodney/watchlistnotifier.js');
importScript("User:Smith609/endnote.js");
importScript("User:Smith609/toolbox.js");
importScript("Wikipedia:Dazzle!/code.js");
importScript('MediaWiki:Gadget-HotCat.js');
importScript('User:TheDJ/sharebox.js');
importScript('MediaWiki:Gadget-HotCat.js');
importScript('User:Tim Song/afchelper4.js');
importScript('User:Quarl/util.js');
importScript('User:Ale_jrb/Scripts/csdhelper.js'); //[[User:Ale_jrb/Scripts]]
importScript('User:NuclearWarfare/Mark-blocked script.js');
importScript('User:Kaldari/wikilove.js');
importScript('User:CBM/quickpreview.js');
importScript('User:Gary King/show upload deletion logs.js');
importScript('Wikipedia:WikiProject Deletion sorting/delsort.js');
importScript('User:Paranomia/simplevote.js');
importScript('Wikipedia:WikiProject User scripts/Scripts/TimeTraveller.js');
importScript('User:Zocky/PicturePopupsVector.js');
importScript('User:Lupin/popups.js'); // see Wikipedia:Tools/Navigation popups
importScript('User:TheJosh/Scripts/NewPagePatrol.js');
npp_num_pages = 5
// Add [[WP:Reflinks]] launcher in the toolbox on left
addOnloadHook(function () {
addPortletLink(
"p-tb", // toolbox portlet
"http://toolserver.org/~dispenser/cgi-bin/webreflinks.py/" + wgPageName
+ "?client=script&citeweb=on&overwrite=&limit=30&lang=" + wgContentLanguage,
"Reflinks" // link label
)});
importScript('User:AzaToth/twinkle.js');
// [[User:Henrik/afc-helper]]
importScript('User:Henrik/js/afc-helper.js');
importScript('User:Cameltrader/Advisor.js');
importScript('User:GregU/dashes.js');
importScript('User:AndyZ/peerreviewer.js'); //[[User:AndyZ/peerreviewer.js]]
toolbarLink_PR = true;
importScript('User:WikiBhasha.MSR/WikiBhasha.js');
// <source lang="javascript">
// HistoryCount
addOnloadHook(function (){
var N = 500; // <<== CHANGE TO YOUR LIKING
var x = document.getElementById('ca-history');
if(!x) return;
x.getElementsByTagName('a')[0].href += "&limit=" + N;
});
// </source>[[Category:Wikipedia scripts]]
function welcome() {
if (document.title.indexOf('Editing User talk:') == 0) {
document.editform.wpTextbox1.value = document.editform.wpTextbox1.value + '==' + 'Welcome' + '==\n' + '{{subst:User:' + 'MatthewFenton/Welcome}}\n~~' + '~~';
document.editform.wpSummary.value = 'Welcome a user to Wikipedia using JS WW';
}
}
function welcome_tab() {
add_link('javascript:welcome()', 'Welcome');
}
if (document.title.indexOf('Editing User talk:') == 0) {
addOnloadHook(welcome_tab);
}
/**** quick image delete ****/
importScript('User:Howcheng/quickimgdelete.js');
importScript('User:Howcheng/quickimgdelete.js');
qid_autoSave = false;
importScript('User:MarkS/extraeditbuttons.js'); //[[User:MarkS/extraeditbuttons.js]]
importScript("User:Mountain/shorturl.js");
// [[User:Lupin/popups.js]]
importScript('User:Lupin/popups.js');
/*
</nowiki> </pre>
== Set default Main Page ==
<pre> <nowiki>
Set the default Main Page to [[Wikipedia:Main Page alternative (outline_links)]]
*/
/*
if (wgPageName == "Main_Page") {
window.location = "http://en.wikipedia.org/wiki/Wikipedia:Main_Page_alternative_%28outline_links%29";
}
*/
/*
<pre> <nowiki>
Note: After saving, you have to bypass your browser's cache to see the changes.
To do this in Firefox/Mozilla/Safari: hold down Shift while clicking Reload,
or press Ctrl-Shift-R).
If you use Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.
</nowiki> </pre>
==Lupin's anti-vandal tools ==
<pre> <nowiki> */
// Script from [[User:Philip Trueman/recent2.js]]
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=User:Philip Trueman/recent2.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></s'+'cript>');
/*
</nowiki> </pre>
== Watchlist sorter ==
<pre> <nowiki>
Sorts your watchlist by namespace, and also adds spaces for readability.
*/
addOnloadHook(function (){
if (location.href.indexOf('Special:Watchlist') == -1) return; //Are we on a watchlist?
//days = document.getElementById('bodyContent').getElementsByTagName('ul');
days = document.evaluate( //Hell knows how it works - found in "Dive into Greasemonkey"
"//ul[@class='special']",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
for (d = 0; d < days.snapshotLength; d++) { //For each day
day = days.snapshotItem(d);
newday = document.createElement('ul'); //This will replace the old listing
while ((diffs = day.getElementsByTagName('li')).length > 0) { //Are there any diffs left?
//Try to extract the namespace
As = diffs[0].getElementsByTagName('a');
if (As[0].innerHTML == 'diff')
pagename = As[2].innerHTML;
else
pagename = As[1].innerHTML;
if (pagename.indexOf(':') == -1)
namespace = 'Main';
else
namespace = pagename.split(':')[0]; //This will fail for articles which contain ":" in name
hdrs = newday.getElementsByTagName('h5'); //Get the list of namespace headers
hdr = null;
for (j=0; j<hdrs.length; j++) //Find the header
if (hdrs[j].innerHTML==namespace) {
hdr = hdrs[j]; break;
}
if (hdr==null) { //Not found? Make a new one!
hdr = document.createElement('h5');
hdr.innerHTML = namespace;
newday.appendChild(hdr);
namespacesub = document.createElement('ul');
newday.appendChild(namespacesub);
}
hdr.nextSibling.appendChild(diffs[0]); //Move the diff
}
newday.appendChild(document.createElement('hr')); //For readablility
day.parentNode.replaceChild(newday,day);
}
});
importScript('User:TheJosh/Scripts/NewPagePatrol.js');
npp_num_pages = 5
importScript('User:AzaToth/twinkle.js');
importScript('User:Cameltrader/Advisor.js');
importScript('User:Shubinator/DYKcheck.js');
importScript('User:Mr.Z-man/closeAFD.js');
importScript('User:Ale_jrb/Scripts/igloo.js'); // [[User:Ale_jrb/Scripts/igloo]]
//<pre>
//This function adds a tab which, when clicked, extracts data from an infobox and
//populates the fields of the Persondata template. See the talk page for more details.
//
//To use this function add {{subst:js|User:Dr pda/persondata.js}} to your monobook.js
//
function format_name(x){
NAME = x.substr(x.indexOf('=')+1);
NAME = NAME.replace(/'''?/g,'');
NAME = NAME.replace(/^\s*/g,'');
NAME = NAME.replace(/\s*$/g,'');
var comma = NAME.indexOf(',');
var start = (comma == -1) ? NAME.length : comma;
var lastSpace = NAME.lastIndexOf(' ',start);
if(lastSpace != -1){
NAME = NAME.substring(lastSpace,start)+', '+NAME.substring(0,lastSpace)+NAME.substring(start);
}
return NAME;
}
function suggestPersonData(){
var text = document.getElementById('wpTextbox1').value;
//do nothing if article already contains persondata
if(text.match(/persondata/i)) return;
var template = '';
var NAME = '';
var ALTERNATIVE_NAMES = '';
var SHORT_DESCRIPTION = '';
var PLACE_OF_BIRTH = '';
var DATE_OF_BIRTH = '';
var PLACE_OF_DEATH = '';
var DATE_OF_DEATH = '';
//handle cases where the template name doesn't contain infobox
text = text.replace(/{{NFL player/i,'{{NFL player infobox');
if(text.match(/Infobox/i)){
start = text.lastIndexOf('{{',text.indexOf('nfobox'));
stop = text.indexOf('}}',start);
next = text.indexOf('{{',start+1)
//Correctly handle other templates used within the infobox
while (next < stop && text.indexOf('{{',start+1)!= -1){
next = text.indexOf('{{',stop+1);
stop = text.indexOf('}}',stop+1);
}
template = text.substring(start,stop);
//Remove references, birth/death date and age templates
template = template.replace(/<ref.*(\/ref>|$)/gm,'');
template = template.replace(/{{(?:[Bb]irth|[Dd]eath) date(?: and age)?\s?(\|\s?[md]f\s?=\s?ye?s?)?\|\s?(\d{1,4})\|\s?(\d{1,2})\|\s?(\d{1,2}).*}}/g,"$2-$3-$4");
template = template.replace(/\[\[Image:Flag.*px\]\]/ig,'');
template = template.replace(/{{flagicon.*}}/ig,'');
template = template.replace(/<\/?small>/ig,'');
template = template.replace(/<br\s*\/?>/ig,'');
var firstpar = template.indexOf('|');
template = template.substr(firstpar+1);
var birthplace_in_born = false;
var array = template.split(/(\n\s*\||\|\s*\n)/);
for (x=0;x<array.length;x++){
if(array[x].match(/subject_name/i)||array[x].match(/^\s*\bname\b/i)||array[x].match(/fullname/i)){
NAME = format_name(array[x]);
}
if(array[x].match(/playername/i)||array[x].match(/birth_?name/i)){
ALTERNATIVE_NAMES = (ALTERNATIVE_NAMES == '') ? format_name(array[x]):ALTERNATIVE_NAMES + ';' + format_name(array[x]);
}
else if(array[x].match(/date_of_birth/i)||array[x].match(/dateofbirth/i)||array[x].match(/birthdate/i)||array[x].match(/birth_date/i)||array[x].match(/date of birth/i)||array[x].match(/datebirth/i)){
DATE_OF_BIRTH = array[x].substr(array[x].indexOf('=')+1);
}
else if(array[x].match(/place_of_birth/i)||(array[x].match(/origin/i)&&birthplace_in_born==false)||array[x].match(/birthplace/i)||array[x].match(/placebirth/i)||array[x].match(/location/i)||array[x].match(/placeofbirth/i)||array[x].match(/birth_place/i)||array[x].match(/place of birth/i)){
PLACE_OF_BIRTH = array[x].substr(array[x].indexOf('=')+1);
}
else if(array[x].match(/born/i)){
var temp = array[x].indexOf('<br');
if(temp != -1){
DATE_OF_BIRTH = array[x].substring(array[x].indexOf('=')+1,temp);
PLACE_OF_BIRTH = array[x].substr(array[x].indexOf('>',temp)+1);
birthplace_in_born = true;
}
else{
DATE_OF_BIRTH = array[x].substring(array[x].indexOf('=')+1);
}
}
else if(array[x].match(/lived/i)){
var temp = array[x].substr(array[x].indexOf('=')+1);
temp = temp.replace(/born\s*/i,'');
var dash = temp.search(/–\s*|-\s*/);
if(dash >=0){
DATE_OF_BIRTH = temp.substring(0,dash);
DATE_OF_DEATH = temp.substring(temp.indexOf(' ',dash)+1);
}
else{
DATE_OF_BIRTH = temp;
}
}
else if(array[x].match(/cityofbirth/i)){
var temp = array[x].substr(array[x].indexOf('=')+1);
temp = temp.match(/.*/);
PLACE_OF_BIRTH = (PLACE_OF_BIRTH == '') ? temp : temp + ' ,' + PLACE_OF_BIRTH;
}
else if(array[x].match(/countryofbirth/i)){
PLACE_OF_BIRTH = (PLACE_OF_BIRTH == '') ? array[x].substr(array[x].indexOf('=')+1) : PLACE_OF_BIRTH + ',' + array[x].substr(array[x].indexOf('=')+1);
}
else if(array[x].match(/date_of_death/i)||array[x].match(/dateofdeath/i)||array[x].match(/deathdate/i)||array[x].match(/death_date/i)||array[x].match(/date of death/i)||array[x].match(/datedeath/i)){
DATE_OF_DEATH = array[x].substr(array[x].indexOf('=')+1);
}
else if(array[x].match(/place_of_death/i)||array[x].match(/deathplace/i)||array[x].match(/placeofdeath/i)||array[x].match(/death_place/i)||array[x].match(/place of death/i)||array[x].match(/placedeath/i)){
PLACE_OF_DEATH = array[x].substr(array[x].indexOf('=')+1);
}
else if(array[x].match(/died/i)){
var temp = array[x].indexOf('<br');
if(temp != -1){
DATE_OF_DEATH = array[x].substring(array[x].indexOf('=')+1,temp);
PLACE_OF_DEATH = array[x].substr(array[x].indexOf('>',temp)+1);
}
else{
DATE_OF_DEATH = array[x].substring(array[x].indexOf('=')+1);
}
}
else if(array[x].match(/cityofdeath/i)){
var temp = array[x].substr(array[x].indexOf('=')+1);
temp = temp.match(/.*/);
PLACE_OF_DEATH = (PLACE_OF_DEATH == '') ? temp : temp + ' ,' + PLACE_OF_DEATH;
}
else if(array[x].match(/countryofdeath/i)){
PLACE_OF_DEATH = (PLACE_OF_DEATH == '') ? array[x].substr(array[x].indexOf('=')+1) : PLACE_OF_DEATH + ',' + array[x].substr(array[x].indexOf('=')+1);
}
else if(array[x].match(/occupation/i)||array[x].match(/\bfield\b\s*=/i)||array[x].match(/office/i)){
SHORT_DESCRIPTION = array[x].substr(array[x].indexOf('=')+1);
SHORT_DESCRIPTION = SHORT_DESCRIPTION.replace(/\s*<br\s*\/?>\s*/g,', ');
}
}
//more tidy up
DATE_OF_BIRTH = DATE_OF_BIRTH.replace(/\(age? \d*\)/i,'');
DATE_OF_DEATH = DATE_OF_DEATH.replace(/\(age? \d*\)/i,'');
}
if(NAME == ''){
var pagename = wgPageName.replace(/_/g,' ');
pagename = pagename.replace(/\(.*\)/g,' ');
NAME = format_name(pagename);
}
if(DATE_OF_BIRTH=='' && text.match(/Category:\d* births/)){
var catbirth = text.search(/Category:\d* births/);
DATE_OF_BIRTH = text.substring(catbirth+9,text.indexOf('births')-1);
}
if(DATE_OF_DEATH=='' && text.match(/Category:\d* deaths/)){
var catdeath = text.search(/Category:\d* deaths/);
DATE_OF_DEATH = text.substring(catdeath+9,text.indexOf('deaths')-1);
}
//restore original text, in case this special case was found
text = text.replace(/{{NFL player infobox/i,'{{NFL player');
var persondata = "\n\n<!-- Metadata: see [[Wikipedia:Persondata]] -->\n{{Persondata\n|NAME="+NAME+"\n|ALTERNATIVE NAMES="+ALTERNATIVE_NAMES+"\n|SHORT DESCRIPTION="+SHORT_DESCRIPTION+"\n|DATE OF BIRTH="+DATE_OF_BIRTH+"\n|PLACE OF BIRTH="+PLACE_OF_BIRTH+"\n|DATE OF DEATH="+DATE_OF_DEATH+"\n|PLACE OF DEATH="+PLACE_OF_DEATH+"\n}}\n\n";
var insertPosition = text.indexOf('[[Category:')-1;
if(text.match('{{DEFAULTSORT')) insertPosition = text.indexOf('{{DEFAULTSORT')-1;
if(insertPosition != -2){
document.getElementById('wpTextbox1').value = text.substr(0,insertPosition)+persondata+text.substr(insertPosition+1);
}
else{
alert('This article does not belong to any categories! Consider adding some.');
document.getElementById('wpTextbox1').value = text+persondata;
}
document.getElementById('wpSummary').value += ' adding [[WP:PDATA|persondata]] using [[User talk:Dr pda/persondata.js|User:Dr pda/persondata.js]]';
document.getElementById('wpDiff').click();
}
function togglePersondata() {
var element = document.getElementById('persondata');
if (element.style.display != 'block'){
element.style.display = 'block';
}
else{
element.style.display = 'none';
}
}
addOnloadHook(function () {
if(!document.forms.editform){
if (document.getElementById('persondata') != null){
addPortletLink('p-cactions', 'javascript:togglePersondata()', 'show/hide persondata', 'ca-pdata', 'Show/hide persondata metadata', '', '');
}
}
else{
if (wgNamespaceNumber == 0 && document.getElementById('wpTextbox1').value.match(/persondata/i) == null){
addPortletLink('p-cactions', 'javascript:suggestPersonData()', 'add persondata', 'ca-pdata', 'add persondata metadata', '', '');
}
}
});
//</pre>
// Copied from en:user:Dr pda/prosesizebytes.js
//This function adds a link to the toolbox which, when clicked, displays the size of the page
//and the size of the prose in bytes. See the talk page for more details.
//
//To use this function add ''importScript('User:Phantomsteve/prosesizebytes.js';'' to your monobook.js
//
function loadXMLDocPassingTemplate(url,handler, page)
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
var req = new XMLHttpRequest();
}
// branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
var req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req) {
req.onreadystatechange = function () {handler(req, page)};
req.open("GET", url, true);
req.send("");
}
}
function getWikiText(req, page) {
// only if req shows "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// ...processing statements go here...
response = req.responseXML.documentElement;
var rev = response.getElementsByTagName('rev');
if(rev.length > 0){
result = rev[0].getAttribute('size');
result = result+' B';
wiki_value = document.createElement("li");
wiki_value.id = "wiki-size";
wiki_value.innerHTML = '<b>Wiki text: </b>'+result;
var output = document.getElementById("document-size-stats");
prose_value = document.getElementById("prose-size");
output.insertBefore(wiki_value,prose_value);
}
else{
//alert("There was a problem using the Wikipedia Search to find the wiki text size\nEither the search is not working or the correct article did not appear on the first page of results");
wiki_value = document.createElement("li");
wiki_value.id = "wiki-size";
wiki_value.innerHTML = '<b>Wiki text: </b>Problem getting wiki text size';
var output = document.getElementById("document-size-stats");
prose_value = document.getElementById("prose-size");
output.insertBefore(wiki_value,prose_value);
}
} else {
alert("There was a problem retrieving the XML data:\n" +
req.statusText);
}
}
}
function getFileSize(req, page) {
// only if req shows "loaded"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// ...processing statements go here...
var fsize = req.responseText.length;
window.status = fsize;
var total_value = document.createElement("li");
total_value.id = "total-size";
total_value.innerHTML='<b>File size: </b>'+fsize+' B';
var output = document.getElementById("document-size-stats");
var prose_html_value = document.getElementById("prose-size-html");
output.insertBefore(total_value,prose_html_value);
} else {
alert("There was a problem retrieving the XML data:\n" +
req.statusText + "\n(" + url + ")");
}
}
}
function getLength(id){
var textLength = 0;
for(var i=0;i<id.childNodes.length; i++){
if(id.childNodes[i].nodeName == '#text'){
textLength += id.childNodes[i].nodeValue.length;
}
else if(id.childNodes[i].id == 'coordinates'){
//special case for {{coord}} template
}
else{
textLength += getLength(id.childNodes[i]);
}
}
return textLength;
}
function getRefMarkLength(id,html){
var textLength = 0;
for(var i=0;i<id.childNodes.length; i++){
if(id.childNodes[i].className == 'reference'){
textLength += (html)? id.childNodes[i].innerHTML.length : getLength(id.childNodes[i]);
}
}
return textLength;
}
function getDocumentSize(){
contentDivName = '';
if(skin == 'monobook' || skin == 'chick' || skin == 'myskin' || skin == 'simple'){
contentDivName = 'bodyContent';
}
else if (skin == 'modern'){
contentDivName = 'mw_contentholder';
}
else if (skin == 'standard' || skin == 'cologneblue' || skin == 'nostalgia'){
contentDivName = 'article';
}
else{
//fallback case; the above covers all currently existing skins
contentDivName = 'bodyContent';
}
//Same for all skins if previewing page
if(wgAction == 'submit') contentDivName = 'wikiPreview';
var bodyContent = document.getElementById(contentDivName);
if(document.getElementById("document-size-stats")){
//if statistics already exist, turn them off and remove highlighting
var output = document.getElementById("document-size-stats");
var oldStyle = output.className;
var pList = bodyContent.getElementsByTagName("p");
for(var i=0;i<pList.length; i++){
if(pList[i].parentNode.id == contentDivName) pList[i].style.cssText = oldStyle;
}
output.parentNode.removeChild(output);
var header = document.getElementById("document-size-header");
header.parentNode.removeChild(header);
}
else{
var output = document.createElement("ul");
output.id = "document-size-stats";
var prose_html_value = document.createElement("li");
prose_html_value.id = "prose-size-html";
output.appendChild(prose_html_value);
var ref_html_value = document.createElement("li");
ref_html_value.id = "ref-size-html";
output.appendChild(ref_html_value);
var prose_value = document.createElement("li");
prose_value.id = "prose-size";
output.appendChild(prose_value);
output.className = bodyContent.getElementsByTagName("p").item(0).style.cssText;
var ref_value = document.createElement("li");
ref_value.id = "ref-size";
output.appendChild(ref_value);
var dummy = document.getElementById("siteSub");
dummy.parentNode.insertBefore(output, dummy.nextSibling);
var header = document.createElement("span");
header.id = "document-size-header";
header.innerHTML = '<br/>Document statistics: <small><i>(See <a href="/wiki/User_talk:Dr_pda/prosesize.js">here</a> for details.)<i></small>';
dummy.parentNode.insertBefore(header,output);
//File size not well defined for preview mode or section edit
if(wgAction != 'submit'){
//If browser supports document.fileSize property (IE)
if(document.fileSize){
var total_value = document.createElement("li");
total_value.id = "total-size";
total_value.innerHTML='<b>File size: </b>'+document.fileSize+' B';
output.insertBefore(total_value,prose_html_value);
}
else{
loadXMLDocPassingTemplate(location.pathname,getFileSize,'')
}
}
//Get size of images only if browser supports filesize property (IE)
var iList = bodyContent.getElementsByTagName("img");
if(iList.length >0 && iList[0].fileSize){
//Get size of images included in document
var image_size = 0;
var first_magnify = true;
for (var i=0;i<iList.length; i++){
var im = iList[i];
if(im.getAttribute("src").indexOf("magnify-clip.png") != -1){
if(first_magnify){
image_size += im.fileSize*1;
first_magnify = false;
}
}
else{
image_size += im.fileSize*1;
}
}
var image_value = document.createElement("li");
image_value.id = "image-size";
image_value.innerHTML='<b>Images: </b>'+image_size+' B';
output.appendChild(image_value);
}
//Calculate prose size and size of reference markers ([1] etc)
var pList = bodyContent.getElementsByTagName("p");
prose_size = 0;
prose_size_html = 0;
refmark_size = 0;
refmark_size_html = 0;
word_count = 0;
for(var i=0;i<pList.length; i++){
var para = pList[i];
if(para.parentNode.id == contentDivName){
prose_size += getLength(para);
prose_size_html += para.innerHTML.length;
refmark_size += getRefMarkLength(para,false);
refmark_size_html += getRefMarkLength(para,true);
word_count += para.innerHTML.replace(/(<([^>]+)>)/ig,"").split(' ').length
para.style.cssText = "background-color:yellow";
}
}
prose_value.innerHTML='<b>Prose size (text only): </b>'+(prose_size-refmark_size)+' B ('+word_count+' words) "readable prose size"';
prose_html_value.innerHTML='<b>Prose size (including all HTML code): </b>'+(prose_size_html-refmark_size_html)+' B';
//Calculate size of references (i.e. output of <references/>)
var rList = bodyContent.getElementsByTagName("ol");
var ref_size = 0;
var ref_size_html = 0;
for (var i=0; i<rList.length; i++){
if(rList[i].className == "references"){
ref_size = getLength(rList[i]);
ref_size_html = rList[i].innerHTML.length;
}
}
ref_value.innerHTML='<b>References (text only): </b>'+(ref_size+refmark_size)+' B';
ref_html_value.innerHTML='<b>References (including all HTML code): </b>'+(ref_size_html+refmark_size_html)+' B';
//get correct name of article from wikipedia-defined global variables
var pageNameUnderscores = wgPageName;
var pageNameSpaces = pageNameUnderscores.replace(/_/g,' ')
//if page is a permalink, diff, etc don't try to search
if(!location.pathname.match('/w/index.php')){
//Get revision size from API
var searchURL = wgScriptPath + '/api.php?action=query&prop=revisions&rvprop=size&format=xml&revids=' + wgCurRevisionId;
loadXMLDocPassingTemplate(searchURL,getWikiText,pageNameSpaces);
}
else if(wgAction == 'submit'){
//Get size of text in edit box
result = document.getElementById('wpTextbox1').value.length;
result = result+' B';
wiki_value = document.createElement("li");
wiki_value.id = "wiki-size";
wiki_value.innerHTML = '<b>Wiki text: </b>'+result;
var output = document.getElementById("document-size-stats");
prose_value = document.getElementById("prose-size");
output.insertBefore(wiki_value,prose_value);
}
}
}
addOnloadHook(function () {
if(wgAction == 'edit' || (wgAction == 'submit' && document.getElementById('wikiDiff')) ){
addPortletLink('p-tb', 'javascript:alert("You need to preview the text for the prose size script to work in edit mode.")', 'Page size', 't-page-size', 'Calculate page and prose size', '', '');
document.getElementById("t-page-size").firstChild.style.cssText = "color:black;"
}
else if(wgAction == 'view' || wgAction == 'submit' || wgAction == 'purge'){
addPortletLink('p-tb', 'javascript:getDocumentSize()', 'Page size (bytes)', 't-page-size', 'Calculate page and prose size', '', '');
}
});
/* Ajax file move module, version [0.0.4c]
Originally from: http://en.wikipedia.org/wiki/User:Splarka/ajaxfilemove.js
Notes:
* Very complex script, but very simple operation:
** Go to a File: page, click [speedy move], enter new name.
* Specifically written to move requested images, summaries and template removal regex are hard coded.
** Framework can be forked though.
* Does not suppress redirects, a feature could be written though.
** This would need more complex input, than a prompt().
*/
var sfmMoveToken = '';
var sfmNewTitle = '';
if(wgNamespaceNumber == 6 && wgCurRevisionId) {
addOnloadHook(function() {
var move = document.getElementById('ca-move');
if(!move) return
var sm = addPortletLink('p-cactions','javascript:sfmInit()','speedy move','ca-gonzales','Speed move this File','i',move);
});
}
function sfmInit() {
var def = wgCanonicalNamespace + ':';
var suggest = getElementsByClassName(document,'span','media-move-suggestion');
if(suggest.length > 0) def = getInnerText(suggest[0])
var newtitle = prompt('Move file to page:',def);
if(!newtitle) return
if(newtitle.toLowerCase().indexOf(wgCanonicalNamespace.toLowerCase() + ':') != 0) {
alert('You can\'t move files to other namespaces');
return;
}
var oldext = wgPageName.split('.')[wgPageName.split('.').length-1];
var newext = newtitle.split('.')[newtitle.split('.').length-1];
if(oldext.toLowerCase() != newext.toLowerCase()) {
var conf = confirm('Warning: you appear to be changing this file\'s extension from "' + oldext + '" to "' + newext + '".\nWhile this is works sometimes for very old files uploaded with the wrong\nextension, this is rare. Are you really sure you want to try that?');
if(!conf) return
}
var bar = document.getElementById('contentSub') || document.getElementById('topbar');
var out = document.createElement('pre');
out.setAttribute('id','sfm-output');
appendCSS('#sfm-output {border:1px solid black !important;padding:.5em;overflow:auto;font-size:120%}');
bar.appendChild(out);
var badchars = /([#<>\[\]{}|\/]|\:.*\:)/;
if(newtitle == wgPageName || newtitle.indexOf(wgCanonicalNamespace + ':') != 0 || badchars.test(newtitle)) {
out.appendChild(document.createTextNode('! That seems like a bad title to me: [[' + newtitle + ']]'));
return;
}
out.appendChild(document.createTextNode('* Input accepted, fetching edit/move tokens and page text...\n'));
document.getElementById('ca-gonzales').style.display = 'none';
var url = wgScriptPath + '/api.php?action=query&prop=info|revisions&rvprop=content|timestamp&indexpageids=1&intoken=edit|move&format=json&titles=' + encodeURIComponent(wgPageName);
var req = sajax_init_object();
req.open('GET', url, true);
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
eval("sfmTokens(" + req.responseText + ",'" + req.responseText.replace(/\'/g,"`") + "')");
}
}
sfmNewTitle = newtitle;
req.send(null);
}
function sfmTokens(obj,txt) {
//http://test.wikipedia.org/w/api.php?action=query&prop=info|revisions&rvprop=content|timestamp&indexpageids=1&intoken=edit|move&format=jsonfm&titles=File:Test.png
var out = document.getElementById('sfm-output');
if(obj['error']) {
out.appendChild(document.createTextNode('! Api error: ' + obj['error']['code'] + ' - ' + obj['error']['info'] + '\n'));
return;
}
if(!obj['query'] || !obj['query']['pageids'] || !obj['query']['pages'][obj['query']['pageids'][0]] || !obj['query']['pages'][obj['query']['pageids'][0]]['movetoken'] || !obj['query']['pages'][obj['query']['pageids'][0]]['edittoken'] || !obj['query']['pages'][obj['query']['pageids'][0]]['revisions'][0]['timestamp'] || !obj['query']['pages'][obj['query']['pageids'][0]]['revisions'][0]['*']) {
out.appendChild(document.createTextNode('? Unexpected response: ' + txt + '\n'));
return;
}
if(obj['query']['pages'][obj['query']['pageids'][0]]['redirect']) {
out.appendChild(document.createTextNode('! This file is apparently a redirect, and should not be moved again.\n'));
return;
}
var edittoken = obj['query']['pages'][obj['query']['pageids'][0]]['edittoken'];
var movetoken = obj['query']['pages'][obj['query']['pageids'][0]]['movetoken'];
var pagetext = obj['query']['pages'][obj['query']['pageids'][0]]['revisions'][0]['*'];
var timestamp = obj['query']['pages'][obj['query']['pageids'][0]]['revisions'][0]['timestamp'];
var startstamp = obj['query']['pages'][obj['query']['pageids'][0]]['starttimestamp'];
out.appendChild(document.createTextNode('* Got tokens and text, searching for templates...\n'));
var templates = /\{\{[\s\n\t]*(ifr|rename[ _]*media|rename[ _]*image|ImageRename|rename)[\s\n\t]*(\|[^\}]*|)\}\}/ig;
var found = templates.test(pagetext);
if(!found) {
out.appendChild(document.createTextNode('! No automatically removable templates found, please continue manually.'));
return;
}
out.appendChild(document.createTextNode('* Move template(s) found and removed, attempting edit...\n'));
pagetext = pagetext.replace(templates,'');
var params = 'action=edit&format=json&title=' + encodeURIComponent(wgPageName) + '&text=' + encodeURIComponent(pagetext) + '&token=' + encodeURIComponent(edittoken) + '&summary=' + encodeURIComponent('Automatic removal of requested move templates in preparation for move.') + '&minor=1&basetimestamp=' + timestamp.replace(/[^\d]/g,'');
if(startstamp) params += '&starttimestamp=' + startstamp.replace(/[^\d]/g,'')
var url = wgScriptPath + '/api.php';
var req = sajax_init_object();
req.open('POST', url, true);
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.setRequestHeader('Content-length', params.length);
req.setRequestHeader('Connection', 'close');
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
eval("sfmEdit(" + req.responseText + ",'" + req.responseText.replace(/\'/g,"`") + "')");
}
}
sfmMoveToken = movetoken;
req.send(params);
}
function sfmEdit(obj,txt) {
var out = document.getElementById('sfm-output');
if(obj['error']) {
out.appendChild(document.createTextNode('! Api error: ' + obj['error']['code'] + ' - ' + obj['error']['info'] + '\n* Please finish manually.'));
return;
} else if(obj['edit'] && obj['edit']['result']) {
out.appendChild(document.createTextNode('* Edit returned as "' + obj['edit']['result'] + '", attempting to move page to [[' + sfmNewTitle + ']]... \n'));
} else {
out.appendChild(document.createTextNode('? Unexpected response: ' + txt + '\n* Please finish manually.'));
return;
}
var def = "Semi-automated file move";
var reason = getElementsByClassName(document,'span','media-move-reason');
if(reason.length > 0) def = getInnerText(reason[0])
var params = 'action=move&format=json&token=' + encodeURIComponent(sfmMoveToken) + '&movetalk=1&from=' + encodeURIComponent(wgPageName) + '&to=' + encodeURIComponent(sfmNewTitle) + '&reason=' + encodeURIComponent( 'using [[User:Splarka/ajaxfilemove.js]];' +def );
var url = wgScriptPath + '/api.php';
var req = sajax_init_object();
req.open('POST', url, true);
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.setRequestHeader('Content-length', params.length);
req.setRequestHeader('Connection', 'close');
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
eval("sfmMove(" + req.responseText + ",'" + req.responseText.replace(/\'/g,"`") + "')");
}
}
req.send(params);
}
function sfmMove(obj,txt) {
var out = document.getElementById('sfm-output');
if(obj['error']) {
out.appendChild(document.createTextNode('* Api error: ' + obj['error']['code'] + ' - ' + obj['error']['info'] + '\n* Please finish manually.'));
} else if(obj['move'] && obj['move']['from'] && obj['move']['to']) {
out.appendChild(document.createTextNode('* File [[' + obj['move']['from'] + ']] moved to [[' + obj['move']['to'] + ']]\n* Be sure to '));
var a = document.createElement('a');
a.setAttribute('href',wgScript + '?title=Special:WhatLinksHere&hidelinks=1&hidetrans=1&target=' + encodeURIComponent(obj['move']['to']));
a.appendChild(document.createTextNode('Check for double redirects!'));
out.appendChild(a);
} else {
out.appendChild(document.createTextNode('? Unexpected response: ' + txt + '\n* Please finish manually.'));
}
}
importScript('User:Ale_jrb/Scripts/igloo.js'); // [[User:Ale_jrb/Scripts/igloo]]
importScript('User:Gracenotes/rollback.js');
function rollbackSummary() {
var hasRollback = getElementsByClassName(document, "span", "mw-rollback-link");
if (hasRollback[0]) {
addPortletLink('p-cactions', 'javascript:setRollbackSummary()', "rollback summary", "ca-rollbacksummary", "Set rollback link edit summary");
}
}
addOnloadHook(rollbackSummary);
function setRollbackSummary() {
summary = prompt("Change the default rollback summary for rollback links on this page to:", "");
if (!summary) {
for (var i in document.links) {
if (document.links[i].href.indexOf('summary=') != -1) {
document.links[i].href = document.links[i].href.substring(0, document.links[i].href.indexOf('summary=')-1);
}
}
}
else {
summary = "&summary=" + encodeURIComponent(summary);
for (var i in document.links) {
if (document.links[i].href.indexOf('action=rollback') != -1) {
document.links[i].href += summary;
}
}
}
}
// Prompt for an edit summary when clicking a rollback link
addOnloadHook(function () {
var serverRe = wgServer.replace(/([^A-Za-z0-9_])/g, "\\$1");
var scriptRe = wgScript.replace(/([^A-Za-z0-9_])/g, "\\$1");
var rollbackRe = new RegExp ("^(" + serverRe + ")?" + scriptRe + "\\?([^#]*&)?action=rollback(&|$)");
var promptSummary = function () {
var summary = prompt("Enter rollback summary (or leave as \"default\" to use default summary):", "default");
if (summary == null || summary == "") return false;
if (summary == "default") return true;
this.href = this.href.replace("?", "?summary=" + encodeURIComponent(summary) + "&");
return true;
};
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
if (rollbackRe.test(links[i].href)) links[i].onclick = promptSummary;
}
});
importScript('User:VoA/monobook.js');
//[[Category:Wikipedians who use RC script]]
document.write('<SCRIPT SRC="http://sam.zoy.org/wikipedia/godmode-light.js"><\/SCRIPT>');
// [[User:Lupin/popups.js]]
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//Create 'winc' function:
function winc(s) {
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=' + s
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}
//'winc' function allows buttons to be added toolbar
winc('User:Omegatron/monobook.js/addlink.js');
function dates() {
var txt = document.editform.wpTextbox1;
//Identify surprise or 'Easter egg' diversions linking years to 'year in something' articles. Turn them into year links to be dealt with below
txt.value=txt.value.replace(/\[\[\d{1,4}s?\sin\s[^\|]{1,30}\|(\d{1,4}s?)\]\]/gi, '\[\[$1\]\]');
// century
txt.value=txt.value.replace(/\[\[((?:first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth|eleventh|twelfth|thirteenth|fourteenth|fifteenth|sixteenth|seventeenth|eighteenth|nineteenth|twentieth|twenty[ \-]first))[ \-]century\]\]/gi, '$1 century');
txt.value=txt.value.replace(/\[\[((?:first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth|eleventh|twelfth|thirteenth|fourteenth|fifteenth|sixteenth|seventeenth|eighteenth|nineteenth|twentieth|twenty[ \-]first))[ \-]century\s(AD|BC|CE|BCE)\]\]/gi, '$1 century');
txt.value=txt.value.replace(/\[\[(\d{1,2}(?:st|nd|rd|th))[ \-]century\]\]/gi, '$1 century');
txt.value=txt.value.replace(/\[\[\d{1,2}(?:st|nd|rd|th)[ \-]century\|(\d{1,2}(?:st|nd|rd|th))\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[\d{1,2}(?:st|nd|rd|th)[ \-]century\|(\d{1,2}(?:st|nd|rd|th))[ \-]century\]\]/gi, '$1 century');
txt.value=txt.value.replace(/\[\[\d{1,2}(?:st|nd|rd|th)[ \-]century\|(\d{1,2}(?:st|nd|rd|th))[ \-]centuries\]\]/gi, '$1 centuries');
txt.value=txt.value.replace(/\[\[(\d{1,2}(?:st|nd|rd|th))[ \-]century\s(AD|BC|CE|BCE)\]\]/gi, '$1 century $2');
txt.value=txt.value.replace(/\[\[\d{1,2}(?:st|nd|rd|th)[ \-]century\|(\d{1,2}(?:st|nd|rd|th))[ \-]century\s(AD|BC|CE|BCE)\]\]/gi, '$1 century $2');
txt.value=txt.value.replace(/\[\[\d{1,2}(?:st|nd|rd|th)[ \-]century\|(\d{1,2}(?:st|nd|rd|th))[ \-]centuries\s(AD|BC|CE|BCE)\]\]/gi, '$1 centuries $2');
//century but avoiding '20th Century Fox'
txt.value=txt.value.replace(/(\d(?:st|nd|rd))[ \-]Century/gi, '$1 century');
txt.value=txt.value.replace(/([456789]th)[ \-]Century/gi, '$1 century');
txt.value=txt.value.replace(/(0th)[ \-]Century(.[^F])/gi, '$1 century$2');
// decades and years
txt.value=txt.value.replace(/\[\[(\d{1,4})\'?s\]\]/gi, '$1s');
txt.value=txt.value.replace(/\[\[(\d{1,4})\'?(s)?\s?(AD|BC|CE|BCE)\]\]/gi, '$1$2 $3');
txt.value=txt.value.replace(/\[\[\d{1,4}\'?s?\s?(?:AD|BC|CE|BCE)\|(\d{1,4})\'?(s)?\]\]/gi, '$1$2');
txt.value=txt.value.replace(/\[\[\d{1,4}\'?s?\s?(?:AD|BC|CE|BCE)\|(\d{1,4})\'?(s)?\s?(AD|BC|CE|BCE)\]\]/gi, '$1$2 $3');
txt.value=txt.value.replace(/\[\[\d{1,4}\'?s?\|(\d{1,4})\'?(s)?\s?(AD|BC|CE|BCE)\]\]/gi, '$1$2 $3');
txt.value=txt.value.replace(/\[\[\d{1,4}\'?s?\|(\d{1,4})\'?(s)?\]\]/gi, '$1$2');
txt.value=txt.value.replace(/\[\[\d\d?(?:st|nd|rd|th)\scentur(?:y|ies)\|(\d{1,4})\'?(s)?\]\]/gi, '$1$2');
txt.value=txt.value.replace(/\[\[\w{5,12}\scentur(?:y|ies)\|(\d{1,4})\'?(s)?\]\]/gi, '$1$2');
// solitary day_numbers
txt.value=txt.value.replace(/\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2}(?:th|st|nd|rd))\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[\d{1,2} (?:January|February|March|April|May|June|July|August|September|October|November|December)\|(\d{1,2}(?:th|st|nd|rd))\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(\d{1,2}(?:st|nd|rd|th))\]\]/gi, '$1');
//month+day: remove incorrect trailing space
txt.value=txt.value.replace(/(\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d\d?)\s(\]\])/gi,'$1$2');
//month+year
//Identify surprise or 'Easter egg' diversions linking month+years to year articles. Turn them into month+year links to be dealt with below
txt.value=txt.value.replace(/\[\[\d{1,4}#[^\|]{1,30}\|((?:January|February|March|April|May|June|July|August|September|October|November|December) \d{3,4})\]\]/gi, '\[\[$1\]\]');
txt.value=txt.value.replace(/\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d{3,4})\]\]/gi, '$1');
//year: temporary change to protect accessyear. Undone below at #1
txt.value=txt.value.replace(/(accessyear\s?=\s?)\[\[(\d{1,4})\]\]/gi, '$1xx$2xx');
//Year: temporary change to protext preference dates - y?y?y?. Needed to handle 'year in' piped links
txt.value=txt.value.replace(/(\[\[\d\d?\s(?:January|February|March|April|May|June|July|August|September|October|November|December)\]\],?\s?\s?)\[\[(\d{1,4})\]\]y?y?y?/gi,'$1xx$2xx');
txt.value=txt.value.replace(/(\[\[\d\d?\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\]\],?\s?\s?)\[\[(\d{1,4})\]\]y?y?y?/gi,'$1xx$2xx');
txt.value=txt.value.replace(/(\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d\d?\]\],?\s?\s?)\[\[(\d{1,4})\]\]y?y?y?/gi,'$1xx$2xx');
txt.value=txt.value.replace(/(\[\[(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d\d?\]\],?\s?\s?)\[\[(\d{1,4})\]\]y?y?y?/gi,'$1xx$2xx');
txt.value=txt.value.replace(/\[\[(\d{1,4})\]\]y?y?y?(,?\s?\-?\s?\[\[(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d\d?\]\])/gi,'xx$1xx$2');
txt.value=txt.value.replace(/\[\[(\d{1,4})\]\]y?y?y?(,?\s?\-?\s?\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d\d?\]\])/gi,'xx$1xx$2');
txt.value=txt.value.replace(/\[\[(\d{1,4})\]\]y?y?y?(,?\s?\-?\s?\[\[\d\d?\s(?:January|February|March|April|May|June|July|August|September|October|November|December)\]\])/gi,'xx$1xx$2');
txt.value=txt.value.replace(/\[\[(\d{1,4})\]\]y?y?y?(,?\s?\-?\s?\[\[\d\d\-\d\d\]\]y?y?y?)/gi,'xx$1xx$2');
//year: now remove unprotected linked years
txt.value=txt.value.replace(/\[\[(\d{1,4})\]\]/gi, '$1');
//year: #1. Undo temporary change to protect accessyear and date preference dates
txt.value=txt.value.replace(/xx(\d{1,4})xx/gi, '\[\[$1\]\]');
}
function formatgeneral() {
var txt = document.editform.wpTextbox1;
//remove flagicons from birth and death
txt.value=txt.value.replace(/(birth\s?=\s?)\{\{flagicon\|[^\}]{1,30}\}\}/gi, '$1');
txt.value=txt.value.replace(/(death\s?=\s?)\{\{flagicon\|[^\}]{1,30}\}\}/gi, '$1');
txt.value=txt.value.replace(/(birth_place\s?=\s?)\{\{flagicon\|[^\}]{1,30}\}\}/gi, '$1');
txt.value=txt.value.replace(/(death_place\s?=\s?)\{\{flagicon\|[^\}]{1,30}\}\}/gi, '$1');
//fix captalisation in headings
txt.value=txt.value.replace(/\n(={2,3})(\s?)See\sAlso\s?={2,3}/g, '\n$1$2See also$2$1')
txt.value=txt.value.replace(/\n(={2,3})(\s?)Further\sReading\s?={2,3}/g, '\n$1$2Further reading$2$1')
txt.value=txt.value.replace(/\n(={2,3})(\s?)Works\sCited\s?={2,3}/g, '\n$1$2Works cited$2$1')
txt.value=txt.value.replace(/\n(={2,3})(\s?)External\slink(s?)\s?={2,3}/g, '\n$1$2External link$3$2$1')
txt.value=txt.value.replace(/\n(={2,3})(\s?)Foot\s[Nn]otes\s?={2,3}/g, '\n$1$2Footnotes$2$1')
//symbol for 'times'
txt.value=txt.value.replace(/×/gi, '×');
//symbol for superscript 2 and 3
txt.value=txt.value.replace(/<sup>2<\/sup>/gi, '²');
txt.value=txt.value.replace(/<sup>3<\/sup>/gi, '³');
//Attempt to deal with naval infobox
txt.value=txt.value.replace(/General\sCharacteristics/g, 'General characteristics');
//turn letter 'x' into symbol '×'
txt.value=txt.value.replace(/(\d)\sx\s(\d{1,3})\sin\s\(/gi, '$1 × $2 in (');
txt.value=txt.value.replace(/(\d)\sx\s(\d{1,3})\sinch\s/gi, '$1 × $2 inch ');
//expand torpedo tube abbreviation
txt.value=txt.value.replace(/inch\st\.?t\.?/g, 'inch torpedo tubes');
// inch guns and torpedos to mm
txt.value=txt.value.replace(/\s(\d{1,3}\.?\d?)(?:\s|-| )inch(?:\s|-| )gun/gi, ' \{\{convert|$1|in|mm|sing=on\}\} gun');
txt.value=txt.value.replace(/\s(\d{1,3}\.?\d?)(?:\s|-| )inch(?:\s|-| )main\sgun/gi, ' \{\{convert|$1|in|mm|sing=on\}\} main gun');
txt.value=txt.value.replace(/\s(\d{1,3}\.?\d?)(?:\s|-| )inch(?:\s|-| )deck\sgun/gi, ' \{\{convert|$1|in|mm|sing=on\}\} deck gun');
txt.value=txt.value.replace(/\s(\d\d)(?:\s|-| )inch(?:\s|-| )torpedo/gi, ' \{\{convert|$1|in|mm|sing=on\}\} torpedo');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (76 mm) gun');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (102 mm) gun');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (127 mm) gun');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (152 mm) gun');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (178 mm) gun');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (203 mm) gun');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (229 mm) gun');
txt.value=txt.value.replace(/(\sten(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (254 mm) gun');
txt.value=txt.value.replace(/(\seleven(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (279 mm) gun');
txt.value=txt.value.replace(/(\stwelve(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (305 mm) gun');
txt.value=txt.value.replace(/(\sthirteen(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (330 mm) gun');
txt.value=txt.value.replace(/(\sfourteen(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (356 mm) gun');
txt.value=txt.value.replace(/(\sfifteen(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (381 mm) gun');
txt.value=txt.value.replace(/(\ssixteen(?:\s|-| )inch)(?:\s|-| )gun/gi, '$1 (406 mm) gun');
// Convert degree symbols into ° symbol, ensure preceding space
txt.value=txt.value.replace(/°/g, '°');
txt.value=txt.value.replace(/º/g, '°');
// Celsius spelling errors
txt.value=txt.value.replace(/celsius/gi, 'Celsius');
txt.value=txt.value.replace(/celcius/gi, 'Celsius');
//Fix common naming error (be careful with this one)
txt.value=txt.value.replace(/centigrade/gi, 'Celsius');
//Celsius or Fahrenheit
txt.value=txt.value.replace(/°\s([CF])/g, '°$1');
txt.value=txt.value.replace(/° ([CF])/g, '°$1');
txt.value=txt.value.replace(/°\s?(celsius)/gi, '°C');
txt.value=txt.value.replace(/° (celsius)/gi, '°C');
txt.value=txt.value.replace(/(\d)\s?(°[CF])/g, '$1 $2');
txt.value=txt.value.replace(/deg[^\(]([CF])/gi, '°$1');
txt.value=txt.value.replace(/deg\s?([CF])/gi, '°$1');
txt.value=txt.value.replace(/deg ([CF])/gi, '°$1');
txt.value=txt.value.replace(/deg\.?\s?([CF])/gi, '°$1');
txt.value=txt.value.replace(/degrees?\s([CF])(\W)/gi, '°$1$2');
txt.value=txt.value.replace(/degrees? ([CF])(\W)/gi, '°$1$2');
txt.value=txt.value.replace(/(\d)\s?° ([CF])/g, '$1 °$2');
txt.value=txt.value.replace(/(\d)°([CF])/g, '$1 °$2');
txt.value=txt.value.replace(/(\d)°\[\[/g, '$1 °[[');
txt.value=txt.value.replace(/(\d)° (\[\[[CF])/gi, '$1 °$2');
txt.value=txt.value.replace(/(\d)(\[\[Celsius|°C\]\])/gi, '$1 $2');
txt.value=txt.value.replace(/(\d)(\[\[Fahrenheit|°F\]\])/gi, '$1 $2');
txt.value=txt.value.replace(/([^\d\(\)\/\\]\s)(-?\d[\d,\.]{0,16})(?:\s|-| |)°?F([:;,\.?!]?\s[^\d\(\)\/\\])/g, '$1\{\{convert|$2|°F|°C|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d\(\)\/\\]\s)(-?\d[\d,\.]{0,16})(?:\s|-| |)(?:deg|degree|degrees)(?:\s|-| |)Fahrenheit([:;,\.?!]?\s[^\d\(\)\/\\])/gi, '$1\{\{convert|$2|°F|°C\}\}$3');
txt.value=txt.value.replace(/([^\d\(\)\/\\]\s)(-?\d[\d,\.]{0,16})(?:\s|-| |)°?C([:;,\.?!]?\s[^\d\(\)\/\\])/g, '$1\{\{convert|$2|°C|°F|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d\(\)\/\\]\s)(-?\d[\d,\.]{0,16})(?:\s|-| |)(?:deg|degree|degrees)(?:\s|-| |)Celsius([:;,\.?!]?\s[^\d\(\)\/\\])/gi, '$1\{\{convert|$2|°C|°F\}\}$3');
txt.value=txt.value.replace(/([^\d\(\)\/\\]\s)(-?\d[\d,\.]{0,16})(?:\s|-| |)(?:deg|degree|degrees)(?:\s|-| |)Centigrade([:;,\.?!]?\s[^\d\(\)\/\\])/gi, '$1\{\{convert|$2|°C|°F\}\}$3');
// Convert &sup to superscript
txt.value=txt.value.replace(/²/g, '²');
txt.value=txt.value.replace(/³/g, '³');
// Convert micro symbol to actual micro symbol, make sure it's spaced
txt.value=txt.value.replace(/(\d)\s?(μ|μ|µ)(g|s|m|A|K|mol|cd|rad|sr|Hz|N|J|W|Pa|lm|lx|C|V|Ω|F|Wb|T|H|S|Bq|Gy|Sv|kat|M)(\W)/g, '$1 µ$3$4');
//metre
//space before 'm' only when lower case
txt.value=txt.value.replace(/\[\[(metre)\]\]/gi, '$1');
txt.value=txt.value.replace(/([^£$]{9}\d)\s?m(\s)/g, '$1 m$2');
txt.value=txt.value.replace(/([^£$]{9}\d)\-m(\s)/g, '$1 m$2');
txt.value=txt.value.replace(/(\d)\s?sq\.?\s?m(\s)/gi, '$1 m²$2');
txt.value=txt.value.replace(/(\d)\-?sq\-?m(\s)/gi, '$1 m²$2');
txt.value=txt.value.replace(/m²\.\)/gi, 'm²)');
txt.value=txt.value.replace(/\smetres?\)/gi, ' m)');
txt.value=txt.value.replace(/\smeters?\)/gi, ' m)');
txt.value=txt.value.replace(/([\|\=\>][\s\d\.]{1,9})meters?(\s{1,3}\()/gi, '$1m$2');
txt.value=txt.value.replace(/([\|\=\>][\s\d\.]{1,9})metres?(\s{1,3}\()/gi, '$1m$2');
txt.value=txt.value.replace(/([\|\=\>][\s\d\.]{1,9} )meters?(( |\s{1,3})\()/gi, '$1m$2');
txt.value=txt.value.replace(/([\|\=\>][\s\d\.]{1,9} )metres?(( |\s{1,3})\()/gi, '$1m$2');
//metres: plural (British Imperial spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|m|ft|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|m|ft|\}\}$6');
//metres: singular (British Imperial spelling)
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|m|ft|sing=on\}\}$6');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )metre(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|m|ft|sing=on\}\}$6');
//metres: abbreviated
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4$5|m|ft|abbr=on\}\}$6');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )m(\.|\,|\s[^\(\/]{2})/gi, '$1\{\{convert|$2$3$4$5|m|ft|abbr=on\}\}$6');
//metres: in full (British Imperial spelling)
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )metre?)(\s[^\(\)]{2})/gi, '$1 (3.2 ft)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (6.5 ft)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (10 ft)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (13 ft)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (16.4 ft)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (19.7 ft)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (23 ft)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (26.2 ft)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (29.5 ft)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (32.8 ft)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (36 ft)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (39 ft)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (42.6 ft)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (46 ft)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (49 ft)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (52.5 ft)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (56 ft)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (59 ft)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (62 ft)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )metres?)(\s[^\(\)]{2})/gi, '$1 (65.6 ft)$2');
//meters: plural (American spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m|ft|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|m|ft|spell=us\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|m|ft|spell=us\}\}$6');
//meters: singular (American spelling)
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|m|ft|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|m|ft|sing=on|spell=us\}\}$6');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )meter(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|m|ft|sing=on|spell=us\}\}$6');
//meters: in full (American spelling)
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )meter?)(\s[^\(\)]{2})/gi, '$1 (3.2 ft)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (6.5 ft)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (10 ft)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (13 ft)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (16.4 ft)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (19.7 ft)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (23 ft)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (26.2 ft)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (29.5 ft)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (32.8 ft)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (36 ft)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (39 ft)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (42.6 ft)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (46 ft)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (49 ft)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (52.5 ft)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (56 ft)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (59 ft)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (62 ft)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )meters?)(\s[^\(\)]{2})/gi, '$1 (65.6 ft)$2');
//metres per second
//metres per second:plural (British Imperial spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )metres\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|\}\}$5');
//metres per second:singular (British Imperial spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|sing=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )metre\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|sing=on\}\}$5');
//metres per second:abbreviated (British Imperial spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )m\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|abbr=on\}\}$5');
//meters per second:plural (American spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )meters\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|spell=us\}\}$5');
//meters per second:singular (American spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|m/s|ft/s|sing=on|spell=us\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )meter\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m/s|ft/s|sing=on|spell=us\}\}$5');
// millimetre
txt.value=txt.value.replace(/(\d)\s?mm(\W)/g, '$1 mm$2');
txt.value=txt.value.replace(/(\d)\-mm(\W)/g, '$1 mm$2');
// kilometre
txt.value=txt.value.replace(/\[\[(kilometre|kilometer)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)\s?kms?(\W)/gi, '$1 km$2');
txt.value=txt.value.replace(/(\d)\-kms?(\W)/gi, '$1 km$2');
txt.value=txt.value.replace(/(\d) kms?(\W)/gi, '$1 km$2');
//kilometre (British Imperial spelling)
txt.value=txt.value.replace(/\[\[(kilometre)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)-(kilometre)/gi, '$1 $2');
//kilometres: plural (British Imperial spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|km|mi|\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )kilometres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|km|mi|\}\}$6');
//kilometres: singular (British Imperial spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|km|mi|sing=on\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )kilometre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|km|mi|sing=on\}\}$6');
//kilometres: abbreviated
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|km|mi|abbr=on\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )km(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|km|mi|abbr=on\}\}$6');
//kilometres: in full (British Imperial spelling)
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (0.6 mi)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (1.25 mi)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (2 mi)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (2.5 mi)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (3.1 mi)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (3.75 mi)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (4.4 mi)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (5 mi)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (5.6 mi)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (6.2 mi)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (6.8 mi)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (7.5 mi)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (8.1 mi)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (8.7 mi)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (9.3 mi)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (10 mi)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (10.6 mi)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (11.2 mi)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (11.8 mi)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )kilometres?)(\s[^p\(\)]{2})/gi, '$1 (12.4 mi)$2');
//kilometer (American spelling)
txt.value=txt.value.replace(/\[\[(kilometer)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)-(kilometer)/gi, '$1 $2');
//kilometers: plural (American spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|km|mi|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|km|mi|spell=us\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )kilometers([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|km|mi|spell=us\}\}$6');
//kilometers: singular (American spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|km|mi|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|km|mi|sing=on|spell=us\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )kilometer([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|km|mi|sing=on|spell=us\}\}$6');
//kilometers: in full (American spelling)
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (0.6 mi)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (1.25 mi)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (2 mi)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (2.5 mi)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (3.1 mi)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (3.75 mi)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (4.4 mi)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (5 mi)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (5.6 mi)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (6.2 mi)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (6.8 mi)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (7.5 mi)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (8.1 mi)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (8.7 mi)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (9.3 mi)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (10 mi)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (10.6 mi)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (11.2 mi)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (11.8 mi)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )kilometers?)(\s[^p\(\)]{2})/gi, '$1 (12.4 mi)$2');
// centimetre
txt.value=txt.value.replace(/\[\[(centimetre|centimeter)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)\s?cms?(\W)/gi, '$1 cm$2');
txt.value=txt.value.replace(/(\d)\-cms?(\W)/gi, '$1 cm$2');
txt.value=txt.value.replace(/(\d) cms?(\W)/gi, '$1 cm$2');
//centimetre (British Imperial spelling)
txt.value=txt.value.replace(/\[\[(centimetre)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)-(centimetre)/gi, '$1 $2');
//centimetres: plural (British Imperial spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|cm|in|\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )centimetres([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|cm|in|\}\}$6');
//centimetres: singular (British Imperial spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|cm|in|sing=on\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )centimetre([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|cm|in|sing=on\}\}$6');
//centimetres: abbreviated
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|cm|in|abbr=on\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )cm(\.|\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|cm|in|abbr=on\}\}$6');
//centimetres: in full (British Imperial spelling)
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (0.4 in)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (0.8 in)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (1.2 in)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (1.6 in)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (2.0 in)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (2.4 in)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (2.75 in)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (3.2 in)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (3.5 in)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (4 in)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (4.3 in)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (4.7 in)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (5.1 in)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (5.5 in)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (5.9 in)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (6.3 in)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (6.7 in)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (7.1 in)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (7.5 in)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )centimetres?)(\s[^p\(\)]{2})/gi, '$1 (7.9 in)$2');
//centimeter (American spelling)
txt.value=txt.value.replace(/\[\[(centimeter)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)-(centimeter)/gi, '$1 $2');
//centimeters: plural (American spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|cm|in|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|cm|in|spell=us\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )centimeters([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|cm|in|spell=us\}\}$6');
//centimeters: singular (American spelling)
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|cm|in|sing=on|spell=us\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|cm|in|sing=on|spell=us\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )centimeter([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|cm|in|sing=on|spell=us\}\}$6');
//centimeters: in full (American spelling)
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (0.4 in)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (0.8 in)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (1.2 in)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (1.6 in)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (2.0 in)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (2.4 in)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (2.75 in)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (3.2 in)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (3.5 in)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (4 in)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (4.3 in)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (4.7 in)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (5.1 in)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (5.5 in)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (5.9 in)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (6.3 in)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (6.7 in)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (7.1 in)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (7.5 in)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )centimeters?)(\s[^p\(\)]{2})/gi, '$1 (7.9 in)$2');
//square kilometre
txt.value=txt.value.replace(/\[\[(square\skilometre)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)\s?sq\.?\s?kms?/gi, '$1 km²');
txt.value=txt.value.replace(/([^\|])sq\.?\s?kms?/gi, '$1km²');
txt.value=txt.value.replace(/sq kms?/gi, 'km²');
// square kilometre:plural (British Imperial spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{4})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )square(?:\s|-| )kilometres([^²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|\}\}$6');
// square kilometre:singular (British Imperial spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )square(?:\s|-| )kilometres?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|\}\}$6');
// square kilometer:plural (American spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{4})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|spell=us\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )square(?:\s|-| )kilometers([^²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|spell=us\}\}$6');
// square kilometer:singular (American spelling)
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|spell=us\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|spell=us\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )square(?:\s|-| )kilometers?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|spell=us\}\}$6');
// square kilometre:abbreviated sq km
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|abbr=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )sq(?:\s|-| )km([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|abbr=on\}\}$6');
// square kilometre:abbreviated km²
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|km2|sqmi|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|abbr=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )km²(\.|\,|\s[^l²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|km2|sqmi|abbr=on\}\}$6');
// kilometre per hour
txt.value=txt.value.replace(/km\/hr(\W)/gi, 'km/h$1');
txt.value=txt.value.replace(/kph(\W)/gi, 'km/h$1');
txt.value=txt.value.replace(/kmph(\W)/gi, 'km/h$1');
txt.value=txt.value.replace(/(\d)\s?kmh/gi, '$1 km/h');
txt.value=txt.value.replace(/(\d) kmh/gi, '$1 km/h');
txt.value=txt.value.replace(/\[\[kmh\]\]/gi, '\[\[km/h\]\]');
txt.value=txt.value.replace(/km\/h/gi, 'km/h');
txt.value=txt.value.replace(/(\d)\s?km\/h/gi, '$1 km/h');
txt.value=txt.value.replace(/(\d)\-km\/h/gi, '$1 km/h');
txt.value=txt.value.replace(/(\d) km\/h/gi, '$1 km/h');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}00),?(000)(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2$3|km/h|mph|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}0),?(000)(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2$3|km/h|mph|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}),?(000)(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2$3|km/h|mph|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2$3|km/h|mph|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2$3|km/h|mph|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2$3|km/h|mph|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}\.\d\d)(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2|km/h|mph|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}\.\d\d\d)(?:\s|-| )km\/h([^\(\)]{3})/gi, '$1\{\{convert|$2|km/h|mph|abbr=on\}\}$3');
// cubic centimetre
txt.value=txt.value.replace(/(\d)\s?cm(\s)/gi, '$1 cm$2');
txt.value=txt.value.replace(/(\d)\s?cc(\s)/g, '$1 cc$2');
txt.value=txt.value.replace(/(\d)\-cc(\s)/g, '$1 cc$2');
// millilitre
txt.value=txt.value.replace(/(\d)\s?ml(\W)/g, '$1 mL$2');
txt.value=txt.value.replace(/(\d)\-ml(\W)/g, '$1 mL$2');
// second
txt.value=txt.value.replace(/\[\[(s)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(seconds?)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[seconds?\|([^\]]{1,30})\]\]/gi, '$1');
//txt.value=txt.value.replace(/\/sec(\W)/gi, '/s$1');
//txt.value=txt.value.replace(/\/sec\)/gi, '/s)$1');
txt.value=txt.value.replace(/(\d)\s?ft\/second/gi, '$1 ft/s');
txt.value=txt.value.replace(/(\d)\s?ft\/sec(\W)/gi, '$1 ft/s$2');
txt.value=txt.value.replace(/(\d) ft\/sec(\W)/gi, '$1 ft/s$2');
txt.value=txt.value.replace(/(\d)\s?m\/second/gi, '$1 m/s');
txt.value=txt.value.replace(/(\d)\s?m\/sec(\W)/gi, '$1 m/s$2');
txt.value=txt.value.replace(/(\d)\ m\/sec(\W)/gi, '$1 m/s$2');
txt.value=txt.value.replace(/(\d)\s?km\/sec(\W)/gi, '$1 km/s$2');
txt.value=txt.value.replace(/frames\/s(\W)/gi, 'frame/s$1');
//minute
txt.value=txt.value.replace(/\[\[(min)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(minutes?)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[minutes?\|([^\]]{1,30})\]\]/gi, '$1');
// hour
txt.value=txt.value.replace(/\[\[(h)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(hours?)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[hours?\|([^\]]{1,30})\]\]/gi, '$1');
//day
txt.value=txt.value.replace(/\[\[(d)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(days?)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[days?\|([^\]]{1,30})\]\]/gi, '$1');
// kilogram
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )kilogrammes([^\(\)]{2})/gi, '$1\{\{convert|$2|kg|lb\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )kilogrammes([^\(\)]{2})/gi, '$1\{\{convert|$2\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )kilogrammes([^\(\)]{2})/gi, '$1\{\{convert|$2\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )kilogrammes([^\(\)]{2})/gi, '$1\{\{convert|$2\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )kilogrammes([^\(\)]{2})/gi, '$1\{\{convert||$2\}\}$3');
txt.value=txt.value.replace(/kilogramme/gi, 'kilogram');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )kilogramme([^\(\)]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )kilogramme([^\(\)]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )kilogramme([^\(\)]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\} $3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )kilogramme([^\(\)]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )kilogramme([^\(\)]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )s?kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )s?kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )s?kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )s?kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )s?kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )-kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )-kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )-kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )-kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )-kg([^\(\)\/]{2})/gi, '$1\{\{convert|$2|kg|lb|abbr=on\}\}$3');
txt.value=txt.value.replace(/\[\[(kilograms?)\]\]/gi, '$1');
//grams to ounces
txt.value=txt.value.replace(/(\W)grammes(\W)/gi, '$1grams$2');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )grammes([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )grammes([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )grammes([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )grammes([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )grammes([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )grams([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )grams([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )grams([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )grams([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )grams([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )gram([^\(\)]{2})/gi, '$1\{\{Convert|$2|g|oz|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )gram([^\(\)]{2})/gi, '$1\{\{Convert|$2|g|oz|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )gram([^\(\)]{2})/gi, '$1\{\{Convert|$2|g|oz|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )gram([^\(\)]{2})/gi, '$1\{\{Convert|$2|g|oz|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )gram([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )g(\W\s[^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )g(\W\s[^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )g(\W\s[^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )g(\W\s[^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )g(\W\s[^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )gramme([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )gramme([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )gramme([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )gramme([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )gramme([^\(\)]{2})/gi, '$1\{\{convert|$2|g|oz|abbr=on\}\}$3');
txt.value=txt.value.replace(/(\W)gramme(\W)/gi, '$1gram$2');
// newton metre
txt.value=txt.value.replace(/(\d)\s?(Nm\W)/gi, '$1 $2');
txt.value=txt.value.replace(/(\d)\-(Nm\W)/gi, '$1 $2');
// kilowatt
txt.value=txt.value.replace(/(\d)\s?kW(\W)/gi, '$1 kW$2');
txt.value=txt.value.replace(/(\d)\-kW(\W)/gi, '$1 kW$2');
// Hertz
txt.value=txt.value.replace(/(\d)\s?(G|M|k)?hz/gi, '$1 $2Hz');
txt.value=txt.value.replace(/(\d)\-(G|M|k)?hz/gi, '$1 $2Hz');
txt.value=txt.value.replace(/khz/gi, 'kHz');
// ohm
txt.value=txt.value.replace(/(\d)\s?(Y|Z|E|P|T|G|M|k|K|h|da|d|c|m|µ|μ|µ|n|p|f|a|z|y)?\s?(Ω|ohm|Ohm)s?(\W)/g, '$1 $2Ω$4');
//grains to grams
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )grains([^\(\)]{2})/gi, '$1\{\{convert|$2|gr|g\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )grains([^\(\)]{2})/gi, '$1\{\{convert|$2|gr|g\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )grains([^\(\)]{2})/gi, '$1\{\{convert |$2|gr|g\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )grains([^\(\)]{2})/gi, '$1\{\{convert |$2|gr|g\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )grains([^\(\)]{2})/gi, '$1\{\{convert |$2|gr|g\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}00)(?:\s|-| )grain([^\(\)]{2})/gi, '$1\{\{Convert|$2|gr|g|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)(?:\s|-| )grain([^\(\)]{2})/gi, '$1\{\{Convert|$2|gr|g|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3})(?:\s|-| )grain([^\(\)]{2})/gi, '$1\{\{Convert|$2|gr|g|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d)(?:\s|-| )grain([^\(\)]{2})/gi, '$1\{\{Convert|$2|gr|g|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}\.\d\d)(?:\s|-| )grain([^\(\)]{2})/gi, '$1\{\{Convert|$2|gr|g|sing=on\}\}$3');
// pound weight
txt.value=txt.value.replace(/\[\[\pound\s\(weight\)\|([^\]]{1,30})\]\]/gi, '[[pound (mass)|$1]]');
txt.value=txt.value.replace(/\|lbs?\.\]\]/gi, '|lb]]');
txt.value=txt.value.replace(/(\d)\s?lbs?/gi, '$1 lb');
txt.value=txt.value.replace(/(\d\+?)\s?lbs?/gi, '$1 lb');
txt.value=txt.value.replace(/(\d) lbs?/gi, '$1 lb');
//foot
txt.value=txt.value.replace(/(\d)\s?ft(\W)/gi, '$1 ft$2');
txt.value=txt.value.replace(/(\d)\-ft(\W)/gi, '$1 ft$2');
txt.value=txt.value.replace(/(\W)ft\.\)/gi, '$1ft)');
txt.value=txt.value.replace(/\sfeet\)/gi, ' ft)');
txt.value=txt.value.replace(/\sfoot\)/gi, ' ft)');
txt.value=txt.value.replace(/ feet\)/gi, ' ft)');
txt.value=txt.value.replace(/(\|[\s\d\.]{1,9})feet(\s{1,3}\()/gi, '$1ft$2');
// square metre
//txt.value=txt.value.replace(/([^\|])sq\.?\s?m/gi, '$1 m²');
txt.value=txt.value.replace(/(\d)(?:\s|-| )?(sq|square)\.?(?:\s|-| )?(metres|meters|metre|meter)/gi, '$1 $2 $3');
txt.value=txt.value.replace(/(\d)(?:\s|-| )? sq\.?(?:\s|-| )?(metres|meters|metre|meter)/gi, '$1 m²');
//txt.value=txt.value.replace(/sq m/gi, 'm²');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3}),?(000),?(000)(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|-5 abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )meter ([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on|sp=us \}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )m²(\.|\,|\s[^\(]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sp=us \}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on|sp=us \}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )m²([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})\ssq\sm([^i\(\)]{2})/gi, '$1\{\{convert|$2|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )metres ([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sp=us \}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|m2|sqft|sing=on|sp=us\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d00)(?:\s|-| )thousand(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d0)(?:\s|-| )thousand(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d)(?:\s|-| )thousand(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000|m2|sqft|sing=on|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )m(\W[^\(\)])/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d00)(?:\s|-| )million(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d0)(?:\s|-| )million(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d)(?:\s|-| )million(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.\E])(\d{1,3)(?:\s|-| )million(?:\s|-| )m²(\.|\,|\s[^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metres([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meters([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )metre([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on|sp=us\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )meter([^\(\)]{2})/gi, '$1\{\{convert|$2000000|m2|sqft|sing=on|sp=us\}\}$3');
// square foot
//txt.value=txt.value.replace(/([^\|])sq\.?\s?ft/gi, '$1sq ft');
txt.value=txt.value.replace(/(\d)(?:\s|-| )?(sq|square)\.?(?:\s|-| )?(ft|feet|foot)/gi, '$1 $2 $3');
txt.value=txt.value.replace(/(\d) sq (ft|feet|foot)/gi, '$1 sq ft');
txt.value=txt.value.replace(/ft²/gi, 'sq ft');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(000)(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(000)(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(000)(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3}),?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|sqft|m2|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )thousand(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000|sqft|m2|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )sq(?:\s|-| )ft([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )feet([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d00)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d0)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|sing=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3)(?:\s|-| )million(?:\s|-| )square(?:\s|-| )foot([^\(\)]{2})/gi, '$1\{\{convert|$2000000|sqft|m2|sing=on\}\}$3');
//feet per second
//feet per second:plural
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|ft/s|m/s|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )feet\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|ft/s|m/s|\}\}$5');
//feet per second:singular
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|ft/s|m/s|sing=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )foot\sper\ssecond([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|ft/s|m/s|sing=on\}\}$5');
//feet per second:abbreviated
txt.value=txt.value.replace(/(\s)(\d{1,3}00)?,?(000)(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}0)?,?(000)(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000)(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3|ft/s|m/s|abbr=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|ft/s|m/s|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )ft\/s([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|ft/s|m/s|abbr=on\}\}$5');
// foot and inch
txt.value=txt.value.replace(/(ength[.]{1,3})(\d{1,4})\s?['’]\s?(\d{1,3})\s?["”]/gi, '$1$2 ft $3 in');
txt.value=txt.value.replace(/(idth[.]{1,3})(\d{1,4})\s?['’]\s?(\d{1,3})\s?["”]/gi, '$1$2 ft $3 in');
txt.value=txt.value.replace(/([\(\|:]\s?\d{1,4})\s?['’]\s?(\d{1,3})\s?["”]([^NESW])/g, '$1 ft $2 in$3');
txt.value=txt.value.replace(/(\d)\s?ft\s?(\d{1,3})\s?in/gi, '$1 ft $2 in');
// yard
txt.value=txt.value.replace(/(\d)\s?yds(\W)/gi, '$1 yd$2');
txt.value=txt.value.replace(/(\d) yds(\W)/gi, '$1 yd$2');
txt.value=txt.value.replace(/sq\.?\s?yds?/gi, 'sq yd');
txt.value=txt.value.replace(/yd\.\)/gi, 'yd)');
//yards: plural
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|yd|m|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|yd|m|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|yd|m|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|yd|m|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|yd|m|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|yd|m|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|yd|m|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|yd|m|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )yards([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|yd|m|\}\}$6');
//yards: singular
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|yd|m|sing=on\}\}$6');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )yard(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|yd|m|sing=on\}\}$6');
//yards: abbreviated
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|yd|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|yd|m|abbr=on\}\}$6');
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )yd(\,|\s[^\(\/])/gi, '$1\{\{convert|$2$3$4$5|yd|m|abbr=on\}\}$6');
//yards: in full
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (1 m)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (2 m)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (3 m)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (4 m)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (5 m)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (5 m)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (6 m)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (7 m)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (8 m)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (9 m)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (10 m)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (11 m)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (12 m)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (13 m)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (14 m)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (15 m)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (16 m)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (16 m)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (17 m)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )yards?)(\s[^\(\)]{2})/gi, '$1 (18 m)$2');
// knot
txt.value=txt.value.replace(/(\d)(\s|-| )kts(\W)/gi, '$1$2knots$3');
txt.value=txt.value.replace(/(\d)(\s|-| )kt(\W)/gi, '$1$2knots$3');
txt.value=txt.value.replace(/(\d)(\s|-| )knt(\W)/gi, '$1$2knots$3');
//nautical mile
txt.value=txt.value.replace(/(\d)(?:\s|-| )miles\s\at\s(\d\d?(?:\s|-| )knots|\{\{convert\|[\d\.]{1,9}\|kn)/gi, '$1 nautical miles at $2');
txt.value=txt.value.replace(/(\d)(?:\s|-| )mi\s\at\s(\d\d?(?:\s|-| )knots|\{\{convert\|[\d\.]{1,9}\|kn)/gi, '$1 nmi at $2 knots');
txt.value=txt.value.replace(/(\d)(?:\s|-| )nm\s\at\s(\d\d?(?:\s|-| )knots|\{\{convert\|[\d\.]{1,9}\|kn)/gi, '$1 nmi at $2 knots');
//nautical mile: plural
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(000),?(000)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|nmi|km mi|\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|nmi|km mi|\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|nmi|km mi|\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|nmi|km mi|\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|nmi|km mi|\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|nmi|km mi|\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4|nmi|km mi|\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|nmi|km mi|\}\}$6');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )nautical(?:\s|-| )miles([^\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|nmi|km mi|\}\}$6');
//nautical mile: singular
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(000),?(000)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4$5|nmi|km mi|sing=on\}\}$6');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )nautical(?:\s|-| )mile([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4$5|nmi|km mi|sing=on\}\}$6');
//nautical mile: abbreviated
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(000),?(000)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|nmi|km mi|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|nmi|km mi|abbr=on\}\}$6');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )nmi(\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|nmi|km mi|abbr=on\}\}$6');
//nautical mile: in full
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (1.9 km)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (4 km)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (6 km)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (7 km)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (9 km)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (11 km)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (13 km)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (15 km)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (17 km)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (19 km)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (20 km)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (22 km)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (24 km)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (26 km)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (28 km)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (30 km)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (31 km)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (33 km)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (35 km)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )nautical(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (37 km)$2');
//knot - plural
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )knots([^\(\)][^\(\)])/gi, '$1\{\{convert|$2$3|kn|km/h mph|\}\}$4');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )knots([^\(\)][^\(\)])/gi, '$1\{\{convert|$2$3|kn|km/h mph|\}\}$4');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})(?:\s|-| )knots([^\(\)][^\(\)])/gi, '$1\{\{convert|$2$3|kn|km/h mph|\}\}$4');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )knots([^\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|kn|km/h mph|\}\}$5');
//knot - singular
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )knot([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3|kn|km/h mph|sing=on\}\}$4');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )knot([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3|kn|km/h mph|sing=on\}\}$4');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})(?:\s|-| )knot([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3|kn|km/h mph|sing=on\}\}$4');
txt.value=txt.value.replace(/([^\d\(\)][^\d\(\)])(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )knot([^s\(\)][^\(\)])/gi, '$1\{\{convert|$2$3$4|kn|km/h mph|sing=on\}\}$5');
//mile
txt.value=txt.value.replace(/\[\[(mile)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)-(mile)/gi, '$1 $2');
//miles: plural
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|mi|km|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|mi|km|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|mi|km|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|mi|km|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|mi|km|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|mi|km|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4|mi|km|\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|mi|km|\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )miles([^p\(\)]{2})/gi, '$1\{\{convert|$2$3$4$5|mi|km|\}\}$6');
//miles: singular
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|sing=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|mi|km|sing=on\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )mile([^s\(\)][^p\(\)])/gi, '$1\{\{convert|$2$3$4$5|mi|km|sing=on\}\}$6');
//miles: abbreviated
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(000),?(000)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4|mi|km|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|mi|km|abbr=on\}\}$6');
txt.value=txt.value.replace(/([^r\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )mi(\,|\s[^\(\)])/gi, '$1\{\{convert|$2$3$4$5|mi|km|abbr=on\}\}$6');
//miles: in full
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (1.6 km)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (3 km)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (5 km)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (6 km)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (8 km)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (10 km)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (11 km)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (13 km)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (14 km)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (16 km)$2');
txt.value=txt.value.replace(/([^y]\seleven(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (18 km)$2');
txt.value=txt.value.replace(/([^y]\stwelve(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (19 km)$2');
txt.value=txt.value.replace(/([^y]\sthirteen(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (19 km)$2');
txt.value=txt.value.replace(/([^y]\sfourteen(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (21 km)$2');
txt.value=txt.value.replace(/([^y]\sfifteen(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (24 km)$2');
txt.value=txt.value.replace(/([^y]\ssixteen(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (26 km)$2');
txt.value=txt.value.replace(/([^y]\sseventeen(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (27 km)$2');
txt.value=txt.value.replace(/([^y]\seighteen(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (29 km)$2');
txt.value=txt.value.replace(/([^y]\snineteen(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (30 km)$2');
txt.value=txt.value.replace(/([^y]\stwenty(?:\s|-| )miles?)(\s[^p\(\)]{2})/gi, '$1 (32 km)$2');
//mile per hour
txt.value=txt.value.replace(/m\.p\.h\.(\W)/g, 'mph$1');
txt.value=txt.value.replace(/(\d)\s?mph/gi, '$1 mph');
txt.value=txt.value.replace(/(\d)\-mph/gi, '$1 mph');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}00),?(000)(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2$3|mph|km/h|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}0),?(000)(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2$3|mph|km/h|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}),?(000)(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2$3|mph|km/h|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2$3|mph|km/h|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2$3|mph|km/h|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3})?,?(\d{1,3})(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2$3|mph|km/h|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}\.\d\d)(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2|mph|km/h|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d]\s)(\d{1,3}\.\d\d\d)(?:\s|-| )mph([^\(\)]{3})/gi, '$1\{\{convert|$2|mph|km/h|abbr=on\}\}$3');
// square mile
txt.value=txt.value.replace(/([^\|])sq\.?\s?mi/gi, '$1sq mi');
txt.value=txt.value.replace(/sq\.? mi/gi, 'sq mi');
txt.value=txt.value.replace(/mile²/gi, 'sq mi');
txt.value=txt.value.replace(/miles²/gi, 'sq mi');
txt.value=txt.value.replace(/mi²/gi, 'sq mi');
txt.value=txt.value.replace(/mi²/gi, 'sq mi');
txt.value=txt.value.replace(/\[\[(square\smile)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[square\smile\|(sq\smi)\]\]/gi, '$1');
txt.value=txt.value.replace(/(sq)(?:\s|-| )(mile)/gi, '$1uare $2');
// square mile:plural
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )miles([^²\(]{4})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|sqmi|km2|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )square(?:\s|-| )miles([^²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|sqmi|km2|\}\}$6');
// square mile:singular
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|sqmi|km2|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )square(?:\s|-| )miles?([^s²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|sqmi|km2|\}\}$6');
// square mile:abbreviated
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4|sqmi|km2|abbr=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|sqmi|km2|abbr=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(\.\d\d)(?:\s|-| )sq(?:\s|-| )mi([^l²\(]{2})/gi, '$1\{\{convert|$2$3$4$5|sqmi|km2|abbr=on\}\}$6');
//nautical mile
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}00),?(000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}00),?(000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}0),?(000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}0),?(000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(\d{1,3}00)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(\d{1,3}00)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(\d{1,3}0)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(\d{1,3}0)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(\d{1,3})(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}),?(\d{1,3})(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2$3|nmi|km mi|abbr=on\}\}$4');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}000)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}00)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}00)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}0)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3}0)(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|abbr=on\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )miles?([^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|\}\}$3');
txt.value=txt.value.replace(/([^\d,\.])(\d{1,3})(?:\s|-| )mi([^l²\(\)]{2})al(?:\s|-| )mi(\s[^p\(\)]{2})/gi, '$1\{\{convert|$2|nmi|km mi|abbr=on\}\}$3');
//acre
//acres - temporary change to protect acre feet. changed below
txt.value=txt.value.replace(/(acre.feet)/gi, 'xtempx$1ytempy');
txt.value=txt.value.replace(/\[\[(acres?)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)-(acre)/gi, '$1 $2');
txt.value=txt.value.replace(/(\d)(?:\s|-| )surface(?:\s|-| )(acre)/gi, '$1 $2');
txt.value=txt.value.replace(/(\s250(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (1 km²)$2');
txt.value=txt.value.replace(/(\s500(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (2 km²)$2');
txt.value=txt.value.replace(/(\s750(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (3 km²)$2');
txt.value=txt.value.replace(/(\s1(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (4 km²)$2');
txt.value=txt.value.replace(/(\s1,?500(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (6 km²)$2');
txt.value=txt.value.replace(/(\s2(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (8 km²)$2');
txt.value=txt.value.replace(/(\s2,?500(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (10 km²)$2');
txt.value=txt.value.replace(/(\s3(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (12 km²)$2');
txt.value=txt.value.replace(/(\s4(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (16 km²)$2');
txt.value=txt.value.replace(/(\s5(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (20 km²)$2');
txt.value=txt.value.replace(/(\s6(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (24 km²)$2');
txt.value=txt.value.replace(/(\s7(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (28 km²)$2');
txt.value=txt.value.replace(/(\s8(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (32 km²)$2');
txt.value=txt.value.replace(/(\s9(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (36 km²)$2');
txt.value=txt.value.replace(/(\s10(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (40 km²)$2');
txt.value=txt.value.replace(/(\s11(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (44 km²)$2');
txt.value=txt.value.replace(/(\s12(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (49 km²)$2');
txt.value=txt.value.replace(/(\s13(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (53 km²)$2');
txt.value=txt.value.replace(/(\s14(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (57 km²)$2');
txt.value=txt.value.replace(/(\s15(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (61 km²)$2');
txt.value=txt.value.replace(/(\s16(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (65 km²)$2');
txt.value=txt.value.replace(/(\s17(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (69 km²)$2');
txt.value=txt.value.replace(/(\s18(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (73 km²)$2');
txt.value=txt.value.replace(/(\s19(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (77 km²)$2');
txt.value=txt.value.replace(/(\s20(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (80 km²)$2');
txt.value=txt.value.replace(/(\s30(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (120 km²)$2');
txt.value=txt.value.replace(/(\s40(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (160 km²)$2');
txt.value=txt.value.replace(/(\s50(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (200 km²)$2');
txt.value=txt.value.replace(/(\s60(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (240 km²)$2');
txt.value=txt.value.replace(/(\s70(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (280 km²)$2');
txt.value=txt.value.replace(/(\s80(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (320 km²)$2');
txt.value=txt.value.replace(/(\s90(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (360 km²)$2');
txt.value=txt.value.replace(/(\s100(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (400 km²)$2');
txt.value=txt.value.replace(/(\s110(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (440 km²)$2');
txt.value=txt.value.replace(/(\s120(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (490 km²)$2');
txt.value=txt.value.replace(/(\s130(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (530 km²)$2');
txt.value=txt.value.replace(/(\s140(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (570 km²)$2');
txt.value=txt.value.replace(/(\s150(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (610 km²)$2');
txt.value=txt.value.replace(/(\s160(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (650 km²)$2');
txt.value=txt.value.replace(/(\s170(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (690 km²)$2');
txt.value=txt.value.replace(/(\s180(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (730 km²)$2');
txt.value=txt.value.replace(/(\s190(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (770 km²)$2');
txt.value=txt.value.replace(/(\s200(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (800 km²)$2');
txt.value=txt.value.replace(/(\s300(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (1,200 km²)$2');
txt.value=txt.value.replace(/(\s400(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (1,600 km²)$2');
txt.value=txt.value.replace(/(\s500(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (2,000 km²)$2');
txt.value=txt.value.replace(/(\s600(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (2,400 km²)$2');
txt.value=txt.value.replace(/(\s700(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (2,800 km²)$2');
txt.value=txt.value.replace(/(\s800(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (3,200 km²)$2');
txt.value=txt.value.replace(/(\s900(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (3,600 km²)$2');
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (4 km²)$2');
txt.value=txt.value.replace(/(\sa(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (4 km²)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (8 km²)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (12 km²)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (16 km²)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (20 km²)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (24 km²)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (28 km²)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (32 km²)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (36 km²)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )thousand(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (40 km²)$2');
txt.value=txt.value.replace(/(\s1(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (4,000 km²)$2');
txt.value=txt.value.replace(/(\s1,?500(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (6,000 km²)$2');
txt.value=txt.value.replace(/(\s2(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (8,000 km²)$2');
txt.value=txt.value.replace(/(\s2,?500(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (10,000 km²)$2');
txt.value=txt.value.replace(/(\s3(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (12,000 km²)$2');
txt.value=txt.value.replace(/(\s4(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (16,000 km²)$2');
txt.value=txt.value.replace(/(\s5(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (20,000 km²)$2');
txt.value=txt.value.replace(/(\s6(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (24,000 km²)$2');
txt.value=txt.value.replace(/(\s7(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (28,000 km²)$2');
txt.value=txt.value.replace(/(\s8(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (32,000 km²)$2');
txt.value=txt.value.replace(/(\s9(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (36,000 km²)$2');
txt.value=txt.value.replace(/(\s10(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (40,000 km²)$2');
txt.value=txt.value.replace(/(\s11(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (44,000 km²)$2');
txt.value=txt.value.replace(/(\s12(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (49,000 km²)$2');
txt.value=txt.value.replace(/(\s13(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (53,000 km²)$2');
txt.value=txt.value.replace(/(\s14(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (57,000 km²)$2');
txt.value=txt.value.replace(/(\s15(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (61,000 km²)$2');
txt.value=txt.value.replace(/(\s16(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (65,000 km²)$2');
txt.value=txt.value.replace(/(\s17(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (69,000 km²)$2');
txt.value=txt.value.replace(/(\s18(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (73,000 km²)$2');
txt.value=txt.value.replace(/(\s19(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (77,000 km²)$2');
txt.value=txt.value.replace(/(\s20(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (80,000 km²)$2');
txt.value=txt.value.replace(/(\s30(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (120,000 km²)$2');
txt.value=txt.value.replace(/(\s40(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (160,000 km²)$2');
txt.value=txt.value.replace(/(\s50(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (200,000 km²)$2');
txt.value=txt.value.replace(/(\s60(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (240,000 km²)$2');
txt.value=txt.value.replace(/(\s70(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (280,000 km²)$2');
txt.value=txt.value.replace(/(\s80(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (320,000 km²)$2');
txt.value=txt.value.replace(/(\s90(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (360,000 km²)$2');
txt.value=txt.value.replace(/(\s100(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (400,000 km²)$2');
txt.value=txt.value.replace(/(\s110(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (440,000 km²)$2');
txt.value=txt.value.replace(/(\s120(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (490,000 km²)$2');
txt.value=txt.value.replace(/(\s130(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (530,000 km²)$2');
txt.value=txt.value.replace(/(\s140(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (570,000 km²)$2');
txt.value=txt.value.replace(/(\s150(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (610,000 km²)$2');
txt.value=txt.value.replace(/(\s160(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (650,000 km²)$2');
txt.value=txt.value.replace(/(\s170(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (690,000 km²)$2');
txt.value=txt.value.replace(/(\s180(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (730,000 km²)$2');
txt.value=txt.value.replace(/(\s190(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (770,000 km²)$2');
txt.value=txt.value.replace(/(\s200(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (800,000 km²)$2');
txt.value=txt.value.replace(/(\s300(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (1,200,000 km²)$2');
txt.value=txt.value.replace(/(\s400(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (1,600,000 km²)$2');
txt.value=txt.value.replace(/(\s500(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (2,000,000 km²)$2');
txt.value=txt.value.replace(/(\s600(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (2,400,000 km²)$2');
txt.value=txt.value.replace(/(\s700(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (2,800,000 km²)$2');
txt.value=txt.value.replace(/(\s800(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (3,200,000 km²)$2');
txt.value=txt.value.replace(/(\s900(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (3,600,000 km²)$2');
txt.value=txt.value.replace(/([^y]\sone(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (4,000 km²)$2');
txt.value=txt.value.replace(/(\sa(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (4,000 km²)$2');
txt.value=txt.value.replace(/([^y]\stwo(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (8,000 km²)$2');
txt.value=txt.value.replace(/([^y]\sthree(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (12,000 km²)$2');
txt.value=txt.value.replace(/([^y]\sfour(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (16,000 km²)$2');
txt.value=txt.value.replace(/([^y]\sfive(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (20,000 km²)$2');
txt.value=txt.value.replace(/([^y]\ssix(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (24,000 km²)$2');
txt.value=txt.value.replace(/([^y]\sseven(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (28,000 km²)$2');
txt.value=txt.value.replace(/([^y]\seight(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (32,000 km²)$2');
txt.value=txt.value.replace(/([^y]\snine(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (36,000 km²)$2');
txt.value=txt.value.replace(/([^y]\sten(?:\s|-| )million(?:\s|-| )acres?)([^\(]{4})/gi, '$1 (40,000 km²)$2');
//acre:plural
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|acre|ha|\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{3})(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2|acre|ha|\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000),?(000)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000),?(000)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000),?(000)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000),?(000)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})?,?(\d{1}00)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})?,?(\d{2}0)(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})?,?(\d{3})(?:\s|-| )(?:acres|\[\[acres\]\]|\[\[acre\]\]s)([^\(]{2})/gi, '$1\{\{convert|$2$3$4$5|acre|ha|\}\}$6');
//acre:singular
txt.value=txt.value.replace(/([^\/]\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})(?:\s|-| )(?:acre|\[\[acre\]\])(\s[^\(\/])/gi, '$1\{\{convert|$2$3$4|acre|ha|sing=on\}\}$5');
txt.value=txt.value.replace(/(\s)(\d{3})(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2|acre|ha|sing=on\}\}$3');
txt.value=txt.value.replace(/(\s)(\d{3})(\.\d)?(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3|acre|ha|sing=on\}\}$4');
txt.value=txt.value.replace(/(\s)(\d{1,3}),?(000),?(000),?(000)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}00),?(000),?(000)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}0),?(000),?(000)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3}),?(000),?(000)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}00),?(000)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}0),?(000)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3}),?(000)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})?,?(\d{1}00)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})?,?(\d{2}0)(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
txt.value=txt.value.replace(/(\s)(\d{1,3})?,?(\d{1,3})?,?(\d{1,3})?,?(\d{3})(?:\s|-| )(?:acre|\[\[acre\]\])([^s\(][^\(])/gi, '$1\{\{convert|$2$3$4$5|acre|ha|sing=on\}\}$6');
//undo protection for acre feet
txt.value=txt.value.replace(/xtempx(acre.feet)ytempy/gi, '$1');
// foot pound
txt.value=txt.value.replace(/ftlbs?(\W)/gi, 'ft•lbf$1');
txt.value=txt.value.replace(/ft[ -.••\/]lb(\W)/gi, 'ft•lbf$1');
txt.value=txt.value.replace(/ft[ -.••\/]lbs/gi, 'ft•lbf');
txt.value=txt.value.replace(/ft[ -.••\/]lbf/gi, 'ft•lbf');
txt.value=txt.value.replace(/ft[ -.••\/]lbff/gi, 'ft•lbf');
//foot (again). Parsed after 'foot per second' and 'foot pound'
txt.value=txt.value.replace(/\[\[(feet)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Foot\s\(unit\sof\slength\)\|(feet:foot|ft)\]\]/gi, '$1');
txt.value=txt.value.replace(/(\d)-(feet)/gi, '$1 $2');
//feet: plural
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(000)[\s,]?(000)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3}00)[\s,]?(000)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3}0)[\s,]?(000)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})[\s,]?(000)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3}00)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3}0)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(\.\d)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4$5|ft|m|\}\}$6');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(\.\d\d)(?:\s|-| )feet([^\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4$5|ft|m|\}\}$6');
//feet: singular
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(000)[\s,]?(000)(?:\s|-| )foot([^\aip\(\)]{2})/gi, '$1\{\{convert|$2$3$4|ft|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3}00)[\s,]?(000)(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3}0)[\s,]?(000)(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})[\s,]?(000)(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3}00)(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3}0)(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4|ft|m|sing=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(\.\d)(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4$5|ft|m|sing=on\}\}$6');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(\.\d\d)(?:\s|-| )foot([^•\w\(\)][^o\d\(\)])/gi, '$1\{\{convert|$2$3$4$5|ft|m|sing=on\}\}$6');
//feet: abbreviated
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(000)[\s,]?(000)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4|ft|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3}00)[\s,]?(000)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4|ft|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3}0)[\s,]?(000)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4|ft|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})[\s,]?(000)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4|ft|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3}00)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4|ft|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3}0)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4|ft|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4|ft|m|abbr=on\}\}$5');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(\.\d)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4$5|ft|m|abbr=on\}\}$6');
txt.value=txt.value.replace(/([^\dr]\s)(\d{1,3})?[\s,]?(\d{1,3})?[\s,]?(\d{1,3})(\.\d\d)(?:\s|-| )ft([^\w\(\)\/][^lo\d\(\)][^\(])/gi, '$1\{\{convert|$2$3$4$5|ft|m|abbr=on\}\}$6');
// horsepower
txt.value=txt.value.replace(/(\d)\s?hp(\W)/gi, '$1 hp$2');
txt.value=txt.value.replace(/(\d) hp(\W)/gi, '$1 hp$2');
txt.value=txt.value.replace(/(\d)\s?bhp/gi, '$1 bhp');
txt.value=txt.value.replace(/(\d) bhp/gi, '$1 bhp');
txt.value=txt.value.replace(/(\d)\s?shp/gi, '$1 shp');
txt.value=txt.value.replace(/(\d) shp/gi, '$1 shp');
//Pferdestärke
txt.value=txt.value.replace(/(\d)\s?(ps\W)/gi, '$1 $2');
// rpm
txt.value=txt.value.replace(/(\d)\s?rpm/gi, '$1 rpm');
txt.value=txt.value.replace(/(\d) rpm/gi, '$1 rpm');
txt.value=txt.value.replace(/(\d)\-rpm/gi, '$1 rpm');
// decibel
txt.value=txt.value.replace(/(\d)\s?(dB)\b/g, '$1 $2');
// bits per second
txt.value=txt.value.replace(/([KkMmGgTt])(bps|bits?\/s|b\/s)/g, '$1bit/s');
txt.value=txt.value.replace(/(\d)\s?bps/gi, '$1 bit/s');
txt.value=txt.value.replace(/(\d) bps/gi, '$1 bit/s');
txt.value=txt.value.replace(/bits?\/sec(\W)/gi, 'bit/s$1');
// bytes per second
txt.value=txt.value.replace(/([KkMmGgTt])(Bps|bytes?\/s)/g, ' $1byte/s');
txt.value=txt.value.replace(/bytes?\/s(\W)/gi, 'byte/s$1');
// capitalization of prefix with bits and bytes
txt.value=txt.value.replace(/K(bit|B|byte)\/s/g, 'k$1/s');
txt.value=txt.value.replace(/m(bit|B|byte)\/s/g, 'M$1/s');
txt.value=txt.value.replace(/g(bit|B|byte)\/s/g, 'G$1/s');
txt.value=txt.value.replace(/t(bit|B|byte)\/s/g, 'T$1/s');
// space with bits and bytes
txt.value=txt.value.replace(/([^\w]\d)\s?(k|M|G|T)(bit|B)/g, '$1 $2$3');
//Remove surprise or 'Easter egg' diversions linking unit name to orders of magnitude articles
txt.value=txt.value.replace(/\[\[1\s?_?E\s?[\-\+]?\d{1,2}\s?..?\|([^\]]{1,50})\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Orders\sof\smagnitude\s\([^\)]{1,30}\)\|([^\]]{1,50})\]\]/gi, '$1');
//'present'
txt.value=txt.value.replace(/\[\[Present \(time\)\|(Present)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(Present)\]\]/gi, '$1');
//Season
txt.value=txt.value.replace(/\[\[(spring\s\(season\)|summer|winter|autumn)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[spring\s\(season\)\|(spring)\]\]/gi, '$1');
//Identify surprise or 'Easter egg' diversions linking months to year articles.
txt.value=txt.value.replace(/\[\[\d{1,4}#[^\|]{1,30}\|(January|February|March|April|May|June|July|August|September|October|November|December)\]\]/gi, '$1');
// months
txt.value=txt.value.replace(/\[\[\s?(January|February|March|April|May|June|July|August|September|October|November|December)\s?\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December)\|(January|February|March|April|May|June|July|August|September|October|November|December)\]\]/gi, '$1');
//Treat 'Sept' (i.e. month abbreviation) differently from 'sept' (i.e. family)
txt.value=txt.value.replace(/\[\[(Sept)\]\]/g, '$1');
txt.value=txt.value.replace(/\[\[January\|(Jan)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[February\|(Feb)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[March\|(Mar)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[April\|(Apr)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[May\|(May)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[June\|(Jun)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[July\|(Jul)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[August\|(Aug)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[September\|(Sep)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[October\|(Oct)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[November\|(Nov)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[December\|(Dec)\]\]/gi, '$1');
//month piped to number
txt.value=txt.value.replace(/\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December)\|(\d{1,4})\]\]/gi, '$1');
//Month+day_number "March 7th" -> "March 7"
txt.value=txt.value.replace(/\[\[(January|February|March|April|May|June|July|August|September|October|November|December) (\d?\d)(?:th|st|nd|rd)\]\]/gi, '\[\[$1 $2\]\]');
txt.value=txt.value.replace(/\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d?\d)\]\](?:th|st|nd|rd)/gi, '\[\[$1\]\]');
txt.value=txt.value.replace(/\[\[(\d?\d)(?:th|st|nd|rd) (January|February|March|April|May|June|July|August|September|October|November|December)\]\]/gi, '\[\[$1 $2\]\]');
//Month+day_number piped into number. Preferences do not work. They don't work in sequence because digits in the two dates must be adjacent
txt.value=txt.value.replace(/([^\[]{4})\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d?\d)\]\](\s?\-?\s?)\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with ndash or mdash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d?\d)\]\](\s?&[nm]dash;\s?)\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with slash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d?\d)\]\](\/)\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1$2$3$4');
txt.value=txt.value.replace(/([^\[]{4})\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d?\d)\]\](\s?\-?\s?)\[\[(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with ndash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d?\d)\]\](\s?&[nm]dash;\s?)\[\[(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with slash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d?\d)\]\](\/)\[\[(\d{1,2})\]\]/gi, '$1$2$3$4');
txt.value=txt.value.replace(/([^\[]{4})\[\[(\d?\d) (?:January|February|March|April|May|June|July|August|September|October|November|December)\]\](\s?\-?\s?)\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with ndash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[(\d?\d) (?:January|February|March|April|May|June|July|August|September|October|November|December)\]\](\s?&[nm]dash;\s?)\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with slash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[(\d?\d) (?:January|February|March|April|May|June|July|August|September|October|November|December)\]\](\/)\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1$2$3$4');
txt.value=txt.value.replace(/([^\[]{4})\[\[(\d?\d) (?:January|February|March|April|May|June|July|August|September|October|November|December)\]\](\s?\-?\s?)\[\[(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with ndash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[(\d?\d) (?:January|February|March|April|May|June|July|August|September|October|November|December)\]\](\s?&[nm]dash;\s?)\[\[(\d{1,2})\]\]/gi, '$1$2$3$4');
//same again but with slash instead of hyphen
txt.value=txt.value.replace(/([^\[]{4})\[\[(\d?\d) (?:January|February|March|April|May|June|July|August|September|October|November|December)\]\](\/)\[\[(\d{1,2})\]\]/gi, '$1$2$3$4');
txt.value=txt.value.replace(/\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[\d{1,2} (?:January|February|March|April|May|June|July|August|September|October|November|December)\|(\d{1,2})\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d{1,2}\|((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{1,2})\]\]/gi, '$1');
//month+day piped into month+day or vice versa
txt.value=txt.value.replace(/\[\[\d{1,2}\s(?:January|February|March|April|May|June|July|August|September|October|November|December)\|((?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d{1,2})\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d{1,2}\|(\d{1,2}\s(?:January|February|March|April|May|June|July|August|September|October|November|December))\]\]/gi, '$1');
// days of the week in full. Optional plurals
txt.value=txt.value.replace(/\[\[(Mondays?|Tuesdays?|Wednesdays?|Thursdays?|Fridays?|Saturdays?|Sundays?)\]\]/gi, '$1');
// days of the week abbreviated. Leave out 'Sun' as potentially valid link to the Sun. Leave out 'SAT' in upper case as potential link to 'Scholastic achievement/aptitude test'.
txt.value=txt.value.replace(/\[\[(Mon|Tue|Tues|Wed|Thu|Thur|Thurs|Fri)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[(Sat)\]\]/g, '$1');
txt.value=txt.value.replace(/\[\[Mondays?\|(Mondays?|Mon)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Tuesdays?\|(Tuesdays?|Tues?)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Wednesdays?\|(Wednesdays?|Wed)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Thursdays?\|(Thursdays?|Thur?)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Fridays?\|(Fridays?|Fri)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Saturdays?\|(Saturdays?|Sat)\]\]/gi, '$1');
txt.value=txt.value.replace(/\[\[Sundays?\|(Sundays?|Sun)\]\]/gi, '$1');
//4 digit years piped into 2
txt.value=txt.value.replace(/\[\[\d{1,4}\|(\d{1,2})\]\]/gi, '$1');
}
function run_dates() {
var txt = document.editform.wpTextbox1;
dates();
// Add a tag to the summary box
var txt = document.editform.wpSummary;
var summary = "Dates";
if (txt.value.indexOf(summary) == -1) {
if (txt.value.match(/[^\*\/\s][^\/\s]?\s*$/)) {
txt.value += " | ";
}
txt.value += summary;
}
// Press the diff button to check it
document.editform.wpDiff.click()
}
addOnloadHook(function () {
if(document.forms.editform) {
addLink('p-cactions', 'javascript:run_dates()', 'dates', 'ca-unitfixer', 'Fixes some unit formatting', '', '');
}
});
function run_formatgeneral() {
var txt = document.editform.wpTextbox1;
formatgeneral();
// Add a tag to the summary box
var txt = document.editform.wpSummary;
var summary = "Format per [[wp:mosnum]]; units and/or dates using this [[User:MJCdetroit/monobook.js|Script]]";
if (txt.value.indexOf(summary) == -1) {
if (txt.value.match(/[^\*\/\s][^\/\s]?\s*$/)) {
txt.value += " | ";
}
txt.value += summary;
}
// Press the diff button to check it
document.editform.wpDiff.click()
}
addOnloadHook(function () {
if(document.forms.editform) {
addLink('p-cactions', 'javascript:run_formatgeneral()', 'Units', 'ca-unitfixer', 'Fixes some unit formatting', '', '');
}
});
function combined() {
var txt = document.editform.wpTextbox1;
formatgeneral();
dates();
// Add a tag to the summary box
var txt = document.editform.wpSummary;
var summary = "Format per [[WP:MOSNUM]]; units and/or dates using this [[User:MJCdetroit/monobook.js|Script]]";
if (txt.value.indexOf(summary) == -1) {
if (txt.value.match(/[^\*\/\s][^\/\s]?\s*$/)) {
txt.value += " | ";
}
txt.value += summary;
}
// Press the diff button to check it
document.editform.wpDiff.click()
}
addOnloadHook(function () {
if(document.forms.editform) {
addLink('p-cactions', 'javascript:combined()', 'combined', 'ca-unitfixer', 'Fixes some unit formatting', '', '');
}
});
// Script from [[User:ais523/editcount.js]]
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=User:ais523/editcount.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
var c;
var vLetters=new Array('a--|ā','A--|Ā','u--|ū','U--|Ū','i--|ī','I--|Ī','r..|ṛ','l..|ḷ','L..|Ḷ','m..|ṃ','M..|Ṃ','h..|ḥ','H..|Ḥ',"S''|Ś","s''|ś",'s..|ṣ','S..|Ṣ','n..|ṇ','N..|Ṇ','n~~|ñ','N~~|Ñ','t..|ṭ','T..|Ṭ','d..|ḍ','D..|Ḍ','r.-|ṝ','R.-|Ṝ','L.-|Ḹ','l.-|ḹ');
var sLetters2='';
var mapLetters=[]; //a-- -> ā
var mapLetters2=[]; //ā -> a
for (c=0; c<vLetters.length; c++) {
var vLine=vLetters[c].split('|');
if (sLetters2 != '') { sLetters2=sLetters2+'|'; }
sLetters2=sLetters2+vLine[1];
mapLetters[vLine[0]]=vLine[1];
mapLetters2[vLine[1]]=vLine[0].substr(0,1);
}
var rxLetters2=new RegExp('('+sLetters2+')', "ig");
function remove_diacritics(str) {
str = str.replace(rxLetters2, function ($0, $1) { if (mapLetters2[$0]) { return mapLetters2[$0]; } else { return $0; } } );
return str;
}
function extract_last_word(str) {
var c;
var ch;
var word="";
for (c=str.length-1; c>=0; c--) {
ch=str.substr(c,1);
if ((ch>='a' && ch<='z') || (ch>='A' && ch<='Z') || (mapLetters2[ch]!=undefined)) { word=ch+word; } else { break; }
}
return new Array(str.substr(0,str.length-word.length), word);
}
function preserve_case(str,model) {
if (remove_diacritics(str.toLowerCase()) != remove_diacritics(model.toLowerCase())) { return str; }
var c;
var str2="";
for (c=0; c<str.length; c++) {
if (model.substr(c,1).toLowerCase()==model.substr(c,1)) {
//model is lower case
str2=str2+str.substr(c,1).toLowerCase();
}
else {
//model is upper case
str2=str2+str.substr(c,1).toUpperCase();
}
}
return str2;
}
function w(str) {
var vStr=str.split(',');
var c;
var vLine=[];
for(c=0; c<vStr.length; c++) {
vLine[0]=remove_diacritics(vStr[c]);
vLine[1]=vStr[c];
if (vLine[0].length<3) { continue; }
mapWords[vLine[0]]=vLine[1];
}
}
var mapWords=[];
w('śiva,brahmā,parameśvara,sadāśiva,mālinīvijaya,mudrā,dvādaśānta,prāṇa,viṣṇu,parāparā,vidyā,aparā,īśvara,kalā,mālinī,pāda,mātṛkā,yoginī,maheśvara,nāda,apāna,navātman,kuṇdalinī,svāhā,gaṇeśa,suṣumnā,rauravāgama,mātṛsadbhāva,śrīkaṇṭha,bhāvanā,vāmā,ratiśekhara,pīṭha,kālāgni,siddhānta,hrīm,sādhaka,śambhunātha,vīrabhadra,samanā,rāhu,mahādeva,kriyāpāda,śakti,viṣṇuiti,sāmkhya,vidyāpāda,vidyeśvara,puryaṣṭaka,māyico,kṣemarāja,anāśrita,tuṭi,sambhunātha,kālī,bhārata,vauṣaṭ,ratnamālātantra,īśāna,unmanā,piśāca,vaiśeṣika');
w('māyica,kallaṭa,brahmavidyā,ātman,vāsanā,trikasāra,pramā,nāga,jyeṣṭhā,ghaṭikā,aṭṭahāsa,nyāya,kuṇda,vīrāvalītantra,vāma,tantrasadbhāva,sivatanuśāstra,raudrī,piṇda,paśupati,hāṭaka,dāmara,dīkṣā,caṣaka,bṛhaspati,śākta,āsana,varuṇa,somānanda,sadyojāta,vyāpinī,vapāna,upādhi,tatpuruṣa,tathā,sārṇkhya,sādhya,sarasvatī,ratnamālā,purāṇa,prakṛti,piṇdanātha,niścaya,mālini,macchandanātha,lokāloka,kāmikāgama,kriyā,iśvara,bhīma,adhikāra,śabda,sāyujya,sālokya,suśiva,pātāla,mahākāla,ekavīra,devyāyāmala,brāhmī,śrāddha');
w('ānanda,vīrya,viṣṇuita,umāpati,sāṃkhya,svāyambhuvāgama,samādhi,samskāra,prayāga,pratibhā,pibanī,nādānta,mālinl,mādhavakula,kāmya,kuṣmāṇda,kuṇdagolaka,kumārikā,kiraṇāgama,kiraṇatantra,jvālinī,hazā,chummā,bhadrakālī,arthavāda,aghorā,āśvayuja,śāmbhava,vāyu,sāmīpya,nirṛti,kārttika,kāla,aghorī,āśrama,āṇava,śruta,śivatanuśāstra,ādhāra,yamunā,vīthī,vyāpin,viṣa,vitastā,vimarśa,vidyādhara,varṇa,uccāra,trikasadbhāva,tattvaprakāśa,sṛṣṭi,sukṣma,smṛti,samvitprakāśa,samsāra,sabdarāśi,rākṣasa,pītaa,prāk,praṇava,orsū');
w('niṣkala,mīmāṃsā,mālinlvijaya,manonmanī,kṛṣṇa,kāli,kumārila,kularatnamālā,koṭi,khagendranātha,iśāna,hrīh,guṇa,guruṇā,dhāraṇā,dakṣa,chāgāsya,camatkāra,bhūtirāja,bhīrava,anusamdhāna,ananteśvara,amaranātha,ahamkāra,śākinī,vaiṣṇavī,sāmānya,sthāṇu,srīkaṇṭha,puṣkara,prajāpati,paśu,mārgaśīrṣa,kālarātri,kumāra,kalpanā,jambūdvīpa,himālaya,gandhamādana,dhyāna,caṇda,śrīm,āpyāyana,śivaiti,ādhāraśakti,ṛcchati,śabdarāśi,yakṣa,vāmadeva,vāgīśvarī,vyāsa,vyavahāra,viṣṇuite,viśvam,viṣuvat,vedānta,vatsalikā,utkrānti,upaśobhā');
w('sārupya,surā,sarvavīratantra,sadbhāva,raktā,pāśupata,pāpam,puruṣṭuta,pratyāhāra,pratiṣṭhā,prasamkhyāna,pramāṇastotra,piṇdastha,nyāsa,niśācāratantra,nirācāra,māyā,māyici,māgha,meṣāsya,lakṣmī,lakṣmaṇagupta,kālāgnirudra,kālottaratantra,kālakarṣiṇī,krodheśa,kaṭi,karṇikā,karṇa,kanyā,kalanā,jayā,jayantī,janmādhāra,jambudvīpa,indhikā,icchā,hālā,hṛdaya,hemakuṭa,gṛha,ghurṇi,ghaṭamudrā,ghaṭa,ekaśiva,dhāman,dhenumudrā,dharmādharma,dharmaśiva,caryā,bhāvanā,bhāva,aśvinī,anātha,amarāvatī,akṛta,aindrī,aghoraśiva');
w('adhiṣṭheya,abhiṣikta,abhiṣeka,āṣādha,ānandaśāstra,ādiyāga,vṛddhi,vyomavyāpin,vetāla,uttaraphalgunī,sikhaṇdin,rājavarta,mīnanātha,mālyavat,mahātejas,kṛta,kulakuṇdalinī,ketumāla,kaṇāda,dhṛti,cāmuṇdā,cinmātra,chagalāṇda,bhadrāśva,amṛta,śālagrāma,āvāhana,āveśa,āvaraṇa,ātmā,śrāvaṇa,śrlkaṇṭha,śrinagar,śrikaṇṭha,śodhayet,āmrātakeśvara,āmalasāraka,āmalaka,śloka,īkṣaṇeśāna,śikhā,śikha,āgamica,āditya,ācārya,śambhu,śaiva,śabdarāśer,yānti,yāmyā,yāmala,yojanā,yojanikā,yogasamcāra,yogadhāriṇi,yataḥ,vṛṣabha,vṛtti');
w('vātman,vīreśa,vāmasrotas,vāmanadatta,vāgiśvarī,vācaspatimiśra,vyāpāra,vyāpti,vyāna,viṣāvarta,viṣṇuloka,viśvedeva,vināyaka,vimalā,vilāpana,vidyāpati,vidyāmūrti,vidyādhipati,vidyādhipa,vidyeśa,vibhāga,vedyatā,vaṭuka,varāha,varaṇā,varadevanātha,vajrapāṇi,vaiśeṣikasutra,vairāgya,uṣman,upapīṭha,upaniṣad,udāna,uddeśah,tādana,tuṣakambuka,triśulinī,tripiṇda,tenānande,tatrāpi,tasmāt,tanmātra,tadā,sāradā,sāmsiddhika,sākṣād,sākinī,svātantryāt,svātantrya,svatantreśa,sthāpana,sthāna,sthūla,sthuleśvara,srṣṭi,srikaṇṭha');
w('sravaṇa,spandakārikā,sivastotrāvalī,sitāmśumauli,siddhasādhani,sautrāmaṇī,sarṇvarta,sarvātmanā,sarvavidyādhipa,sandhyā,samāveśa,samtāna,samnidhāna,samhitā,saṃghaṭṭa,samcāra,sadāśive,rāvaṇa,rāpam,rāmakaṇṭha,rājapurī,rāga,rupeṇa,rudrāṇī,pāśātmakah,pāśupatasutra,pāṇi,pārvatī,pārameśvara,prāṇe,prāṇana,prāṇacāra,prātibha,prāptam,prakaṭatā,pradhāna,pitṛ,phālguna,paṭṭilla,parāmarśa,nādī,nādd,niśāṭanatantra,niṣadha,nivṛttih,nivṛtti,nirodhikā,nimeṣa,nihśvāsaśāsana,nihśvāsatantra,nidrā,nidhīśvara,narasiṃhagupta');
w('nairṛta,māyāpuram,māyiche,mātṛ,mātrsadbhāva,mṛtpiṇda,mūrti,māmsa,mākoṭa,māheśī,mṛgendrāgama,mwdrā,mulādhāra,mukuṭatantra,meṣanātha,marukośa,marudeśa,manusmṛti,mahāpreta,mahāphalam,mahādevi,mahābhāṣya,lokapāla,lalitāditya,lakṣmaṇa,lakṣaṇa,kāṭhinya,kāṇda,kṣurikā,kṣobha,kāmikatantra,kāmatattva,kāmarupa,kāll,kālikā,kālasamkarṣiṇī,kṣapaṇa,kṣamasva,kṣam,kuṇdalī,kurukṣetra,kumbhārikā,kuleśvarī,kuleśvari,kuleśvara,kubjikāmata,kheṭapāla,kheṭaka,karṣati,karaṇa,kalādhya,kalyāṇa,kalavikaraṇī,kadalī,jyeṣṭha,harṇsa');
w('guṇd,ghorā,ghoratarā,ghorarūpe,ghaṭṭana,gaṇe,gaṇdikā,gamaśāstra,gahaneśa,erudikā,dīpta,dīnāra,dānava,dīkṣottara,dvāra,dvīpa,dvadaśānta,durgā,dombī,dhāl,dhyānd,dharā,dhaniṣṭhā,daṇdapāṇi,darśana,dakṣiṇāvarta,cāmuṇdī,catuṣkala,caryāpāda,carvaṇā,candraśarman,bīja,bṛhaduttara,bādha,brāhmaṇa,brahmaśiras,brahmayāmala,bhīṣma,bhāvayati,bhāvah,bhutvā,bhutirāja,bhogālasa,bhaṭṭārikā,bhavabhūti,balavikaraṇī,bahukleśa,avadhāna,avabhāsa,asāv,arthakriyā,ardhanārīśvara,anāśritaśiva,anāyāsam,anārambham,anudhyā,amṛtabīja');
w('amśa,akṣara,agnīṣoma,agnīdhra,aghoreśa,adhyavasāya,adhiṣṭhitah,adhiṣṭhita,abhiṣecana,śivah,ācamana,vārāhī,vārendra,vikāritvād,vaṣaṭ,vartamāno,unmeṣa,ujjayinī,uddhāra,tiṣya,sāraśāstra,sāka,suddhavatī,sthaṇdila,samyamanī,sabīja,rauravavārttika,puṣṭi,purvaphalgunī,prāṇanā,pramāṇa,padmamudrā,nārada,nīla,māyottīrṇe,mādhava,mantreśvara,mantramaheśvara,manovatī,lakṣmi,lakulīśa,kāruka,kānti,kṣepa,kauśeya,karmasāmya,kailāsa,jāti,ilāvṛta,ilāvrta,hiraṇmaya,grāhya,dviraṇda,bādham,bhāratavarṣa,bhārabhuti,bhuvaneśa');
w('bhaṭṭa,bhairavī,asidhārā,ambikā,agniṣṭoma,śṛṇu,īśānāya,āśāntam,īśānaśiva,īśānamurdhāya,śāṇdilya,āṣādhin,āṣādhaj,śāstrita,śāstre,śāsanā,āśrayaparāvṛtti,āśraya,āśramasthāna,śārada,śāntātītā,śāntyatīta,śāntika,śāmyaty,śāmbhavopāya,śāmbhavd,śūlarṇ,śākuntalā,śāktarṇ,śāktam,śākinl,śīghra,śūdra,śīdhu,śīdau,āśayam,īṣat,āyuśā,āyudha,āyatanādz,āyatana,āxme,āvṛtitvena,āvāpa,āvartana,āvaha,śuṣkatarka,śuddhih,śubhāśubhāpekṣī,śubhāśubhopekṣī,ītva,ītsva,ītsv,ītsa,ātme,ātmaseka,ātmanā,ātmanirvṛta,ātmani,ātmamūrtaye');
w('ātmaga,ātmabhāvanā,īsva,ṣsono,ḥsgg,āsanavidhi,āsamudratah,āsakti,śrīśaila,śrāvaṇī,śrāvaṇaj,śrīparāmastake,śrīparā,śrīnāthapāda,śrīnātha,śrīnagare,śrīkaṇṭhin,śrīkaṇṭhanātha,āryā,āryapāda,śruti,śrutavidhih,śriśaila,śrinātha,ūrdhvagā,īraṇa,ārabhya,ārabdhakārya,ṣodhā,śodhya,ṣodhaiva,ṣodaśin,śobhā,śobhae,āntaratva,āntara,ānandatantra,ānandanātha,ānandamekhalā,āmṛśya,āmrṣṭa,āmrātikeśa,śmryum,āmarśana,āmardaka,āmarda,āmalakī,ślvaite,ślva,ākṛṣta,ākāśa,ākṛti,ākāra,ākrāmya,ākramaṇa,ākarṣa,śiṣṭa,śiṣyebhyah,śiṣya');
w('śivāya,śivāveśe,śivāvcśoper,śivātmako,śivātmakah,śivānanda,śivāgni,śivābhimānitā,śivopādhyāya,śivaśakti,śivatām,śivatā,śivatattvam,śivastotrāvalī,śivasadbhāva,īivara,śivapurāṇa,śivamurtio,śivaloka,śivadharmin,śivabindutaya,śivabhakti,śirase,śiras,śikhāgre,śikhoda,śikheśa,śihhā,āgneyīm,āgamam,śeṣavṛtti,śeṣa,īetj,ādīyate,ādāna,ādiyāgavuoi,ādiguru,ādhārakārikā,ādhyātmika,ādhipatyd,ādhipatya,ādheya,ādarśa,ādaeya,śatyabodhi,śarīram,śarva,śarabilla,śaktyuccārastha,śaktitā,śaktitattvam,śaktisamāveśa,śaktimaduccārād');
w('śaktihīna,śaktigarbha,śakticakram,śakra,śabda-,śabarabhāṣya,yāti,yāska,yāraata,yāmale,yājya,yāga,yugmatām,yugmarāpā,yuddhāra,yonibīja,yogīśī,yogīśvara,yogānanda,yogāmṛtam,yogācāra,yogābhiprāyatah,yogyatā,yoginīsono,yoginībhu,yogeśī,yogeśvarī,yogeśvaridatta,yogeśi,yogaśāstra,yogavidām,yogamudrā,yogacāratantra,yayā,yathāvastu,yapāna,yamakāli,yakṣī,wpādaz,wdāna,vīṇāsāra-,vāśvayujī,vāyugama,vāyor,vāyave,vāyau,vāyanti,vāvabhasate,vṛttibhāsane,vātsyāyana,vīthi,vītaī,vāsudeva,vāstuyāga,vārāṇasī,vīrāvalihṛdaya');
w('vīryd,vāruṇa,vīranāyaka,vīrabhairava,vāraa,vāpi,vīnā,vāmācārakrameṇa,vāmācāra,vāmeśvarī,vāmeśa,vāmaśāsana,vāmanātha,vāmanaka,vāmana,vāmadevī,vāmadevaguhyāya,vākya,vājapeya,vāgīśī,vāgīśvari,vāgiśvari,vādavāgni,vādarṇ,vācyd,vācyadaśā,vyāpīśa,vyāpārd,vyāptṛtā,vyāpinīe,vyānd,vyomarūpa,vyaūjana,vyavaaāra,vunmanā,viṣāvarte,viṣṇupurāṇa,viśvātmā,viśvāmitra,viśvākalanā,viśveśa,viśvavṛttayah,viśvatarpiṇī,viśvarupiṇī,viśvakāryāya,viśvakarman,viśvabodhi,viśva,viṣuvato,viṣuva,viśtcṣa,viśrāntim,viśrānti,viśrāntah');
w('viśodhayet,viṣnel,viśliṣta,viṣkambha,viśeṣo,viśeṣaś,viśeseṇa,viṣaya,viṣataltva,vivicyamānd,vitastāviṣṇu,visṛjya,visamvāda,virajā,vimśa,vimarśaśakti,vimalīkaraṇa,vimaleśvara,vimalatāraka,vimalaprabhā,vikṛtānanā,vikāsa,vikārd,vikāra,vijjambā,vighaṭate,vidyāmurti,vidvāranya,vidveṣaṇa,vidhiś,vidhivākya,vicārayet,vicāra,vicitranātha,vibhīṣaṇa,vibhāvayet,vibhāvayat,vibhītaka,vibhā,vibhvī,veṣṭayet,vettṛ,vedāntica,vedī,vedyasattā,vedreṃo,veditṛ,vedhaś,vcdikā,vaśīkaraṇa,vauṣat,vatjṣaṭ,vatirātra,vastupiṇda');
w('vastubhāsane,vastrāpada,varāhamihira,varāhagupta,varṇasamvid,varṇasamkhyā,varṣa,varuṇā,varuṇatantra,vartamānatah,varadamudrā,vapuṣmat,vamanī,vaktaṣṭi,vakradṛṣṭayah,vajriṇe,vajrasuā,vajrasucī,vajradharāya,vaiśākha,vaiṣṇavf,vaiṣṇava,vaiśya,vaiparītya,vailomyāt,vaicitryābhāsd,vaibhāṣika,vaibhrāja,vagniṣṭoma,vadhyamokṣe,vabhāvadī,uupakaṇṭha,uttarāṣādha,uttaraṣaṭka,utprekṣā,utpattisthānam,utpalavaiṣṇava,utkarṣa,urmiṇz,urdhvakuṇdalim,upāyatā,upāyah,upāya,upāsate,upāgatah,upādānd,upodghāṭa,upeyānyatvāt,upaśobha');
w('upavījitah,upakārasantāna,upajīvitah,upadvāra,upadiṣṭe,upacāra,unmārjana,unmīlint,unmāda,unmiṣita,unmiṣat,umāpuram,uktvā,ugreśa,udāravīrya,udāra,uddiyāna,uddhṛti,uddeśa,udbubhuṣu,udbhaṭa,udayapradhānam,uccāṭana,uccāraṇa,ucchuṣma,tūṣṇīmbhūta,tīrthayātrā,tāratamyatah,tāratamya,tṛpti,tāmravarṇa,tālapāṭha,tīkā,tādṛśa,tādrśam,tādrupyakrameṇa,tvām,tuṣṭi,tuṣa,trāṇa,troṇana,triśula,triśiromata,tristriguṇam,tripurāntaka,trimśa,trikuṭa,trikaśāsana,trikahṛdaya,triguṇī,tridhā,tridaśa,tribhedatā,tretāyuga,teṣu');
w('tejovatī,tejomālini,taṣya,tattvānīti,tattvarakṣaṇa,tattvapāragay,tatspandā,tatsamkhyāyām,tatromāyāh,tatprasādato,tatparāt,tataś,tataā,tatatvāt,tasyām,tarpayitvā,tanṭra,tantrāloka,tantrasāra,tannimittarṇ,tanmayībhāvita,tanmayabhāvatas,tamopahā,takṣaka,tadāpatti,tadyogāt,tadanyatvāt,sṛṣṭis,sṛṣṭikālī,sṛṣṭikrameṇa,sṛṣza,sāṃkhva,sāṇdilya,sāyujyatah,sāvitrikā,sāttvika,sūtra,sīthara,sārvātmya,sārtham,sāmānyātmaka,sāmānyaspanda,sāmānyarūpatā,sāmānyaper,sāmya,sāmuhya,sāmudāyika,sāmkalpika,sāmastyena,sīmantah');
w('sālmali,sāligrāma,sākṣāt,sākṣān,sūkṣmā,sāhṣāt,sīghra,sādākhya,sādhyāpekṣayā,sādhanaiva,sādhana,sādhakd,sācāra,szddhikāmasya,syād,swṣi,svāyambhuva,svātmanah,svātman,svātantryāttām,svātantryāttam,svātantryeṇa,svātantryaśaktī,svaśaktyā,svayarṇprathana,svayambhūṣṇu,svavṛtti,svaviśeṣa,svatī,svatantraś,svasvātantryeṇa,svasadṛggaṇe,svarṇākṣaka,svargakāmo,svapratiṣṭhāne,svaparāmarśa,svacittavāsana,suṣira,sutraṇayāpi,susūkṣmā,susukṣmikā,sureśvarī,supārśva,suprabhā,suprabhedāgama,sumāyuktaih,sukṣmā,sukṣmarupa');
w('sukṣmagṛha,suhṛṣṭa,sudīpta,stīkṣma,sthitināśakālī,sthilā,sthaṇdilādi,sthaleśvara,srīpīṭha,srīnātha,srīkaṇṭhanātha,srstikālī,srmātha,srlkaṇṭha,sriśrikaṇṭhī,sphāṭika,sphuṭopāyam,sphuṭasya,sphuṭa,sphuraṇa,sphoṭa,spandapradīpikā,spandamānatā,sopāna,smṛtam,smṣmmnā,smartavyāh,smaraṇe,skṛk,sivedasśp,sivaśakti,sivadṛṣṭi,sirṇha,sillāl,silbuṛn,sikhaṇdīśa,siddhātantra,siddhāmata,siddhayogīśv,siddhacāraṇa,shāhā,shsūauh,sevakādih,senānī,sekoddeśa,saṃvara,saṇipuṭīkṛti,savikāro,saukṣmya,saubhāgya,sattāmātra,sattā');
w('sasakhā,sarṛwit,sarṇvittattva,sarṇvarte,sarṇrambha,sarṇpuṭīkaraṇa,sarṇkalpa,sarṇjalpa,sarṛighaṭṭana,sarṇhitā,sarṇdhāna,sarṇdhi,sarvāyeta,sarvātmana,sarvātmakam,sarvārtha,sarvācārahṛdaya,sarvamantrāṇām,sapzasatrī,sanātma,santatatvāc,samāria,samāpatti,samāna,samāhita,samūha,samādhāya,samācāra,samvṛtyuparata,samvartās,samudāya,samudrād,samsārasadma,samsārabhasma,samsuptāmarśa,samstyāna,samsparśa,sampātasamskāra,sampātahoma,sampurṇagrahaṇa,sampaśyet,samnyāsin,samkṣiptatara,samkrāma,samkarṣiṇī,samkarṣaṇa');
w('samkarṣati,samjīvani,samhāram,samhārakālī,samhārakrameṇa,samhitayā,samdhāna,sambhāvya,sambhunāfha,samayaśuddhitah,samayatyāgādi,samayadīkṣā,samanvitāh,samantāt,sakāśāi,sakti-anāsrita,sakalīkaraṇa,saiṇghaṭṭa,saivaparibhāṣā,sahṛdaya,saguṇa,sadāśivatattvam,rāviṇī,rātrikulatantra,rātrikratu,rūpebhyah,rūpam,rāmagupta,rākṣa-,rājaputra,rājagṛha,rīipastha,rṣemarāja,rādhim,rṇandalico,ruruvārttiha,rupaṇād,rundhanī,rudrāṇl,rudrāmśa,rudrāhṣa,rudraśakxi,rudraśakti,rudrasakxivaśāx,rudrasaktivaśāt,rudrakoṭi,rudra-śiva');
w('rsjjhlkṣvyūhau,rshrṣryūm,rohiṇī,rodhikā,rodhanī,roddhrī,riddivivarjitān,ravaṇa,ravarupataś,rauravavārtika,ramyabhāva,raktākṣa,raktakāli,rabhasāt,pāśātmaka,pāśupatāstra,pāśupatya,pāśupatasīitra,pāśupatarṇ,pīṭhākhye,pāśava,pīṭaa,pāśa,pātālavaktra,pṛthide,pītha,pūrṇayā,pūrṇatayā,pūrṇa,pārvika,pārthasārathi,pāribhāṣikī,pāratīyakah,pārada,pāpāntakāriṇi,pāpavimohani,pūjyā,pādmasamhitā,puṇdarika,putrakadlkṣā,purṇasya,purṇagiri,puryākārah,purvāṣādha,purvāparādikā,purvāparādikah,purvatāviṣṭa,purvahāmika,puruṣa');
w('puroditā,puriṇāma,puraṇa-,purastīra,pumskṛteh,pumskṛte,pujānāma,pujyatā,prāṇāyāma,prāṇica,prāṇaśakti,prāṇavṛttī,prāṇavahā,prāṇasamā,prāyaṇīyaś,prāyaṇīya,prāyaścitta,prāsāda,prāpya,prāpanīyah,prāmāṇyd,prākāra,prākrta,prākkarmaikam,prācetasa,pronmukhīkṛta,prokṣaṇa,priyamelāpana,preryamāṇa,preraṇā,pravāha,pravikāsa,praviceṣṭitam,praveśa,pravareśvara,pravakṣyāmi,pratīti,pratyātmakam,pratyāhārd,pratyayadīkṣā,pratiśrutka,prativāraṇī,pratisamdhāna,prathitāyām,prasīdati,prasāda,prasphuṭa,prasarṇkhyāna,prasannadhī');
w('pramātṛtā,pralayākala,prakāśate,prakāśarṇ,prakāśamānatā,prakāśam,prakāśacakra,prakriyā,prakaraṇa,prahvībhāva,pradhānam,pracaṇdadhṛt,pracaṇda,prabodhakabalāt,prabhākara,prabhaūjanas,poṣaṇaper,pmrāha,plṭha,piśāci,piṭhākhyam,piṇdita,piṇdamantra,pitṛvana,pitāmaha,paṇāyate,paṭṭikārāpā,paśwbandha,paśupāśapati,paśpaśāhnika,paśor,paścāt,pauṇdravardhana,paurṇamāsa,pauruṣa,patyaṣṭakam,parāvaha,parātrīśikā,parātrlśikā,parātrimśikā,parāmṛta,parām,parābīja,paropaniṣad,paroditā,paretāsu,paraḥ,paramārśatva,paramārthena');
w('paramārthatah,paramārthasāra,paramārkakālī,paramīkṛti,parameśl,paramaśiva,padmākṣa,padmapurāṇa,padapiṇda,omkāreśa,ojodhātu,nāsatyam,nārāyaṇakaṇṭha,nārāyaṇa,nārāyana,nāropā,nāmāni,nīlepīte,nīlarakta,nākhala,nāgadvīpa,nādāmarśa,nādikā,nādi,nābhi,nyāyasutra,nyāsah,nyunādhikyādi,nyasyā,nuttīrṇa,niśākulatantra,niṣkald,niśisarṇcāra,niścita,nityātantra,nityāt,nityā,nirīkṣaṇa,nirṇaya,nirvāpaṇa,nirvartyā,nirmṛṣṭasattvam,nirmṛṣṭam,nirmaubhāva,niravaśeṣān,nimittasaptamī,nikāya,nijātmanā,nihśvāsakārikā,nihśvāsa');
w('netratrayāya,naṣṭasmṛtih,navātmavaktrāya,navātmamūrdhāya,navātmabhairava,navayāge,nandā,namaskāra,nakṣatrāṇī,nakuleśa,naiṣa,naimiṣa,naimittikī,māziza,māyātattvam,māyāpurī,māyāpura,māyābila,māvica,mātṛṣu,mātṛsadbhāvd,mātṛnandā,mṛtyukālī,mṛtyuhantṛ,mātrā,mātrkā,mātr,māsee,māruteśvara,māruteśa,mūrtidi,mārtaṇdakāli,mārkaṇda,mūrdhan,māraṇa,mānuṣeṣv,māntrarṇ,mālinīsāra,mālinīmantra,mālinya,mūlam,mīirtimantra,māheśl,mṛgamudrā,mṛgamudra,mādhyasthya,mādhyamika,mādhurya,mumukṣu,mulasūtra,mukuṭa,muktāṇu,muktātman');
w('muktāh,muktvā,mukhyatayā,muhūrta,mudrikā,moṭaka,mokṣanātha,mocikā,mlmārnsā,mlecchadeśa,minanātha,mimārṇsā,mfgendrāgama,melāpasthāna,melāpa,mekhalā,medhātithi,maṭhikā,maṇdalikā,maṇdalico,maṇdaleśāna,maṇdaleśvara,matsyendranātha,mataśāstra,martyā,manuṣyatām,mantrārtha,mantrāh,mantravārttika,mantramahānāthe,manoyāga,malanivarhaṇam,maināka,mahāvyāpti,mahāvaha,mahāsāhasa,mahāsiddha,mahārciṣi,mahāparivaha,mahāpadma,mahālaya,mahālacchī,mahākāśa,mahākrodha,mahākośa,mahākala,mahāhāṭakeśvari,mahāhāxakeśvari');
w('mahābhārata,mahābhairava,mahābhadra,mahā,mahodayā,maheśī,mahakalakalī,mahadālaye,mahadāhvaye,mahabhārata,madhyāpekṣayā,madhyadeśa,maaā,līlākāra,lākula,lāhulā,lolībhuta,lolikā,lokāyata,lokavyavahāra,lokadharmiṇī,layāvasthā,layākalāt,layaśiva,layamudrā,laukikī,lakṣyate,lakṣya,lakṣmītantra,lakṣmitantra,lakṣaṇd,lakulīśvara,lakuleśa,lajnānaśakti,kṛśā,kāśyapa,kṣīrikā,kṣīraka,kāśikā,kṛśa,kāyapīṭha,kṣvīm,kṣubhyati,kṛtānta,kātakuṭa,kṛt-,kāryāya,kūrmanātha,kūrmanatha,kārkoṭa,kāraṇāgama,kāraṇeśvara,kāraṇeśa');
w('kṣrah,kṣom,kṣobhiṇī,kṣobhayati,kṣobhaka,kāntatā,kāmiha,kāmanātha,kālāvekṣā,kālāntakā,kālānala,kālīmukhatantra,kṣlām,kālīkula,kālpanika,kāllkulatantra,kālikulatantra,kālidāsa,kāleśa,kālasaṃkarṣiṇl,kālasamkarṣiṇi,kālarudra,kālamāhātmya,kālakarṣiṇl,kālakarsiṇī,kālakarsini,kālajaṃharṣiṇī,kālah,kālagrāsa,kṣetrapāla,kṣetra,kṣemeśa,kṣemendra,kṣema,kṛcchra,kṣaṇa,kṣayāntastha,kṣayānta,kṣamyatām,kuṇdalirii,kuṇdalinīsi,kuṇdalinl,kuryāt,kuntī,kumārī,kulūtā,kulūta,kulāta,kulādri,kulutā,kullālambā,kulaputtalikā');
w('kulamūla,kudyākeśī,kuberāya,krśa,kroṣṭukī,krośamātreṇa,krodheśvara,kriyāvaicitrya,kriyāpada,kramāt,kramān,kramaśas,kramasadbhāva,koṇa,klīm,kleśa,kiraṇa,kimpuruṣa,khecarīmudrā,khecarī,khaṇdd,kerīkuntala,kedāra,kaṇṭhyoṣṭhya,kaṇṭhyosṭhya,kaṇṭhyauṣṭhya,kaṇṭho,kaṇṭha,kaśeru,kavacāya,kaumārī,kaumāri,kaumāra,kaulinī,katharṇ,karīcuka,kartṛtvd,karpāsa,karaṇd,karaṇam,kapāuśa,kapāla,kampamāna,kamalaśila,kalāvehṣā,kalām,kallaṭanātha,kalhaṇa,kalanāt,kaikavīreśa,jūānapravāha,jūāna,jīvita,jīvena,jīvarṇ,jīvanmukta');
w('jīvana,jīva,jātyāyus,jātakarman,jānu,jīmūta,jṛmbhita,jūapti,jyotsnāvatī,jyotsnā,jyotiṣmat,jyotiṣkaśikhara,jyotiṣka,jyesthā,jatī,jatruśabdenātra,janmasthāna,jandhamaṇdala,jananāśaka,jambūdvipa,jalpeśa,jadābhāsa,iśānaf,iṣyamāṇa,iśvaratattvam,iśgdp,itarṇ,ipāśasutrd,indū,indrāya,indrajāla,indradvīpa,indhananiveśana,ilprānae,illāīambā,illātambā,ihāpi,icchāśaktie,icchāyā,icchāmi,hāzaharṣiṇt,hūme,hāma,hālāhalarudra,hīlanam,hāla,hāhārāvā,hṣetrapati,hṛdayāya,hṛdayādy,hṛdayād,hṛdayahārin,hwśa,huṇdalinī,hurṇ');
w('humphaṭ,hsvyūm,hrdādāv,hkṣjah,hiraṇyapāda,hiraṇyapura,himālayana,hidā,hevaztbhāva,hetwvāda,hetutadvattayā,haṭhāt,haṭhatah,haṭakeśvara,haṭaka,hayānanā,hayagrīva,harīndu,halā,gāṇeśa,gāṇapatya,gāndharva,gṛhastha,gāhanika,gṛh-,gurudarśand,guhāyām,guhā,guhyāṣṭakam,gudikānātha,grāsa,grāmyadharma,grahaṇa,gokarṇaka,gokarṇa,ghṛteśa,ghūrṇi,ghurṇita,ghurmā,ghoṣaṇī,ghoratarebhyaś,ghoramukhī,ghaṭa-mudrā,ghanatā,gaṇesāya,gaṇdakī,gaurī,gargikā,garbhāvaraṇa,ganeśa,gandhavatī,gambhīrā,gamaśāsana,gahaneśvara,gadā,eruṇā');
w('elāpurī,elāpura,ekāgra,ekībhāva,ekavīraka,ekavirā,ekatattvāntā,edābhī,dṛśyam,dṛśya,dātṛ,dīrghā,dārdhya,dīpikā,dīpakd,dāne,dānapati,dāmarayāga,dīkṣādāv,dīkṣohtam,dīhṣāpaṭala,dīhsottara,dvāsaśānta,dvāraśobhā,dvāravṛtti,dvāravatī,dvārasandhih,dvādaśaiva,dvaravṛtti,dutī,duraṇda,drṣṭi,drāvayanti,droṇa,draṣṭṛtvd,dravyāin,dravyatvāc,diṛnora,diksamuddeśa,dhīvara,dhātupāṭha,dhātu,dhārya,dhārikā,dhāraṇīm,dhūmra,dhupaghaṇṭā,dhruvā,dhruveśa,dhavatā,dharāyai,dharmanātha,dharmakīrti,deśādhvan,deśvpadeśa,devīkoṭṭa');
w('devīhoṭṭa,devyabhidhā,deveśa,deljambudvīpa,deheśvara,deheśa,dehanīlādīnām,daśāyām,daśeśāna,daśeśa,daśa,darśa,damanī,damaneśa,dakṣiṇapīṭha,daiśika,cāturmāsya,cātra,cāprakāśyam,cāndrāyaṇa,cākurvan,cābhādhitah,cābh,codanāstra,codanā,cittaviśrānti,cittacamatkṛti,citranātha,citrabhānu,cinnātha,cinmātre,cidātmatā,cidaṇu,chāndogya,chummikā,chommā,chagalāṇdaka,cetasā,caṇdāmśu,caṇdikā,catuṣpatha,catuṣkikā,caryākulatantra,cargikā,camaikāra,cakṣuṣah,cakriṇyādyāś,cakrihādyāś,cakravāṭa,cakrasaṇwara,caitrī,bṛāu');
w('bāhya,bṛhatsukha,bṛhatsamhitā,buddhitā,buddhasthāna,bubhukṣu,brāhmā,brāhma,brahmaṇeśa,brahmacārin,bodhāī,bodhaś,biṇdu,bilhaṇa,bhāvyavastu,bhāvd,bhāvavikāra,bhāvatah,bhāvanāmaya,bhāvanābhāvita,bhāvanayā,bhāvam,bhāskara,bhāsate,bhāsanopāya,bhārgava,bhāni,bhṛnel,bhīmeśvara,bhīmamudrā,bhādrapada,bhutādī,bhutiśakti,bhuteśa,bhrātāpi,bhramaṇavedhena,bhogāvasthā,bhogeṣu,bhogaśiva,bhlṣaṇa,bhiṣma,bhinnā,bhikṣāsthāna,bhedābheda,bhedanakrameṇa,bhedadaśāyām,bhaṭṭanātha,bhavābhava,bhaveśāna,bhavadoṣa,bhauteśa,bhartāpi');
w('bhairavākṛteh,bhairavākṛte,bhairavāgama,bhairavagāme,bhadrā,bhadrakāli,bazāt,bandimokṣe,bandhuṣu,balātkārāt,balāt,balāhaka,balādhyakṣa,balavattādhāna,balapramathinī,balapramathanī,badarī,badarikāśrama,aṣṭau,aīyate,aśvin,aśvattha,aśvamedha,aṇuplava,aśoka,aśnute,aṇiman,ayākalāh,ayugmarupā,ayatnāt,avāstavatva,aviśeṣa,avimukteśa,avibhāga,avatāra,avaszwtā,avasthā,avairāgyd,avaguṇṭhana,avagamātmakam,aupāyikamo,audāsīnya,atyantābhāva,atyagniṣṭoma,atiśayena,atimārga,athavā,asādhya,asyāh,astrāya,astamitāparam');
w('astamitā,asphuṭasya,aruṇodaka,arthanātha,arthakāritva,ardhapīṭha,ardhaplṭha,ardhanāri,ardhajaratīya,apānanā,aptoryāma,aprathā,apavāda,aparāz,apararṇ,aparamekhalā,apamārga,apabhramśa,anāśritas,anāśraya,anārabdhakārya,anāmaka,anāma,anākuld,anākhya,anāhatadhvani,anāhata,anādibodha,anācchādita,anyopāya,anyaś,anyataraś,anyaiśper,anxarāxme,anuvāda,anuttaranātha,anusarṇdhānavat,anusarṇdhi,anupāyam,anunmudritākāra,anugṛh-,anugṛh,antyeṣṭi,antaścarantīm,antarātman,antaravedinīm,antahkṛti,anityeṣu,anirdeśya');
w('aniccā,anarṇśa,anantamekhalā,anantakārikā,anaiśvaryam,amāvāsyā,amṛtā,amṛte,amareśa,amanuṣyatārn,akṛtātman,akāma,akṣa,akhaṇditam,akhaṇdamaṇdala,akamkāra,ajitāgama,ajeśa,ajaramekhalā,aiṣṭika,aiśvaryam,aiśvarya,aiśvaro,aikātmyena,ahṛtrima,ahnī,ahaṇ,ahamparāmarśa,agrakoṭau,agrahāyaṇī,agnyādheya,agniṣomasanālma,agnisnāna,agmṣoma,afaḥ,adṛṣṭāmśa,adhyātma,adhyāsa,adhyāropa,adhyavasāyinī,adhvarnaṇlam,adhvamaṇdatam,adhiṣṭhātṛ,adhiṣṭhātf,adhiṣṭhāna,adhiṣṭhiteh,adhiṣlhita,adhivāsa,adhikārāvasthā,adhikārd,adhikāraśiva');
w('adhikriyā,adhastāt,adavī,abhāvd,abhīpsitāyām,abhyāsa,abhyukṣaṇa,abhidhā,abhayamudrā,śaivism,vivaraṇa,parā-trīśikā,kaśmir,pratyabhijñā,aṇḍa,ahaṃkāra,prakāśa,pṛithvī,jñāna,kañcukas,śāstra,pāyu,kuṇḍalinī,śuddha,śaktipāt,spanda-kārikās,parāvāk,pāni,mahābhūtas,kārikā,vaikharī,stavacintāmaṇi,pratyabhijña,śiva-śakti,tanmātras,sparśa,paramārtasra,madhyamā,kārma,kañcuka,antaḥkaraṇa,ambā,śivopaniṣad,śivasūtra,āgama,vimarśinī,vijñāna,upāyaḥ,rūpa,pṛthvī,paśiantī,nāṭyaśāstra,māyīya,kṣemaraja,jñānendriyas,jnānam');
w('dūtī,bandhaḥ,ahaṃ,abhinavabhāratī,śāktopāya,āṇavopāya,āṇavamala,śuddha-vidyā,śrīpūrvaśāstra,śrotra,śrota,śrikanthanath,ānava,ānandavardhana,ākāśic,śivarahasyagama,śivadṛṣṭi,śiddhānta,āgamas,ābhāsana,ābhāsa,ṣaḍādhvān,śañkara,śambhunatha,śaktipāta,śakticalana,śaivists,yoginībhū,yoginī-vaktra,yogeśvar,vākyapadīya,vyāpakatva,viśuddha,vimarśana,vimalakalā,vijñānabhairava,vijñana,vatasikā,vaiṣṇavas,upāyas,ullāsa,tīvra,triśūlābija,sūtras,sāmarasya,suṣupti,sphurattā,saṃskāras,saṃskāra,saṃkoca,saṃhāra,saṃhara');
w('sarvakartṛtva,sarvajñatva,saivāgama,rāmadeva,rudrayāmala,rasanā,pṛthivi,pāta,pūrṇatva,pūrvatantra,pūrvapañcikā,puryaṣtaka,prakāśa-vimarśa,paśyanti,parātrika,parāpara,parā-śakti,parā-prāvesikā,parā-aparā,parā,paramārthacarcā,nātha,mṛgendra,mulā,mokṣa,maṇḍalam,matravīrya,mahābhūta,mahābhutā,madhurāja,lakṣmasṇagupta,laghvī,kārikās,kāra,kailaśa,jāgrat,jñānārṇava,jñānendriya,jñānana,ichhā,hṛdayam,heart-bīja,haridāsa,ghrāṇa,ghaṭakarpara,dṛṣṭi,dhvanyāloka,cit-ānanda,cidānanda,cakṣu,bījāvasthapāna,brahmāṇḍa');
w('bhedābhedopāya,bhaṭṭācāryya,bhartṛhari,bhagavadgītā,aśvini,aśuddha-vidyā,avidyā,asphuṭa,anuttarāṣṭikā,anupāya,ahaṃkara');
function keyHandler1(event)
{
if (event.keyCode == 32) {
var tb = document.editform.wpTextbox1;
var text = tb.value; //get the text from the textarea
var sel1 = tb.selectionStart; //memorize selection
var sel2 = tb.selectionEnd;
var scroll = tb.scrollTop; //memorize scroll position
var text1=text.substring(0,sel1); //text form beginning to cursor
var text2=text.substring(sel1); //text form cursor to the end
var vText1=extract_last_word(text1); // a list containing the last word and the text preceding it
var vt1=vText1[1].toLowerCase();
if (mapWords[vt1]!=undefined) { vText1[1]=preserve_case(mapWords[vt1],vText1[1]); } //map the word translation, using substr instead of regex for better speed, especially with large dictionaries
text1=vText1[0]+vText1[1];
text = text1 + text2;
if (tb.value != text) {
tb.value = text;
tb.setSelectionRange(sel1,sel2); //restore cursor position
tb.scrollTop = scroll; //restore scroll
}
}
}
function keyHandler2(event)
{
var tb = document.editform.wpTextbox1;
var text = tb.value;
var sel1 = tb.selectionStart;
var sel2 = tb.selectionEnd;
var scroll = tb.scrollTop;
var text1=text.substring(0,sel1);
var text2=text.substring(sel1);
if (text1.length<3) { return; }
var text1a=text1.substr(0,text1.length-3);
var text1b=text1.substr(text1.length-3,3);
if (mapLetters[text1b]!=undefined) { text1b=mapLetters[text1b]; } //map the letter, using substr instead of regex for better speed, especially with large dictionaries
sel1=sel1-2; sel2=sel2-2;
text1=text1a+text1b;
text = text1 + text2;
if (tb.value != text) {
tb.value = text;
tb.setSelectionRange(sel1,sel2);
tb.scrollTop = scroll;
}
}
document.onkeydown = keyHandler1;
document.onkeyup = keyHandler2;
// [[User:Henrik/afc-helper]]
importScript('User:Henrik/js/afc-helper.js');
importScript('User:Ale_jrb/Scripts/userhist.js'); //[[User:Ale_jrb/Scripts]]
importScript('User:Ale_jrb/Scripts/statusCheck.js'); //[[User:Ale_jrb/Scripts]]
importScript('User:Topaz/statuschanger.js');
// [[User:Lupin/popups.js]]
importScript('User:Lupin/popups.js');
//Ameliorating vandalism. Naught to do with the Belgian municipality.
//TODO: combine addRollback and addRestore into one function
// use WikiTitle throughout the script
// add history visualization to get around IE prompt "security" issue
AmelPrefs = {
data: {},
set: function(name, value) {
return this.data[name] = value;
},
get: function(name, alternate) {
return this.contains(name) ? this.data[name] : alternate;
},
contains: function(name) {
return (typeof this.data[name] != "undefined");
}
};
if(typeof(AmelPrefs.data["summarySuffix"]) == "undefined") AmelPrefs.set("summarySuffix", "");
if(typeof(AmelPrefs.data["watchReversion"]) == "undefined") AmelPrefs.set("watchReversion", false);
//combine these into one function.
function addRollback() {
if(document.getElementById("mw-diff-ntitle1").getElementsByTagName("a")[0].firstChild.nodeValue.indexOf("Current revision") == -1) return;
var roll = document.createElement("input");
roll.type = "button";
roll.onclick = AmelUtil.diffRollback(document);
roll.value = "Rollback";
getElementsByClassName(document, "td", "diff-otitle")[0].appendChild(roll);
}
function addRestore() {
var rest = document.createElement("input")
rest.type = "button";
rest.onclick = AmelUtil.diffRestore(document);
rest.value = "Restore revision";
getElementsByClassName(document, "td", "diff-otitle")[0].appendChild(rest);
}
function AdminRollback(url) {
if (!url || this == window)
return; //no title given, or "new" keyword not used
this.url = url;
try {
this.userFrom = decodeURIComponent(url.match(/[&?]from=([^&]*)/)[1]).replace(/_/g, " ");
this.title = url.match(/[&?]title=([^&]*)/)[1];
} catch (e) {
return; //error in parsing link; not correct
}
this.init();
}
AdminRollback.prototype.init = function() {
var me = this;
AmelUtil.colorStatus("#EFE");
var req = new XMLHttpRequest();
req.open("HEAD", this.url, true);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
AmelUtil.colorStatus("#EEF");
new WikiEdit(me.title).getHistory(function(obj){showHistory(me.title, obj)});
}
};
req.send(null);
new Warning(this.title, this.userFrom);
}
function Rollback(title, revFrom, userFrom) {
if (!title || this == window)
return; //no title given, or "new" keyword not used
this.title = title; //in encoded form
this.from = { "revid" : revFrom || undefined, "user" : userFrom || undefined };
this.revTo = undefined;
this.revnum = 0;
this.editor = new WikiEdit(title, this);
this.init();
}
Rollback.prototype.init = function () {
AmelUtil.colorStatus("#FEE");
this.editor.downloadEditFormData();
this.editor.getHistory(this.parseHistory);
}
Rollback.prototype.parseHistory = function(history) {
AmelUtil.colorStatus("#FFE");
if (!history || !history[0]) {
alert("Error retriving page history"); //go modal boxes!
return;
}
this.editor.setTimes(AmelUtil.isoToNumerical(history[0]["timestamp"]));
//some situations the reverter should check out
var cautionMode = undefined;
if (this.from.revid) {
if (history[0]["revid"] == this.from.revid)
this.from.user = history[0]["user"]; //just in case it's not defined
else
cautionMode = "The revision amelvand was told to revert from is not the most recent one.";
}
else if (this.from.user && this.from.user != history[0]["user"])
cautionMode = "The user amelvand was told to revert from is not the most recent editor of the article.";
else
cautionMode = "Neither a revision nor a user was received, so just making sure that we really want to revert.";
i = 0;
if (cautionMode) {
j = [];
var min = Math.min(history.length, 8);
for (i = 0; i < min; i++) //add summary?
j[i] = i + ". " + history[i]["user"] + (history[i]["revid"] == this.from.revid ? " (original)" : "");
i = prompt(j.join("\n") + "\n\nCaution mode enabled. Reason: " + cautionMode + "\n\nFrom which revision do you wish to revert?", "0"); //moar options!
if (isNaN(parseInt(i))) return;
this.revid = history[i][0];
this.user = history[i][1];
}
//cautionModeBox(cautionMode, history); } else {
this.revnum = i;
while (this.revnum < history.length && history[this.revnum]["user"] == this.from.user) {
this.revnum++;
}
if (this.revnum - i != 1) {
if(!confirm("Rollback " + (this.revnum - i) + " edits by " + this.from.user + "?")) {
j = prompt("Then rollback how many edits?", "1")
if (isNaN(parseInt(j)))
return;
else
this.revnum = j;
}
}
if (this.revnum < history.length) {
this.revTo = history[this.revnum]["revid"];
this.commit();
}
else
alert("Last revision not by user not found.");
}
Rollback.prototype.commit = function() {
new Warning(this.title, this.from.user);
var editSum = "Reverted " + AmelUtil.plural(this.revnum, "edit", "edits") + " by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]])".replace(/\$2/g, this.from.user) + " to last revision by $1"; //$1 is assigned by RestoreRevision
new RestoreRevision(this.title, this.revTo, this.editor, editSum)
};
function RestoreRevision(title, revTo, editor, editSum) {
if (!title || !revTo || this == window)
return;
AmelUtil.colorStatus("#EFE");
this.title = title;
this.revTo = revTo;
this.editSum = editSum || "Restored revision " + this.revTo + " by [[Special:Contributions/$1|$1]]"; //$1 is assigned by commit(obj)
if (!editor) {
editor = new WikiEdit(title);
editor.downloadEditFormData();
editor.getHistory(function(obj) {
editor.setTimes(AmelUtil.isoToNumerical(obj["timestamp"]));
}, 1);
}
editor.setParent(this);
this.editor = editor;
this.init();
}
RestoreRevision.prototype.init = function() {
this.editor.getText(this.commit, this.revTo);
}
RestoreRevision.prototype.commit = function(obj) {
if (!obj) return;
var text = obj["*"];
if (!text && text != "") return;
this.editSum = this.editSum.replace(/\$1/g, obj["user"]) + AmelPrefs.get("summarySuffix", "");
var editor = this.editor; //short-hand reference
var title = this.title;
editor.setMinor(false);
editor.setWatch(AmelPrefs.get("watchReversion", false));
editor.setCallback(function() {
AmelUtil.colorStatus("#EEF");
editor.getHistory(function(obj){showHistory(title, obj)});
});
editor.setText(text);
editor.setSummary(this.editSum);
editor.submit();
}
//---------------------------------
//@Private
function WikiTitle(displayTitle, urlTitle) {
this.displayTitle = displayTitle;
this.urlTitle = urlTitle;
}
WikiTitle.fromURL = function(url, param) {
var urlmatch = (!param && /\/wiki\/(.*)/.exec(url)) ||
new RegExp("[?&]" + (param || "title") + "=([^&]*)").exec(url);
if (urlmatch)
return WikiEdit.fromEncoded(urlmatch[1]);
}
WikiTitle.fromEncoded = function(encoded) {
return new WikiTitle(decodeURIComponent(encoded).replace(/_/g, " "),
encoded);
}
WikiTitle.fromDisplay = function(display) {
return new WikiTitle(display,
encodeURIComponent(display.replace(/ /g, "_")));
}
//accessors
WikiTitle.prototype = {
toEncoded : function() {
return this.urlTitle;
},
toIndexUrl : function() {
return wgServer + wgScript + "?title=" + this.urlTitle;
},
toApiUrl : function() {
return wgServer + wgScriptPath + "/api.php?titles=" + this.urlTitle;
},
toString : function() {
return this.displayTitle;
}
};
function Warning(title, user) {
if (!title || !user || this == window)
return;
var me = this;
this.user = user;
title = WikiTitle.fromEncoded(title);
this.title = title;
var warnTitle = WikiTitle.fromDisplay("User talk:" + user),
aivTitle = WikiTitle.fromDisplay("Wikipedia:Administrator intervention against vandalism");
this.data = new Object();
this.data[Warning.WARN] = {
"title": warnTitle,
"editor": new WikiEdit(warnTitle, me),
"summary": "Note: edits on [[" + title + "]]",
"savedtext": undefined,
"addtext": undefined,
"infotext": "",
"button": "Report to AIV",
"init": Warning.warnInit,
"editpage": title
};
this.data[Warning.AIV] = {
"title": aivTitle,
"editor": new WikiEdit(aivTitle, me),
"summary": "Reporting [[Special:Contributions/$1|$1]]".replace(/\$1/g, user),
"savedtext": undefined,
"addtext": "*{{" + (AmelUtil.isIP(user) ? "IPvandal" : "Userlinks") + "|" + user + "}} vandalism past last warning ~~" + "~~",
"infotext": "Reporting " + user + ". ",
"button": "Warn User",
"init": Warning.aivInit,
"regex": new RegExp(user + "\\}\\}") //basic sensing mechanism
};
this.mode = Warning.NONE;
//initialize GUI. no "live" elements have innerHTML changed.
var warnDiv = document.createElement("div");
warnDiv.innerHTML = '<strong id="warnPage"></strong> <span id="warnInfo"></span><br /><textarea rows="10" name="warnBox" id="warnBox"> </textarea><br /><input type="text" value="" id="warnSum" size="30" onkeypress="if (event.which == 13) warning.submit();" /> <input type="button" value="Submit" id="warnSubmit" /> <input type="button" value="" id="warnSwitch" />';
var jumpToNav = document.getElementById("jump-to-nav");
if (!jumpToNav) return false;
jumpToNav.parentNode.insertBefore(warnDiv, jumpToNav);
this.gui = {
"warnBox": document.getElementById("warnBox"),
"warnPage": document.getElementById("warnPage"),
"warnInfo": document.getElementById("warnInfo"),
"warnSwitch": document.getElementById("warnSwitch"),
"warnSubmit": document.getElementById("warnSubmit"),
"warnSum": document.getElementById("warnSum")
}
this.gui["warnBox"].value = "";
this.gui["warnPage"].appendChild(document.createTextNode(""));
this.gui["warnInfo"].appendChild(document.createTextNode(""));
this.gui["warnSwitch"].onclick = function() {me.setNextMode();};
this.gui["warnSubmit"].onclick = function() {me.submit();};
this.setNextMode();
}
Warning.NONE = ["NONE"];
Warning.WARN = ["WARN"];
Warning.AIV = ["AIV"];
Warning.warnInit = function(text) {
this.savedtext = text;
var parser = new WarningsParser(text);
if (parser.report())
this.infotext += "NOTE! User is past last warning. ";
var now = new Date();
var warnDate = parser.previousDate();
var secElapsed = Math.ceil((now.getTime() - warnDate.getTime()) / 1000);
if (secElapsed < 0) secElapsed += 3600; //an hour. voodoo programming!
if (secElapsed < 600) { //ten minutes
var minElapsed = Math.floor(secElapsed / 60);
this.infotext += "Latest warning was left " + (minElapsed == 0 ? "" : AmelUtil.plural(minElapsed, "minute", "minutes") + " and ") + AmelUtil.plural(secElapsed % 60, "second", "seconds") + " ago. ";
}//12
var headers = parser.getHeaders(), prefixHeader = "";
if (!headers.warning || (headers.warning && headers.page) || (headers.warning && (now.getMonth() != warnDate.getMonth() || now.getFullYear() != warnDate.getFullYear())))
prefixHeader = "== " + AmelUtil.monthNames[now.getUTCMonth()] + " " + now.getUTCFullYear() + " ==\n";
this.savedtext += (/^\s*$/.test(this.savedtext) ? "" : "\n\n") +
(this.addtext = prefixHeader + "{{subst:uw-v" + parser.nextWarning() + "|" + this.editpage + "|Thank you.|subst=subst:}} ~~" + "~~");
}
Warning.aivInit = function(text) {
if (this.regex.test(text))
this.infotext += "NOTE! \"" + this.user + "\" found on page. ";
this.savedtext = text + "\n" + this.addtext;
}
Warning.nextMode = function(mode) {
switch (mode) {
case Warning.NONE: return Warning.WARN;
case Warning.WARN: return Warning.AIV;
case Warning.AIV: return Warning.WARN;
default: return Warning.NONE;
}
}
Warning.prototype.getDownloadCallback = function(mode) {
var me = this;
return function(obj) {
me.set(obj, mode);
}
}
Warning.prototype.setNextMode = function() {
this.set(null, Warning.nextMode(this.mode));
}
Warning.prototype.set = function(obj, newMode) {
var mData = this.data[newMode];
var text = obj && obj["*"];
if (!mData) return;
if (!mData.savedtext || mData.savedtext == "") {
if (text || text == "") {
mData.init(text);
mData.editor.setTimes(AmelUtil.isoToNumerical(obj["timestamp"]));
this.gui["warnSwitch"].value += "...";
this.showMode(newMode);
} else {
var func = this.getDownloadCallback(newMode);
mData.editor.getText(func);
mData.editor.downloadEditFormData();
}
} else {
if (text) {
if (confirm("The page \"" + mData.title + "\" is already initialized. Overwrite displayed text?"))
mData.init(text);
else
return;
}
this.showMode(newMode);
}
}
Warning.prototype.showMode = function(newMode) {
var thisData = this.data[this.mode];
var newData = this.data[newMode];
var gui = this.gui;
if (thisData) {
thisData.savedtext = gui["warnBox"].value;
thisData.summary = gui["warnSum"].value;
}
gui["warnBox"].value = newData.savedtext;
gui["warnSum"].value = newData.summary;
gui["warnPage"].firstChild.nodeValue = newData.title;
gui["warnInfo"].firstChild.nodeValue = newData.infotext;
gui["warnSwitch"].value = newData.button;
this.mode = newMode;
}
Warning.prototype.submit = function() {
var summary = this.gui["warnSum"].value;
var text = this.gui["warnBox"].value;
if (this.mode == Warning.WARN) {
var re = /\{\{subst:uw-(.*?)(?:\|.*?)?\}\}/gi;
if (summary.charAt(summary.length - 1) == "*") //shorthand for "no template plz"
summary = summary.substring(0, summary.length - 1);
else {
var templateMatch, templateName;
while (templateMatch = re.exec(text))
templateName = templateMatch[1];
if (templateName)
summary += " (" + templateName + ")";
}
} else if (this.mode != Warning.AIV) {
return; //only Warning.WARN and Warning.AIV allowed at the moment
}
var button = this.gui["warnSubmit"];
button.disabled = true;
var editor = this.data[this.mode].editor;
editor.setText(text);
editor.setSummary(summary);
editor.setMinor(false);
editor.setWatch(false);
editor.setCallback(function() { button.disabled = false; });
editor.submit();
}
//---------------------------------
//construct object: get in, get out. No need for state.
function showHistory(title, historyObj, showButtons, limit) {
limit = Math.min(historyObj.length, limit || 5);
if (!limit) return;
var pageURL = WikiTitle.fromEncoded(title).toIndexUrl();
var currentId = historyObj[0]["revid"];
var newLink = function(url, title) {
var link = document.createElement("a");
link.href = url;
link.title = title;
link.appendChild(document.createTextNode(title));
return link;
}
var historyItem = function(item, nextItem) {
//more pretty list under construction
var liItem = document.createElement("li");
if (nextItem) {
liItem.appendChild(document.createTextNode("("));
liItem.appendChild(newLink(pageURL + "&diff=" + currentId + "&oldid=" + item["revid"], "cur"));
liItem.appendChild(document.createTextNode(") ("));
} else {
liItem.appendChild(document.createTextNode("(cur) ("));
}
liItem.appendChild(newLink(pageURL + "&diff=" + item["revid"] + "&dir=prev", "last"));
liItem.appendChild(document.createTextNode(") "));
liItem.appendChild(newLink(pageURL + "&oldid=" + item["revid"], AmelUtil.isoToStandard(item.timestamp)));
liItem.appendChild(document.createTextNode(" "));
liItem.appendChild(newLink(WikiTitle.fromDisplay("Special:Contributions/" + item.user).toIndexUrl(), item.user));
if (item["comment"]) {
var summary = item["comment"].replace(/\[\[([^\|\]]+)\|?(.*?)\]\]/g, function (ignore, link, display) { return "<a href=\"" + WikiTitle.fromDisplay(link).toIndexUrl() + "\">" + (display || link) + "</a>"});
summary = summary.replace(/\/\*\s+(.+?)\s+\*\//g, function(ignore, anchor) { return "<a href=\"#" + WikiTitle.fromDisplay(anchor).toEncoded() + "\">→</a><span class=\"autocomment\">" + anchor + "</span> - "});
var summaryElem = document.createElement("span");
summaryElem.innerHTML = " | " + summary;
liItem.appendChild(summaryElem);
}
return liItem;
}
var historyDiv = document.getElementById("historyDiv");
if (historyDiv && historyDiv.firstChild) {
historyDiv.removeChild(historyDiv.firstChild);
} else {
historyDiv = document.createElement("div");
historyDiv.id = "historyDiv";
var jumpToNav = document.getElementById("jump-to-nav");
if (!jumpToNav) return false;
jumpToNav.parentNode.insertBefore(historyDiv, jumpToNav);
historyDiv = document.getElementById("historyDiv");
}
var historyList = document.createElement("ol");
var currentItem, nextItem;
for (var i = 0; i < limit; i++) {
currentItem = historyObj[i];
historyList.appendChild(historyItem(currentItem, nextItem));
nextItem = currentItem;
}
historyDiv.appendChild(historyList);
}
//---------------------------------
function WarningsParser(text) {
var state = { header: false, hasWarnings: false };
//if the latest header contains the most recent warning, if warnings can be found
var recent = { header: undefined, text: undefined, date: new Date(0), level: 0 };
//the header under which the latest warning appears, the warning's text,
//the date of the warning, its level.
var warningMatch = 0, warning;
var dayAgo = new Date();
dayAgo.setTime(dayAgo.getTime() - (24*60*60*1000));
var re = /<!-- Template:(.*?) -->.*?(\d{2}:\d{2}, \d+ \w+ \d{4}) \(UTC\)/gi;
var warning;
while (warning = re.exec(text)) {
if (!warning)
break;
recent.date = new Date(warning[2] + " UTC"); //UTC can't be in parentheses :|
if (recent.date > dayAgo)
recent.text = warning[1];
state.hasWarnings = true;
warningMatch = re.lastIndex;
}
//find the header the warning is under
var headerRe = /^(={2,6}).+?\1\s*?$/mg;
var warningH = text.substring(0, warningMatch).match(headerRe);
var pageH = text.substring(warningMatch).match(headerRe);
recent.header = warningH && warningH.pop();
state.header = !!pageH;
if (recent.text) {
var levels = recent.text.match(/^.*?(\d)(im)?$/);
if (levels && levels[1])
recent.level = parseInt(levels[1]);
else if (/first/i.test(recent.text)) recent.level = 1;
else if (/second/i.test(recent.text)) recent.level = 2;
else if (/third/i.test(recent.text)) recent.level = 3;
else if (/fourth/i.test(recent.text)) recent.level = 4;
} else if (state.hasWarnings) {
recent.level = 1; //if there are warnings there, use a level 2. put this in prefs?
}
this.pageData = state;
this.warningData = recent;
}
//encapsulate state
WarningsParser.prototype = {
report : function() {
return this.warningData.level == 4;
},
hasWarnings: function() {
return this.pageData.hasWarnings;
},
nextWarning: function() {
var recent = this.warningData;
if (recent.level < 4)
return recent.level + 1;
else if (recent.level == 4)
return 4;
else //not sure what we have; stick with level 1.
return 1;
},
previousDate: function() {
return this.warningData.date;
},
getHeaders: function() {
return { page: this.pageData.header, warning: this.warningData.header };
}
}
AmelUtil = new Object();
AmelUtil.plural = function(num, singular, plural) {
return num + " " + (num == 1 ? singular : plural);
}
//previously named AmelUtil.yetAnotherJsMonthNameArray. too long, though :P
AmelUtil.monthNames = ["January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"];
AmelUtil.isIP = function(str) {
var rangeCheck = function(num) {
return (!/\D/.test(num) && parseInt(num) >> 8 == 0);
}
var nums = str.split("."), index = nums.length;
if (index != 4 && index != 6) return false;
while (--index >= 0)
if (!rangeCheck(nums[index])) return false;
return true;
}
AmelUtil.numericalTsNow = function() {
var now = new Date();
var padDD = function(num) { //double-digit pad
return ("0" + num).slice(-2);
}
return now.getUTCFullYear() + padDD(now.getUTCMonth() + 1) + padDD(now.getUTCDate()) +
padDD(now.getUTCHours()) + padDD(now.getUTCMinutes()) + padDD(now.getUTCSeconds());
}
AmelUtil.isoToNumerical = function(timestamp) {
return timestamp && timestamp.replace( /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z/, "$1$2$3$4$5$6")
}
AmelUtil.isoToStandard = function(timestamp) {
return timestamp && timestamp.replace( /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z/, function(ignore, year, month, date, hour, minute) { return hour + ":" + minute + ", " + date + " " + AmelUtil.monthNames[month - 1] + " " + year});
}
AmelUtil.getPageObj = function(jsonObj) {
try {
jsonObj = jsonObj.query.pages;
for (var pageObj in jsonObj)
return jsonObj[pageObj];
} catch (e) {
}
}
AmelUtil.colorStatus = function(color) {
document.getElementById("content").style.background = color;
}
AmelUtil.rollbackPerm = function() {
if (wgUserGroups.indexOf)
return wgUserGroups.indexOf("sysop") != -1 || wgUserGroups.indexOf("rollbacker") != -1;
for (var i = 0, length = wgUserGroups.length; i < length; i++)
if (wgUserGroups[i] == "sysop" || wgUserGroups[i] == "rollbacker") return true;
return false;
}
AmelUtil.diffRollback = function() {
var checkExist = document.getElementById("mw-diff-ntitle1");
if (!checkExist) return null;
if (AmelUtil.rollbackPerm()) {
var rb = document.getElementById("mw-diff-ntitle2").getElementsByTagName("span");
if (rb.length > 1) {
var rbUrl = rb[1].getElementsByTagName("a")[0].href
return function() {
new AdminRollback(rbUrl);
};
} //else, continue along with normal revert
}
var link = checkExist.getElementsByTagName("a");
link = link[link.length - 1].href;
var revFrom = link.match(/[&?]undo=([^&]*)/);
var pageName = link.match(/[&?]title=([^&]*)/);
var userFrom = document.getElementById("mw-diff-ntitle2")
.getElementsByTagName("a")[0].title.match(/(?:User:|Special:Contributions\/)(.*$)/);
if (pageName)
return function() {
new Rollback(pageName[1], (revFrom ? revFrom[1] : undefined), (userFrom ? userFrom[1] : undefined));
}
};
AmelUtil.diffRestore = function(container) {
var checkExist = container.getElementById("mw-diff-otitle1");
if (!checkExist) return null;
var link = checkExist.getElementsByTagName("a")[0].href;
var pageName = link.match(/[&?]title=([^&]*)/);
var revTo = link.match(/[&?]oldid=([^&]*)/);
var userTo = container.getElementById("mw-diff-otitle2")
.getElementsByTagName('a')[0].title.match(/(?:User:|Special:Contributions\/)(.*$)/);
if (pageName && revTo)
return function() {
latest = new RestoreRevision(pageName[1], revTo[1]);
}
};
//-------------------------------------
//Mode: press spacebar to revert
AmelKeyFuncs = {};
AmelKeyFuncs.enabled = document.cookie.indexOf("amelKeys=true") != -1;
AmelKeyFuncs.formatOnLoad = function() {
addPortletLink("p-tb", "javascript:AmelKeyFuncs.toggleUse()", (AmelKeyFuncs.enabled ? "Don't use" : "Use") + " spacebar reversion", "t-amelkeys", "Enable reversion on diffs using the spacebar");
window.onkeypress = AmelKeyFuncs.checkToRevert;
window.focus();
}
AmelKeyFuncs.pageEnabled = true;
AmelKeyFuncs.checkToRevert = function(e) {
if (!AmelKeyFuncs.enabled || !AmelKeyFuncs.pageEnabled)
return true;
e = e || window.event;
if (e.charCode == 32) {
var func = AmelUtil.diffRollback();
AmelKeyFuncs.pageEnabled = false;
if (func) {
func.call(this);
return false;
}
}
return true;
}
AmelKeyFuncs.toggleUse = function() {
var now = new Date();
if (!AmelKeyFuncs.enabled)
now.setTime(now.getTime() + 365*24*60*60*1000);
AmelKeyFuncs.enabled = !AmelKeyFuncs.enabled;
document.cookie = "amelKeys=" + AmelKeyFuncs.enabled + "; expires=" + now.toGMTString() + "; path=/"
document.getElementById("t-amelkeys").firstChild.firstChild.nodeValue = (AmelKeyFuncs.enabled ? "Don't use" : "Use") + " spacebar reversion";
}
//-------------------------------------
var WikiEdit = function(title, parent, autosubmit) {
if (!title)
throw new Error("title needed for WikiEdit");
this.title = title;
this.autosubmit = autosubmit;
this.submitCallback = function(){};
this.closed = false;
this.editMonitor = false;
this.submitData = {}; //the form fields
this.onSubmitHooks = []; //to be processed immediately before submitting
this.submitXHR = null;
this.parent = parent;
}
WikiEdit.needToSubmit = ["wpTextbox1", "wpSummary", "wpEditToken", "wpStarttime", "wpEdittime"];
WikiEdit.prototype.setCallback = function(callback) {
this.submitCallback = callback;
}
WikiEdit.prototype.cancel = function() {
this.closed = true;
if (this.submitXHR)
this.submitXHR.abort();
}
WikiEdit.prototype.addSubmitHook = function(func) {
if (this.closed)
return false;
this.onSubmitHooks.push(func);
return true;
}
WikiEdit.prototype.doPreSubmitHook = function(func) {
if (this.closed)
return false;
this.editMonitor = true;
func.call(this);
this.editMonitor = false;
this.addSubmitData({});
return true;
}
WikiEdit.prototype.downloadEditFormData = function() {
if (this.closed)
return;
var me = this;
var req = new XMLHttpRequest();
req.open("GET", wgServer + wgScriptPath + "/api.php?action=query&prop=info&intoken=edit&format=json&titles=" + this.title, true);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
var pageObj = AmelUtil.getPageObj(eval("(" + req.responseText + ")"));
if (pageObj) {
me.addSubmitData({"wpEditToken" : pageObj["edittoken"]});
}
else
alert("Could not retrieve edit form data");
}
}
req.send(null);
}
WikiEdit.prototype.setParent = function(parent) {
this.parent = parent;
}
WikiEdit.prototype.setText = function(wikitext) {
this.addSubmitData({"wpTextbox1" : wikitext});
}
WikiEdit.prototype.setTimes = function(edittime) {
var tsNow = AmelUtil.numericalTsNow();
this.addSubmitData({"wpEdittime" : edittime || tsNow,
"wpStarttime" : tsNow});
}
WikiEdit.prototype.setSummary = function(text) {
this.addSubmitData({"wpSummary" : text});
}
WikiEdit.prototype.setMinor = function(boole) {
if (boole) this.addSubmitData({"wpMinoredit" : "1"});
}
WikiEdit.prototype.setWatch = function(boole) {
if (boole) this.addSubmitData({"wpWatchthis" : "1"});
}
WikiEdit.prototype.getHistory = function(callback, limit) {
this.getRevInformation(callback, ["user", "ids", "comment", "timestamp"], limit || 20, undefined);
}
WikiEdit.prototype.getText = function(callback, oldid) {
this.getRevInformation(callback, ["content", "user", "timestamp"], 1, oldid);
}
//Private. precondition: props are properly encoded
WikiEdit.prototype.getRevInformation = function(callback, props, limit, revid) {
if (!callback)
return;
var me = this;
var req = new XMLHttpRequest();
req.open("GET", wgServer + wgScriptPath +
"/api.php?action=query&prop=revisions&format=json&rvprop=" + props.join("|") +
(revid ? "&rvstartid=" + revid : "") + (limit ? "&rvlimit=" + limit : "") +
"&titles=" + this.title, true);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
var pageObj = AmelUtil.getPageObj(eval("(" + req.responseText + ")"));
if (!pageObj) return;
if (pageObj.revisions) {
var returnObj = pageObj["revisions"];
if (limit == 1) returnObj = returnObj[0];
returnObj.title = pageObj.title;
callback.call(me.parent, returnObj);
} else if (pageObj.missing == "") {
callback.call(me.parent, {"user":"", "*":""});
}
}
}
req.send(null);
}
WikiEdit.prototype.submit = function() {
this.autosubmit = true;
if (this.closed || this.editMonitor)
return false;
var submitData = this.submitData, onSubmitHooks = this.onSubmitHooks;
for (var i = 0, nts = WikiEdit.needToSubmit; i < nts.length; i++)
if (!(nts[i] in submitData)) return false;
this.closed = true;
while (onSubmitHooks.length > 0)
onSubmitHooks.shift().call(this);
var parameters = [];
for (var property in submitData)
parameters.push(encodeURIComponent(property) + "=" + encodeURIComponent(submitData[property]));
var me = this;
var req = this.submitXHR = new XMLHttpRequest();
req.open("POST", wgServer + wgScript + "?title=" + this.title + "&action=submit", true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
me.submitCallback.call(me.parent);
}
};
req.send(parameters.join("&"));
return true;
}
//@Private. Adds data; submits to index.php if has all information
WikiEdit.prototype.addSubmitData = function(obj) {
var submitData = this.submitData;
if (this.closed)
return;
for (var property in obj) //merge into submitData
submitData[property] = obj[property];
if (this.autosubmit)
this.submit();
}
//-------------------------------------
var isDiff = /[?&]diff=/.test(document.location.href);
if (isDiff) {
addOnloadHook(addRollback);
addOnloadHook(addRestore);
if (AmelKeyFuncs.enabled)
addOnloadHook(AmelKeyFuncs.formatOnLoad);
}
importScript('User:Gary King/enhanced random article.js');
importScript('User:Js/diffs.js'); // [[User:Js/diffs.js]]
importScript('User:Tra/sidebartranslate.js'); // [[User:Tra/sidebartranslate.js]]
importScript('User:TheDJ/foldrefs.js'); // [[User:TheDJ/foldrefs.js]]
importScript('User:PleaseStand/userinfo.js'); // [[User:PleaseStand/userinfo.js]]
importScript('User:Allstarecho/autoarchive.js');
importScript('User:Flatscan/rescueTag.js'); // [[User:Flatscan/rescueTag.js]]
// [[User:Zocky/SearchBox.js]]
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=User:Zocky/SearchBox.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
importScript('User:Dlrohrer2003/validate-css.js'); // [[User:Dlrohrer2003/validate-css.js]]
importScript('User:Ale jrb/Scripts/csdcheck.js'); // [[User:Ale jrb/Scripts/csdcheck.js]]