User:Eejit43/scripts/ajax-undo.js
Appearance
< User:Eejit43 | scripts
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
This user script seems to have a documentation page at User:Eejit43/scripts/ajax-undo. |
// <nowiki>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/ajax-undo.ts
"use strict";(()=>{mw.loader.using(["mediawiki.util"],()=>{let n=mw.config.get("wgDiffOldId");if(mw.config.get("wgAction")!=="history"&&!n)return;let a=mw.config.get("skin")==="minerva",d={awaitingClick:0,awaitingConfirmation:1,awaitingReload:2};mw.util.addCSS(`
#ajax-undo-loading {
display: none;
vertical-align: text-bottom;
height: 1.3em;
overflow: hidden;
line-height: 1.5em;
}
#ajax-undo-loading::after {
display: inline-table;
animation: ajax-undo-loading 0.8s steps(10) infinite;
content: "\u280B\\A\u2819\\A\u2839\\A\u2838\\A\u283C\\A\u2834\\A\u2826\\A\u2827\\A\u2807\\A\u280F";
color: gray;
text-align: left;
white-space: pre;
}
#ajax-undo-loading.is-diff {
height: 1.55em;
}
#ajax-undo-loading:not(.is-diff) {
margin: -0.3em 3px 0;
}
#ajax-undo-loading.is-minerva.is-diff {
margin: -0.2em 3px;
}
#ajax-undo-loading.is-minerva:not(.is-diff) {
float: right;
margin-top: 0;
}
@keyframes ajax-undo-loading {
to {
transform: translateY(-15em);
}
}
#ajax-undo-reason {
display: none;
margin-left: 3px;
}
#ajax-undo-reason.is-minerva {
border: revert;
background: revert;
padding: revert;
}
#ajax-undo-reason.is-minerva:not(.is-diff) {
float: right;
height: 26px;
}`);for(let o of document.querySelectorAll(".mw-history-undo, .mw-diff-undo")){let m=o.querySelector("a");if(!m?.href){mw.notify("Could not find undo link!",{type:"error"});continue}let f=new URL(m.href),i=document.createElement("span"),s=d.awaitingClick,t=document.createElement("a");t.textContent="ajax undo",t.href=f.href,a&&!n&&(t.style.marginLeft="1em"),t.addEventListener("click",async c=>{if(c.preventDefault(),s===d.awaitingClick)s=d.awaitingConfirmation,e.style.display="inline",e.focus(),t.textContent="confirm ajax undo";else if(s===d.awaitingConfirmation){s=d.awaitingReload,r.style.display="inline-block",t.style.color="gray",e.disabled=!0,a&&t.append(r);let u=f.searchParams.get("undo"),g=f.searchParams.get("undoafter");if(!u||!g)return mw.notify("Could not find undo parameters in URL!",{type:"error"});let l=o.closest(n?"td":"li")?.querySelector(".mw-userlink bdi")?.textContent;if(!l)return mw.notify("Could not find revision user!",{type:"error"});if(!await new mw.Api().postWithEditToken({action:"edit",title:mw.config.get("wgPageName"),undo:u,undoafter:g,summary:`Undid revision ${u} by [[Special:Contributions/${l}|${l}]] ([[User talk:${l}|talk]])${e.value?`: ${e.value}`:""}`}).catch((p,w)=>(mw.notify(`${w?.error.code??"Unknown error"} (${p})`,{type:"error"}),setTimeout(()=>window.location.reload(),2e3),!1)))return;mw.notify("Revision successfully undone, reloading...",{type:"success"}),window.location.reload()}}),n&&i.append(document.createTextNode("(")),i.append(t);let r=document.createElement("span");r.id="ajax-undo-loading",n&&r.classList.add("is-diff"),a&&r.classList.add("is-minerva"),a||i.append(r);let e=document.createElement("input");e.type="text",e.id="ajax-undo-reason",n&&e.classList.add("is-diff"),a&&e.classList.add("is-minerva"),e.placeholder="Insert reason here...",e.addEventListener("keydown",c=>{c.key==="Enter"&&t.click()}),a&&!n?i.prepend(e):i.append(e),n&&i.append(document.createTextNode(")")),n?(o.after(i),o.after(document.createTextNode(" "))):a?o.parentElement?.before(i):o.parentElement?.after(i)}});})();
// </nowiki>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc2NyaXB0cy9hamF4LXVuZG8udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgTWVkaWFXaWtpRGF0YUVycm9yIH0gZnJvbSAnLi4vZ2xvYmFsLXR5cGVzJztcblxubXcubG9hZGVyLnVzaW5nKFsnbWVkaWF3aWtpLnV0aWwnXSwgKCkgPT4ge1xuICAgIGNvbnN0IGlzRGlmZiA9IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJyk7XG5cbiAgICBpZiAobXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSAhPT0gJ2hpc3RvcnknICYmICFpc0RpZmYpIHJldHVybjtcblxuICAgIGNvbnN0IGlzTWluZXJ2YSA9IG13LmNvbmZpZy5nZXQoJ3NraW4nKSA9PT0gJ21pbmVydmEnO1xuXG4gICAgY29uc3QgU1RBR0VTID0ge1xuICAgICAgICBhd2FpdGluZ0NsaWNrOiAwLFxuICAgICAgICBhd2FpdGluZ0NvbmZpcm1hdGlvbjogMSxcbiAgICAgICAgYXdhaXRpbmdSZWxvYWQ6IDIsXG4gICAgfTtcblxuICAgIG13LnV0aWwuYWRkQ1NTKGBcbiNhamF4LXVuZG8tbG9hZGluZyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG4gICAgaGVpZ2h0OiAxLjNlbTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbn1cblxuI2FqYXgtdW5kby1sb2FkaW5nOjphZnRlciB7XG4gICAgZGlzcGxheTogaW5saW5lLXRhYmxlO1xuICAgIGFuaW1hdGlvbjogYWpheC11bmRvLWxvYWRpbmcgMC44cyBzdGVwcygxMCkgaW5maW5pdGU7XG4gICAgY29udGVudDogXCJcdTI4MEJcXFxcQVx1MjgxOVxcXFxBXHUyODM5XFxcXEFcdTI4MzhcXFxcQVx1MjgzQ1xcXFxBXHUyODM0XFxcXEFcdTI4MjZcXFxcQVx1MjgyN1xcXFxBXHUyODA3XFxcXEFcdTI4MEZcIjtcbiAgICBjb2xvcjogZ3JheTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHdoaXRlLXNwYWNlOiBwcmU7XG59XG5cbiNhamF4LXVuZG8tbG9hZGluZy5pcy1kaWZmIHtcbiAgICBoZWlnaHQ6IDEuNTVlbTtcbn1cblxuI2FqYXgtdW5kby1sb2FkaW5nOm5vdCguaXMtZGlmZikge1xuICAgIG1hcmdpbjogLTAuM2VtIDNweCAwO1xufVxuXG4jYWpheC11bmRvLWxvYWRpbmcuaXMtbWluZXJ2YS5pcy1kaWZmIHtcbiAgICBtYXJnaW46IC0wLjJlbSAzcHg7XG59XG5cbiNhamF4LXVuZG8tbG9hZGluZy5pcy1taW5lcnZhOm5vdCguaXMtZGlmZikge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tdG9wOiAwO1xufVxuXG5Aa2V5ZnJhbWVzIGFqYXgtdW5kby1sb2FkaW5nIHtcbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVlbSk7XG4gICAgfVxufVxuXG4jYWpheC11bmRvLXJlYXNvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtYXJnaW4tbGVmdDogM3B4O1xufVxuXG4jYWpheC11bmRvLXJlYXNvbi5pcy1taW5lcnZhIHtcbiAgICBib3JkZXI6IHJldmVydDtcbiAgICBiYWNrZ3JvdW5kOiByZXZlcnQ7XG4gICAgcGFkZGluZzogcmV2ZXJ0O1xufVxuXG4jYWpheC11bmRvLXJlYXNvbi5pcy1taW5lcnZhOm5vdCguaXMtZGlmZikge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBoZWlnaHQ6IDI2cHg7XG59YCk7XG5cbiAgICBmb3IgKGNvbnN0IHVuZG9TcGFuIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tdy1oaXN0b3J5LXVuZG8sIC5tdy1kaWZmLXVuZG8nKSkge1xuICAgICAgICBjb25zdCB1bmRvTGluayA9IHVuZG9TcGFuLnF1ZXJ5U2VsZWN0b3IoJ2EnKTtcblxuICAgICAgICBpZiAoIXVuZG9MaW5rPy5ocmVmKSB7XG4gICAgICAgICAgICBtdy5ub3RpZnkoJ0NvdWxkIG5vdCBmaW5kIHVuZG8gbGluayEnLCB7IHR5cGU6ICdlcnJvcicgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuZG9VcmwgPSBuZXcgVVJMKHVuZG9MaW5rLmhyZWYpO1xuXG4gICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgbGV0IHN0YWdlID0gU1RBR0VTLmF3YWl0aW5nQ2xpY2s7XG5cbiAgICAgICAgY29uc3QgYWpheFVuZG9MaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBhamF4VW5kb0xpbmsudGV4dENvbnRlbnQgPSAnYWpheCB1bmRvJztcbiAgICAgICAgYWpheFVuZG9MaW5rLmhyZWYgPSB1bmRvVXJsLmhyZWY7XG4gICAgICAgIGlmIChpc01pbmVydmEgJiYgIWlzRGlmZikgYWpheFVuZG9MaW5rLnN0eWxlLm1hcmdpbkxlZnQgPSAnMWVtJztcbiAgICAgICAgYWpheFVuZG9MaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBpZiAoc3RhZ2UgPT09IFNUQUdFUy5hd2FpdGluZ0NsaWNrKSB7XG4gICAgICAgICAgICAgICAgc3RhZ2UgPSBTVEFHRVMuYXdhaXRpbmdDb25maXJtYXRpb247XG5cbiAgICAgICAgICAgICAgICByZWFzb25JbnB1dC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7XG4gICAgICAgICAgICAgICAgcmVhc29uSW5wdXQuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIGFqYXhVbmRvTGluay50ZXh0Q29udGVudCA9ICdjb25maXJtIGFqYXggdW5kbyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSBTVEFHRVMuYXdhaXRpbmdDb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICBzdGFnZSA9IFNUQUdFUy5hd2FpdGluZ1JlbG9hZDtcbiAgICAgICAgICAgICAgICBsb2FkaW5nU3Bpbm5lci5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICAgICAgYWpheFVuZG9MaW5rLnN0eWxlLmNvbG9yID0gJ2dyYXknO1xuICAgICAgICAgICAgICAgIHJlYXNvbklucHV0LmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChpc01pbmVydmEpIGFqYXhVbmRvTGluay5hcHBlbmQobG9hZGluZ1NwaW5uZXIpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdW5kb0lkID0gdW5kb1VybC5zZWFyY2hQYXJhbXMuZ2V0KCd1bmRvJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5kb0FmdGVyID0gdW5kb1VybC5zZWFyY2hQYXJhbXMuZ2V0KCd1bmRvYWZ0ZXInKTtcblxuICAgICAgICAgICAgICAgIGlmICghdW5kb0lkIHx8ICF1bmRvQWZ0ZXIpIHJldHVybiBtdy5ub3RpZnkoJ0NvdWxkIG5vdCBmaW5kIHVuZG8gcGFyYW1ldGVycyBpbiBVUkwhJywgeyB0eXBlOiAnZXJyb3InIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmV2aXNpb25Vc2VyID0gdW5kb1NwYW4uY2xvc2VzdChpc0RpZmYgPyAndGQnIDogJ2xpJyk/LnF1ZXJ5U2VsZWN0b3IoJy5tdy11c2VybGluayBiZGknKT8udGV4dENvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXJldmlzaW9uVXNlcikgcmV0dXJuIG13Lm5vdGlmeSgnQ291bGQgbm90IGZpbmQgcmV2aXNpb24gdXNlciEnLCB7IHR5cGU6ICdlcnJvcicgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgbmV3IG13LkFwaSgpXG4gICAgICAgICAgICAgICAgICAgIC5wb3N0V2l0aEVkaXRUb2tlbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdlZGl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRvOiB1bmRvSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRvYWZ0ZXI6IHVuZG9BZnRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IGBVbmRpZCByZXZpc2lvbiAke3VuZG9JZH0gYnkgW1tTcGVjaWFsOkNvbnRyaWJ1dGlvbnMvJHtyZXZpc2lvblVzZXJ9fCR7cmV2aXNpb25Vc2VyfV1dIChbW1VzZXIgdGFsazoke3JldmlzaW9uVXNlcn18dGFsa11dKSR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uSW5wdXQudmFsdWUgPyBgOiAke3JlYXNvbklucHV0LnZhbHVlfWAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3JDb2RlOiBzdHJpbmcsIGVycm9ySW5mbzogTWVkaWFXaWtpRGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoYCR7ZXJyb3JJbmZvPy5lcnJvci5jb2RlID8/ICdVbmtub3duIGVycm9yJ30gKCR7ZXJyb3JDb2RlfSlgLCB7IHR5cGU6ICdlcnJvcicgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBtdy5ub3RpZnkoJ1JldmlzaW9uIHN1Y2Nlc3NmdWxseSB1bmRvbmUsIHJlbG9hZGluZy4uLicsIHsgdHlwZTogJ3N1Y2Nlc3MnIH0pO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzRGlmZikgc3Bhbi5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJygnKSk7XG4gICAgICAgIHNwYW4uYXBwZW5kKGFqYXhVbmRvTGluayk7XG5cbiAgICAgICAgY29uc3QgbG9hZGluZ1NwaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIGxvYWRpbmdTcGlubmVyLmlkID0gJ2FqYXgtdW5kby1sb2FkaW5nJztcbiAgICAgICAgaWYgKGlzRGlmZikgbG9hZGluZ1NwaW5uZXIuY2xhc3NMaXN0LmFkZCgnaXMtZGlmZicpO1xuICAgICAgICBpZiAoaXNNaW5lcnZhKSBsb2FkaW5nU3Bpbm5lci5jbGFzc0xpc3QuYWRkKCdpcy1taW5lcnZhJyk7XG5cbiAgICAgICAgaWYgKCFpc01pbmVydmEpIHNwYW4uYXBwZW5kKGxvYWRpbmdTcGlubmVyKTtcblxuICAgICAgICBjb25zdCByZWFzb25JbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHJlYXNvbklucHV0LnR5cGUgPSAndGV4dCc7XG4gICAgICAgIHJlYXNvbklucHV0LmlkID0gJ2FqYXgtdW5kby1yZWFzb24nO1xuICAgICAgICBpZiAoaXNEaWZmKSByZWFzb25JbnB1dC5jbGFzc0xpc3QuYWRkKCdpcy1kaWZmJyk7XG4gICAgICAgIGlmIChpc01pbmVydmEpIHJlYXNvbklucHV0LmNsYXNzTGlzdC5hZGQoJ2lzLW1pbmVydmEnKTtcbiAgICAgICAgcmVhc29uSW5wdXQucGxhY2Vob2xkZXIgPSAnSW5zZXJ0IHJlYXNvbiBoZXJlLi4uJztcbiAgICAgICAgcmVhc29uSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgYWpheFVuZG9MaW5rLmNsaWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc01pbmVydmEgJiYgIWlzRGlmZikgc3Bhbi5wcmVwZW5kKHJlYXNvbklucHV0KTtcbiAgICAgICAgZWxzZSBzcGFuLmFwcGVuZChyZWFzb25JbnB1dCk7XG5cbiAgICAgICAgaWYgKGlzRGlmZikgc3Bhbi5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyknKSk7XG5cbiAgICAgICAgaWYgKGlzRGlmZikge1xuICAgICAgICAgICAgdW5kb1NwYW4uYWZ0ZXIoc3Bhbik7XG4gICAgICAgICAgICB1bmRvU3Bhbi5hZnRlcihkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc01pbmVydmEpIHVuZG9TcGFuLnBhcmVudEVsZW1lbnQ/LmJlZm9yZShzcGFuKTtcbiAgICAgICAgZWxzZSB1bmRvU3Bhbi5wYXJlbnRFbGVtZW50Py5hZnRlcihzcGFuKTtcbiAgICB9XG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7OzttQkFFQSxHQUFHLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFHLElBQU0sQ0FDdEMsSUFBTUEsRUFBUyxHQUFHLE9BQU8sSUFBSSxhQUFhLEVBRTFDLEdBQUksR0FBRyxPQUFPLElBQUksVUFBVSxJQUFNLFdBQWEsQ0FBQ0EsRUFBUSxPQUV4RCxJQUFNQyxFQUFZLEdBQUcsT0FBTyxJQUFJLE1BQU0sSUFBTSxVQUV0Q0MsRUFBUyxDQUNYLGNBQWUsRUFDZixxQkFBc0IsRUFDdEIsZUFBZ0IsQ0FDcEIsRUFFQSxHQUFHLEtBQUssT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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QU8sT0FDbkJBLEVBQVksR0FBSyxtQkFDYlYsR0FBUVUsRUFBWSxVQUFVLElBQUksU0FBUyxFQUMzQ1QsR0FBV1MsRUFBWSxVQUFVLElBQUksWUFBWSxFQUNyREEsRUFBWSxZQUFjLHdCQUMxQkEsRUFBWSxpQkFBaUIsVUFBWUQsR0FBVSxDQUMzQ0EsRUFBTSxNQUFRLFNBQVNELEVBQWEsTUFBTSxDQUNsRCxDQUFDLEVBRUdQLEdBQWEsQ0FBQ0QsRUFBUU0sRUFBSyxRQUFRSSxDQUFXLEVBQzdDSixFQUFLLE9BQU9JLENBQVcsRUFFeEJWLEdBQVFNLEVBQUssT0FBTyxTQUFTLGVBQWUsR0FBRyxDQUFDLEVBRWhETixHQUNBRyxFQUFTLE1BQU1HLENBQUksRUFDbkJILEVBQVMsTUFBTSxTQUFTLGVBQWUsR0FBRyxDQUFDLEdBQ3BDRixFQUFXRSxFQUFTLGVBQWUsT0FBT0csQ0FBSSxFQUNwREgsRUFBUyxlQUFlLE1BQU1HLENBQUksQ0FDM0MsQ0FDSixDQUFDIiwKICAibmFtZXMiOiBbImlzRGlmZiIsICJpc01pbmVydmEiLCAiU1RBR0VTIiwgInVuZG9TcGFuIiwgInVuZG9MaW5rIiwgInVuZG9VcmwiLCAic3BhbiIsICJzdGFnZSIsICJhamF4VW5kb0xpbmsiLCAiZXZlbnQiLCAicmVhc29uSW5wdXQiLCAibG9hZGluZ1NwaW5uZXIiLCAidW5kb0lkIiwgInVuZG9BZnRlciIsICJyZXZpc2lvblVzZXIiLCAiZXJyb3JDb2RlIiwgImVycm9ySW5mbyJdCn0K