Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// Enable caching for resource loads, see [[User:SD0001/Making_user_scripts_load_faster]], @revision 8
if (!/\bnocache=\b/.test(location.href)) { // Don't enable if nocache=1 url parameter is given
	let config = mw.config.values;
	let ctypeJs = 'text/javascript';
	let ctypeCss = 'text/css';
	let loadResource = (page, sitename, ctype) => {
		page = page.replace(/special:mypage/i, 'User:' + config.wgUserName);
		return $.get(
			'https://' + sitename + '/w/api.php?titles=' + page + // page is already URL-encoded
			'&origin=*&format=json&formatversion=2&uselang=content&maxage=86400&smaxage=86400' + 
			'&action=query&prop=revisions|info&rvprop=content&rvlimit=1&inprop=protection'
		).then((apiResponse) => {
			let apiPage = apiResponse.query.pages[0];
			if (!apiPage.missing) {
				if (apiPage.ns !== 2 && apiPage.ns !== 8 && !apiPage.protection.find(p => p.type === 'edit' && p.level === 'sysop')) {
					return $.Deferred().reject('Refused to load "' + page + '"@' + sitename + ': unprotected page');
				}
				let content = apiPage.revisions[0].content;
				if ((!ctype || ctype === ctypeJs) && apiPage.contentmodel === 'javascript') {
					let scriptTag = document.createElement('script');
					scriptTag.innerHTML = content;
					document.head.appendChild(scriptTag);
			    } else if (ctype === ctypeCss && apiPage.contentmodel === 'css') {
					mw.loader.addStyleTag(content);
				} else {
					return $.Deferred().reject('Refused to load "' + page + '"@' + sitename + ': content type mismatch');
				}
			}
		});
	};
	let serverName = config.wgServerName;
	let getSiteTitle = (url) => {
		let siteRgx = /^(?:(?:https:)?\/\/(.*))?\/w\/index.php/.exec(url),
			titleRgx = /\btitle=([^=?&]*)/.exec(url);
		if (siteRgx && titleRgx && /\baction=raw\b/.test(url) && /\bctype=/.test(url)) {
			return [titleRgx[1], siteRgx[1] || serverName];	
		} else return null;
	};
	window.importScript = (page) => {
		loadResource(encodeURIComponent(page), serverName, ctypeJs);
	};
	window.importStyleSheet = (page) => {
		loadResource(encodeURIComponent(page), serverName, ctypeCss);
	};
	let oldMwLoaderLoad = mw.loader.load;
	mw.loader.load = function(url, type) {
		let linkParts = getSiteTitle(url);
		if (linkParts) {
			loadResource(linkParts[0], linkParts[1], type);
		} else {
			oldMwLoaderLoad.apply(mw.loader, [...arguments]);
		}
	};
	let oldMwLoaderGetScript = mw.loader.getScript;
	mw.loader.getScript = function(url) {
		let linkParts = getSiteTitle(url);
		if (linkParts) {
			return loadResource(linkParts[0], linkParts[1], ctypeJs);
		} else {
			return oldMwLoaderGetScript.apply(mw.loader, [...arguments]);
		}
	};
}

// conditional load [[Wikipedia:Namespace]]. note that talk is odds
const ns = mw.config.get('wgNamespaceNumber');
const page = mw.config.get('wgPageName');

// main
if (ns == 0) {
	importScript('User:DannyS712/deOrphan.js'); // Backlink: [[User:DannyS712/deOrphan.js]]
	importScript('User:Evad37/rater.js'); // Backlink: [[User:Evad37/rater.js]] 
	importScript('User:MPGuy2824/MoveToDraft.js'); // Backlink: [[User:MPGuy2824/MoveToDraft.js]]
	importScript('User:Nardog/VitalTopicon.js'); // Backlink: [[User:Nardog/VitalTopicon.js]]
    importScript('User:Sohom_Datta/fastreview.js'); // Backlink: [[User:Sohom_Datta/fastreview.js]]
}

// draft
if (ns == 118) {
	importScript('User:SD0001/edits-since-decline.js'); // Backlink: [[User:SD0001/edits-since-decline.js]]
}

// (main, user, draft) - articlelikes
if (ns == 0 || ns == 118 || ns == 2) {

//importScript('User:Wugapodes/Capricorn.js'); // Backlink: [[User:Wugapodes/Capricorn.js]]
	// importScript('user:Qwertyytrewqqwerty/DisamAssist.js'); // Backlink: [[user:Qwertyytrewqqwerty/DisamAssist.js]]
	
	//do not work with new source editor
	//mw.loader.load('//de.wikipedia.org/w/index.php?title=Benutzer:TMg/autoFormatter.js&action=raw&ctype=text/javascript');
	//importScript('User:PC-XT/Advisor.js'); // Backlink: [[User:PC-XT/Advisor.js]]

	// MOS/formatting
	// importScript( 'User:DemonDays64/Scripts/Dumb quotes.js' ); // Backlink: [[User:DemonDays64/Scripts/Dumb quotes.js]]
	importScript('User:Evad37/duplinks-alt.js'); // Backlink: [[User:Evad37/duplinks-alt.js]]
	importScript('User:Rublov/refspace.js'); // Backlink: [[User:Rublov/refspace.js]]
	importScript('User:Novem Linguae/Scripts/DraftCleaner.js'); // Backlink: [[User:Novem Linguae/Scripts/DraftCleaner.js]]
	
	// Citations 
	importScript('User:Headbomb/unreliable.js'); // Backlink: [[User:Headbomb/unreliable.js]]
	importScript('User:SuperHamster/CiteUnseen.js'); // Backlink: [[User:SuperHamster/CiteUnseen.js]]
	importScript('User:Kaniivel/RefConsolidate_start.js'); // Backlink: [[User:Kaniivel/RefConsolidate_start.js]]
	importScript('User:Polygnotus/DuplicateReferences.js'); // Backlink: [[User:Polygnotus/DuplicateReferences.js]]
	importScript('User:Phlsph7/HighlightUnreferencedPassages.js'); // Backlink: [[User:Phlsph7/HighlightUnreferencedPassages.js]]
	importScript('User:BrandonXLF/Autoref.js'); // Backlink: [[User:BrandonXLF/Autoref.js]]
	importScript('User:Trappist the monk/HarvErrors.js'); // Backlink: [[User:Trappist the monk/HarvErrors.js]]
	importScript('User:Nardog/RefRenamer.js'); // Backlink: [[User:Nardog/RefRenamer.js]]
	importScript('User:Scaledish/Scripts/404.js'); // Backlink: [[User:Scaledish/Scripts/404.js]]
	
	// AfC, NPP, and XfD
	importScript('User:Novem Linguae/Scripts/WatchlistAFD.js'); // Backlink: [[User:Novem Linguae/Scripts/WatchlistAFD.js]]
	//importScript('User:Ahecht/Scripts/draft-sorter.js'); // Backlink: [[User:Ahecht/Scripts/draft-sorter.js]]
	//importScript('User:Writ Keeper/Scripts/deletionFinder.js'); // Backlink: [[User:Writ Keeper/Scripts/deletionFinder.js]]
	// importScript('User:Novem Linguae/Scripts/NotSoFast.js'); // Backlink: [[User:Novem Linguae/Scripts/NotSoFast.js]]
	importScript('User:Sohom Datta/PageTriageUserspaceLogger.js'); // Backlink: [[User:Sohom Datta/PageTriageUserspaceLogger.js]]
	importScript('User:DannyS712/copyvio-check.js'); // Backlink: [[User:DannyS712/copyvio-check.js]]

	// Page info
	importScript('User:Shubinator/DYKcheck.js'); // Backlink: [[User:Shubinator/DYKcheck.js]]
}

// Discussion: wikipedia + talk namespaces
if (ns == 4 || ns % 2 != 0) {
	importScript('User:DaxServer/DiscussionCloser.js'); // Backlink: [[User:DaxServer/DiscussionCloser.js]]
	var autoWatchRequests = false
	importScript('User:Terasail/COI_Request_Tool.js'); // Backlink: [[User:Terasail/COI_Request_Tool.js]]
	
	// Admin
	importScript('User:MusikAnimal/responseHelper.js'); // Backlink: [[User:MusikAnimal/responseHelper.js]]
	window.responseHelperNavLinks = false;
}

// User
if (ns == 2 || ns == 3){
	importScript('User:PleaseStand/userinfo.js'); // Backlink: [[User:PleaseStand/userinfo.js]]
	importScript('User:MusikAnimal/spamublock.js'); // Backlink: [[User:MusikAnimal/spamublock.js]]

}

// Convenience buttons/UI
importScript('User:PrimeHunter/My_subpages.js'); // Backlink: [[User:PrimeHunter/My_subpages.js]]
importScript('User:Evad37/ToDoLister.js'); // Backlink: [[User:Evad37/ToDoLister.js]]
importScript('User:Sportzpikachu/bookmarks.js'); // Backlink: [[User:Sportzpikachu/bookmarks.js]]
importScript('User:Rublov/anonymize.js'); // Backlink: [[User:Rublov/anonymize.js]]
importScript('User:Opencooper/talkCount.js'); // Backlink: [[User:Opencooper/talkCount.js]]

// Editing
importScript('User:BrandonXLF/QuickEdit.js'); // Backlink: [[User:BrandonXLF/QuickEdit.js]]

// Watchlist, history, diffs and recent changes patrol
importScript('User:Evad37/Thanky.js'); // Backlink: [[User:Evad37/Thanky.js]] (thanks button on diffs/watchlist/RC/etc)
importScript('User:Zvn/confirmwatchlistrollback.js'); // Backlink: [[User:Zvn/confirmwatchlistrollback.js]]
importScript('User:MusikAnimal/rollbackTouch.js'); // Backlink: [[User:MusikAnimal/rollbackTouch.js]]
importScript('User:BrandonXLF/CompareRevisions.js'); // Backlink: [[User:BrandonXLF/CompareRevisions.js]]
importScript('User:Awesome Aasim/rcpatrol.js'); // Backlink: [[User:Awesome Aasim/rcpatrol.js]]
importScript('User:SD0001/watchlist-update-title.js'); // Backlink: [[User:SD0001/watchlist-update-title.js]]
importScript('User:Enterprisey/diff-permalink.js'); // Backlink: [[User:Enterprisey/diff-permalink.js]]
// importScript('User:Evad37/TextDiff.js'); // Backlink: [[User:Evad37/TextDiff.js]]
importScript('User:Bradv/Scripts/ExpandDiffs.js'); // Backlink: [[User:Bradv/Scripts/ExpandDiffs.js]]


// DyK & GAN
// importScript('User:Novem Linguae/Scripts/GANReviewTool.js'); // Backlink: [[User:Novem Linguae/Scripts/GANReviewTool.js]]
// importScript('User:SD0001/GAR-helper.js'); // Backlink: [[User:SD0001/GAR-helper.js]]
//importScript('User:SD0001/GAN-helper.js'); // Backlink: [[User:SD0001/GAN-helper.js]]


// Misc
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript'); //JWB
// importScript('User:Danski454/stubsearch.js'); // Backlink: [[User:Danski454/stubsearch.js]]
//importScript('User:SD0001/StubSorter.js'); // Backlink: [[User:SD0001/StubSorter.js]]
importScript('User:Nardog/MoveHistory.js'); // Backlink: [[User:Nardog/MoveHistory.js]]
importScript('User:Enterprisey/section-redir-note.js'); // Backlink: [[User:Enterprisey/section-redir-note.js]]
importScript('User:Qwerfjkl/scripts/massXFD.js'); // Backlink: [[User:Qwerfjkl/scripts/massXFD.js]]


// New
importScript('User:SD0001/quickViewDeleted.js'); // Backlink: [[User:SD0001/quickViewDeleted.js]]
// importScript('User:GeneralNotability/spihelper.js'); // Backlink: [[User:GeneralNotability/spihelper.js]]
importScript('User:Enterprisey/link-deleted-revs.js'); // Backlink: [[User:Enterprisey/link-deleted-revs.js]]
// importScript('User:Ale jrb/Scripts/csdhelper.js'); // Backlink: [[User:Ale jrb/Scripts/csdhelper.js]]
importScript('User:Enterprisey/url-select-revdel.js'); // Backlink: [[User:Enterprisey/url-select-revdel.js]]
// importScript('User:Rusalkii/submitRMTR.js'); // Backlink: [[User:Rusalkii/submitRMTR.js]]
// importScript('User:Chaotic Enby/RecentUnblockHighlighter.js'); // Backlink: [[User:Chaotic Enby/RecentUnblockHighlighter.js]]
importScript('User:Anomie/linkclassifier.js'); // Backlink: [[User:Anomie/linkclassifier.js]]
//importScript('User:Rusalkii/hideOrHighlightInvolvedRfDs.js'); // Backlink: [[User:Rusalkii/hideOrHighlightInvolvedRfDs.js]]
importScript('User:Rusalkii/hideRelisted.js'); // Backlink: [[User:Rusalkii/hideRelisted.js]]
importScript('User:Rusalkii/RfDInfo.js'); // Backlink: [[User:Rusalkii/RfDInfo.js]]
//importScript('User:Novem Linguae/Scripts/DetectPromo.js'); // Backlink: [[User:Novem Linguae/Scripts/DetectPromo.js]]
//importScript('User:Novem Linguae/Scripts/VoteCounter.js'); // Backlink: [[User:Novem Linguae/Scripts/VoteCounter.js]]
importScript('User:Novem Linguae/Scripts/DetectG4G5.js'); // Backlink: [[User:Novem Linguae/Scripts/DetectG4G5.js]]
//importScript('User:Novem Linguae/Scripts/UserTalkErasedSectionsDetector.js'); // Backlink: [[User:Novem Linguae/Scripts/UserTalkErasedSectionsDetector.js]]
//importScript('User:Sophisticatedevening/LLMslop.js'); // Backlink: [[User:Sophisticatedevening/LLMslop.js]]
// importScript('User:Rusalkii/WatchlistRfD.js'); // Backlink: [[User:Rusalkii/WatchlistRfD.js]]
importScript('User:Daniel Quinlan/Scripts/Unfiltered.js'); // Backlink: [[User:Daniel Quinlan/Scripts/Unfiltered.js]]
importScript('User:Ingenuity/AntiVandal.js'); // Backlink: [[User:Ingenuity/AntiVandal.js]]
importScript('User:Daniel Quinlan/Scripts/RangeHelper.js'); // Backlink: [[User:Daniel Quinlan/Scripts/RangeHelper.js]]
//importScript('User:Vanderwaalforces/checkTranslationAttribution.js'); // Backlink: [[User:Vanderwaalforces/checkTranslationAttribution.js]]
importScript('User:Daniel Quinlan/Scripts/Blame.js'); // Backlink: [[User:Daniel Quinlan/Scripts/Blame.js]]
importScript('User:Daniel Quinlan/Scripts/UnblockClock.js'); // Backlink: [[User:Daniel Quinlan/Scripts/UnblockClock.js]]
importScript('User:Daniel Quinlan/Scripts/Rescaled.js'); // Backlink: [[User:Daniel Quinlan/Scripts/Rescaled.js]]
importScript('User:Rusalkii/previewRedirectContextTest.js'); // Backlink: [[User:Rusalkii/previewRedirectContext.js]]
// importScript('User:Enterprisey/delsort.js'); // Backlink: [[User:Enterprisey/delsort.js]]
// importScript('User:Nardog/CatChangesViewer.js'); // Backlink: [[User:Nardog/CatChangesViewer.js]]