<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=HanziQ</id>
	<title>Official Factorio Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=HanziQ"/>
	<link rel="alternate" type="text/html" href="https://wiki.factorio.com/Special:Contributions/HanziQ"/>
	<updated>2026-04-21T23:47:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=MediaWiki:Common.js&amp;diff=146306</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=MediaWiki:Common.js&amp;diff=146306"/>
		<updated>2017-09-01T22:57:56Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/* Script in here will be executed when the page is &amp;quot;ready&amp;quot; */&lt;br /&gt;
$(document).ready(getNumberOfActiveUsers);&lt;br /&gt;
&lt;br /&gt;
/* show correct number of active users on the main page */&lt;br /&gt;
&lt;br /&gt;
function getNumberOfActiveUsers() {&lt;br /&gt;
	if (document.getElementById(&amp;quot;active-users&amp;quot;)) {&lt;br /&gt;
		$.ajax({&lt;br /&gt;
			url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
			data: {&lt;br /&gt;
				format: &#039;json&#039;,&lt;br /&gt;
				action: &#039;query&#039;,&lt;br /&gt;
				list: &#039;allusers&#039;,&lt;br /&gt;
				aulimit: 500,&lt;br /&gt;
				auactiveusers: true&lt;br /&gt;
			},&lt;br /&gt;
			dataType: &#039;json&#039;,&lt;br /&gt;
			type: &#039;GET&#039;,&lt;br /&gt;
			success: function(data) {&lt;br /&gt;
				document.getElementById(&amp;quot;active-users&amp;quot;).innerHTML = data.query.allusers.length.toString();&lt;br /&gt;
			},&lt;br /&gt;
			error: function(xhr) {&lt;br /&gt;
				console.log( &#039;Error: Request failed.&#039; );&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
/* User is bot if userGroup.some(isBot) == true */&lt;br /&gt;
&lt;br /&gt;
var userGroup = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
function getUserGroup() {&lt;br /&gt;
	$.ajax({&lt;br /&gt;
		url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
		data: {&lt;br /&gt;
			format: &#039;json&#039;,&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			meta: &#039;userinfo&#039;,&lt;br /&gt;
			uiprop: &#039;groups&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		async: false,&lt;br /&gt;
		dataType: &#039;json&#039;,&lt;br /&gt;
		type: &#039;GET&#039;,&lt;br /&gt;
		success: function(data) {&lt;br /&gt;
			userGroup = data.query.userinfo.groups&lt;br /&gt;
		},&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function isBot(group) {&lt;br /&gt;
	return group == &amp;quot;bot&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var globalToken;&lt;br /&gt;
&lt;br /&gt;
function getToken() {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            meta: &#039;tokens&#039;,&lt;br /&gt;
            bot: true&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           globalToken = data.query.tokens.csrftoken;&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            console.log(&amp;quot;Failed to get token.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Infobox more info in header */&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.more-button&amp;quot;).click(function() {&lt;br /&gt;
  $(&amp;quot;.more-content&amp;quot;).toggle(&amp;quot;fast&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Template:Inventory */&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-1&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
  $(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-1&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-2&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-2&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-3&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-3&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-4&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-4&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//*** Language template ***//&lt;br /&gt;
if($(&amp;quot;.languages-flags .flag&amp;quot;).length == 0) {&lt;br /&gt;
 console.log(&amp;quot;Not showing languages bar because there&#039;s no other language&#039;s version of this page.&amp;quot;);&lt;br /&gt;
 $(&amp;quot;.languages-container&amp;quot;).hide();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Spoiler template JavaScript&lt;br /&gt;
$(&amp;quot;.spoiler-container .button&amp;quot;).click(function() {&lt;br /&gt;
  $(this).siblings(&amp;quot;.text&amp;quot;).toggle(&amp;quot;slow&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var wantedPagesListsLocation = &amp;quot;Factorio:Wanted pages&amp;quot;;&lt;br /&gt;
var enPageLength = {};&lt;br /&gt;
var stubs = {};&lt;br /&gt;
&lt;br /&gt;
function getStubs() {&lt;br /&gt;
  $.ajax({&lt;br /&gt;
		url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
		data: {&lt;br /&gt;
			format: &#039;json&#039;,&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			list: &#039;categorymembers&#039;,&lt;br /&gt;
			cmtitle: &#039;Category:Stubs&#039;,&lt;br /&gt;
			cmlimit: 400,&lt;br /&gt;
			cmprop: &#039;title&#039;&lt;br /&gt;
		},&lt;br /&gt;
		async: false,&lt;br /&gt;
		dataType: &#039;json&#039;,&lt;br /&gt;
		type: &#039;GET&#039;,&lt;br /&gt;
		success: function( data ) {&lt;br /&gt;
			var categorymembers = data.query.categorymembers;&lt;br /&gt;
			console.log(&#039;Found &#039; + categorymembers.length + &#039; stubs.&#039;);&lt;br /&gt;
      for (var i = 0; i &amp;lt; categorymembers.length; i++) {&lt;br /&gt;
        stubs[categorymembers[i].title] = true;&lt;br /&gt;
      }&lt;br /&gt;
		},&lt;br /&gt;
		error: function( xhr ) {&lt;br /&gt;
			alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#create-wanted-pages-list&amp;quot;).click(function(){&lt;br /&gt;
    getToken();&lt;br /&gt;
    createWantedPagesLists();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function createWantedPagesLists() {&lt;br /&gt;
    getUserGroup();&lt;br /&gt;
    if (userGroup.some(isBot) == false) return;&lt;br /&gt;
    enPageLength = {};&lt;br /&gt;
    var wantedPages = getWantedPages();&lt;br /&gt;
    wantedPages = wantedPages.sort(compare);&lt;br /&gt;
    splitWantedPagesIntoDifferentLanguages(wantedPages);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function splitWantedPagesIntoDifferentLanguages(wantedPages) {&lt;br /&gt;
  var czechWantedPages = []; &lt;br /&gt;
  var germanWantedPages = [];&lt;br /&gt;
  var spanishWantedPages = [];&lt;br /&gt;
  var frenchWantedPages = [];&lt;br /&gt;
  var italianWantedPages = [];&lt;br /&gt;
  var japaneseWantedPages = [];&lt;br /&gt;
  var dutchWantedPages = [];&lt;br /&gt;
  var polishWantedPages = [];&lt;br /&gt;
  var portugueseWantedPages = [];&lt;br /&gt;
  var russianWantedPages = [];&lt;br /&gt;
  var swedishWantedPages = [];&lt;br /&gt;
  var ukrainianWantedPages = [];&lt;br /&gt;
  var chineseWantedPages = [];&lt;br /&gt;
  var turkishWantedPages = [];&lt;br /&gt;
  var koreanWantedPages = [];&lt;br /&gt;
  var wantedFiles = [];&lt;br /&gt;
  var wantedFileTalk = [];&lt;br /&gt;
  var wantedTemplates = [];&lt;br /&gt;
  var otherWantedPages = [];&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; wantedPages.length; i++) {&lt;br /&gt;
    switch (wantedPages[i].title.slice(-3)) {//&amp;quot;/cs&amp;quot;, &amp;quot;/de&amp;quot;, &amp;quot;/es&amp;quot;, &amp;quot;/fr&amp;quot;, &amp;quot;/it&amp;quot;, &amp;quot;/ja&amp;quot;, &amp;quot;/nl&amp;quot;, &amp;quot;/pl&amp;quot;, &amp;quot;/-br&amp;quot;, &amp;quot;/ru&amp;quot;, &amp;quot;/sv&amp;quot;, &amp;quot;/uk&amp;quot;, &amp;quot;/zh&amp;quot;, &amp;quot;/tr&amp;quot;, &amp;quot;/kr&amp;quot;&lt;br /&gt;
      case &amp;quot;/cs&amp;quot;: czechWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/de&amp;quot;: germanWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/es&amp;quot;: spanishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/fr&amp;quot;: frenchWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/it&amp;quot;: italianWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/ja&amp;quot;: japaneseWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/nl&amp;quot;: dutchWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/pl&amp;quot;: polishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;-br&amp;quot;: portugueseWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/ru&amp;quot;: russianWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/sv&amp;quot;: swedishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/uk&amp;quot;: ukrainianWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/zh&amp;quot;: chineseWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/tr&amp;quot;: turkishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/kr&amp;quot;: koreanWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      default: if (wantedPages[i].title.slice(0, 5) == &amp;quot;File:&amp;quot;) {wantedFiles.push(wantedPages[i])} else if (wantedPages[i].title.slice(0, 9) == &amp;quot;Template:&amp;quot;) {wantedTemplates.push(wantedPages[i])} else if (wantedPages[i].title.slice(0, 10) == &amp;quot;File talk:&amp;quot;) {wantedFileTalk.push(wantedPages[i])} else {otherWantedPages.push(wantedPages[i])}; break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  getStubs();&lt;br /&gt;
  createWantedPagesPage(&amp;quot;cs&amp;quot;, czechWantedPages, &amp;quot;Czech&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;de&amp;quot;, germanWantedPages, &amp;quot;German&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;es&amp;quot;, spanishWantedPages, &amp;quot;Spanish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;fr&amp;quot;, frenchWantedPages, &amp;quot;French&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;it&amp;quot;, italianWantedPages, &amp;quot;Italian&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;ja&amp;quot;, japaneseWantedPages, &amp;quot;Japanese&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;nl&amp;quot;, dutchWantedPages, &amp;quot;Dutch&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;pl&amp;quot;, polishWantedPages, &amp;quot;Polish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;pt-br&amp;quot;, portugueseWantedPages, &amp;quot;Portuguese&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;ru&amp;quot;, russianWantedPages, &amp;quot;Russian&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;sv&amp;quot;, swedishWantedPages, &amp;quot;Swedish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;uk&amp;quot;, ukrainianWantedPages, &amp;quot;Ukrainian&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;zh&amp;quot;, chineseWantedPages, &amp;quot;Chinese&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;tr&amp;quot;, turkishWantedPages, &amp;quot;Turkish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;kr&amp;quot;, koreanWantedPages, &amp;quot;Korean&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  createWantedPagesPage(&amp;quot;file&amp;quot;, wantedFiles, &amp;quot;Files&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;file_talk&amp;quot;, wantedFileTalk, &amp;quot;File talk&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;template&amp;quot;, wantedTemplates, &amp;quot;Templates&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;other&amp;quot;, otherWantedPages, &amp;quot;Other&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createWantedPagesPage(location, wantedPages, language) {&lt;br /&gt;
  var languageSuffixes = [&amp;quot;cs&amp;quot;, &amp;quot;de&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, &amp;quot;it&amp;quot;, &amp;quot;ja&amp;quot;, &amp;quot;nl&amp;quot;, &amp;quot;pl&amp;quot;, &amp;quot;pt-br&amp;quot;, &amp;quot;ru&amp;quot;, &amp;quot;sv&amp;quot;, &amp;quot;uk&amp;quot;, &amp;quot;zh&amp;quot;, &amp;quot;tr&amp;quot;, &amp;quot;kr&amp;quot;]&lt;br /&gt;
  if (languageSuffixes.indexOf(location) &amp;gt; -1) {&lt;br /&gt;
    var formattedWantedPages = &amp;quot;Number of wanted pages in &amp;quot; + language + &amp;quot;: &amp;quot; + wantedPages.length + &amp;quot;\n{|class=wikitable\n!#\n!Page\n!Links to this page\n!Length of the corresponding English page in bytes&amp;quot;;&lt;br /&gt;
    for (var i = 0; i &amp;lt; wantedPages.length; i++) {&lt;br /&gt;
      //I don&#039;t dare to make this into a function because I don&#039;t want this to be async so lets put a whole api request in here lul&lt;br /&gt;
      var enPageTitle = wantedPages[i].title.slice(0, - location.length - 1)&lt;br /&gt;
      var length = 0;&lt;br /&gt;
      if (enPageLength[enPageTitle]) {&lt;br /&gt;
        length = enPageLength[enPageTitle]&lt;br /&gt;
      } else {&lt;br /&gt;
        $.ajax({&lt;br /&gt;
          url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
          data: {&lt;br /&gt;
              format: &#039;json&#039;,&lt;br /&gt;
              action: &#039;query&#039;,&lt;br /&gt;
              titles: enPageTitle,&lt;br /&gt;
              prop: &#039;info&#039;,&lt;br /&gt;
          },&lt;br /&gt;
          async: false,&lt;br /&gt;
          dataType: &#039;json&#039;,&lt;br /&gt;
          type: &#039;POST&#039;,&lt;br /&gt;
          success: function( data ) {&lt;br /&gt;
            var pages = data.query.pages;&lt;br /&gt;
            var pageInfo = pages[Object.keys(pages)[0]];&lt;br /&gt;
            length = pageInfo[&#039;length&#039;];&lt;br /&gt;
            if (!length) length = &#039;---&#039;;&lt;br /&gt;
            var redirect = pageInfo[&#039;redirect&#039;];&lt;br /&gt;
            if (redirect == &amp;quot;&amp;quot;) {&lt;br /&gt;
              length = length + &amp;quot; (Redirect)&amp;quot;;&lt;br /&gt;
            } else if (stubs[enPageTitle]) {&lt;br /&gt;
              length = length + &amp;quot; (Stub)&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            enPageLength[enPageTitle] = length&lt;br /&gt;
          },&lt;br /&gt;
          error: function( xhr ) {&lt;br /&gt;
            alert(&amp;quot;Failed to get page length: &amp;quot; + pageTitle);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      formattedWantedPages = formattedWantedPages.concat(&amp;quot;\n|-\n|&amp;quot; + (i + 1) + &amp;quot;\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].title + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=Special:WhatLinksHere/&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].value + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(enPageTitle) + &amp;quot; &amp;quot; + length + &amp;quot;]&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    var formattedWantedPages = &amp;quot;Number of wanted pages in &amp;quot; + language + &amp;quot;: &amp;quot; + wantedPages.length + &amp;quot;\n{|class=wikitable\n!#\n!Page\n!Links to this page&amp;quot;;&lt;br /&gt;
    for (var i = 0; i &amp;lt; wantedPages.length; i++) {    &lt;br /&gt;
      formattedWantedPages = formattedWantedPages.concat(&amp;quot;\n|-\n|&amp;quot; + (i + 1) + &amp;quot;\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].title + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=Special:WhatLinksHere/&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].value + &amp;quot;]&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  formattedWantedPages = formattedWantedPages.concat(&amp;quot;\n|}&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  createPage(wantedPagesListsLocation + &amp;quot;/&amp;quot; + location, formattedWantedPages, &amp;quot;Updated the list of wanted pages for &amp;quot; + language + &amp;quot;.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function performNullEdit(pageTitle, summary) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            section: 0,&lt;br /&gt;
            text: &amp;quot;&amp;quot;,&lt;br /&gt;
            token: globalToken,&lt;br /&gt;
            summary: summary,&lt;br /&gt;
            bot: true&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           console.log(&amp;quot;Performed null edit&amp;quot;);&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            console.log(&amp;quot;Failed to perform null edit&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function purgeWhatLinksHere(pageTitle) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &amp;quot;json&amp;quot;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &amp;quot;backlinks&amp;quot;,&lt;br /&gt;
            bltitle: pageTitle,&lt;br /&gt;
            bllimit: 500&lt;br /&gt;
        },&lt;br /&gt;
        async: true,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            console.log(data);&lt;br /&gt;
            for (var i = 0; i &amp;lt; data.query.backlinks.length; i++) {&lt;br /&gt;
                purgePage(data.query.backlinks[i].title);&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
            console.log(&amp;quot;Failed purging&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function purgePage(pageTitle) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            action: &#039;purge&#039;,&lt;br /&gt;
            forcelinkupdate: true,&lt;br /&gt;
            titles: pageTitle,&lt;br /&gt;
            prop: &amp;quot;info&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        async: true,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            console.log(&amp;quot;purging &amp;quot; + pageTitle);&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
            console.log(&amp;quot;Failed purging&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function compare(a,b) {&lt;br /&gt;
  if (parseInt(a.value) &amp;gt; parseInt(b.value))&lt;br /&gt;
    return -1;&lt;br /&gt;
  if (parseInt(a.value) &amp;lt; parseInt(b.value))&lt;br /&gt;
    return 1;&lt;br /&gt;
  if (a.title &amp;lt; b.title)&lt;br /&gt;
    return -1;&lt;br /&gt;
  if (a.title &amp;gt; b.title)&lt;br /&gt;
    return 1;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createPage(pageTitle, content, summary) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            text: content,&lt;br /&gt;
            token: globalToken,&lt;br /&gt;
            summary: summary,&lt;br /&gt;
            bot: true&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           console.log(&amp;quot;created page: &amp;quot; + pageTitle);&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            console.log(&amp;quot;failed to create page&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getWantedPages() {&lt;br /&gt;
   var wantedPages = [];&lt;br /&gt;
&lt;br /&gt;
   $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &#039;querypage&#039;,&lt;br /&gt;
            qppage: &#039;Wantedpages&#039;,&lt;br /&gt;
            qplimit: &#039;5000&#039;,&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var results = data.query.querypage.results;&lt;br /&gt;
            for (var i = 0; i &amp;lt; results.length; i++) {&lt;br /&gt;
               var pageObject = new WantedPage(results[i].title, results[i].value);&lt;br /&gt;
               var alreadyInArray = false;&lt;br /&gt;
               for (var j = 0; j &amp;lt; wantedPages.length; j++) {&lt;br /&gt;
                 if (wantedPages[j].title == pageObject.title) {&lt;br /&gt;
                    alreadyInArray = true;&lt;br /&gt;
                 }&lt;br /&gt;
               }&lt;br /&gt;
               if (!alreadyInArray) {&lt;br /&gt;
                 wantedPages.push(pageObject);&lt;br /&gt;
               }&lt;br /&gt;
               if (pageObject.title == &amp;quot;Rocket defense/it&amp;quot;) {&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed. Category&#039; );&lt;br /&gt;
        }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
$.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &#039;querypage&#039;,&lt;br /&gt;
            qppage: &#039;Wantedpages&#039;,&lt;br /&gt;
            qplimit: &#039;5000&#039;,&lt;br /&gt;
            qpoffset: &#039;3000&#039;,&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var results = data.query.querypage.results;&lt;br /&gt;
            for (var i = 0; i &amp;lt; results.length; i++) {&lt;br /&gt;
               var pageObject = new WantedPage(results[i].title, results[i].value);&lt;br /&gt;
               var alreadyInArray = false;&lt;br /&gt;
               for (var j = 0; j &amp;lt; wantedPages.length; j++) {&lt;br /&gt;
                 if (wantedPages[j].title == pageObject.title) {&lt;br /&gt;
                    alreadyInArray = true;&lt;br /&gt;
                 }&lt;br /&gt;
               }&lt;br /&gt;
               if (!alreadyInArray) {&lt;br /&gt;
                 wantedPages.push(pageObject);&lt;br /&gt;
               }&lt;br /&gt;
               if (pageObject.title == &amp;quot;Rocket defense/it&amp;quot;) {&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed. Category&#039; );&lt;br /&gt;
        }&lt;br /&gt;
  });&lt;br /&gt;
  return wantedPages;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function WantedPage(pageTitle, pageValue) {&lt;br /&gt;
  this.title = pageTitle;&lt;br /&gt;
  this.value = pageValue;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#create-redirect-list&amp;quot;).click(function(){&lt;br /&gt;
  getToken();&lt;br /&gt;
  createRedirectList();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function createRedirectList() {&lt;br /&gt;
    getUserGroup();&lt;br /&gt;
    if (userGroup.some(isBot) == false) return;&lt;br /&gt;
    getRedirects();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function getRedirects() {&lt;br /&gt;
  var redirects = [];&lt;br /&gt;
&lt;br /&gt;
  $.ajax({&lt;br /&gt;
    url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
    data: {&lt;br /&gt;
      format: &#039;json&#039;,&lt;br /&gt;
      action: &#039;query&#039;,&lt;br /&gt;
      list: &#039;allpages&#039;,&lt;br /&gt;
      aplimit: &#039;5000&#039;,&lt;br /&gt;
      apfilterredir: &#039;redirects&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    async: false,&lt;br /&gt;
    dataType: &#039;json&#039;,&lt;br /&gt;
    type: &#039;GET&#039;,&lt;br /&gt;
    success: function( data ) {&lt;br /&gt;
      redirects = data.query.allpages;&lt;br /&gt;
    },&lt;br /&gt;
    error: function( xhr ) {&lt;br /&gt;
      alert( &#039;Error: Allpages request failed.&#039; );&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  $.ajax({&lt;br /&gt;
    url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
    data: {&lt;br /&gt;
      format: &#039;json&#039;,&lt;br /&gt;
      action: &#039;query&#039;,&lt;br /&gt;
      list: &#039;allpages&#039;,&lt;br /&gt;
      aplimit: &#039;5000&#039;,&lt;br /&gt;
      apfilterredir: &#039;redirects&#039;,&lt;br /&gt;
      apnamespace: &#039;6&#039;&lt;br /&gt;
    },&lt;br /&gt;
    async: false,&lt;br /&gt;
    dataType: &#039;json&#039;,&lt;br /&gt;
    type: &#039;GET&#039;,&lt;br /&gt;
    success: function( data ) {&lt;br /&gt;
      for (var i = 0; i &amp;lt; data.query.allpages.length; i++) {&lt;br /&gt;
        redirects.push(data.query.allpages[i])&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    error: function( xhr ) {&lt;br /&gt;
      alert( &#039;Error: Allpages request failed.&#039; );&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  for (var i = 0; i &amp;lt; redirects.length; i++) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
      url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
      data: {&lt;br /&gt;
          format: &amp;quot;json&amp;quot;,&lt;br /&gt;
          action: &#039;query&#039;,&lt;br /&gt;
          list: &amp;quot;backlinks&amp;quot;,&lt;br /&gt;
          bltitle: redirects[i].title,&lt;br /&gt;
          bllimit: 500&lt;br /&gt;
      },&lt;br /&gt;
      async: false,&lt;br /&gt;
      type: &#039;GET&#039;,&lt;br /&gt;
      success: function( data ) {&lt;br /&gt;
        redirects[i].value = data.query.backlinks.length;&lt;br /&gt;
      },&lt;br /&gt;
      error: function( xhr ) {&lt;br /&gt;
        alert( &#039;Error: Backlinks request failed.&#039; );&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
  redirects = redirects.sort(compare);&lt;br /&gt;
  createRedirectsPage(&amp;quot;Factorio:Redirects&amp;quot;, redirects);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function createRedirectsPage(location, redirects) {&lt;br /&gt;
  var formattedRedirects = &amp;quot;{|class=wikitable\n!#\n!Redirect\n!Links to this redirect&amp;quot;;&lt;br /&gt;
  for (var i = 0; i &amp;lt; redirects.length; i++) {    &lt;br /&gt;
    formattedRedirects = formattedRedirects.concat(&amp;quot;\n|-\n|&amp;quot; + (i + 1) + &amp;quot;\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(redirects[i].title) + &amp;quot;&amp;amp;redirect=no &amp;quot; + redirects[i].title + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=Special:WhatLinksHere/&amp;quot; + encodeURI(redirects[i].title) + &amp;quot; &amp;quot; + redirects[i].value + &amp;quot;]&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  formattedRedirects = formattedRedirects.concat(&amp;quot;\n|}&amp;quot;);&lt;br /&gt;
  createPage(location, formattedRedirects, &amp;quot;Updated the list of redirects.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* OLD INFOBOX CONVERSION TOOLS */&lt;br /&gt;
/*function targetAllPagesInCategory(category) {&lt;br /&gt;
    var languageSuffixes = [&amp;quot;/fr&amp;quot;, &amp;quot;/ru&amp;quot;, &amp;quot;/de&amp;quot;]; //, &amp;quot;/cs&amp;quot;, &amp;quot;/de&amp;quot;, &amp;quot;/es&amp;quot;, &amp;quot;/fr&amp;quot;, &amp;quot;/it&amp;quot;, &amp;quot;/nl&amp;quot;, &amp;quot;/pl&amp;quot;, &amp;quot;/pt-br&amp;quot;, &amp;quot;/ru&amp;quot;, &amp;quot;/sv&amp;quot;, &amp;quot;/uk&amp;quot;, &amp;quot;/zh&amp;quot;, &amp;quot;&amp;quot;];&lt;br /&gt;
    for (var j = 0; j &amp;lt; languageSuffixes.length; j++) {&lt;br /&gt;
      $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &#039;categorymembers&#039;,&lt;br /&gt;
            cmtitle: (category + languageSuffixes[j]),&lt;br /&gt;
            cmlimit: 500&lt;br /&gt;
        },&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var pages = data.query.categorymembers;&lt;br /&gt;
            for (var i = 0; i &amp;lt; pages.length; i++) {&lt;br /&gt;
                    //purgePage(pages[i].title);&lt;br /&gt;
                    extractPageInfo(pages[i].title, &amp;quot;9c28a1344a20bf189fda7d58339e518257f2dd9b+\\&amp;quot;);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.query &amp;amp;&amp;amp; data.query.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info + &#039;Category&#039; );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API. Category&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed. Category&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function extractPageInfo(pageTitle, token) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            titles: pageTitle,&lt;br /&gt;
            prop: &#039;revisions&#039;,&lt;br /&gt;
            rvprop: &#039;content&#039;&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var pages = data.query.pages;&lt;br /&gt;
            var revisions = pages[Object.keys(pages)[0]].revisions[0];&lt;br /&gt;
            var content = revisions[Object.keys(revisions)[2]]&lt;br /&gt;
            var title = pages[Object.keys(pages)[0]].title;&lt;br /&gt;
            createNewInfoboxPage(title, content, token);&lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.query &amp;amp;&amp;amp; data.query.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API.&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNewInfoboxPage(page, contentOfMainPage, token) {&lt;br /&gt;
    var infoboxText = getInfoboxFromFullPageContent(contentOfMainPage);&lt;br /&gt;
&lt;br /&gt;
    var infoboxPageTitle = page.replace(/\/(de|fr|nl|it|es|ru|pt\-br|cs|pl|sv|uk|zh)/g, function(piece) {return &amp;quot;&amp;quot;;}).concat(&amp;quot;/infobox&amp;quot;);&lt;br /&gt;
    var oldPageRevisedText = getOldPageRevisedText(page, contentOfMainPage, infoboxPageTitle);	&lt;br /&gt;
    removeInfoboxFromMain(page, oldPageRevisedText, token);&lt;br /&gt;
&lt;br /&gt;
    if (infoboxText != null) {&lt;br /&gt;
      if (/\/(de|fr|nl|it|es|ru|pt\-br|cs|pl|sv|uk|zh)/g.test(page)) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      var newPageTitle = page.concat(&amp;quot;/infobox&amp;quot;);&lt;br /&gt;
      var convertedInfoboxText = convertInfobox(infoboxText, token);&lt;br /&gt;
      createPage(newPageTitle, convertedInfoboxText, token, page, contentOfMainPage);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getOldPageRevisedText(pageTitle, content, infoboxPageTitle) {&lt;br /&gt;
    content = content.replace(/{{\bCombat\b(\s+(\||{).+)+\s}}/gi, function (piece) {&lt;br /&gt;
        return &amp;quot;{{:&amp;quot; + infoboxPageTitle + &amp;quot;}}&amp;quot;;&lt;br /&gt;
    });&lt;br /&gt;
    return content;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function removeInfoboxFromMain(pageTitle, content, token) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            text: content,&lt;br /&gt;
            bot: true,&lt;br /&gt;
            token: token,&lt;br /&gt;
            summary: &amp;quot;(BOT) - Replaced old infobox with a link to the /infobox subpage&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.edit &amp;amp;&amp;amp; data.edit.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API.&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    })&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function getInfoboxFromFullPageContent(contentOfPage) {&lt;br /&gt;
    var matches = contentOfPage.match(/{{\bCombat\b(\s+\|.+)+\s}}/gi);&lt;br /&gt;
if (matches != null &amp;amp;&amp;amp; matches.length &amp;gt; 0) {&lt;br /&gt;
 infoboxText = matches[0];&lt;br /&gt;
} else {&lt;br /&gt;
 infoboxText = null;&lt;br /&gt;
}&lt;br /&gt;
    return infoboxText;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function convertInfobox(text) {&lt;br /&gt;
    text = text.replace(/{{(\w+)/g, function (piece, $1) {&lt;br /&gt;
        var returnText = &amp;quot;{{Infobox\n| category = &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        $1 = $1.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
        switch ($1) {&lt;br /&gt;
            case &amp;quot;item&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Items&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;machinery&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Machinery&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;combat&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Combat&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;technology&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Technology&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        switch ($1) {&lt;br /&gt;
            case &amp;quot;machinery&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;\n| category-name = Machine&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;item&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;\n| category-name = Item&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return returnText;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text = text.replace(&amp;quot;stack_size&amp;quot;, &amp;quot;stack-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;poweroutput&amp;quot;, &amp;quot;power-output&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;input&amp;quot;, &amp;quot;recipe&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;raw&amp;quot;, &amp;quot;total-raw&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;technologies&amp;quot;, &amp;quot;required-technologies&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;costmultiplier&amp;quot;, &amp;quot;cost-multiplier&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;requirements&amp;quot;, &amp;quot;required-technologies&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;walkingspeed&amp;quot;, &amp;quot;walking-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;storagesize&amp;quot;, &amp;quot;storage-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;gridsize&amp;quot;, &amp;quot;grid-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;shootingspeed&amp;quot;, &amp;quot;shooting-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;damagebonus&amp;quot;, &amp;quot;damage-bonus&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;clustersize&amp;quot;, &amp;quot;cluster-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;aoesize&amp;quot;, &amp;quot;area-of-effect-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;magazinesize&amp;quot;, &amp;quot;magazine-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;recharge&amp;quot;, &amp;quot;robot-recharge-rate&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;rechargebuffer&amp;quot;, &amp;quot;internal-buffer-recharge-rate&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;wirereach&amp;quot;, &amp;quot;wire-reach&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;craftingspeed&amp;quot;, &amp;quot;crafting-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;smeltingspeed&amp;quot;, &amp;quot;smelting-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;miningpower&amp;quot;, &amp;quot;mining-power&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;miningspeed&amp;quot;, &amp;quot;mining-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;miningarea&amp;quot;, &amp;quot;mining-area&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;supplyarea&amp;quot;, &amp;quot;supply-area&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;constructionarea&amp;quot;, &amp;quot;construction-area&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;lifetime&amp;quot;, &amp;quot;lifespan&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;inventorysizebonus&amp;quot;, &amp;quot;inventory-size-bonus&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;gridsize&amp;quot;, &amp;quot;grid-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;boosttechs&amp;quot;, &amp;quot;boosting-technologies&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;allowstech&amp;quot;, &amp;quot;allows&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;storage&amp;quot;, &amp;quot;storage-size&amp;quot;);&lt;br /&gt;
    text = text.replace(/\|\s*\brecipe\b\s*=\s*(.+)\n\|\s*\boutput\b\s*=\s*(.+)/g, function (piece, $1, $2) {&lt;br /&gt;
        return &amp;quot;| recipe = &amp;quot; + $1 + &amp;quot; = &amp;quot; + $2;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text = text.concat(&amp;quot;&amp;lt;noinclude&amp;gt;[[Category:Infobox page]]&amp;lt;/noinclude&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return text;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createPage(pageTitle, content, token, page, contentOfMainPage) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            text: content,&lt;br /&gt;
            bot: true,&lt;br /&gt;
            createonly: true,&lt;br /&gt;
            token: token,&lt;br /&gt;
            summary: &amp;quot;(BOT) - Created infobox sub page for &amp;quot; + page&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           &lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.edit &amp;amp;&amp;amp; data.edit.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API.&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}*/&lt;br /&gt;
/* END OF OLD INFOBOX CONVERSION TOOL */&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=MediaWiki:Common.js&amp;diff=146305</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=MediaWiki:Common.js&amp;diff=146305"/>
		<updated>2017-09-01T22:56:40Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
/* Script in here will be executed when the page is &amp;quot;ready&amp;quot; */&lt;br /&gt;
$(document).ready(getNumberOfActiveUsers);&lt;br /&gt;
&lt;br /&gt;
/* show correct number of active users on the main page */&lt;br /&gt;
&lt;br /&gt;
function getNumberOfActiveUsers() {&lt;br /&gt;
	if (document.getElementById(&amp;quot;active-users&amp;quot;)) {&lt;br /&gt;
		$.ajax({&lt;br /&gt;
			url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
			data: {&lt;br /&gt;
				format: &#039;json&#039;,&lt;br /&gt;
				action: &#039;query&#039;,&lt;br /&gt;
				list: &#039;allusers&#039;,&lt;br /&gt;
				aulimit: 500,&lt;br /&gt;
				auactiveusers: true&lt;br /&gt;
			},&lt;br /&gt;
			dataType: &#039;json&#039;,&lt;br /&gt;
			type: &#039;GET&#039;,&lt;br /&gt;
			success: function(data) {&lt;br /&gt;
				document.getElementById(&amp;quot;active-users&amp;quot;).innerHTML = data.query.allusers.length.toString();&lt;br /&gt;
			},&lt;br /&gt;
			error: function(xhr) {&lt;br /&gt;
				console.log( &#039;Error: Request failed.&#039; );&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
/* User is bot if userGroup.some(isBot) == true */&lt;br /&gt;
&lt;br /&gt;
var userGroup = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
function getUserGroup() {&lt;br /&gt;
	$.ajax({&lt;br /&gt;
		url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
		data: {&lt;br /&gt;
			format: &#039;json&#039;,&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			meta: &#039;userinfo&#039;,&lt;br /&gt;
			uiprop: &#039;groups&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		async: false,&lt;br /&gt;
		dataType: &#039;json&#039;,&lt;br /&gt;
		type: &#039;GET&#039;,&lt;br /&gt;
		success: function(data) {&lt;br /&gt;
			userGroup = data.query.userinfo.groups&lt;br /&gt;
		},&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function isBot(group) {&lt;br /&gt;
	return group == &amp;quot;bot&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var globalToken;&lt;br /&gt;
&lt;br /&gt;
function getToken() {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            meta: &#039;tokens&#039;,&lt;br /&gt;
            bot: true&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           globalToken = data.query.tokens.csrftoken;&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            console.log(&amp;quot;Failed to get token.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Infobox more info in header */&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.more-button&amp;quot;).click(function() {&lt;br /&gt;
  $(&amp;quot;.more-content&amp;quot;).toggle(&amp;quot;fast&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Template:Inventory */&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-1&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
  $(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-1&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-2&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-2&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-3&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-3&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;.tab-head-4&amp;quot;).click(function() {&lt;br /&gt;
	$(&amp;quot;.tab-head&amp;quot;).removeClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(this).addClass(&amp;quot;tab-head-active&amp;quot;);&lt;br /&gt;
	$(&amp;quot;.tab&amp;quot;).hide();&lt;br /&gt;
	$(&amp;quot;.tab-4&amp;quot;).show();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//*** Language template ***//&lt;br /&gt;
if($(&amp;quot;.languages-flags .flag&amp;quot;).length == 0) {&lt;br /&gt;
 console.log(&amp;quot;Not showing languages bar because there&#039;s no other language&#039;s version of this page.&amp;quot;);&lt;br /&gt;
 $(&amp;quot;.languages-container&amp;quot;).hide();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Spoiler template JavaScript&lt;br /&gt;
$(&amp;quot;.spoiler-container .button&amp;quot;).click(function() {&lt;br /&gt;
  $(this).siblings(&amp;quot;.text&amp;quot;).toggle(&amp;quot;slow&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var wantedPagesListsLocation = &amp;quot;Factorio:Wanted pages&amp;quot;;&lt;br /&gt;
var enPageLength = {};&lt;br /&gt;
var stubs = {};&lt;br /&gt;
&lt;br /&gt;
function getStubs() {&lt;br /&gt;
  $.ajax({&lt;br /&gt;
		url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
		data: {&lt;br /&gt;
			format: &#039;json&#039;,&lt;br /&gt;
			action: &#039;query&#039;,&lt;br /&gt;
			list: &#039;categorymembers&#039;,&lt;br /&gt;
			cmtitle: &#039;Category:Stubs&#039;,&lt;br /&gt;
			cmlimit: 400,&lt;br /&gt;
			cmprop: &#039;title&#039;&lt;br /&gt;
		},&lt;br /&gt;
		async: false,&lt;br /&gt;
		dataType: &#039;json&#039;,&lt;br /&gt;
		type: &#039;GET&#039;,&lt;br /&gt;
		success: function( data ) {&lt;br /&gt;
			var categorymembers = data.query.categorymembers;&lt;br /&gt;
			console.log(&#039;Found &#039; + categorymembers.length + &#039; stubs.&#039;);&lt;br /&gt;
      for (var i = 0; i &amp;lt; categorymembers.length; i++) {&lt;br /&gt;
        stubs[categorymembers[i].title] = true;&lt;br /&gt;
      }&lt;br /&gt;
		},&lt;br /&gt;
		error: function( xhr ) {&lt;br /&gt;
			alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#create-wanted-pages-list&amp;quot;).click(function(){&lt;br /&gt;
    getToken();&lt;br /&gt;
    createWantedPagesLists();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function createWantedPagesLists() {&lt;br /&gt;
    getUserGroup();&lt;br /&gt;
    if (userGroup.some(isBot) == false) return;&lt;br /&gt;
    enPageLength = {};&lt;br /&gt;
    var wantedPages = getWantedPages();&lt;br /&gt;
    wantedPages = wantedPages.sort(compare);&lt;br /&gt;
    splitWantedPagesIntoDifferentLanguages(wantedPages);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function splitWantedPagesIntoDifferentLanguages(wantedPages) {&lt;br /&gt;
  var czechWantedPages = []; &lt;br /&gt;
  var germanWantedPages = [];&lt;br /&gt;
  var spanishWantedPages = [];&lt;br /&gt;
  var frenchWantedPages = [];&lt;br /&gt;
  var italianWantedPages = [];&lt;br /&gt;
  var japaneseWantedPages = [];&lt;br /&gt;
  var dutchWantedPages = [];&lt;br /&gt;
  var polishWantedPages = [];&lt;br /&gt;
  var portugueseWantedPages = [];&lt;br /&gt;
  var russianWantedPages = [];&lt;br /&gt;
  var swedishWantedPages = [];&lt;br /&gt;
  var ukrainianWantedPages = [];&lt;br /&gt;
  var chineseWantedPages = [];&lt;br /&gt;
  var turkishWantedPages = [];&lt;br /&gt;
  var koreanWantedPages = [];&lt;br /&gt;
  var wantedFiles = [];&lt;br /&gt;
  var wantedFileTalk = [];&lt;br /&gt;
  var wantedTemplates = [];&lt;br /&gt;
  var otherWantedPages = [];&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; wantedPages.length; i++) {&lt;br /&gt;
    switch (wantedPages[i].title.slice(-3)) {//&amp;quot;/cs&amp;quot;, &amp;quot;/de&amp;quot;, &amp;quot;/es&amp;quot;, &amp;quot;/fr&amp;quot;, &amp;quot;/it&amp;quot;, &amp;quot;/ja&amp;quot;, &amp;quot;/nl&amp;quot;, &amp;quot;/pl&amp;quot;, &amp;quot;/-br&amp;quot;, &amp;quot;/ru&amp;quot;, &amp;quot;/sv&amp;quot;, &amp;quot;/uk&amp;quot;, &amp;quot;/zh&amp;quot;, &amp;quot;/tr&amp;quot;, &amp;quot;/kr&amp;quot;&lt;br /&gt;
      case &amp;quot;/cs&amp;quot;: czechWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/de&amp;quot;: germanWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/es&amp;quot;: spanishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/fr&amp;quot;: frenchWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/it&amp;quot;: italianWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/ja&amp;quot;: japaneseWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/nl&amp;quot;: dutchWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/pl&amp;quot;: polishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;-br&amp;quot;: portugueseWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/ru&amp;quot;: russianWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/sv&amp;quot;: swedishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/uk&amp;quot;: ukrainianWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/zh&amp;quot;: chineseWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/tr&amp;quot;: turkishWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      case &amp;quot;/kr&amp;quot;: koreanWantedPages.push(wantedPages[i]); break;&lt;br /&gt;
      default: if (wantedPages[i].title.slice(0, 5) == &amp;quot;File:&amp;quot;) {wantedFiles.push(wantedPages[i])} else if (wantedPages[i].title.slice(0, 9) == &amp;quot;Template:&amp;quot;) {wantedTemplates.push(wantedPages[i])} else if (wantedPages[i].title.slice(0, 10) == &amp;quot;File talk:&amp;quot;) {wantedFileTalk.push(wantedPages[i])} else {otherWantedPages.push(wantedPages[i])}; break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  getStubs();&lt;br /&gt;
  createWantedPagesPage(&amp;quot;cs&amp;quot;, czechWantedPages, &amp;quot;Czech&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;de&amp;quot;, germanWantedPages, &amp;quot;German&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;es&amp;quot;, spanishWantedPages, &amp;quot;Spanish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;fr&amp;quot;, frenchWantedPages, &amp;quot;French&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;it&amp;quot;, italianWantedPages, &amp;quot;Italian&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;ja&amp;quot;, japaneseWantedPages, &amp;quot;Japanese&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;nl&amp;quot;, dutchWantedPages, &amp;quot;Dutch&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;pl&amp;quot;, polishWantedPages, &amp;quot;Polish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;pt-br&amp;quot;, portugueseWantedPages, &amp;quot;Portuguese&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;ru&amp;quot;, russianWantedPages, &amp;quot;Russian&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;sv&amp;quot;, swedishWantedPages, &amp;quot;Swedish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;uk&amp;quot;, ukrainianWantedPages, &amp;quot;Ukrainian&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;zh&amp;quot;, chineseWantedPages, &amp;quot;Chinese&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;tr&amp;quot;, turkishWantedPages, &amp;quot;Turkish&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;kr&amp;quot;, koreanWantedPages, &amp;quot;Korean&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  createWantedPagesPage(&amp;quot;file&amp;quot;, wantedFiles, &amp;quot;Files&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;file_talk&amp;quot;, wantedFileTalk, &amp;quot;File talk&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;template&amp;quot;, wantedTemplates, &amp;quot;Templates&amp;quot;);&lt;br /&gt;
  createWantedPagesPage(&amp;quot;other&amp;quot;, otherWantedPages, &amp;quot;Other&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createWantedPagesPage(location, wantedPages, language) {&lt;br /&gt;
  var languageSuffixes = [&amp;quot;cs&amp;quot;, &amp;quot;de&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;fr&amp;quot;, &amp;quot;it&amp;quot;, &amp;quot;ja&amp;quot;, &amp;quot;nl&amp;quot;, &amp;quot;pl&amp;quot;, &amp;quot;pt-br&amp;quot;, &amp;quot;ru&amp;quot;, &amp;quot;sv&amp;quot;, &amp;quot;uk&amp;quot;, &amp;quot;zh&amp;quot;, &amp;quot;tr&amp;quot;, &amp;quot;kr&amp;quot;]&lt;br /&gt;
  if (languageSuffixes.indexOf(location) &amp;gt; -1) {&lt;br /&gt;
    var formattedWantedPages = &amp;quot;Number of wanted pages in &amp;quot; + language + &amp;quot;: &amp;quot; + wantedPages.length + &amp;quot;\n{|class=wikitable\n!#\n!Page\n!Links to this page\n!Length of the corresponding English page in bytes&amp;quot;;&lt;br /&gt;
    for (var i = 0; i &amp;lt; wantedPages.length; i++) {&lt;br /&gt;
      //I don&#039;t dare to make this into a function because I don&#039;t want this to be async so lets put a whole api request in here lul&lt;br /&gt;
      var enPageTitle = wantedPages[i].title.slice(0, - location.length - 1)&lt;br /&gt;
      var length = 0;&lt;br /&gt;
      if (enPageLength[enPageTitle]) {&lt;br /&gt;
        length = enPageLength[enPageTitle]&lt;br /&gt;
      } else {&lt;br /&gt;
        $.ajax({&lt;br /&gt;
          url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
          data: {&lt;br /&gt;
              format: &#039;json&#039;,&lt;br /&gt;
              action: &#039;query&#039;,&lt;br /&gt;
              titles: enPageTitle,&lt;br /&gt;
              prop: &#039;info&#039;,&lt;br /&gt;
          },&lt;br /&gt;
          async: false,&lt;br /&gt;
          dataType: &#039;json&#039;,&lt;br /&gt;
          type: &#039;POST&#039;,&lt;br /&gt;
          success: function( data ) {&lt;br /&gt;
            var pages = data.query.pages;&lt;br /&gt;
            var pageInfo = pages[Object.keys(pages)[0]];&lt;br /&gt;
            length = pageInfo[&#039;length&#039;];&lt;br /&gt;
            if (!length) length = &#039;---&#039;;&lt;br /&gt;
            var redirect = pageInfo[&#039;redirect&#039;];&lt;br /&gt;
            if (redirect == &amp;quot;&amp;quot;) {&lt;br /&gt;
              length = length + &amp;quot; (Redirect)&amp;quot;;&lt;br /&gt;
            } else if (stubs[enPageTitle]) {&lt;br /&gt;
              length = length + &amp;quot; (Stub)&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            enPageLength[enPageTitle] = length&lt;br /&gt;
          },&lt;br /&gt;
          error: function( xhr ) {&lt;br /&gt;
            alert(&amp;quot;Failed to get page length: &amp;quot; + pageTitle);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      formattedWantedPages = formattedWantedPages.concat(&amp;quot;\n|-\n|&amp;quot; + (i + 1) + &amp;quot;\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].title + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=Special:WhatLinksHere/&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].value + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(enPageTitle) + &amp;quot; &amp;quot; + length + &amp;quot;]&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    var formattedWantedPages = &amp;quot;Number of wanted pages in &amp;quot; + language + &amp;quot;: &amp;quot; + wantedPages.length + &amp;quot;\n{|class=wikitable\n!#\n!Page\n!Links to this page&amp;quot;;&lt;br /&gt;
    for (var i = 0; i &amp;lt; wantedPages.length; i++) {    &lt;br /&gt;
      formattedWantedPages = formattedWantedPages.concat(&amp;quot;\n|-\n|&amp;quot; + (i + 1) + &amp;quot;\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].title + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=Special:WhatLinksHere/&amp;quot; + encodeURI(wantedPages[i].title) + &amp;quot; &amp;quot; + wantedPages[i].value + &amp;quot;]&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  formattedWantedPages = formattedWantedPages.concat(&amp;quot;\n|}&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  createPage(wantedPagesListsLocation + &amp;quot;/&amp;quot; + location, formattedWantedPages, &amp;quot;Updated the list of wanted pages for &amp;quot; + language + &amp;quot;.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function performNullEdit(pageTitle, summary) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            section: 0,&lt;br /&gt;
            text: &amp;quot;&amp;quot;,&lt;br /&gt;
            token: globalToken,&lt;br /&gt;
            summary: summary,&lt;br /&gt;
            bot: true&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           console.log(&amp;quot;Performed null edit&amp;quot;);&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            console.log(&amp;quot;Failed to perform null edit&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function purgeWhatLinksHere(pageTitle) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &amp;quot;json&amp;quot;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &amp;quot;backlinks&amp;quot;,&lt;br /&gt;
            bltitle: pageTitle,&lt;br /&gt;
            bllimit: 500&lt;br /&gt;
        },&lt;br /&gt;
        async: true,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            console.log(data);&lt;br /&gt;
            for (var i = 0; i &amp;lt; data.query.backlinks.length; i++) {&lt;br /&gt;
                purgePage(data.query.backlinks[i].title);&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
            console.log(&amp;quot;Failed purging&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function purgePage(pageTitle) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            action: &#039;purge&#039;,&lt;br /&gt;
            forcelinkupdate: true,&lt;br /&gt;
            titles: pageTitle,&lt;br /&gt;
            prop: &amp;quot;info&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        async: true,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            console.log(&amp;quot;purging &amp;quot; + pageTitle);&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
            console.log(&amp;quot;Failed purging&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function compare(a,b) {&lt;br /&gt;
  if (parseInt(a.value) &amp;gt; parseInt(b.value))&lt;br /&gt;
    return -1;&lt;br /&gt;
  if (parseInt(a.value) &amp;lt; parseInt(b.value))&lt;br /&gt;
    return 1;&lt;br /&gt;
  if (a.title &amp;lt; b.title)&lt;br /&gt;
    return -1;&lt;br /&gt;
  if (a.title &amp;gt; b.title)&lt;br /&gt;
    return 1;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createPage(pageTitle, content, summary) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            text: content,&lt;br /&gt;
            token: globalToken,&lt;br /&gt;
            summary: summary,&lt;br /&gt;
            bot: true&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           console.log(&amp;quot;created page: &amp;quot; + pageTitle);&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            console.log(&amp;quot;failed to create page&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getWantedPages() {&lt;br /&gt;
   var wantedPages = [];&lt;br /&gt;
&lt;br /&gt;
   $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &#039;querypage&#039;,&lt;br /&gt;
            qppage: &#039;Wantedpages&#039;,&lt;br /&gt;
            qplimit: &#039;5000&#039;,&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var results = data.query.querypage.results;&lt;br /&gt;
            for (var i = 0; i &amp;lt; results.length; i++) {&lt;br /&gt;
               var pageObject = new WantedPage(results[i].title, results[i].value);&lt;br /&gt;
               var alreadyInArray = false;&lt;br /&gt;
               for (var j = 0; j &amp;lt; wantedPages.length; j++) {&lt;br /&gt;
                 if (wantedPages[j].title == pageObject.title) {&lt;br /&gt;
                    alreadyInArray = true;&lt;br /&gt;
                 }&lt;br /&gt;
               }&lt;br /&gt;
               if (!alreadyInArray) {&lt;br /&gt;
                 wantedPages.push(pageObject);&lt;br /&gt;
               }&lt;br /&gt;
               if (pageObject.title == &amp;quot;Rocket defense/it&amp;quot;) {&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed. Category&#039; );&lt;br /&gt;
        }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
$.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &#039;querypage&#039;,&lt;br /&gt;
            qppage: &#039;Wantedpages&#039;,&lt;br /&gt;
            qplimit: &#039;5000&#039;,&lt;br /&gt;
            qpoffset: &#039;3000&#039;,&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var results = data.query.querypage.results;&lt;br /&gt;
            for (var i = 0; i &amp;lt; results.length; i++) {&lt;br /&gt;
               var pageObject = new WantedPage(results[i].title, results[i].value);&lt;br /&gt;
               var alreadyInArray = false;&lt;br /&gt;
               for (var j = 0; j &amp;lt; wantedPages.length; j++) {&lt;br /&gt;
                 if (wantedPages[j].title == pageObject.title) {&lt;br /&gt;
                    alreadyInArray = true;&lt;br /&gt;
                 }&lt;br /&gt;
               }&lt;br /&gt;
               if (!alreadyInArray) {&lt;br /&gt;
                 wantedPages.push(pageObject);&lt;br /&gt;
               }&lt;br /&gt;
               if (pageObject.title == &amp;quot;Rocket defense/it&amp;quot;) {&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed. Category&#039; );&lt;br /&gt;
        }&lt;br /&gt;
  });&lt;br /&gt;
  return wantedPages;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function WantedPage(pageTitle, pageValue) {&lt;br /&gt;
  this.title = pageTitle;&lt;br /&gt;
  this.value = pageValue;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(&amp;quot;#create-redirect-list&amp;quot;).click(function(){&lt;br /&gt;
  getToken();&lt;br /&gt;
  createRedirectList();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function createRedirectList() {&lt;br /&gt;
    getUserGroup();&lt;br /&gt;
    if (userGroup.some(isBot) == false) return;&lt;br /&gt;
    getRedirects();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function getRedirects() {&lt;br /&gt;
  var redirects = [];&lt;br /&gt;
&lt;br /&gt;
  $.ajax({&lt;br /&gt;
    url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
    data: {&lt;br /&gt;
      format: &#039;json&#039;,&lt;br /&gt;
      action: &#039;query&#039;,&lt;br /&gt;
      list: &#039;allpages&#039;,&lt;br /&gt;
      aplimit: &#039;5000&#039;,&lt;br /&gt;
      apfilterredir: &#039;redirects&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    async: false,&lt;br /&gt;
    dataType: &#039;json&#039;,&lt;br /&gt;
    type: &#039;GET&#039;,&lt;br /&gt;
    success: function( data ) {&lt;br /&gt;
      redirects = data.query.allpages;&lt;br /&gt;
    },&lt;br /&gt;
    error: function( xhr ) {&lt;br /&gt;
      alert( &#039;Error: Allpages request failed.&#039; );&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  $.ajax({&lt;br /&gt;
    url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
    data: {&lt;br /&gt;
      format: &#039;json&#039;,&lt;br /&gt;
      action: &#039;query&#039;,&lt;br /&gt;
      list: &#039;allpages&#039;,&lt;br /&gt;
      aplimit: &#039;5000&#039;,&lt;br /&gt;
      apfilterredir: &#039;redirects&#039;,&lt;br /&gt;
      apnamespace: &#039;6&#039;&lt;br /&gt;
    },&lt;br /&gt;
    async: false,&lt;br /&gt;
    dataType: &#039;json&#039;,&lt;br /&gt;
    type: &#039;GET&#039;,&lt;br /&gt;
    success: function( data ) {&lt;br /&gt;
      for (var i = 0; i &amp;lt; data.query.allpages.length; i++) {&lt;br /&gt;
        redirects.push(data.query.allpages[i])&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    error: function( xhr ) {&lt;br /&gt;
      alert( &#039;Error: Allpages request failed.&#039; );&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
  &lt;br /&gt;
  for (var i = 0; i &amp;lt; redirects.length; i++) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
      url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
      data: {&lt;br /&gt;
          format: &amp;quot;json&amp;quot;,&lt;br /&gt;
          action: &#039;query&#039;,&lt;br /&gt;
          list: &amp;quot;backlinks&amp;quot;,&lt;br /&gt;
          bltitle: redirects[i].title,&lt;br /&gt;
          bllimit: 500&lt;br /&gt;
      },&lt;br /&gt;
      async: false,&lt;br /&gt;
      type: &#039;GET&#039;,&lt;br /&gt;
      success: function( data ) {&lt;br /&gt;
        redirects[i].value = data.query.backlinks.length;&lt;br /&gt;
      },&lt;br /&gt;
      error: function( xhr ) {&lt;br /&gt;
        alert( &#039;Error: Backlinks request failed.&#039; );&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  &lt;br /&gt;
  }`&lt;br /&gt;
  redirects = redirects.sort(compare);&lt;br /&gt;
  createRedirectsPage(&amp;quot;Factorio:Redirects&amp;quot;, redirects);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function createRedirectsPage(location, redirects) {&lt;br /&gt;
  var formattedRedirects = &amp;quot;{|class=wikitable\n!#\n!Redirect\n!Links to this redirect&amp;quot;;&lt;br /&gt;
  for (var i = 0; i &amp;lt; redirects.length; i++) {    &lt;br /&gt;
    formattedRedirects = formattedRedirects.concat(&amp;quot;\n|-\n|&amp;quot; + (i + 1) + &amp;quot;\n|[https://wiki.factorio.com/index.php?title=&amp;quot; + encodeURI(redirects[i].title) + &amp;quot;&amp;amp;redirect=no &amp;quot; + redirects[i].title + &amp;quot;]\n|[https://wiki.factorio.com/index.php?title=Special:WhatLinksHere/&amp;quot; + encodeURI(redirects[i].title) + &amp;quot; &amp;quot; + redirects[i].value + &amp;quot;]&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  formattedRedirects = formattedRedirects.concat(&amp;quot;\n|}&amp;quot;);&lt;br /&gt;
  createPage(location, formattedRedirects, &amp;quot;Updated the list of redirects.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* OLD INFOBOX CONVERSION TOOLS */&lt;br /&gt;
/*function targetAllPagesInCategory(category) {&lt;br /&gt;
    var languageSuffixes = [&amp;quot;/fr&amp;quot;, &amp;quot;/ru&amp;quot;, &amp;quot;/de&amp;quot;]; //, &amp;quot;/cs&amp;quot;, &amp;quot;/de&amp;quot;, &amp;quot;/es&amp;quot;, &amp;quot;/fr&amp;quot;, &amp;quot;/it&amp;quot;, &amp;quot;/nl&amp;quot;, &amp;quot;/pl&amp;quot;, &amp;quot;/pt-br&amp;quot;, &amp;quot;/ru&amp;quot;, &amp;quot;/sv&amp;quot;, &amp;quot;/uk&amp;quot;, &amp;quot;/zh&amp;quot;, &amp;quot;&amp;quot;];&lt;br /&gt;
    for (var j = 0; j &amp;lt; languageSuffixes.length; j++) {&lt;br /&gt;
      $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            list: &#039;categorymembers&#039;,&lt;br /&gt;
            cmtitle: (category + languageSuffixes[j]),&lt;br /&gt;
            cmlimit: 500&lt;br /&gt;
        },&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var pages = data.query.categorymembers;&lt;br /&gt;
            for (var i = 0; i &amp;lt; pages.length; i++) {&lt;br /&gt;
                    //purgePage(pages[i].title);&lt;br /&gt;
                    extractPageInfo(pages[i].title, &amp;quot;9c28a1344a20bf189fda7d58339e518257f2dd9b+\\&amp;quot;);&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.query &amp;amp;&amp;amp; data.query.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info + &#039;Category&#039; );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API. Category&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed. Category&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function extractPageInfo(pageTitle, token) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            titles: pageTitle,&lt;br /&gt;
            prop: &#039;revisions&#039;,&lt;br /&gt;
            rvprop: &#039;content&#039;&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;GET&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            var pages = data.query.pages;&lt;br /&gt;
            var revisions = pages[Object.keys(pages)[0]].revisions[0];&lt;br /&gt;
            var content = revisions[Object.keys(revisions)[2]]&lt;br /&gt;
            var title = pages[Object.keys(pages)[0]].title;&lt;br /&gt;
            createNewInfoboxPage(title, content, token);&lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.query &amp;amp;&amp;amp; data.query.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API.&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNewInfoboxPage(page, contentOfMainPage, token) {&lt;br /&gt;
    var infoboxText = getInfoboxFromFullPageContent(contentOfMainPage);&lt;br /&gt;
&lt;br /&gt;
    var infoboxPageTitle = page.replace(/\/(de|fr|nl|it|es|ru|pt\-br|cs|pl|sv|uk|zh)/g, function(piece) {return &amp;quot;&amp;quot;;}).concat(&amp;quot;/infobox&amp;quot;);&lt;br /&gt;
    var oldPageRevisedText = getOldPageRevisedText(page, contentOfMainPage, infoboxPageTitle);	&lt;br /&gt;
    removeInfoboxFromMain(page, oldPageRevisedText, token);&lt;br /&gt;
&lt;br /&gt;
    if (infoboxText != null) {&lt;br /&gt;
      if (/\/(de|fr|nl|it|es|ru|pt\-br|cs|pl|sv|uk|zh)/g.test(page)) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      var newPageTitle = page.concat(&amp;quot;/infobox&amp;quot;);&lt;br /&gt;
      var convertedInfoboxText = convertInfobox(infoboxText, token);&lt;br /&gt;
      createPage(newPageTitle, convertedInfoboxText, token, page, contentOfMainPage);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getOldPageRevisedText(pageTitle, content, infoboxPageTitle) {&lt;br /&gt;
    content = content.replace(/{{\bCombat\b(\s+(\||{).+)+\s}}/gi, function (piece) {&lt;br /&gt;
        return &amp;quot;{{:&amp;quot; + infoboxPageTitle + &amp;quot;}}&amp;quot;;&lt;br /&gt;
    });&lt;br /&gt;
    return content;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function removeInfoboxFromMain(pageTitle, content, token) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            text: content,&lt;br /&gt;
            bot: true,&lt;br /&gt;
            token: token,&lt;br /&gt;
            summary: &amp;quot;(BOT) - Replaced old infobox with a link to the /infobox subpage&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.edit &amp;amp;&amp;amp; data.edit.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API.&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    })&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function getInfoboxFromFullPageContent(contentOfPage) {&lt;br /&gt;
    var matches = contentOfPage.match(/{{\bCombat\b(\s+\|.+)+\s}}/gi);&lt;br /&gt;
if (matches != null &amp;amp;&amp;amp; matches.length &amp;gt; 0) {&lt;br /&gt;
 infoboxText = matches[0];&lt;br /&gt;
} else {&lt;br /&gt;
 infoboxText = null;&lt;br /&gt;
}&lt;br /&gt;
    return infoboxText;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function convertInfobox(text) {&lt;br /&gt;
    text = text.replace(/{{(\w+)/g, function (piece, $1) {&lt;br /&gt;
        var returnText = &amp;quot;{{Infobox\n| category = &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        $1 = $1.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
        switch ($1) {&lt;br /&gt;
            case &amp;quot;item&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Items&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;machinery&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Machinery&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;combat&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Combat&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;technology&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;Technology&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        switch ($1) {&lt;br /&gt;
            case &amp;quot;machinery&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;\n| category-name = Machine&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
            case &amp;quot;item&amp;quot;:&lt;br /&gt;
                returnText = returnText.concat(&amp;quot;\n| category-name = Item&amp;quot;);&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return returnText;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text = text.replace(&amp;quot;stack_size&amp;quot;, &amp;quot;stack-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;poweroutput&amp;quot;, &amp;quot;power-output&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;input&amp;quot;, &amp;quot;recipe&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;raw&amp;quot;, &amp;quot;total-raw&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;technologies&amp;quot;, &amp;quot;required-technologies&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;costmultiplier&amp;quot;, &amp;quot;cost-multiplier&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;requirements&amp;quot;, &amp;quot;required-technologies&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;walkingspeed&amp;quot;, &amp;quot;walking-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;storagesize&amp;quot;, &amp;quot;storage-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;gridsize&amp;quot;, &amp;quot;grid-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;shootingspeed&amp;quot;, &amp;quot;shooting-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;damagebonus&amp;quot;, &amp;quot;damage-bonus&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;clustersize&amp;quot;, &amp;quot;cluster-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;aoesize&amp;quot;, &amp;quot;area-of-effect-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;magazinesize&amp;quot;, &amp;quot;magazine-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;recharge&amp;quot;, &amp;quot;robot-recharge-rate&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;rechargebuffer&amp;quot;, &amp;quot;internal-buffer-recharge-rate&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;wirereach&amp;quot;, &amp;quot;wire-reach&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;craftingspeed&amp;quot;, &amp;quot;crafting-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;smeltingspeed&amp;quot;, &amp;quot;smelting-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;miningpower&amp;quot;, &amp;quot;mining-power&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;miningspeed&amp;quot;, &amp;quot;mining-speed&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;miningarea&amp;quot;, &amp;quot;mining-area&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;supplyarea&amp;quot;, &amp;quot;supply-area&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;constructionarea&amp;quot;, &amp;quot;construction-area&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;lifetime&amp;quot;, &amp;quot;lifespan&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;inventorysizebonus&amp;quot;, &amp;quot;inventory-size-bonus&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;gridsize&amp;quot;, &amp;quot;grid-size&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;boosttechs&amp;quot;, &amp;quot;boosting-technologies&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;allowstech&amp;quot;, &amp;quot;allows&amp;quot;);&lt;br /&gt;
    text = text.replace(&amp;quot;storage&amp;quot;, &amp;quot;storage-size&amp;quot;);&lt;br /&gt;
    text = text.replace(/\|\s*\brecipe\b\s*=\s*(.+)\n\|\s*\boutput\b\s*=\s*(.+)/g, function (piece, $1, $2) {&lt;br /&gt;
        return &amp;quot;| recipe = &amp;quot; + $1 + &amp;quot; = &amp;quot; + $2;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text = text.concat(&amp;quot;&amp;lt;noinclude&amp;gt;[[Category:Infobox page]]&amp;lt;/noinclude&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return text;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createPage(pageTitle, content, token, page, contentOfMainPage) {&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: &#039;https://wiki.factorio.com/api.php&#039;,&lt;br /&gt;
        data: {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;edit&#039;,&lt;br /&gt;
            title: pageTitle,&lt;br /&gt;
            text: content,&lt;br /&gt;
            bot: true,&lt;br /&gt;
            createonly: true,&lt;br /&gt;
            token: token,&lt;br /&gt;
            summary: &amp;quot;(BOT) - Created infobox sub page for &amp;quot; + page&lt;br /&gt;
        },&lt;br /&gt;
        async: false,&lt;br /&gt;
        dataType: &#039;json&#039;,&lt;br /&gt;
        type: &#039;POST&#039;,&lt;br /&gt;
        success: function( data ) {&lt;br /&gt;
           &lt;br /&gt;
            if ( data &amp;amp;&amp;amp; data.edit &amp;amp;&amp;amp; data.edit.result == &#039;Success&#039; ) {&lt;br /&gt;
                window.location.reload(); // reload page if edit was successful&lt;br /&gt;
            } else if ( data &amp;amp;&amp;amp; data.error ) {&lt;br /&gt;
                //alert( &#039;Error: API returned error code &amp;quot;&#039; + data.error.code + &#039;&amp;quot;: &#039; + data.error.info );&lt;br /&gt;
            } else {&lt;br /&gt;
                //alert( &#039;Error: Unknown result from API.&#039; );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        error: function( xhr ) {&lt;br /&gt;
            //alert( &#039;Error: Request failed.&#039; );&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}*/&lt;br /&gt;
/* END OF OLD INFOBOX CONVERSION TOOL */&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:Oxyd&amp;diff=125273</id>
		<title>User talk:Oxyd</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:Oxyd&amp;diff=125273"/>
		<updated>2016-05-30T15:53:30Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 15:53, 30 May 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Oxyd&amp;diff=125272</id>
		<title>User:Oxyd</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Oxyd&amp;diff=125272"/>
		<updated>2016-05-30T15:53:30Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Your biography must be at least 8 words long.&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:Blakemw&amp;diff=124622</id>
		<title>User talk:Blakemw</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:Blakemw&amp;diff=124622"/>
		<updated>2016-04-15T17:29:42Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 17:29, 15 April 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Blakemw&amp;diff=124621</id>
		<title>User:Blakemw</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Blakemw&amp;diff=124621"/>
		<updated>2016-04-15T17:29:42Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I post under the same name on the factorio forums&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:Glitch0011&amp;diff=124620</id>
		<title>User talk:Glitch0011</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:Glitch0011&amp;diff=124620"/>
		<updated>2016-04-15T17:29:35Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 17:29, 15 April 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Glitch0011&amp;diff=124619</id>
		<title>User:Glitch0011</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Glitch0011&amp;diff=124619"/>
		<updated>2016-04-15T17:29:35Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Just started playing Factorio and have noticed a few things that could be improved on this Wiki.&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:Ferrytale&amp;diff=124618</id>
		<title>User talk:Ferrytale</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:Ferrytale&amp;diff=124618"/>
		<updated>2016-04-15T17:29:30Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 17:29, 15 April 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Ferrytale&amp;diff=124617</id>
		<title>User:Ferrytale</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Ferrytale&amp;diff=124617"/>
		<updated>2016-04-15T17:29:30Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, I am German, 21 years old, and passionate Factorio player :)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:Descryant&amp;diff=124616</id>
		<title>User talk:Descryant</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:Descryant&amp;diff=124616"/>
		<updated>2016-04-15T17:29:25Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 17:29, 15 April 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Descryant&amp;diff=124615</id>
		<title>User:Descryant</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Descryant&amp;diff=124615"/>
		<updated>2016-04-15T17:29:25Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Played the game for ~500 hours, alway striving for efficient and elegant designs.&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:Csabattie&amp;diff=124614</id>
		<title>User talk:Csabattie</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:Csabattie&amp;diff=124614"/>
		<updated>2016-04-15T17:29:20Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 17:29, 15 April 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Csabattie&amp;diff=124613</id>
		<title>User:Csabattie</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Csabattie&amp;diff=124613"/>
		<updated>2016-04-15T17:29:20Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a french player who whant to help you to translate the game in french&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:TOFM&amp;diff=124612</id>
		<title>User talk:TOFM</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:TOFM&amp;diff=124612"/>
		<updated>2016-04-15T17:29:13Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 17:29, 15 April 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:TOFM&amp;diff=124611</id>
		<title>User:TOFM</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:TOFM&amp;diff=124611"/>
		<updated>2016-04-15T17:29:12Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Epic leet 1337 hacker making awesome Factorio modding stuffs.&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:Tmr2000&amp;diff=122381</id>
		<title>User talk:Tmr2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:Tmr2000&amp;diff=122381"/>
		<updated>2015-12-10T11:05:46Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 11:05, 10 December 2015 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:Tmr2000&amp;diff=122380</id>
		<title>User:Tmr2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:Tmr2000&amp;diff=122380"/>
		<updated>2015-12-10T11:05:46Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Factorio Is Awesome, incase you did not know!&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User_talk:The_Puzzlemaker&amp;diff=122374</id>
		<title>User talk:The Puzzlemaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User_talk:The_Puzzlemaker&amp;diff=122374"/>
		<updated>2015-12-07T09:03:31Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;factorio&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:HanziQ|HanziQ]] ([[User talk:HanziQ|talk]]) 09:03, 7 December 2015 (UTC)&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=User:The_Puzzlemaker&amp;diff=122373</id>
		<title>User:The Puzzlemaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=User:The_Puzzlemaker&amp;diff=122373"/>
		<updated>2015-12-07T09:03:31Z</updated>

		<summary type="html">&lt;p&gt;HanziQ: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Coder, piano player, etc. Makes mods for Factorio and [the extremely popular game] Minecraft&lt;/div&gt;</summary>
		<author><name>HanziQ</name></author>
	</entry>
</feed>