User:Eejit43/scripts/ajax-undo.js: Difference between revisions

Content deleted Content added
Syncing script from GitHub (via script)
Syncing script from GitHub (via script)
Line 3:
 
"use strict";(()=>{var p=`#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 .8s steps(10) infinite;content:"\\280b\\a\\2819\\a\\2839\\a\\2838\\a\\283c\\a\\2834\\a\\2826\\a\\2827\\a\\2807\\a\\280f";color:gray;text-align:left;white-space:pre}#ajax-undo-loading:not(.is-diff){margin:-.3em 3px 0}#ajax-undo-loading.is-diff{height:1.55em}#ajax-undo-loading.is-minerva:not(.is-diff){float:right;margin-top:0}#ajax-undo-loading.is-minerva.is-diff{margin:-.2em 3px}@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}
`;mw.loader.using(["mediawiki.util"],()=>{let n=mw.config.get("wgDiffOldId");if(mw.config.get("wgAction")!=="history"&&!n)return;mw.util.addCSS(p);let at=mw.config.get("skin")==="minerva",d={awaitingClick:0,awaitingConfirmation:1,awaitingReload:2};for(let o of document.querySelectorAll(".mw-history-undo, .mw-diff-undo")){let m=o.querySelector("a");if(!m?.href){mw.notify("ajax-undo: Could not find undo link for a diff!",{type:"error"});continue}let f=new URL(m.href),i=document.createElement("span"),s=d.awaitingClick,ta=document.createElement("a");ta.textContent="ajax undo",ta.href=f.href,at&&!n&&(ta.style.marginLeft="1em"),ta.addEventListener("click",async c=>{if(c.preventDefault(),s===d.awaitingClick)s=d.awaitingConfirmation,e.style.display="inline",e.focus(),ta.textContent="confirm ajax undo";else if(s===d.awaitingConfirmation){s=d.awaitingReload,r.style.display="inline-block",ta.style.color="gray",e.disabled=!0,at&&ta.append(r);let u=f.searchParams.get("undo"),g=f.searchParams.get("undoafter");if(!u||!g){mw.notify("Could not find undo parameters in URL!",{type:"error"});return}let l=o.closest(n?"td":"li")?.querySelector(".mw-userlink bdi")?.textContent;if(!l){mw.notify("Could not find revision user!",{type:"error"});return}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((w,y)=>(mw.notify(`Error undoing revision: ${y?.error.code??"Unknown error"} (${w})`,{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(ta);let r=document.createElement("span");r.id="ajax-undo-loading",n&&r.classList.add("is-diff"),at&&r.classList.add("is-minerva"),at||i.append(r);let e=document.createElement("input");e.type="text",e.id="ajax-undo-reason",n&&e.classList.add("is-diff"),at&&e.classList.add("is-minerva"),e.placeholder="Insert reason here...",e.addEventListener("keydown",c=>{c.key==="Enter"&&ta.click()}),at&&!n?i.prepend(e):i.append(e),n&&i.append(document.createTextNode(")")),n?(o.after(i),o.after(document.createTextNode(" "))):at?o.parentElement?.before(i):o.parentElement?.after(i)}});})();
 
// </nowiki>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3R5bGVzL2FqYXgtdW5kby5jc3MiLCAiLi4vc2NyaXB0cy9hamF4LXVuZG8udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIiNhamF4LXVuZG8tbG9hZGluZ3tkaXNwbGF5Om5vbmU7dmVydGljYWwtYWxpZ246dGV4dC1ib3R0b207aGVpZ2h0OjEuM2VtO292ZXJmbG93OmhpZGRlbjtsaW5lLWhlaWdodDoxLjVlbX0jYWpheC11bmRvLWxvYWRpbmc6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtdGFibGU7YW5pbWF0aW9uOmFqYXgtdW5kby1sb2FkaW5nIC44cyBzdGVwcygxMCkgaW5maW5pdGU7Y29udGVudDpcIlxcMjgwYlxcYVxcMjgxOVxcYVxcMjgzOVxcYVxcMjgzOFxcYVxcMjgzY1xcYVxcMjgzNFxcYVxcMjgyNlxcYVxcMjgyN1xcYVxcMjgwN1xcYVxcMjgwZlwiO2NvbG9yOmdyYXk7dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOnByZX0jYWpheC11bmRvLWxvYWRpbmc6bm90KC5pcy1kaWZmKXttYXJnaW46LS4zZW0gM3B4IDB9I2FqYXgtdW5kby1sb2FkaW5nLmlzLWRpZmZ7aGVpZ2h0OjEuNTVlbX0jYWpheC11bmRvLWxvYWRpbmcuaXMtbWluZXJ2YTpub3QoLmlzLWRpZmYpe2Zsb2F0OnJpZ2h0O21hcmdpbi10b3A6MH0jYWpheC11bmRvLWxvYWRpbmcuaXMtbWluZXJ2YS5pcy1kaWZme21hcmdpbjotLjJlbSAzcHh9QGtleWZyYW1lcyBhamF4LXVuZG8tbG9hZGluZ3t0b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTVlbSl9fSNhamF4LXVuZG8tcmVhc29ue2Rpc3BsYXk6bm9uZTttYXJnaW4tbGVmdDozcHh9I2FqYXgtdW5kby1yZWFzb24uaXMtbWluZXJ2YXtib3JkZXI6cmV2ZXJ0O2JhY2tncm91bmQ6cmV2ZXJ0O3BhZGRpbmc6cmV2ZXJ0fSNhamF4LXVuZG8tcmVhc29uLmlzLW1pbmVydmE6bm90KC5pcy1kaWZmKXtmbG9hdDpyaWdodDtoZWlnaHQ6MjZweH1cbiIsICJpbXBvcnQgdHlwZSB7IE1lZGlhV2lraURhdGFFcnJvciB9IGZyb20gJy4uL2dsb2JhbC10eXBlcyc7XG5pbXBvcnQgY3NzQ29udGVudCBmcm9tICcuLi9zdHlsZXMvYWpheC11bmRvLmNzcycgd2l0aCB7IHR5cGU6ICdjc3MnIH07XG5cbm13LmxvYWRlci51c2luZyhbJ21lZGlhd2lraS51dGlsJ10sICgpID0+IHtcbiAgICBjb25zdCBpc0RpZmYgPSBtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpO1xuXG4gICAgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgIT09ICdoaXN0b3J5JyAmJiAhaXNEaWZmKSByZXR1cm47XG5cbiAgICBtdy51dGlsLmFkZENTUyhjc3NDb250ZW50KTtcblxuICAgIGNvbnN0IGlzTWluZXJ2YSA9IG13LmNvbmZpZy5nZXQoJ3NraW4nKSA9PT0gJ21pbmVydmEnO1xuXG4gICAgY29uc3QgU1RBR0VTID0ge1xuICAgICAgICBhd2FpdGluZ0NsaWNrOiAwLFxuICAgICAgICBhd2FpdGluZ0NvbmZpcm1hdGlvbjogMSxcbiAgICAgICAgYXdhaXRpbmdSZWxvYWQ6IDIsXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgdW5kb1NwYW4gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm13LWhpc3RvcnktdW5kbywgLm13LWRpZmYtdW5kbycpKSB7XG4gICAgICAgIGNvbnN0IHVuZG9MaW5rID0gdW5kb1NwYW4ucXVlcnlTZWxlY3RvcignYScpO1xuXG4gICAgICAgIGlmICghdW5kb0xpbms/LmhyZWYpIHtcbiAgICAgICAgICAgIG13Lm5vdGlmeSgnYWpheC11bmRvOiBDb3VsZCBub3QgZmluZCB1bmRvIGxpbmsgZm9yIGEgZGlmZiEnLCB7IHR5cGU6ICdlcnJvcicgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuZG9VcmwgPSBuZXcgVVJMKHVuZG9MaW5rLmhyZWYpO1xuXG4gICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgbGV0IHN0YWdlID0gU1RBR0VTLmF3YWl0aW5nQ2xpY2s7XG5cbiAgICAgICAgY29uc3QgYWpheFVuZG9MaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBhamF4VW5kb0xpbmsudGV4dENvbnRlbnQgPSAnYWpheCB1bmRvJztcbiAgICAgICAgYWpheFVuZG9MaW5rLmhyZWYgPSB1bmRvVXJsLmhyZWY7XG4gICAgICAgIGlmIChpc01pbmVydmEgJiYgIWlzRGlmZikgYWpheFVuZG9MaW5rLnN0eWxlLm1hcmdpbkxlZnQgPSAnMWVtJztcbiAgICAgICAgYWpheFVuZG9MaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBpZiAoc3RhZ2UgPT09IFNUQUdFUy5hd2FpdGluZ0NsaWNrKSB7XG4gICAgICAgICAgICAgICAgc3RhZ2UgPSBTVEFHRVMuYXdhaXRpbmdDb25maXJtYXRpb247XG5cbiAgICAgICAgICAgICAgICByZWFzb25JbnB1dC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7XG4gICAgICAgICAgICAgICAgcmVhc29uSW5wdXQuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIGFqYXhVbmRvTGluay50ZXh0Q29udGVudCA9ICdjb25maXJtIGFqYXggdW5kbyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSBTVEFHRVMuYXdhaXRpbmdDb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICBzdGFnZSA9IFNUQUdFUy5hd2FpdGluZ1JlbG9hZDtcbiAgICAgICAgICAgICAgICBsb2FkaW5nU3Bpbm5lci5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICAgICAgYWpheFVuZG9MaW5rLnN0eWxlLmNvbG9yID0gJ2dyYXknO1xuICAgICAgICAgICAgICAgIHJlYXNvbklucHV0LmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChpc01pbmVydmEpIGFqYXhVbmRvTGluay5hcHBlbmQobG9hZGluZ1NwaW5uZXIpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdW5kb0lkID0gdW5kb1VybC5zZWFyY2hQYXJhbXMuZ2V0KCd1bmRvJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5kb0FmdGVyID0gdW5kb1VybC5zZWFyY2hQYXJhbXMuZ2V0KCd1bmRvYWZ0ZXInKTtcblxuICAgICAgICAgICAgICAgIGlmICghdW5kb0lkIHx8ICF1bmRvQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KCdDb3VsZCBub3QgZmluZCB1bmRvIHBhcmFtZXRlcnMgaW4gVVJMIScsIHsgdHlwZTogJ2Vycm9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uVXNlciA9IHVuZG9TcGFuLmNsb3Nlc3QoaXNEaWZmID8gJ3RkJyA6ICdsaScpPy5xdWVyeVNlbGVjdG9yKCcubXctdXNlcmxpbmsgYmRpJyk/LnRleHRDb250ZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCFyZXZpc2lvblVzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KCdDb3VsZCBub3QgZmluZCByZXZpc2lvbiB1c2VyIScsIHsgdHlwZTogJ2Vycm9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBuZXcgbXcuQXBpKClcbiAgICAgICAgICAgICAgICAgICAgLnBvc3RXaXRoRWRpdFRva2VuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZG86IHVuZG9JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZG9hZnRlcjogdW5kb0FmdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogYFVuZGlkIHJldmlzaW9uICR7dW5kb0lkfSBieSBbW1NwZWNpYWw6Q29udHJpYnV0aW9ucy8ke3JldmlzaW9uVXNlcn18JHtyZXZpc2lvblVzZXJ9XV0gKFtbVXNlciB0YWxrOiR7cmV2aXNpb25Vc2VyfXx0YWxrXV0pJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb25JbnB1dC52YWx1ZSA/IGA6ICR7cmVhc29uSW5wdXQudmFsdWV9YCA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvckNvZGUsIGVycm9ySW5mbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBFcnJvciB1bmRvaW5nIHJldmlzaW9uOiAkeyhlcnJvckluZm8gYXMgTWVkaWFXaWtpRGF0YUVycm9yKT8uZXJyb3IuY29kZSA/PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIG13Lm5vdGlmeSgnUmV2aXNpb24gc3VjY2Vzc2Z1bGx5IHVuZG9uZSwgcmVsb2FkaW5nLi4uJywgeyB0eXBlOiAnc3VjY2VzcycgfSk7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaXNEaWZmKSBzcGFuLmFwcGVuZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnKCcpKTtcbiAgICAgICAgc3Bhbi5hcHBlbmQoYWpheFVuZG9MaW5rKTtcblxuICAgICAgICBjb25zdCBsb2FkaW5nU3Bpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgbG9hZGluZ1NwaW5uZXIuaWQgPSAnYWpheC11bmRvLWxvYWRpbmcnO1xuICAgICAgICBpZiAoaXNEaWZmKSBsb2FkaW5nU3Bpbm5lci5jbGFzc0xpc3QuYWRkKCdpcy1kaWZmJyk7XG4gICAgICAgIGlmIChpc01pbmVydmEpIGxvYWRpbmdTcGlubmVyLmNsYXNzTGlzdC5hZGQoJ2lzLW1pbmVydmEnKTtcblxuICAgICAgICBpZiAoIWlzTWluZXJ2YSkgc3Bhbi5hcHBlbmQobG9hZGluZ1NwaW5uZXIpO1xuXG4gICAgICAgIGNvbnN0IHJlYXNvbklucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgcmVhc29uSW5wdXQudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgcmVhc29uSW5wdXQuaWQgPSAnYWpheC11bmRvLXJlYXNvbic7XG4gICAgICAgIGlmIChpc0RpZmYpIHJlYXNvbklucHV0LmNsYXNzTGlzdC5hZGQoJ2lzLWRpZmYnKTtcbiAgICAgICAgaWYgKGlzTWluZXJ2YSkgcmVhc29uSW5wdXQuY2xhc3NMaXN0LmFkZCgnaXMtbWluZXJ2YScpO1xuICAgICAgICByZWFzb25JbnB1dC5wbGFjZWhvbGRlciA9ICdJbnNlcnQgcmVhc29uIGhlcmUuLi4nO1xuICAgICAgICByZWFzb25JbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSBhamF4VW5kb0xpbmsuY2xpY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzTWluZXJ2YSAmJiAhaXNEaWZmKSBzcGFuLnByZXBlbmQocmVhc29uSW5wdXQpO1xuICAgICAgICBlbHNlIHNwYW4uYXBwZW5kKHJlYXNvbklucHV0KTtcblxuICAgICAgICBpZiAoaXNEaWZmKSBzcGFuLmFwcGVuZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnKScpKTtcblxuICAgICAgICBpZiAoaXNEaWZmKSB7XG4gICAgICAgICAgICB1bmRvU3Bhbi5hZnRlcihzcGFuKTtcbiAgICAgICAgICAgIHVuZG9TcGFuLmFmdGVyKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJykpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTWluZXJ2YSkgdW5kb1NwYW4ucGFyZW50RWxlbWVudD8uYmVmb3JlKHNwYW4pO1xuICAgICAgICBlbHNlIHVuZG9TcGFuLnBhcmVudEVsZW1lbnQ/LmFmdGVyKHNwYW4pO1xuICAgIH1cbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7O21CQUFBLElBQUFBLEVBQUE7RUNHQSxHQUFHLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFHLElBQU0sQ0FDdEMsSUFBTUMsRUFBUyxHQUFHLE9BQU8sSUFBSSxhQUFhLEVBRTFDLEdBQUksR0FBRyxPQUFPLElBQUksVUFBVSxJQUFNLFdBQWEsQ0FBQ0EsRUFB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Q2JYLEdBQVFXLEVBQVksVUFBVSxJQUFJLFNBQVMsRUFDM0NULEdBQVdTLEVBQVksVUFBVSxJQUFJLFlBQVksRUFDckRBLEVBQVksWUFBYyx3QkFDMUJBLEVBQVksaUJBQWlCLFVBQVlELEdBQVUsQ0FDM0NBLEVBQU0sTUFBUSxTQUFTRCxFQUFhLE1BQU0sQ0FDbEQsQ0FBQyxFQUVHUCxHQUFhLENBQUNGLEVBQVFPLEVBQUssUUFBUUksQ0FBVyxFQUM3Q0osRUFBSyxPQUFPSSxDQUFXLEVBRXhCWCxHQUFRTyxFQUFLLE9BQU8sU0FBUyxlQUFlLEdBQUcsQ0FBQyxFQUVoRFAsR0FDQUksRUFBUyxNQUFNRyxDQUFJLEVBQ25CSCxFQUFTLE1BQU0sU0FBUyxlQUFlLEdBQUcsQ0FBQyxHQUNwQ0YsRUFBV0UsRUFBUyxlQUFlLE9BQU9HLENBQUksRUFDcERILEVBQVMsZUFBZSxNQUFNRyxDQUFJLENBQzNDLENBQ0osQ0FBQyIsCiAgIm5hbWVzIjogWyJhamF4X3VuZG9fZGVmYXVsdCIsICJpc0RpZmYiLCAiYWpheF91bmRvX2RlZmF1bHQiLCAiaXNNaW5lcnZhIiwgIlNUQUdFUyIsICJ1bmRvU3BhbiIsICJ1bmRvTGluayIsICJ1bmRvVXJsIiwgInNwYW4iLCAic3RhZ2UiLCAiYWpheFVuZG9MaW5rIiwgImV2ZW50IiwgInJlYXNvbklucHV0IiwgImxvYWRpbmdTcGlubmVyIiwgInVuZG9JZCIsICJ1bmRvQWZ0ZXIiLCAicmV2aXNpb25Vc2VyIiwgImVycm9yQ29kZSIsICJlcnJvckluZm8iXQp9Cg==
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3R5bGVzL2FqYXgtdW5kby5jc3MiLCAiLi4vc2NyaXB0cy9hamF4LXVuZG8udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIiNhamF4LXVuZG8tbG9hZGluZ3tkaXNwbGF5Om5vbmU7dmVydGljYWwtYWxpZ246dGV4dC1ib3R0b207aGVpZ2h0OjEuM2VtO292ZXJmbG93OmhpZGRlbjtsaW5lLWhlaWdodDoxLjVlbX0jYWpheC11bmRvLWxvYWRpbmc6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtdGFibGU7YW5pbWF0aW9uOmFqYXgtdW5kby1sb2FkaW5nIC44cyBzdGVwcygxMCkgaW5maW5pdGU7Y29udGVudDpcIlxcMjgwYlxcYVxcMjgxOVxcYVxcMjgzOVxcYVxcMjgzOFxcYVxcMjgzY1xcYVxcMjgzNFxcYVxcMjgyNlxcYVxcMjgyN1xcYVxcMjgwN1xcYVxcMjgwZlwiO2NvbG9yOmdyYXk7dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOnByZX0jYWpheC11bmRvLWxvYWRpbmc6bm90KC5pcy1kaWZmKXttYXJnaW46LS4zZW0gM3B4IDB9I2FqYXgtdW5kby1sb2FkaW5nLmlzLWRpZmZ7aGVpZ2h0OjEuNTVlbX0jYWpheC11bmRvLWxvYWRpbmcuaXMtbWluZXJ2YTpub3QoLmlzLWRpZmYpe2Zsb2F0OnJpZ2h0O21hcmdpbi10b3A6MH0jYWpheC11bmRvLWxvYWRpbmcuaXMtbWluZXJ2YS5pcy1kaWZme21hcmdpbjotLjJlbSAzcHh9QGtleWZyYW1lcyBhamF4LXVuZG8tbG9hZGluZ3t0b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTVlbSl9fSNhamF4LXVuZG8tcmVhc29ue2Rpc3BsYXk6bm9uZTttYXJnaW4tbGVmdDozcHh9I2FqYXgtdW5kby1yZWFzb24uaXMtbWluZXJ2YXtib3JkZXI6cmV2ZXJ0O2JhY2tncm91bmQ6cmV2ZXJ0O3BhZGRpbmc6cmV2ZXJ0fSNhamF4LXVuZG8tcmVhc29uLmlzLW1pbmVydmE6bm90KC5pcy1kaWZmKXtmbG9hdDpyaWdodDtoZWlnaHQ6MjZweH1cbiIsICJpbXBvcnQgdHlwZSB7IE1lZGlhV2lraURhdGFFcnJvciB9IGZyb20gJy4uL2dsb2JhbC10eXBlcyc7XG5pbXBvcnQgY3NzQ29udGVudCBmcm9tICcuLi9zdHlsZXMvYWpheC11bmRvLmNzcycgd2l0aCB7IHR5cGU6ICdjc3MnIH07XG5cbm13LmxvYWRlci51c2luZyhbJ21lZGlhd2lraS51dGlsJ10sICgpID0+IHtcbiAgICBjb25zdCBpc0RpZmYgPSBtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpO1xuXG4gICAgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgIT09ICdoaXN0b3J5JyAmJiAhaXNEaWZmKSByZXR1cm47XG5cbiAgICBtdy51dGlsLmFkZENTUyhjc3NDb250ZW50KTtcblxuICAgIGNvbnN0IGlzTWluZXJ2YSA9IG13LmNvbmZpZy5nZXQoJ3NraW4nKSA9PT0gJ21pbmVydmEnO1xuXG4gICAgY29uc3QgU1RBR0VTID0ge1xuICAgICAgICBhd2FpdGluZ0NsaWNrOiAwLFxuICAgICAgICBhd2FpdGluZ0NvbmZpcm1hdGlvbjogMSxcbiAgICAgICAgYXdhaXRpbmdSZWxvYWQ6IDIsXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgdW5kb1NwYW4gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm13LWhpc3RvcnktdW5kbywgLm13LWRpZmYtdW5kbycpKSB7XG4gICAgICAgIGNvbnN0IHVuZG9MaW5rID0gdW5kb1NwYW4ucXVlcnlTZWxlY3RvcignYScpO1xuXG4gICAgICAgIGlmICghdW5kb0xpbms/LmhyZWYpIHtcbiAgICAgICAgICAgIG13Lm5vdGlmeSgnQ291bGQgbm90IGZpbmQgdW5kbyBsaW5rIScsIHsgdHlwZTogJ2Vycm9yJyB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdW5kb1VybCA9IG5ldyBVUkwodW5kb0xpbmsuaHJlZik7XG5cbiAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblxuICAgICAgICBsZXQgc3RhZ2UgPSBTVEFHRVMuYXdhaXRpbmdDbGljaztcblxuICAgICAgICBjb25zdCBhamF4VW5kb0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGFqYXhVbmRvTGluay50ZXh0Q29udGVudCA9ICdhamF4IHVuZG8nO1xuICAgICAgICBhamF4VW5kb0xpbmsuaHJlZiA9IHVuZG9VcmwuaHJlZjtcbiAgICAgICAgaWYgKGlzTWluZXJ2YSAmJiAhaXNEaWZmKSBhamF4VW5kb0xpbmsuc3R5bGUubWFyZ2luTGVmdCA9ICcxZW0nO1xuICAgICAgICBhamF4VW5kb0xpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGlmIChzdGFnZSA9PT0gU1RBR0VTLmF3YWl0aW5nQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBzdGFnZSA9IFNUQUdFUy5hd2FpdGluZ0NvbmZpcm1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJlYXNvbklucHV0LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJztcbiAgICAgICAgICAgICAgICByZWFzb25JbnB1dC5mb2N1cygpO1xuXG4gICAgICAgICAgICAgICAgYWpheFVuZG9MaW5rLnRleHRDb250ZW50ID0gJ2NvbmZpcm0gYWpheCB1bmRvJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhZ2UgPT09IFNUQUdFUy5hd2FpdGluZ0NvbmZpcm1hdGlvbikge1xuICAgICAgICAgICAgICAgIHN0YWdlID0gU1RBR0VTLmF3YWl0aW5nUmVsb2FkO1xuICAgICAgICAgICAgICAgIGxvYWRpbmdTcGlubmVyLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICAgICAgICAgICAgICBhamF4VW5kb0xpbmsuc3R5bGUuY29sb3IgPSAnZ3JheSc7XG4gICAgICAgICAgICAgICAgcmVhc29uSW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzTWluZXJ2YSkgYWpheFVuZG9MaW5rLmFwcGVuZChsb2FkaW5nU3Bpbm5lcik7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB1bmRvSWQgPSB1bmRvVXJsLnNlYXJjaFBhcmFtcy5nZXQoJ3VuZG8nKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1bmRvQWZ0ZXIgPSB1bmRvVXJsLnNlYXJjaFBhcmFtcy5nZXQoJ3VuZG9hZnRlcicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF1bmRvSWQgfHwgIXVuZG9BZnRlcikge1xuICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoJ0NvdWxkIG5vdCBmaW5kIHVuZG8gcGFyYW1ldGVycyBpbiBVUkwhJywgeyB0eXBlOiAnZXJyb3InIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmV2aXNpb25Vc2VyID0gdW5kb1NwYW4uY2xvc2VzdChpc0RpZmYgPyAndGQnIDogJ2xpJyk/LnF1ZXJ5U2VsZWN0b3IoJy5tdy11c2VybGluayBiZGknKT8udGV4dENvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXJldmlzaW9uVXNlcikge1xuICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoJ0NvdWxkIG5vdCBmaW5kIHJldmlzaW9uIHVzZXIhJywgeyB0eXBlOiAnZXJyb3InIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IG5ldyBtdy5BcGkoKVxuICAgICAgICAgICAgICAgICAgICAucG9zdFdpdGhFZGl0VG9rZW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnZWRpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kbzogdW5kb0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kb2FmdGVyOiB1bmRvQWZ0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiBgVW5kaWQgcmV2aXNpb24gJHt1bmRvSWR9IGJ5IFtbU3BlY2lhbDpDb250cmlidXRpb25zLyR7cmV2aXNpb25Vc2VyfXwke3JldmlzaW9uVXNlcn1dXSAoW1tVc2VyIHRhbGs6JHtyZXZpc2lvblVzZXJ9fHRhbGtdXSkke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbklucHV0LnZhbHVlID8gYDogJHtyZWFzb25JbnB1dC52YWx1ZX1gIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yQ29kZSwgZXJyb3JJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYEVycm9yIHVuZG9pbmcgcmV2aXNpb246ICR7KGVycm9ySW5mbyBhcyBNZWRpYVdpa2lEYXRhRXJyb3IpPy5lcnJvci5jb2RlID8/ICdVbmtub3duIGVycm9yJ30gKCR7ZXJyb3JDb2RlfSlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgbXcubm90aWZ5KCdSZXZpc2lvbiBzdWNjZXNzZnVsbHkgdW5kb25lLCByZWxvYWRpbmcuLi4nLCB7IHR5cGU6ICdzdWNjZXNzJyB9KTtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc0RpZmYpIHNwYW4uYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcoJykpO1xuICAgICAgICBzcGFuLmFwcGVuZChhamF4VW5kb0xpbmspO1xuXG4gICAgICAgIGNvbnN0IGxvYWRpbmdTcGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBsb2FkaW5nU3Bpbm5lci5pZCA9ICdhamF4LXVuZG8tbG9hZGluZyc7XG4gICAgICAgIGlmIChpc0RpZmYpIGxvYWRpbmdTcGlubmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWRpZmYnKTtcbiAgICAgICAgaWYgKGlzTWluZXJ2YSkgbG9hZGluZ1NwaW5uZXIuY2xhc3NMaXN0LmFkZCgnaXMtbWluZXJ2YScpO1xuXG4gICAgICAgIGlmICghaXNNaW5lcnZhKSBzcGFuLmFwcGVuZChsb2FkaW5nU3Bpbm5lcik7XG5cbiAgICAgICAgY29uc3QgcmVhc29uSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICByZWFzb25JbnB1dC50eXBlID0gJ3RleHQnO1xuICAgICAgICByZWFzb25JbnB1dC5pZCA9ICdhamF4LXVuZG8tcmVhc29uJztcbiAgICAgICAgaWYgKGlzRGlmZikgcmVhc29uSW5wdXQuY2xhc3NMaXN0LmFkZCgnaXMtZGlmZicpO1xuICAgICAgICBpZiAoaXNNaW5lcnZhKSByZWFzb25JbnB1dC5jbGFzc0xpc3QuYWRkKCdpcy1taW5lcnZhJyk7XG4gICAgICAgIHJlYXNvbklucHV0LnBsYWNlaG9sZGVyID0gJ0luc2VydCByZWFzb24gaGVyZS4uLic7XG4gICAgICAgIHJlYXNvbklucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIGFqYXhVbmRvTGluay5jbGljaygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaXNNaW5lcnZhICYmICFpc0RpZmYpIHNwYW4ucHJlcGVuZChyZWFzb25JbnB1dCk7XG4gICAgICAgIGVsc2Ugc3Bhbi5hcHBlbmQocmVhc29uSW5wdXQpO1xuXG4gICAgICAgIGlmIChpc0RpZmYpIHNwYW4uYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcpJykpO1xuXG4gICAgICAgIGlmIChpc0RpZmYpIHtcbiAgICAgICAgICAgIHVuZG9TcGFuLmFmdGVyKHNwYW4pO1xuICAgICAgICAgICAgdW5kb1NwYW4uYWZ0ZXIoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAnKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNNaW5lcnZhKSB1bmRvU3Bhbi5wYXJlbnRFbGVtZW50Py5iZWZvcmUoc3Bhbik7XG4gICAgICAgIGVsc2UgdW5kb1NwYW4ucGFyZW50RWxlbWVudD8uYWZ0ZXIoc3Bhbik7XG4gICAgfVxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7bUJBQUEsSUFBQUEsRUFBQTtFQ0dBLEdBQUcsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLEVBQUcsSUFBTSxDQUN0QyxJQUFNQyxFQUFTLEdBQUcsT0FBTyxJQUFJLGFBQWEsRUFFMUMsR0FBSSxHQUFHLE9BQU8sSUFBSSxVQUFVLElBQU0sV0FBYSxDQUFDQSxFQUFRLE9BRXhELEdBQUcsS0FBSyxPQUFP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QUksU0FBUyxFQUMzQ1QsR0FBV1MsRUFBWSxVQUFVLElBQUksWUFBWSxFQUNyREEsRUFBWSxZQUFjLHdCQUMxQkEsRUFBWSxpQkFBaUIsVUFBWUQsR0FBVSxDQUMzQ0EsRUFBTSxNQUFRLFNBQVNELEVBQWEsTUFBTSxDQUNsRCxDQUFDLEVBRUdQLEdBQWEsQ0FBQ0YsRUFBUU8sRUFBSyxRQUFRSSxDQUFXLEVBQzdDSixFQUFLLE9BQU9JLENBQVcsRUFFeEJYLEdBQVFPLEVBQUssT0FBTyxTQUFTLGVBQWUsR0FBRyxDQUFDLEVBRWhEUCxHQUNBSSxFQUFTLE1BQU1HLENBQUksRUFDbkJILEVBQVMsTUFBTSxTQUFTLGVBQWUsR0FBRyxDQUFDLEdBQ3BDRixFQUFXRSxFQUFTLGVBQWUsT0FBT0csQ0FBSSxFQUNwREgsRUFBUyxlQUFlLE1BQU1HLENBQUksQ0FDM0MsQ0FDSixDQUFDIiwKICAibmFtZXMiOiBbImFqYXhfdW5kb19kZWZhdWx0IiwgImlzRGlmZiIsICJhamF4X3VuZG9fZGVmYXVsdCIsICJpc01pbmVydmEiLCAiU1RBR0VTIiwgInVuZG9TcGFuIiwgInVuZG9MaW5rIiwgInVuZG9VcmwiLCAic3BhbiIsICJzdGFnZSIsICJhamF4VW5kb0xpbmsiLCAiZXZlbnQiLCAicmVhc29uSW5wdXQiLCAibG9hZGluZ1NwaW5uZXIiLCAidW5kb0lkIiwgInVuZG9BZnRlciIsICJyZXZpc2lvblVzZXIiLCAiZXJyb3JDb2RlIiwgImVycm9ySW5mbyJdCn0K