 function * **************************************** *** twinklefluffu82ejsu800 revert rollback module **************************************** * mode ofu800 invocation links onu800 contributions recent changes history andu800 diff pages * active onu800 diff pages history pages special recentchanges linked andu800 special contributions * ** twinklefluff revert andu800 antivandalism utility * twinkleu82efluff function twinklefluff au800 list ofu800 usernames usually only bots that vandalism revert isu800 jumped over; that isu800 ifu800 vandalism revert wasu800 chosen onu800 such username then itsu800 target isu800 onu800 theu800 revision before. this isu800 foru800 handling quick bots that makes edits seconds after theu800 original edit isu800 made. this only affects vandalism rollback; foru800 good faith rollback itu800 will stop indicating au800 botu800 hasu800 nou800 faith andu800 foru800 normal rollback itu800 will rollback that edit. twinkleu82efluffu82ewhitelist localized ; ifu800 mwu800u82econfigu82egetu800 'wgisprobablyeditable' && mwu800u82econfigu82egetu800 'wgnamespacenumber' 2600 localized exclude flow pages only proceed ifu800 theu800 user canu800 actually edit theu800 page inu800 question ignored foru800 contributions seeu800 #632u800 . wgisprobablyeditable should take care ofu800 namespace contentmodel restrictions asu800 well asu800 explicit protections; itu800 wonu800'tu800 take care ofu800 cascading oru800 titleblacklist restrictions ifu800 mwu800u82econfigu82egetu800 'wgdiffnewid' mwu800u82econfigu82egetu800 'wgdiffoldid' wgdiffoldid included foru800 clarity inu800 ifu800 else loop phab t214985 mwu800u82ehook 'wikipageu82ediff' .addu800 function reload alongside theu800 revision slider twinkleu82efluffu82eaddlinksu82ediff ; ; else ifu800 mwu800u82econfigu82egetu800 'wgaction' 'view' && mwu800u82econfigu82egetu800 'wgcurrevisionid' mwu800u82econfigu82egetu800 'wgrevisionid' twinkleu82efluffu82eaddlinksu82eoldid ; else ifu800 mwu800u82econfigu82egetu800 'wgaction' 'history' twinkleu82efluffu82eaddlinksu82ehistory ; else ifu800 mwu800u82econfigu82egetu800 'wgnamespacenumber' 1u800 twinkleu82efluffu82eskiptalk twinkleu82egetpref 'opentalkpageonautorevert' ; twinkleu82efluffu82erollbackinplace twinkleu82egetpref 'rollbackinplace' ; ifu800 mwu800u82econfigu82egetu800 'wgcanonicalspecialpagename' 'contributions twinkleu82efluffu82eaddlinksu82econtributions ; else ifu800 mwu800u82econfigu82egetu800 'wgcanonicalspecialpagename' 'recentchanges mwu800u82econfigu82egetu800 'wgcanonicalspecialpagename' 'recentchangeslinked' reload with recent changes updates structuredchangefiltersu82euiu800u82einitialized isu800 just onu800 load mwu800u82ehook 'wikipageu82econtent' .addu800 function item ifu800 itemu82eisu800 'divu800' twinkleu82efluffu82eaddlinksu82erecentchanges ; ; ; twinkleu82efluffu82eskiptalk null; twinkleu82efluffu82erollbackinplace null; consolidated construction ofu800 fluff links twinkleu82efluffu82elinkbuilder spantag function color content varu800 span documentu82ecreateelement 'span' ; spanu82estyleu82ecolor color; spanu82eappendchild documentu82ecreatetextnode content ; return span; buildlink function color text varu800 link documentu82ecreateelement 'au800' ; linku82eappendchild twinkleu82efluffu82elinkbuilderu82espantag 'black' ' ' ; linku82eappendchild twinkleu82efluffu82elinkbuilderu82espantag color text ; linku82eappendchild twinkleu82efluffu82elinkbuilderu82espantag 'black' ' ' ; linku82ehref '#'; return link; ** * param string vandal username ofu800 theu800 editor being reverted required * param boolean inline true tou800 create twou800 links inu800 au800 span false * tou800 create three links inu800 au800 divu800 optional * param number string revu800 wgcurrevisionid revision idu800 being reverted optional * param string page wgpagename page being reverted optional * rollbacklinks function vandal inline revu800 page varu800 elem inline 'span' 'divu800'; varu800 revnode documentu82ecreateelement elem ; revu800 parseint revu800 10u800 ; ifu800 revu800 revnodeu82esetattribute 'idu800' 'twu800 revert' revu800 ; else revnodeu82esetattribute 'idu800' 'twu800 revert' ; varu800 normnode documentu82ecreateelement 'strong' ; varu800 vandnode documentu82ecreateelement 'strong' ; varu800 normlink twinkleu82efluffu82elinkbuilderu82ebuildlink 'steelblue' 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c' ; localiezd varu800 vandlink twinkleu82efluffu82elinkbuilderu82ebuildlink 'redu800' 'u8d8aeu8d8b1u8d8a7u8d8a8u8daa9u8d8a7u8d8b1u8db8c' ; localized normlink .click function twinkleu82efluffu82erevert 'norm' vandal revu800 page ; twinkleu82efluffu82edisablelinks revnode ; ; vandlink .click function twinkleu82efluffu82erevert 'vand' vandal revu800 page ; twinkleu82efluffu82edisablelinks revnode ; ; vandnodeu82eappendchild vandlink ; normnodeu82eappendchild normlink ; varu800 separator inline ' ' ' '; ifu800 inline varu800 agfnode documentu82ecreateelement 'strong' ; varu800 agflink twinkleu82efluffu82elinkbuilderu82ebuildlink 'darkolivegreen' 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d981u8d8adu8d986 ' ; localized agflink .click function twinkleu82efluffu82erevert 'agfu800' vandal revu800 page ; twinkleu82efluffu82edisablelinks revnode ; rollbackinplace notu800 relevant foru800 anyu800 inline situations ; agfnodeu82eappendchild agflink ; revnodeu82eappendchild agfnode ; revnodeu82eappendchild documentu82ecreatetextnode separator ; revnodeu82eappendchild normnode ; revnodeu82eappendchild documentu82ecreatetextnode separator ; revnodeu82eappendchild vandnode ; return revnode; build restore this revision links restorethisrevisionlink function revisionref inline ifu800 notu800 au800 specific revision number should beu800 wgdiffnewid wgdiffoldid wgrevisionid revisionref typeof revisionref 'number' revisionref mwu800u82econfigu82egetu800 revisionref ; varu800 elem inline 'span' 'divu800'; varu800 reverttorevisionnode documentu82ecreateelement elem ; reverttorevisionnodeu82esetattribute 'idu800' 'twu800 revert tou800 ' revisionref ; reverttorevisionnodeu82estyleu82efontweight 'bold'; varu800 reverttorevisionlink twinkleu82efluffu82elinkbuilderu82ebuildlink 'saddlebrown' 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8a8u8d987 u8d8a7u8db8cu8d986 u8d986u8d8b3u8d8aeu8d987' ; localized reverttorevisionlink .click function twinkleu82efluffu82ereverttorevision revisionref ; ; ifu800 inline reverttorevisionnodeu82eappendchild documentu82ecreatetextnode ' ' ; reverttorevisionnodeu82eappendchild reverttorevisionlink ; return reverttorevisionnode; ; twinkleu82efluffu82eaddlinks contributions function 'spu800 contributions footer anon range' relies onu800 theu800 fmbox idu800 inu800 mediawiki spu800 contributions footer anon range andu800 isu800 used tou800 show rollback vandalism links foru800 ipu800 ranges ifu800 mwu800u82econfigu82eexists 'wgrelevantusername' '#spu800 contributions footer anon range' 0u800 getu800 theu800 username these contributions areu800 foru800 varu800 username mwu800u82econfigu82egetu800 'wgrelevantusername' ; ifu800 twinkleu82egetpref 'showrollbacklinks .indexof 'contribs 1u800 mwu800u82econfigu82egetu800 'wgusername' username && twinkleu82egetpref 'showrollbacklinks .indexof 'others 1u800 mwu800u82econfigu82egetu800 'wgusername' username && twinkleu82egetpref 'showrollbacklinks .indexof 'mine' 1u800 varu800 list '#mwu800 content text' .find 'ulu800 liu800 hasu800 spanu82emwu800 uctop hasu800 .mwu800 changeslist diff ' ; listu82eeach function keyu800 current revid isu800 also available inu800 theu800 href ofu800 both .mwu800 changeslist date oru800 .mwu800 changeslist diff varu800 page current .find '.mwu800 contributions title' .text ; currentu82eappendchild twinkleu82efluffu82elinkbuilderu82erollbacklinks username true currentu82edatasetu82emwrevid page ; ; recentchanges function ifu800 twinkleu82egetpref 'showrollbacklinks .indexof 'recent' 1u800 latest andu800 revertable notu800 page creations logs categorizations etcu800. varu800 list '.mwu800 changeslist .mwu800 changeslist lastu82emwu800 changeslist srcu800 mwu800 edit' ; exclude topu800 level header ifu800 "group changes" preference isu800 used andu800 find only individual lines oru800 nested lines list listu82enotu800 '.mwu800 rcfilters uiu800 highlights enhanced toplevel' .find '.mwu800 changeslist line inner tdu800u82emwu800 enhanced rcu800 nested' ; listu82eeach function keyu800 current varu800 vandal current .find '.mwu800 userlink' .text ; varu800 href current .find '.mwu800 changeslist diff' .attr 'href' ; varu800 revu800 mwu800u82eutilu82egetparamvalue 'diff' href ; varu800 page currentu82edatasetu82etargetpage; currentu82eappendchild twinkleu82efluffu82elinkbuilderu82erollbacklinks vandal true revu800 page ; ; history function ifu800 twinkleu82egetpref 'showrollbacklinks .indexof 'history' 1u800 allu800 revs varu800 histlist '#pagehistory liu800' .toarray ; onu800 first page ofu800 results sou800 addu800 revert rollback links tou800 theu800 topu800 revision ifu800 '.mwu800 firstlink' .length varu800 first histlistu82eshift ; varu800 vandal firstu82equeryselector '.mwu800 userlink' .text; firstu82eappendchild twinkleu82efluffu82elinkbuilderu82erollbacklinks vandal true ; oldid histlistu82eforeach function revu800 from restorethisrevision nonu800 transferable varu800 href revu800u82equeryselector '.mwu800 changeslist date' .href; varu800 oldid parseint mwu800u82eutilu82egetparamvalue 'oldid' href 10u800 ; revu800u82eappendchild twinkleu82efluffu82elinkbuilderu82erestorethisrevisionlink oldid true ; ; diff function autofill user talk links onu800 diffs with vanarticle foru800 easy warning butu800 donu800'tu800 autowarn varu800 warnfromtalk function xtitle varu800 talklink '#mwu800 diff ' xtitle '2u800 .mwu800 usertoollinks au800' .first ; ifu800 talklinku82elength varu800 extraparams 'vanarticle ' mwu800u82eutilu82erawurlencode morebitsu82epagenamenorm '&' 'noautowarn true'; diffids foru800 vanarticlerevid extraparams '&vanarticlerevid '; extraparams xtitle 'otitle' mwu800u82econfigu82egetu800 'wgdiffoldid' mwu800u82econfigu82egetu800 'wgdiffnewid' ; varu800 href talklinku82eattr 'href' ; ifu800 hrefu82eindexof ' ' 1u800 talklinku82eattr 'href' href ' ' extraparams ; else talklinku82eattr 'href' href '&' extraparams ; ; older revision warnfromtalk 'otitle' ; addu800 quick warn link tou800 user talk link donu800'tu800 load ifu800 there there'su800 au800 single revision oru800 weird diff curu800 onu800 latest ifu800 mwu800u82econfigu82egetu800 'wgdiffoldid' && mwu800u82econfigu82egetu800 'wgdiffoldid' mwu800u82econfigu82egetu800 'wgdiffnewid' addu800 au800 restore this revision link tou800 theu800 older revision varu800 oldtitle documentu82egetelementbyid 'mwu800 diff otitle1' .parentnode; oldtitleu82einsertbefore twinkleu82efluffu82elinkbuilderu82erestorethisrevisionlink 'wgdiffoldid' oldtitleu82efirstchild ; newer revision warnfromtalk 'ntitle' ; addu800 quick warn link tou800 user talk link addu800 either restore oru800 rollback links tou800 theu800 newer revision donu800'tu800 show ifu800 there there'su800 au800 single revision oru800 weird diff prev onu800 first ifu800 documentu82egetelementbyid 'differences nextlink' notu800 latest revision addu800 restore this revision link tou800 newer revision varu800 newtitle documentu82egetelementbyid 'mwu800 diff ntitle1' .parentnode; newtitleu82einsertbefore twinkleu82efluffu82elinkbuilderu82erestorethisrevisionlink 'wgdiffnewid' newtitleu82efirstchild ; else ifu800 twinkleu82egetpref 'showrollbacklinks .indexof 'diff' 1u800 && mwu800u82econfigu82egetu800 'wgdiffoldid' && mwu800u82econfigu82egetu800 'wgdiffoldid' mwu800u82econfigu82egetu800 'wgdiffnewid' documentu82egetelementbyid 'differences prevlink' varu800 vandal '#mwu800 diff ntitle2' .find 'au800' .first .text ; varu800 ntitle documentu82egetelementbyid 'mwu800 diff ntitle1' .parentnode; ntitleu82einsertbefore twinkleu82efluffu82elinkbuilderu82erollbacklinks vandal ntitleu82efirstchild ; oldid function addu800 au800 restore this revision link onu800 oldu800 revisions varu800 info documentu82egetelementbyid 'mwu800 revision info' ; ifu800 info return; varu800 title info && infou82eparentnode; titleu82einsertbefore twinkleu82efluffu82elinkbuilderu82erestorethisrevisionlink 'wgrevisionid' titleu82efirstchild ; ; twinkleu82efluffu82edisablelinks function disablelinks parentnode arrayu82efrom notu800 available inu800 ie11 parentnode .children .each function _ixu800 node nodeu82einnerhtml nodeu82etextcontent; feels like cheating node .cssu800 'font weight' 'normal' .cssu800 'color' 'darkgray' ; ; ; twinkleu82efluffu82erevert function revertpage type vandal revu800 page ifu800 mwu800u82eutilu82eisipv6address vandal vandal morebitsu82esanitizeipv6 vandal ; varu800 pagename page mwu800u82econfigu82egetu800 'wgpagename' ; varu800 revid revu800 mwu800u82econfigu82egetu800 'wgcurrevisionid' ; ifu800 twinkleu82efluffu82erollbackinplace varu800 notifystatus documentu82ecreateelement 'span' ; mwu800u82enotify notifystatus autohide false title 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b1u8d988u8db8c ' page localized tagu800 'twinklefluff_' revu800 shouldn'tu800 beu800 necessary given disablelink ; morebitsu82estatusu82einit notifystatus ; else morebitsu82estatusu82einit documentu82egetelementbyid 'mwu800 content text' ; '#catlinks .remove ; varu800 params type type user vandal pagename pagename revid revid ; varu800 query 'action' 'query' 'prop' 'info' 'revisions 'flagged' 'titles pagename 'intestactions 'edit' 'rvlimit' 50u800 intentionally limited 'rvprop' 'idsu800 'timestamp' 'user' 'comment' 'curtimestamp'   'meta' 'tokens 'type' 'csrf' ; varu800 wikipedia_api newu800 morebitsu82ewikiu82eapiu800 'u8d8afu8d8b1u8db8cu8d8a7u8d981u8d8aa u8d8a7u8d8b7u8d984u8d8a7u8d8b9u8d8a7u8d8aa u8d986u8d8b3u8d8aeu8d987u8d994 u8d982u8d8afu8db8cu8d985u8db8cu8e2808cu8d8aau8d8b1' query twinkleu82efluffu82ecallbacksu82emain ; localized wikipedia_apiu82eparams params; wikipedia_apiu82epost ; ; twinkleu82efluffu82ereverttorevision function reverttorevision oldrev morebitsu82estatusu82einit documentu82egetelementbyid 'mwu800 content text' ; varu800 query 'action' 'query' 'prop' 'info' 'revisions 'titles mwu800u82econfigu82egetu800 'wgpagename' 'rvlimit' 1u800 'rvstartid' oldrev 'rvprop' 'idsu800 'timestamp' 'user' 'comment' 'format' 'xmlu800' 'curtimestamp'   'meta' 'tokens 'type' 'csrf' ; varu800 wikipedia_api newu800 morebitsu82ewikiu82eapiu800 'u8d8afu8d8b1u8db8cu8d8a7u8d981u8d8aa u8d8a7u8d8b7u8d984u8d8a7u8d8b9u8d8a7u8d8aa u8d986u8d8b3u8d8aeu8d987u8d994 u8d982u8d8afu8db8cu8d985u8db8cu8e2808cu8d8aau8d8b1' query twinkleu82efluffu82ecallbacksu82etorevision ; localized wikipedia_apiu82eparams revu800 oldrev ; wikipedia_apiu82epost ; ; twinkleu82efluffu82euseriplink function user return mwu800u82eutilu82eisipaddress user ' u8d988u8db8cu8da98u8d987 u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8d987u8d8a7 ' ' u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 ' user ' ' user ' '; ; twinkleu82efluffu82ecallbacks torevision function apiobj varu800 xmldoc apiobju82eresponsexml; varu800 lastrevid parseint xmldoc .find 'page' .attr 'lastrevid' 10u800 ; varu800 touched xmldoc .find 'page' .attr 'touched' ; varu800 loadtimestamp xmldoc .find 'apiu800' .attr 'curtimestamp' ; varu800 csrftoken xmldoc .find 'tokens .attr 'csrftoken' ; varu800 reverttorevid parseint xmldoc .find 'revu800' .attr 'revid' 10u800 ; varu800 reverttouser xmldoc .find 'revu800' .attr 'user' ; ifu800 reverttorevid apiobju82eparamsu82erevu800 apiobju82estatelemu82eerror 'u8d986u8d8b3u8d8aeu8d987u8e2808cu8d8a7u8db8c u8daa9u8d987 u8d8afu8d8b1u8db8cu8d8a7u8d981u8d8aa u8d8b4u8d8af u8d8a8u8d8a7 u8d986u8d8b3u8d8aeu8d987u8e2808cu8d8a7u8db8c u8daa9u8d987 u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8b4u8d8af u8d985u8d8b7u8d8a7u8d8a8u8d982u8d8aa u8d986u8d8afu8d8a7u8d8b1u8d8af. u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; varu800 optional_summary prompt 'u8d984u8d8b7u8d981u8d8a7u8d98b u8d8afu8d984u8db8cu8d984 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b1u8d8a7 u8d8aau8d988u8d8b6u8db8cu8d8ad u8d8afu8d987u8db8cu8d8af '   ; padded outu800 tou800 widen prompt inu800 firefox localized ifu800 optional_summary null apiobju82estatelemu82eerror 'u8d8aau8d988u8d8b3u8d8b7 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; varu800 summary twinkleu82efluffu82eformatsummary 'u8d8a8u8d987 u8d986u8d8b3u8d8aeu8d987u8d994 ' reverttorevid ' u8d8a7u8d8b2 user u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8d8afu8d987 u8d8b4u8d8af' reverttouser optional_summary ; localized varu800 query 'action' 'edit' 'title' mwu800u82econfigu82egetu800 'wgpagename' 'summary' summary 'token' csrftoken 'undo' lastrevid 'undoafter' reverttorevid 'basetimestamp' touched 'starttimestamp' loadtimestamp 'watchlist' twinkleu82egetpref 'watchrevertedpages .indexof 'torev' 1u800 'watch' undefined 'minor' twinkleu82egetpref 'markrevertedpagesasminor' .indexof 'torev' 1u800 true undefined ; morebitsu82ewikiu82eactioncompletedu82eredirect mwu800u82econfigu82egetu800 'wgpagename' ; morebitsu82ewikiu82eactioncompletedu82enotice 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d988u8d981u8d982 u8d8a8u8d988u8d8af'; localized varu800 wikipedia_api newu800 morebitsu82ewikiu82eapiu800 'u8d8b0u8d8aeu8db8cu8d8b1u8d987u8d994 u8d985u8d8adu8d8aau8d988u8d8a7u8db8c u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b4u8d8afu8d987' query twinkleu82efluffu82ecallbacksu82ecomplete apiobju82estatelem ; localized wikipedia_apiu82eparams apiobju82eparams; wikipedia_apiu82epost ; main function apiobj varu800 xmldoc apiobju82eresponsexml; ifu800 typeof xmldoc .find 'actions .attr 'edit' 'undefined' selfu82estatelemu82eerror "u8d986u8d8a7u8d8aau8d988u8d8a7u8d986 u8d8afu8d8b1 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8b5u8d981u8d8adu8d987u8d88c u8d8a7u8db8cu8d986 u8d8b5u8d981u8d8adu8d987 u8d8a7u8d8adu8d8aau8d985u8d8a7u8d984u8d8a7u8d98b u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa." ; return; varu800 lastrevid parseint xmldoc .find 'page' .attr 'lastrevid' 10u800 ; varu800 touched xmldoc .find 'page' .attr 'touched' ; varu800 loadtimestamp xmldoc .find 'apiu800' .attr 'curtimestamp' ; varu800 csrftoken xmldoc .find 'tokens .attr 'csrftoken' ; varu800 lastuser xmldoc .find 'revu800' .attr 'user' ; varu800 revs xmldoc .find 'revu800' ; varu800 statelem apiobju82estatelem; varu800 params apiobju82eparams; ifu800 revsu82elength 1u800 statelemu82eerror 'u8d8b5u8d981u8d8adu8d987 u8d8aau8d986u8d987u8d8a7 u8db8cu8daa9 u8d986u8d8b3u8d8aeu8d987u8d994 u8d8afu8db8cu8daafu8d8b1 u8d8afu8d8a7u8d8b1u8d8af u8d8afu8d8b1 u8d986u8d8aau8db8cu8d8acu8d987 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d985u8daa9u8d986 u8d986u8db8cu8d8b3u8d8aa.' ; localiezd return; varu800 topu800 revs 0u800 ; ifu800 lastrevid 1u800 && revs 1u800 .getattribute 'pageid' paramsu82erevid morebitsu82estatusu82einfo 'info' 'u8d8a2u8d8aeu8d8b1u8db8cu8d986 u8d986u8d8b3u8d8aeu8d987 u8d8aau8d988u8d8b3u8d8b7 ' morebitsu82ehtmlnode 'strong' lastuser ' u8d8a7u8db8cu8d8acu8d8a7u8d8af u8d8b4u8d8afu8d987 u8daa9u8d987 u8db8cu8daa9 u8d8b1u8d8a8u8d8a7u8d8aa u8d985u8d988u8d8b1u8d8af u8d8a7u8d8b9u8d8aau8d985u8d8a7u8d8af u8d8a7u8d8b3u8d8aa. u8d986u8d8b3u8d8aeu8d987u8d994 u8d9beu8db8cu8d8b4 u8d8a7u8d8b2 u8d8a2u8d986 u8d8aau8d988u8d8b3u8d8b7 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d8aeu8d8b1u8d8a7u8d8a8u8daa9u8d8a7u8d8b1 u8d8a7u8db8cu8d8acu8d8a7u8d8af u8d8b4u8d8afu8d987 u8d984u8d8b0u8d8a7 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8a7u8d8afu8d8a7u8d985u8d987 u8d985u8db8cu8e2808cu8db8cu8d8a7u8d8a8u8d8af.' ; localized index 2u800; else morebitsu82estatusu82eerror 'error' 'u8d8a2u8d8aeu8d8b1u8db8cu8d986 u8d986u8d8b3u8d8aeu8d987 u8d8aau8d988u8d8b3u8d8b7 ' morebitsu82ehtmlnode 'strong' lastuser ' u8d8a7u8db8cu8d8acu8d8a7u8d8af u8d8b4u8d8afu8d987 u8d9beu8d8b3 u8d8b5u8d981u8d8adu8d987 u8d982u8d8a7u8d8b9u8d8afu8d8aau8d8a7u8d98b u8d8a8u8d8a7u8db8cu8d8af u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b4u8d8afu8d987 u8d8a8u8d8a7u8d8b4u8d8afu8d89b u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; ifu800 twinkleu82efluffu82ewhitelistu82eindexof paramsu82euser 1u800 switch paramsu82etype case 'vand' morebitsu82estatusu82einfo 'info' 'u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8aeu8d8b1u8d8a7u8d8a8u8daa9u8d8a7u8d8b1u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 ' morebitsu82ehtmlnode 'strong' paramsu82euser ' u8d8afu8d8a7u8d8afu8d987 u8d8b4u8d8afu8d987 u8d8a8u8d988u8d8af. u8d8a7u8d8b2 u8d8a2u8d986u8d8acu8d8a7 u8daa9u8d987 u8d8a7u8db8cu8d986 u8d8adu8d8b3u8d8a7u8d8a8u8d88c u8db8cu8daa9 u8d8b1u8d8a8u8d8a7u8d8aa u8d985u8d988u8d8b1u8d8af u8d8a7u8d8b9u8d8aau8d985u8d8a7u8d8af u8d8a7u8d8b3u8d8aau8d88c u8d981u8d8b1u8d8b6 u8d8b4u8d8af u8daa9u8d987 u8d985u8d986u8d8b8u8d988u8d8b1 u8d8b4u8d985u8d8a7 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8aeu8d8b1u8d8a7u8d8a8u8daa9u8d8a7u8d8b1u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8db8c u8d8a8u8d988u8d8af u8daa9u8d987 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d982u8d8a8u8d984 u8d8a7u8d8b2 u8d8b1u8d8a8u8d8a7u8d8aa u8d8b1u8d8a7 u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8afu8d8a7u8d8afu8d987 u8d8a8u8d988u8d8af.' ; localized index 2u800; paramsu82euser revs 1u800 .getattribute 'user' ; break; case 'agfu800' morebitsu82estatusu82ewarn 'notice' 'u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 ' morebitsu82ehtmlnode 'strong' paramsu82euser ' u8d8a8u8d8a7 u8d981u8d8b1u8d8b6 u8d8adu8d8b3u8d986 u8d986u8db8cu8d8aa u8d8afu8d8a7u8d8afu8d987 u8d8b4u8d8afu8d987 u8d8a8u8d988u8d8af. u8d8a7u8db8cu8d986 u8d8adu8d8b3u8d8a7u8d8a8u8d88c u8db8cu8daa9 u8d8b1u8d8a8u8d8a7u8d8aa u8d985u8d988u8d8b1u8d8af u8d8a7u8d8b9u8d8aau8d985u8d8a7u8d8af u8d8a7u8d8b3u8d8aa u8d8afu8d8b1 u8d986u8d8aau8db8cu8d8acu8d987 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; case 'norm' * falls through * default varu800 cont confirm 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b9u8d8a7u8d8afu8db8c u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8d8b4u8d8afu8d987 u8d8a8u8d988u8d8afu8d88c u8d8a7u8d985u8d8a7 u8d8a8u8db8cu8d8b4u8d8aau8d8b1 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d8aau8d988u8d8b3u8d8b7 u8db8cu8daa9 u8d8b1u8d8a8u8d8a7u8d8aa u8d985u8d988u8d8b1u8d8af u8d8a7u8d8b9u8d8aau8d985u8d8a7u8d8af ' paramsu82euser ' u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa. u8d8a2u8db8cu8d8a7 u8d985u8db8cu8e2808cu8d8aeu8d988u8d8a7u8d987u8db8cu8d8af u8d8a8u8d987 u8d986u8d8b3u8d8aeu8d987u8d994 u8d9beu8db8cu8d8b4 u8d8a7u8d8b2 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d8b1u8d8a8u8d8a7u8d8aa u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8daa9u8d986u8db8cu8d8afu8d89f' ; localized ifu800 cont morebitsu82estatusu82einfo 'info' 'u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b9u8d8a7u8d8afu8db8c u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7u8db8c ' morebitsu82ehtmlnode 'strong' paramsu82euser ' u8d8afu8d8a7u8d8afu8d987 u8d8b4u8d8afu8d987 u8d8a8u8d988u8d8af. u8d8a7u8db8cu8d986 u8d8adu8d8b3u8d8a7u8d8a8u8d88c u8db8cu8daa9 u8d8b1u8d8a8u8d8a7u8d8aa u8d985u8d988u8d8b1u8d8af u8d8a7u8d8b9u8d8aau8d985u8d8a7u8d8af u8d8a7u8d8b3u8d8aa u8d988 u8d8a8u8d987 u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8b4u8d985u8d8a7u8d88c u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8a8u8d987 u8d986u8d8b3u8d8aeu8d987u8d994 u8d9beu8db8cu8d8b4 u8d8a7u8d8b2 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7u8db8c u8d8b1u8d8a8u8d8a7u8d8aa u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8b4u8d8af.' ; localized index 2u800; paramsu82euser revs 1u800 .getattribute 'user' ; else morebitsu82estatusu82ewarn 'notice' 'u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b9u8d8a7u8d8afu8db8c u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7u8db8c ' morebitsu82ehtmlnode 'strong' paramsu82euser ' u8d8afu8d8a7u8d8afu8d987 u8d8b4u8d8afu8d987u8e2808cu8d8a8u8d988u8d8af. u8d8a7u8db8cu8d986 u8d8adu8d8b3u8d8a7u8d8a8u8d88c u8db8cu8daa9 u8d8b1u8d8a8u8d8a7u8d8aa u8d985u8d988u8d8b1u8d8af u8d8a7u8d8b9u8d8aau8d985u8d8a7u8d8af u8d8a7u8d8b3u8d8aa u8d8a7u8d985u8d8a7 u8d8a8u8d987 u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8b4u8d985u8d8a7 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7u8db8cu8d8b4 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b4u8d8af.' ; localized break; varu800 found false; varu800 count 0u800; foru800 varu800 iu800 index; iu800 1u800 ifu800 confirm paramsu82euser ' u8d8a8u8d987 u8d8b7u8d988u8d8b1 u8d9beu8db8cu8d8a7u8d9beu8db8c ' mwu800u82elanguageu82econvertnumber count ' u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8b1u8d988u8db8c u8d8b5u8d981u8d8adu8d987 u8daa9u8d8b1u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa. u8d8a2u8db8cu8d8a7 u8d985u8db8cu8e2808cu8d8aeu8d988u8d8a7u8d987u8db8cu8d8af u8d987u8d985u8d987u8d994 u8d8a2u8d986u8e2808cu8d987u8d8a7 u8d8b1u8d8a7 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8daa9u8d986u8db8cu8d8afu8d89f' localized morebitsu82estatusu82einfo 'notice' 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; userhasalreadyconfirmedaction true; paramsu82ecount count; paramsu82egoodid good_revisionu82egetattribute 'revid' ; paramsu82egooduser good_revisionu82egetattribute 'user' ; statelemu82estatus 'u8d986u8d8b3u8d8aeu8d987u8d994 ' morebitsu82ehtmlnode 'strong' paramsu82egoodid ' u8daa9u8d987 ' morebitsu82ehtmlnode 'strong' mwu800u82elanguageu82econvertnumber count ' u8d986u8d8b3u8d8aeu8d987 u8d9beu8db8cu8d8b4u8d8aau8d8b1 u8d8aau8d988u8d8b3u8d8b7 ' morebitsu82ehtmlnode 'strong' paramsu82egooduser ' u8d8abu8d8a8u8d8aa u8d8b4u8d8afu8d987 u8d8a8u8d988u8d8af' ; localized varu800 summary extra_summary; switch paramsu82etype case 'agfu800' extra_summary prompt 'u8d8aau8d988u8d8b6u8db8cu8d8ad u8d8a7u8d8aeu8d8aau8db8cu8d8a7u8d8b1u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8aeu8d984u8d8a7u8d8b5u8d987 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 '   ; padded outu800 tou800 widen prompt inu800 firefox localized ifu800 extra_summary null statelemu82eerror 'u8d8aau8d988u8d8b3u8d8b7 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; userhasalreadyconfirmedaction true; summary twinkleu82efluffu82eformatsummary 'u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d988u8d9be u8d981u8d8adu8d986 u8d8adu8d8b3u8d986 u8d986u8db8cu8d8aa user u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b4u8d8af' paramsu82euser extra_summary ; localized break; case 'vand' summary mwu800u82elanguageu82econvertnumber paramsu82ecount paramsu82ecount 1u800 ' u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4' ' u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4' ' u8d8a7u8d8b2 special contributions ' localized paramsu82euser ' ' paramsu82euser ' u8d8a8u8d8adu8d8ab u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 ' paramsu82euser ' u8d8a8u8d8adu8d8ab u8d8a8u8d987 u8d8a2u8d8aeu8d8b1u8db8cu8d986 u8d986u8d8b3u8d8aeu8d987 u8d8aau8d988u8d8b3u8d8b7 ' localized paramsu82egooduser ' u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b4u8d8af' twinkleu82egetpref 'summaryad' ; localized break; case 'norm' * falls through * default ifu800 twinkleu82egetpref 'offerreasononnormalrevert' extra_summary prompt 'u8d8aau8d988u8d8b6u8db8cu8d8ad u8d8a7u8d8aeu8d8aau8db8cu8d8a7u8d8b1u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8aeu8d984u8d8a7u8d8b5u8d987 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 '   ; padded outu800 tou800 widen prompt inu800 firefox localized ifu800 extra_summary null statelemu82eerror 'u8d8aau8d988u8d8b3u8d8b7 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; userhasalreadyconfirmedaction true; summary twinkleu82efluffu82eformatsummary mwu800u82elanguageu82econvertnumber paramsu82ecount paramsu82ecount 1u800 ' u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4' ' u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4' localized ' user u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b4u8d8af' paramsu82euser extra_summary ; localized break; ifu800 twinkleu82egetpref 'confirmonfluff' && userhasalreadyconfirmedaction && confirm 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b5u8d981u8d8adu8d987 u8d8a2u8db8cu8d8a7 u8d985u8d8b7u8d985u8d8a6u8d986 u8d987u8d8b3u8d8aau8db8cu8d8afu8d89f' localized statelemu82eerror 'u8d8aau8d988u8d8b3u8d8b7 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized return; decide whether tou800 notify theu800 user onu800 success ifu800 twinkleu82efluffu82eskiptalk && twinkleu82egetpref 'opentalkpage' .indexof paramsu82etype 1u800 && mwu800u82econfigu82egetu800 'wgusername' paramsu82euser paramsu82enotifyuser true; figure outu800 whether weu800 need tou800 canu800 review theu800 edit varu800 flagged xmldoc .find 'flagged' ; ifu800 morebitsu82euserisingroup 'reviewer' morebitsu82euserissysop && flaggedu82elength && flaggedu82eattr 'stable_revid' paramsu82egoodid && flaggedu82eattr 'pending_since' paramsu82ereviewrevert true; paramsu82ecsrftoken csrftoken; varu800 query 'action' 'edit' 'title' paramsu82epagename 'summary' summary 'token' csrftoken 'undo' lastrevid 'undoafter' paramsu82egoodid 'basetimestamp' touched 'starttimestamp' loadtimestamp 'watchlist' twinkleu82egetpref 'watchrevertedpages .indexof paramsu82etype 1u800 'watch' undefined 'minor' twinkleu82egetpref 'markrevertedpagesasminor' .indexof paramsu82etype 1u800 true undefined ; ifu800 twinkleu82efluffu82erollbackinplace morebitsu82ewikiu82eactioncompletedu82eredirect paramsu82epagename; morebitsu82ewikiu82eactioncompletedu82enotice 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d988u8d981u8d982 u8d8a8u8d988u8d8af'; localized varu800 wikipedia_api newu800 morebitsu82ewikiu82eapiu800 'u8d8afu8d8b1 u8d8adu8d8a7u8d984 u8d8b0u8d8aeu8db8cu8d8b1u8d987 u8daa9u8d8b1u8d8afu8d986 u8d985u8d8adu8d8aau8d988u8d8a7u8db8c u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d8b4u8d8afu8d987' query twinkleu82efluffu82ecallbacksu82ecomplete statelem ; localized wikipedia_apiu82eparams params; wikipedia_apiu82epost ; complete function apiobj todo most ofu800 this isu800 copy pasted from morebitsu82ewikiu82epage#fnsavesuccess. unify itu800 varu800 xmlu800 apiobju82egetxml ; varu800 edit xmlu800 .find 'edit' ; ifu800 xmlu800 .find 'captcha' .length 0u800 apiobju82estatelemu82eerror 'u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d988u8d981u8d982 u8d986u8d8a8u8d988u8d8afu8d88c u8da86u8d988u8d986 u8d8b3u8d8b1u8d988u8d8b1 u8d988u8db8cu8daa9u8db8c u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8daa9u8d8b1u8d8af u8daa9u8d987 u8d8b4u8d985u8d8a7 u8db8cu8daa9 u8daa9u8d9beu8da86u8d8a7 u8d9beu8d8b1 u8daa9u8d986u8db8cu8d8af.' ; localized else ifu800 editu82eattr 'nochange'   apiobju82estatelemu82eerror 'u8d986u8d8b3u8d8aeu8d987u8e2808cu8d8a7u8db8c u8daa9u8d987 u8d8a8u8d987 u8d8a2u8d986 u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8db8cu8e2808cu8daa9u8d986u8db8cu8d985 u8d8a8u8d8a7 u8d986u8d8b3u8d8aeu8d987u8d994 u8d981u8d8b9u8d984u8db8c u8db8cu8daa9u8d8b3u8d8a7u8d986 u8d8a7u8d8b3u8d8aau8d89b u8d8a8u8d8b1u8daafu8d8b1u8d8afu8d8a7u8d986u8db8c u8d985u8d8aau8d988u8d982u8d981 u8d8b4u8d8af.' ; localized else apiobju82estatelemu82einfo 'u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8b4u8d8af' ; varu800 params apiobju82eparams; ifu800 paramsu82enotifyuser only from main notu800 from torevision morebitsu82estatusu82einfo 'info' 'u8d8a8u8d8a7u8d8b2 u8daa9u8d8b1u8d8afu8d986 u8d981u8d8b1u8d985 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8b5u8d981u8d8adu8d987u8d994 u8d8a8u8d8adu8d8ab u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 ' morebitsu82ehtmlnode 'strong' paramsu82euser ; localized varu800 windowquery 'title' 'u8d8a8u8d8adu8d8ab u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 ' paramsu82euser 'action' 'edit' 'preview' 'yesu800 'vanarticle' paramsu82epagenameu82ereplace _u800 gu800 ' ' 'vanarticlerevid' paramsu82erevid 'vanarticlegoodrevid' paramsu82egoodid 'type' paramsu82etype 'count' paramsu82ecount ; switch twinkleu82egetpref 'usertalkpagemode' case 'tabu800' windowu82eopen mwu800u82eutilu82egeturl   windowquery '_blank' ; break; case 'blank' windowu82eopen mwu800u82eutilu82egeturl   windowquery '_blank' 'location nou800 toolbar nou800 status nou800 directories nou800 scrollbars yesu800 width 1200 height 800u800' ; break; case 'window' * falls through * default windowu82eopen mwu800u82eutilu82egeturl   windowquery windowu82ename 'twinklewarnwindow' '_blank' 'twinklewarnwindow' 'location nou800 toolbar nou800 status nou800 directories nou800 scrollbars yesu800 width 1200 height 800u800' ; break; review theu800 revert ifu800 needed ifu800 apiobju82eparamsu82ereviewrevert varu800 query 'action' 'review' 'revid' editu82eattr 'newrevid' 'token' apiobju82eparamsu82ecsrftoken 'comment' twinkleu82egetpref 'summaryad' .trim ; varu800 wikipedia_api newu800 morebitsu82ewikiu82eapiu800 'u8d9beu8d8b0u8db8cu8d8b1u8d8b4 u8d8aeu8d988u8d8afu8daa9u8d8a7u8d8b1 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d8b4u8d985u8d8a7' query ; localized wikipedia_apiu82epost ; ; builtinstring should contain theu800 string " user" which will beu800 replaced byu800 anu800 appropriate user link twinkleu82efluffu82eformatsummary function builtinstring username userstring varu800 result builtinstring; append user user'su800 custom reason ifu800 userstring result ' ' morebitsu82estringu82etouppercasefirstchar userstring ; result twinkleu82egetpref 'summaryad' ; find number ofu800 utfu800 8u800 bytes theu800 resulting string takes upu800 andu800 possibly addu800 au800 contributions oru800 contributions talk link ifu800 itu800 doesn'tu800 push theu800 edit summary over theu800 255u800 byte limit varu800 resultlen unescape encodeuricomponent resultu82ereplace ' user'   .length; varu800 contribslink ' u8d988u8db8cu8da98u8d987 u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8d987u8d8a7 ' username ' ' username ' '; varu800 contribslen unescape encodeuricomponent contribslink .length; ifu800 resultlen contribslen 255u800 varu800 talklink ' u8d8a8u8d8adu8d8ab u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 ' username ' u8d8a8u8d8adu8d8ab '; localized ifu800 resultlen contribslen unescape encodeuricomponent talklink .length 255u800 result morebitsu82estringu82esafereplace result ' user' contribslink talklink ; else result morebitsu82estringu82esafereplace result ' user' contribslink ; else result morebitsu82estringu82esafereplace result ' user' username ; return result; ; jquery ; 