User:Eejit43/scripts/script-updater.js: Difference between revisions

Content deleted Content added
Syncing script from GitHub (via script)
Syncing script from GitHub (via script)
Line 2:
// Note: This script was compiled from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/script-updater.ts
 
"use strict";mw.loader.using(["mediawiki.util"],()=>{if(mw.config.get("wgUserName")!=="Eejit43"||mw.config.get("wgPageName")!=="User:Eejit43")return;const s="Eejit43",n="wikipedia-scripts";mw.util.addPortletLink(mw.config.get("skin")==="minerva"?"p-tb":"p-cactions","#","Sync user scripts from GitHub","sync-scripts").addEventListener("click",async y=>{y.preventDefault();const m=await fetch(`https://api.github.com/repos/${s}/${n}/commits`);if(!m.ok)return mw.notify(`Failed to fetch latest commit hash from GitHub: ${m.statusText} (${m.status})`,{type:"error",tag:"sync-scripts-notification"});const l=(await m.json())[0].sha,p=await fetch(`https://raw.githubusercontent.com/${s}/${n}/${l}/scripts.json`);if(!p.ok)return mw.notify(`Failed to fetch script data from GitHub: ${p.statusText} (${p.status})`,{type:"error",tag:"sync-scripts-notification"});const a=await p.json();mw.notify("Syncing scripts...",{autoHide:!1,tag:"sync-scripts-notification"}),await Promise.all(a.map(async t=>{const e=`User:Eejit43/scripts/${t.name}`,o=`User talk:Eejit43/scripts/${t.name}`,u=`${e}.js`,f=`${e}.css`,$=["{{User:Eejit43/script-documentation",t["use-instead"]?`| use-instead = [[User:Eejit43/scripts/${t["use-instead"]}|${t["use-instead"]}]]`:null,t["image-size"]?`| image-size = ${t["image-size"]}`:null,t["image-caption"]?`| image-caption = ${t["image-caption"]}`:null,t["other-authors"]?`| other-authors = ${t["other-authors"].map(i=>`[[User:${i}|${i}]]`).join(", ")}`:null,`| description-short = ${t["short-description"]}`,`| description = ${t.description}`,t.usage?`| usage = ${t.usage}`:null,t.changelog?`| changelog = ${Object.entries(t.changelog).map(([i,h])=>`* '''{{start date and age|${i}}}:''' ${h}`).join(`
`)}`:null,`| skin-support = {{User:Eejit43/skin-support|${Object.entries(t["skin-support"]).map(([i,h])=>`${i}=${h}`).join("|")}}}`,`| released = {{start date and age|${t.released}}}`,`| updated = {{start date and age|${t.updated}}}`,"}}"].filter(Boolean);let c=null;const g=await fetch(`https://raw.githubusercontent.com/${s}/${n}/${l}/dist/scripts/${t.name}.js`);if(g.ok)c=await g.text();else return mw.notify(`Failed to fetch "${t.name}.js" from GitHub: ${g.statusText} (${g.status})`,{type:"error",tag:"sync-scripts-notification"});let w=null;if(t.css){const i=await fetch(`https://raw.githubusercontent.com/${s}/${n}/${l}/dist/styles/${t.name}.css`);i.ok?w=await i.text():mw.notify(`Failed to fetch "${t.name}.css" from GitHub: ${i.statusText} (${i.status})`,{type:"error",tag:"sync-scripts-notification"})}t.personal||(await r(e,$.join(`
`),"Syncing script documentation from GitHub"),await r(o,"#REDIRECT [[User talk:Eejit43]]","Redirecting script documentation talk page to main user talk page")),c&&await r(u,`// <nowiki>
Line 15:
`),"Syncing script list from GitHub"),mw.notify(`Synced ${a.length} scripts from GitHub!`,{type:"success",tag:"sync-scripts-notification"});function d(t){return t.map(e=>`* [[User:Eejit43/scripts/${e.name}${e.personal?".js":""}|${e.name}]] - ${e["short-description"]||e.description}${e["use-instead"]?' (<span style="color: #bd2828">deprecated</span>)':""}`).join(`
`)}async function r(t,e,o){o+=" (via [[User:Eejit43/scripts/script-updater.js|script]])",await new mw.Api().edit(t,()=>({text:e,summary:o,watchlist:"watch"})).catch(async(u,f)=>{if(u==="nocreate-missing")await new mw.Api().create(t,{summary:o,watchlist:"watch"},e).catch(($,c)=>{mw.notify(`Error creating ${t}: ${c?.error.info??"Unknown error"} (${$})`,{type:"error"})});else{mw.notify(`Error editing or creating ${t}: ${f?.error.info??"Unknown error"} (${u})`,{type:"error"});return}})}})});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc2NyaXB0cy9zY3JpcHQtdXBkYXRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgTWVkaWFXaWtpRGF0YUVycm9yIH0gZnJvbSAnLi4vZ2xvYmFsLXR5cGVzJztcblxuaW50ZXJmYWNlIFNjcmlwdCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgICd1c2UtaW5zdGVhZCc/OiBzdHJpbmc7XG4gICAgJ2ltYWdlLXNpemUnPzogc3RyaW5nO1xuICAgICdpbWFnZS1jYXB0aW9uJz86IHN0cmluZztcbiAgICAnc2hvcnQtZGVzY3JpcHRpb24nOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICB1c2FnZT86IHN0cmluZztcbiAgICBjaGFuZ2Vsb2c/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICdvdGhlci1hdXRob3JzJz86IHN0cmluZ1tdO1xuICAgIGZvcms/OiB0cnVlO1xuICAgIHBlcnNvbmFsPzogdHJ1ZTtcbiAgICAnc2tpbi1zdXBwb3J0JzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gICAgcmVsZWFzZWQ6IHN0cmluZztcbiAgICB1cGRhdGVkOiBzdHJpbmc7XG4gICAgY3NzPzogdHJ1ZTtcbn1cblxubXcubG9hZGVyLnVzaW5nKFsnbWVkaWF3aWtpLnV0aWwnXSwgKCkgPT4ge1xuICAgIGlmIChtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgIT09ICdFZWppdDQzJyB8fCBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgIT09ICdVc2VyOkVlaml0NDMnKSByZXR1cm47XG5cbiAgICBjb25zdCByZXBvT3duZXIgPSAnRWVqaXQ0Myc7XG4gICAgY29uc3QgcmVwb05hbWUgPSAnd2lraXBlZGlhLXNjcmlwdHMnO1xuXG4gICAgY29uc3QgbGluayA9IG13LnV0aWwuYWRkUG9ydGxldExpbmsobXcuY29uZmlnLmdldCgnc2tpbicpID09PSAnbWluZXJ2YScgPyAncC10YicgOiAncC1jYWN0aW9ucycsICcjJywgJ1N5bmMgdXNlciBzY3JpcHRzIGZyb20gR2l0SHViJywgJ3N5bmMtc2NyaXB0cycpITtcblxuICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBjb25zdCBsYXRlc3RDb21taXRIYXNoUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke3JlcG9Pd25lcn0vJHtyZXBvTmFtZX0vY29tbWl0c2ApO1xuICAgICAgICBpZiAoIWxhdGVzdENvbW1pdEhhc2hSZXNwb25zZS5vaylcbiAgICAgICAgICAgIHJldHVybiBtdy5ub3RpZnkoYEZhaWxlZCB0byBmZXRjaCBsYXRlc3QgY29tbWl0IGhhc2ggZnJvbSBHaXRIdWI6ICR7bGF0ZXN0Q29tbWl0SGFzaFJlc3BvbnNlLnN0YXR1c1RleHR9ICgke2xhdGVzdENvbW1pdEhhc2hSZXNwb25zZS5zdGF0dXN9KWAsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHRhZzogJ3N5bmMtc2NyaXB0cy1ub3RpZmljYXRpb24nLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbGF0ZXN0Q29tbWl0SGFzaCA9ICgoYXdhaXQgbGF0ZXN0Q29tbWl0SGFzaFJlc3BvbnNlLmpzb24oKSkgYXMgeyBzaGE6IHN0cmluZyB9W10pWzBdLnNoYTtcblxuICAgICAgICBjb25zdCBzY3JpcHREYXRhUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tLyR7cmVwb093bmVyfS8ke3JlcG9OYW1lfS8ke2xhdGVzdENvbW1pdEhhc2h9L3NjcmlwdHMuanNvbmApO1xuICAgICAgICBpZiAoIXNjcmlwdERhdGFSZXNwb25zZS5vaylcbiAgICAgICAgICAgIHJldHVybiBtdy5ub3RpZnkoYEZhaWxlZCB0byBmZXRjaCBzY3JpcHQgZGF0YSBmcm9tIEdpdEh1YjogJHtzY3JpcHREYXRhUmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7c2NyaXB0RGF0YVJlc3BvbnNlLnN0YXR1c30pYCwgeyB0eXBlOiAnZXJyb3InLCB0YWc6ICdzeW5jLXNjcmlwdHMtbm90aWZpY2F0aW9uJyB9KTtcblxuICAgICAgICBjb25zdCBzY3JpcHREYXRhID0gKGF3YWl0IHNjcmlwdERhdGFSZXNwb25zZS5qc29uKCkpIGFzIFNjcmlwdFtdO1xuXG4gICAgICAgIG13Lm5vdGlmeSgnU3luY2luZyBzY3JpcHRzLi4uJywgeyBhdXRvSGlkZTogZmFsc2UsIHRhZzogJ3N5bmMtc2NyaXB0cy1ub3RpZmljYXRpb24nIH0pO1xuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgc2NyaXB0RGF0YS5tYXAoYXN5bmMgKHNjcmlwdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnBhZ2VOYW1lID0gYFVzZXI6RWVqaXQ0My9zY3JpcHRzLyR7c2NyaXB0Lm5hbWV9YDtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJwYWdlVGFsa05hbWUgPSBgVXNlciB0YWxrOkVlaml0NDMvc2NyaXB0cy8ke3NjcmlwdC5uYW1lfWA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0TmFtZSA9IGAke3N1YnBhZ2VOYW1lfS5qc2A7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGVOYW1lID0gYCR7c3VicGFnZU5hbWV9LmNzc2A7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmdWxsU3VicGFnZUluZm8gPSBbXG4gICAgICAgICAgICAgICAgICAgICd7e1VzZXI6RWVqaXQ0My9zY3JpcHQtZG9jdW1lbnRhdGlvbicsIC8vXG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdFsndXNlLWluc3RlYWQnXSA/IGB8IHVzZS1pbnN0ZWFkICAgICAgID0gW1tVc2VyOkVlaml0NDMvc2NyaXB0cy8ke3NjcmlwdFsndXNlLWluc3RlYWQnXX18JHtzY3JpcHRbJ3VzZS1pbnN0ZWFkJ119XV1gIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0WydpbWFnZS1zaXplJ10gPyBgfCBpbWFnZS1zaXplICAgICAgICA9ICR7c2NyaXB0WydpbWFnZS1zaXplJ119YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdFsnaW1hZ2UtY2FwdGlvbiddID8gYHwgaW1hZ2UtY2FwdGlvbiAgICAgPSAke3NjcmlwdFsnaW1hZ2UtY2FwdGlvbiddfWAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBzY3JpcHRbJ290aGVyLWF1dGhvcnMnXSA/IGB8IG90aGVyLWF1dGhvcnMgICAgID0gJHtzY3JpcHRbJ290aGVyLWF1dGhvcnMnXS5tYXAoKGF1dGhvcikgPT4gYFtbVXNlcjoke2F1dGhvcn18JHthdXRob3J9XV1gKS5qb2luKCcsICcpfWAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBgfCBkZXNjcmlwdGlvbi1zaG9ydCA9ICR7c2NyaXB0WydzaG9ydC1kZXNjcmlwdGlvbiddfWAsXG4gICAgICAgICAgICAgICAgICAgIGB8IGRlc2NyaXB0aW9uICAgICAgID0gJHtzY3JpcHQuZGVzY3JpcHRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0LnVzYWdlID8gYHwgdXNhZ2UgICAgICAgICAgICAgPSAke3NjcmlwdC51c2FnZX1gIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0LmNoYW5nZWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBgfCBjaGFuZ2Vsb2cgICAgICAgICA9ICR7T2JqZWN0LmVudHJpZXMoc2NyaXB0LmNoYW5nZWxvZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKFtkYXRlLCBkZXNjcmlwdGlvbl0pID0+IGAnJyd7e3N0YXJ0IGRhdGUgYW5kIGFnZXwke2RhdGV9fX06JycnICR7ZGVzY3JpcHRpb259YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCdcXG4nKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGB8IHNraW4tc3VwcG9ydCAgICAgID0ge3tVc2VyOkVlaml0NDMvc2tpbi1zdXBwb3J0fCR7T2JqZWN0LmVudHJpZXMoc2NyaXB0Wydza2luLXN1cHBvcnQnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKFtza2luLCBzdGF0dXNdKSA9PiBgJHtza2lufT0ke3N0YXR1c31gKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ3wnKX19fWAsXG4gICAgICAgICAgICAgICAgICAgIGB8IHJlbGVhc2VkICAgICAgICAgID0ge3tzdGFydCBkYXRlIGFuZCBhZ2V8JHtzY3JpcHQucmVsZWFzZWR9fX1gLFxuICAgICAgICAgICAgICAgICAgICBgfCB1cGRhdGVkICAgICAgICAgICA9IHt7c3RhcnQgZGF0ZSBhbmQgYWdlfCR7c2NyaXB0LnVwZGF0ZWR9fX1gLFxuICAgICAgICAgICAgICAgICAgICAnfX0nLFxuICAgICAgICAgICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNjcmlwdENvbnRlbnQgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0Q29udGVudFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS8ke3JlcG9Pd25lcn0vJHtyZXBvTmFtZX0vJHtsYXRlc3RDb21taXRIYXNofS9kaXN0L3NjcmlwdHMvJHtzY3JpcHQubmFtZX0uanNgKTtcbiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0Q29udGVudFJlc3BvbnNlLm9rKSBzY3JpcHRDb250ZW50ID0gYXdhaXQgc2NyaXB0Q29udGVudFJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtdy5ub3RpZnkoYEZhaWxlZCB0byBmZXRjaCBcIiR7c2NyaXB0Lm5hbWV9LmpzXCIgZnJvbSBHaXRIdWI6ICR7c2NyaXB0Q29udGVudFJlc3BvbnNlLnN0YXR1c1RleHR9ICgke3NjcmlwdENvbnRlbnRSZXNwb25zZS5zdGF0dXN9KWAsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWc6ICdzeW5jLXNjcmlwdHMtbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgc3R5bGVDb250ZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0LmNzcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHlsZUNvbnRlbnRSZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vJHtyZXBvT3duZXJ9LyR7cmVwb05hbWV9LyR7bGF0ZXN0Q29tbWl0SGFzaH0vZGlzdC9zdHlsZXMvJHtzY3JpcHQubmFtZX0uY3NzYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlQ29udGVudFJlc3BvbnNlLm9rKSBzdHlsZUNvbnRlbnQgPSBhd2FpdCBzdHlsZUNvbnRlbnRSZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG13Lm5vdGlmeShgRmFpbGVkIHRvIGZldGNoIFwiJHtzY3JpcHQubmFtZX0uY3NzXCIgZnJvbSBHaXRIdWI6ICR7c3R5bGVDb250ZW50UmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7c3R5bGVDb250ZW50UmVzcG9uc2Uuc3RhdHVzfSlgLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6ICdzeW5jLXNjcmlwdHMtbm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghc2NyaXB0LnBlcnNvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVkaXRPckNyZWF0ZShzdWJwYWdlTmFtZSwgZnVsbFN1YnBhZ2VJbmZvLmpvaW4oJ1xcbicpLCAnU3luY2luZyBzY3JpcHQgZG9jdW1lbnRhdGlvbiBmcm9tIEdpdEh1YicpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlZGl0T3JDcmVhdGUoc3VicGFnZVRhbGtOYW1lLCAnI1JFRElSRUNUIFtbVXNlciB0YWxrOkVlaml0NDNdXScsICdSZWRpcmVjdGluZyBzY3JpcHQgZG9jdW1lbnRhdGlvbiB0YWxrIHBhZ2UgdG8gbWFpbiB1c2VyIHRhbGsgcGFnZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzY3JpcHRDb250ZW50KVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlZGl0T3JDcmVhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgYC8vIDxub3dpa2kIGAqICcnJ3t7c3RhcnQgZGF0ZSBhbmQgYWdlfCR7ZGF0ZX19fTonJycgJHtkZXNjcmlwdGlvbn1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgYHwgc2tpbi1zdXBwb3J0ICAgICAgPSB7e1VzZXI6RWVqaXQ0My9za2luLXN1cHBvcnR8JHtPYmplY3QuZW50cmllcyhzY3JpcHRbJ3NraW4tc3VwcG9ydCddKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoW3NraW4sIHN0YXR1c10pID0+XFxuLy8gTm90ZTogVGhpcyBzY3JpcHQgd2FzIGNvbXBpbGVkIGZyb20gVHlwZVNjcmlwdC4gRm9yIGEgbW9yZSByZWFkYWJsZSB2ZXJzaW9uLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tLyR7cmVwb093bmVyfS8ke3JlcG9OYW1lfS9ibG9iL21haW4vc2NyaXB0cy8ke3NjcmlwdC5uYW1lfS50c1xcblxcbiR7c2NyaXB0Q29udGVudH1cXG4vLyA8L25vd2lraT5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1N5bmNpbmcgc2NyaXB0IGZyb20gR2l0SHViJyxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChzY3JpcHQuY3NzICYmIHN0eWxlQ29udGVudClcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZWRpdE9yQ3JlYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgYC8qIDxub3dpa2kIGAke3NraW59PSR7c3RhdHVzfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignfCcpfX19YCxcbiAgICAgICAgICAgICAgICAgICAgYHwgcmVsZWFzZWQgICAgICAgICAgPSB7e3N0YXJ0IGRhdGUgYW5kIGFnZXwke3NjcmlwdC5yZWxlYXNlZH19fWAsXG4gICAgICAgICAgICAgICAgICAgIGB8IHVwZGF0ZWQgICAgICAgICAgID0ge3tzdGFydCBkYXRlIGFuZCBhZ2V8JHtzY3JpcHQudXBkYXRlZH19fWAsXG4gICAgICAgICAgICAgICAgICAgICd9fScsXG4gICAgICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgICAgICAgICAgICBsZXQgc2NyaXB0Q29udGVudCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHRDb250ZW50UmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tLyR7cmVwb093bmVyfS8ke3JlcG9OYW1lfS8ke2xhdGVzdENvbW1pdEhhc2h9L2Rpc3Qvc2NyaXB0cy8ke3NjcmlwdC5uYW1lfS5qc2ApO1xuICAgICAgICAgICAgICAgIGlmIChzY3JpcHRDb250ZW50UmVzcG9uc2Uub2spIHNjcmlwdENvbnRlbnQgPSBhd2FpdCBzY3JpcHRDb250ZW50UmVzcG9uc2UudGV4dCgpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG13Lm5vdGlmeShgRmFpbGVkIHRvIGZldGNoIFwiJHtzY3JpcHQubmFtZX0uanNcIiBmcm9tIEdpdEh1YjogJHtzY3JpcHRDb250ZW50UmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7c2NyaXB0Q29udGVudFJlc3BvbnNlLnN0YXR1c30pYCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogJ3N5bmMtc2NyaXB0cy1ub3RpZmljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxldCBzdHlsZUNvbnRlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzY3JpcHQuY3NzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlQ29udGVudFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS8ke3JlcG9Pd25lcn0vJHtyZXBvTmFtZX0vJHtsYXRlc3RDb21taXRIYXNofS9kaXN0L3N0eWxlcy8ke3NjcmlwdC5uYW1lfS5jc3NgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGVDb250ZW50UmVzcG9uc2Uub2spIHN0eWxlQ29udGVudCA9IGF3YWl0IHN0eWxlQ29udGVudFJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KGBGYWlsZWQgdG8gZmV0Y2ggXCIke3NjcmlwdC5uYW1lfS5jc3NcIiBmcm9tIEdpdEh1YjogJHtzdHlsZUNvbnRlbnRSZXNwb25zZS5zdGF0dXNUZXh0fSAoJHtzdHlsZUNvbnRlbnRSZXNwb25zZS5zdGF0dXN9KWAsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogJ3N5bmMtc2NyaXB0cy1ub3RpZmljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFzY3JpcHQucGVyc29uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZWRpdE9yQ3JlYXRlKHN1YnBhZ2VOYW1lLCBmdWxsU3VicGFnZUluZm8uam9pbignXFxuJyksICdTeW5jaW5nIHNjcmlwdCBkb2N1bWVudGF0aW9uIGZyb20gR2l0SHViJyk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVkaXRPckNyZWF0ZShzdWJwYWdlVGFsa05hbWUsICcjUkVESVJFQ1QgW1tVc2VyIHRhbGs6RWVqaXQ0M11dJywgJ1JlZGlyZWN0aW5nIHNjcmlwdCBkb2N1bWVudGF0aW9uIHRhbGsgcGFnZSB0byBtYWluIHVzZXIgdGFsayBwYWdlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHNjcmlwdENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVkaXRPckNyZWF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBgLy8gPG5vd2lraT5cXG4vLyBOb3RlOiBUaGlzIHNjcmlwdCB3YXMgY29tcGlsZWQgZnJvbSBUeXBlU2NyaXB0LiBGb3IgYSBtb3JlIHJlYWRhYmxlIHZlcnNpb24sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvT3duZXJ9LyR7cmVwb05hbWV9L2Jsb2IvbWFpbi9zY3JpcHRzLyR7c2NyaXB0Lm5hbWV9LnRzXFxuXFxuJHtzY3JpcHRDb250ZW50fVxcbi8vIDwvbm93aWtpPmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAnU3luY2luZyBzY3JpcHQgZnJvbSBHaXRIdWInLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNjcmlwdC5jc3MgJiYgc3R5bGVDb250ZW50KVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBlZGl0T3JDcmVhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBgLyogPG5vd2lraT4gKi9cXG4vKiBOb3RlOiBUaGlzIHNjcmlwdCB3YXMgY29tcGlsZWQgZnJvbSBtb2Rlcm4gQ1NTLiBGb3IgYSBtb3JlIHJlYWRhYmxlIHZlcnNpb24sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvT3duZXJ9LyR7cmVwb05hbWV9L2Jsb2IvbWFpbi9zdHlsZXMvJHtzY3JpcHQubmFtZX0uY3NzICovXFxuXFxuJHtzdHlsZUNvbnRlbnR9XFxuLyogPC9ub3dpa2k+ICovXFxuLyogTm90ZTogVGhpcyBzY3JpcHQgd2FzIGNvbXBpbGVkIGZyb20gbW9kZXJuIENTUy4gRm9yIGEgbW9yZSByZWFkYWJsZSB2ZXJzaW9uLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tLyR7cmVwb093bmVyfS8ke3JlcG9OYW1lfS9ibG9iL21haW4vc3R5bGVzLyR7c2NyaXB0Lm5hbWV9LmNzcyAqL1xcblxcbiR7c3R5bGVDb250ZW50fVxcbi8qIDwvbm93aWtpPiAqL2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAnU3luY2luZyBzdHlsZXMgZnJvbSBHaXRIdWInLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgZWRpdE9yQ3JlYXRlKFxuICAgICAgICAgICAgJ1VzZXI6RWVqaXQ0My9zY3JpcHRzLWluZm8nLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG1hcFNjcmlwdHMoc2NyaXB0RGF0YS5maWx0ZXIoKHNjcmlwdCkgPT4gIXNjcmlwdC5wZXJzb25hbCAmJiAhc2NyaXB0LmZvcmspKSwgLy9cbiAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAnPT09IEZvcmtzID09PScsXG4gICAgICAgICAgICAgICAgbWFwU2NyaXB0cyhzY3JpcHREYXRhLmZpbHRlcigoc2NyaXB0KSA9PiBzY3JpcHQuZm9yaykpLFxuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICc9PT0gUGVyc29uYWwgc2NyaXB0cyA9PT0nLFxuICAgICAgICAgICAgICAgIG1hcFNjcmlwdHMoc2NyaXB0RGF0YS5maWx0ZXIoKHNjcmlwdCkgPT4gc2NyaXB0LnBlcnNvbmFsKSksXG4gICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgJ1N5bmNpbmcgc2NyaXB0IGxpc3QgZnJvbSBHaXRIdWInLFxuICAgICAgICApO1xuXG4gICAgICAgIG13Lm5vdGlmeShgU3luY2VkICR7c2NyaXB0RGF0YS5sZW5ndGh9IHNjcmlwdHMgZnJvbSBHaXRIdWIhYCwgeyB0eXBlOiAnc3VjY2VzcycsIHRhZzogJ3N5bmMtc2NyaXB0cy1ub3RpZmljYXRpb24nIH0pO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYXBzIHNjcmlwdHMgdG8gYSBidWxsZXRlZCBsaXN0LlxuICAgICAgICAgKiBAcGFyYW0gc2NyaXB0cyBUaGUgc2NyaXB0cyB0byBtYXAuXG4gICAgICAgICAqIEByZXR1cm5zIFRoZSBtYXBwZWQgc2NyaXB0cy5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1hcFNjcmlwdHMoc2NyaXB0czogU2NyaXB0W10pIHtcbiAgICAgICAgICAgIHJldHVybiBzY3JpcHRzXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHNjcmlwdCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGAqIFtbVXNlcjpFZWppdDQzL3NjcmlwdHMvJHtzY3JpcHQubmFtZX0ke3NjcmlwdC5wZXJzb25hbCA/ICcuanMnIDogJyd9fCR7c2NyaXB0Lm5hbWV9XV0gLSAke3NjcmlwdFsnc2hvcnQtZGVzY3JpcHRpb24nXSB8fCBzY3JpcHQuZGVzY3JpcHRpb259JHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRbJ3VzZS1pbnN0ZWFkJ10gPyAnICg8c3BhbiBzdHlsZT1cImNvbG9yOiAjYmQyODI4XCIICovYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdTeW5jaW5nIHN0eWxlcyBmcm9tIEdpdEh1YicsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCBlZGl0T3JDcmVhdGUoXG4gICAgICAgICAgICAnVXNlcjpFZWppdDQzL3NjcmlwdHMtaW5mbycsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgbWFwU2NyaXB0cyhzY3JpcHREYXRhLmZpbHRlcigoc2NyaXB0KSA9PiAhc2NyaXB0LnBlcnNvbmFsICYmICFzY3JpcHQuZm9yaykpLCAvL1xuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICc9PT0gRm9ya3MgPT09JyxcbiAgICAgICAgICAgICAgICBtYXBTY3JpcHRzKHNjcmlwdERhdGEuZmlsdGVyKChzY3JpcHQpID0+ZGVwcmVjYXRlZDwvc3Bhbj4pJyA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEVkaXRzIGEgcGFnZSwgb3IgY3JlYXRlcyBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgICAgKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIG9mIHRoZSBwYWdlIHRvIGVkaXQuXG4gICAgICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBwYWdlIGNvbnRlbnQgdG8gc2V0LlxuICAgICAgICAgKiBAcGFyYW0gc3VtbWFyeSBUaGUgZWRpdCBzdW1tYXJ5ICh3aWxsIGFwcGVuZCBzY3JpcHQgbm90aWNlKS5cbiAgICAgICAgICovXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGVkaXRPckNyZWF0ZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIHN1bW1hcnk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgc3VtbWFyeSArPSAnICh2aWEgW1tVc2VyOkVlaml0NDMvc2NyaXB0cy9zY3JpcHQtdXBkYXRlci5qc3xzY3JpcHRdXSknO1xuICAgICAgICAgICAgYXdhaXQgbmV3IG13LkFwaSgpXG4gICAgICAgICAgICAgICAgLmVkaXQodGl0bGUsICgpID0IHNjcmlwdC5mb3JrKSksXG4gICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgJz09PSBQZXJzb25hbCBzY3JpcHRzID09PScsXG4gICAgICAgICAgICAgICAgbWFwU2NyaXB0cyhzY3JpcHREYXRhLmZpbHRlcigoc2NyaXB0KSA9PiBzY3JpcHQucGVyc29uYWwpKSxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAnU3luY2luZyBzY3JpcHQgbGlzdCBmcm9tIEdpdEh1YicsXG4gICAgICAgICk7XG5cbiAgICAgICAgbXcubm90aWZ5KGBTeW5jZWQgJHtzY3JpcHREYXRhLmxlbmd0aH0gc2NyaXB0cyBmcm9tIEdpdEh1YiFgLCB7IHR5cGU6ICdzdWNjZXNzJywgdGFnOiAnc3luYy1zY3JpcHRzLW5vdGlmaWNhdGlvbicgfSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1hcHMgc2NyaXB0cyB0byBhIGJ1bGxldGVkIGxpc3QuXG4gICAgICAgICAqIEBwYXJhbSBzY3JpcHRzIFRoZSBzY3JpcHRzIHRvIG1hcC5cbiAgICAgICAgICogQHJldHVybnMgVGhlIG1hcHBlZCBzY3JpcHRzLlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gbWFwU2NyaXB0cyhzY3JpcHRzOiBTY3JpcHRbXSkge1xuICAgICAgICAgICAgcmV0dXJuIHNjcmlwdHNcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoc2NyaXB0KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYCogW1tVc2VyOkVlaml0NDMvc2NyaXB0cy8ke3NjcmlwdC5uYW1lfSR7c2NyaXB0LnBlcnNvbmFsID8gJy5qcycgOiAnJ318JHtzY3JpcHQubmFtZX1dXSAtICR7c2NyaXB0WydzaG9ydC1kZXNjcmlwdGlvbiddIHx8IHNjcmlwdC5kZXNjcmlwdGlvbn0ke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdFsndXNlLWluc3RlYWQnXSA/ICcgKDxzcGFuIHN0eWxlPVwiY29sb3I6ICNiZDI4MjhcIj5kZXByZWNhdGVkPC9zcGFuPiknIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogRWRpdHMgYSBwYWdlLCBvciBjcmVhdGVzIGl0IGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAgICAgICAqIEBwYXJhbSB0aXRsZSBUaGUgdGl0bGUgb2YgdGhlIHBhZ2UgdG8gZWRpdC5cbiAgICAgICAgICogQHBhcmFtIHRleHQgVGhlIHBhZ2UgY29udGVudCB0byBzZXQuXG4gICAgICAgICAqIEBwYXJhbSBzdW1tYXJ5IFRoZSBlZGl0IHN1bW1hcnkgKHdpbGwgYXBwZW5kIHNjcmlwdCBub3RpY2UpLlxuICAgICAgICAgKi9cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gZWRpdE9yQ3JlYXRlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgc3VtbWFyeTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgICBzdW1tYXJ5ICs9ICcgKHZpYSBbW1VzZXI6RWVqaXQ0My9zY3JpcHRzL3NjcmlwdC11cGRhdGVyLmpzfHNjcmlwdF1dKSc7XG4gICAgICAgICAgICBhd2FpdCBuZXcgbXcuQXBpKClcbiAgICAgICAgICAgICAgICAuZWRpdCh0aXRsZSwgKCkgPT4gKHsgdGV4dCwgc3VtbWFyeSwgd2F0Y2hsaXN0OiAnd2F0Y2gnIH0pKVxuICAgICAgICAgICAgICAgIC5jYXRjaChhc3luYyAoZXJyb3JDb2RlOiBzdHJpbmcsIGVycm9ySW5mbzogTWVkaWFXaWtpRGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvckNvZGUgPT09ICdub2NyZWF0ZS1taXNzaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBtdy5BcGkoKS5jcmVhdGUodGl0bGUsIHsgc3VtbWFyeSwgd2F0Y2hsaXN0OiAnd2F0Y2gnIH0sIHRleHQpLmNhdGNoKChlcnJvckNvZGU6IHN0cmluZywgZXJyb3JJbmZvOiBNZWRpYVdpa2lEYXRhRXJyb3IpID0+ICh7IHRleHQsIHN1bW1hcnksIHdhdGNobGlzdDogJ3dhdGNoJyB9KSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goYXN5bmMgKGVycm9yQ29kZTogc3RyaW5nLCBlcnJvckluZm86IE1lZGlhV2lraURhdGFFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDb2RlID09PSAnbm9jcmVhdGUtbWlzc2luZycpXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBuZXcgbXcuQXBpKCkuY3JlYXRlKHRpdGxlLCB7IHN1bW1hcnksIHdhdGNobGlzdDogJ3dhdGNoJyB9LCB0ZXh0KS5jYXRjaCgoZXJyb3JDb2RlOiBzdHJpbmcsIGVycm9ySW5mbzogTWVkaWFXaWtpRGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KGBFcnJvciBjcmVhdGluZyAke3RpdGxlfTogJHtlcnJvckluZm8IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoYEVycm9yIGNyZWF0aW5nICR7dGl0bGV9OiAke2Vycm9ySW5mbz8uZXJyb3IuaW5mbyA/LmVycm9yLmluZm8gPz8gJ1Vua25vd24gZXJyb3InfSAoJHtlcnJvckNvZGV9KWAsIHsgdHlwZTogJ2Vycm9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoYEVycm9yIGVkaXRpbmcgb3IgY3JlYXRpbmcgJHt0aXRsZX06ICR7ZXJyb3JJbmZvPy5lcnJvci5pbmZvID8PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCwgeyB0eXBlOiAnZXJyb3InIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG13Lm5vdGlmeShgRXJyb3IgZWRpdGluZyBvciBjcmVhdGluZyAke3RpdGxlfTogJHtlcnJvckluZm8/ICdVbmtub3duIGVycm9yJ30gKCR7ZXJyb3JDb2RlfSlgLCB7IHR5cGU6ICdlcnJvcicgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiYUFvQkEsR0FBRyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRyxJQUFNLENBQ3RDLEdBQUksR0FBRyxPQUFPLElBQUksWUFBWSxJQUFNLFdBQWEsR0FBRyxPQUFPLElBQUksWUFBWSxJQU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xVQUFVRCxFQUFXLE1BQU0sd0JBQXlCLENBQUUsS0FBTSxVQUFXLElBQUssMkJBQTRCLENBQUMsRUFPbkgsU0FBU2lCLEVBQVdDLEVBQW1CLENBQ25DLE9BQU9BLEVBQ0YsSUFDSWpCLEdBQ0csNEJBQTRCQSxFQUFPLElBQUksR0FBR0EsRUFBTyxTQUFXLE1BQVEsRUFBRSxJQUFJQSxFQUFPLElBQUksUUFBUUEsRUFBTyxtQkFBbUIsR0FBS0EsRUFBTyxXQUFXLEdBQzFJQSxFQUFPLGFBQWEsRUFBSSxvREFBc0QsRUFDbEYsRUFDUixFQUNDLEtBQUs7QUFBQSxDQUFJLENBQ2xCLENBUUEsZUFBZWUsRUFBYUcsRUFBZUMsRUFBY0MsRUFBZ0MsQ0FDckZBLEdBQVcsMkRBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUNaLEtBQUtGLEVBQU8sS0FBTyxDQUFFLEtBQUFDLEVBQU0sUUFBQUMsRUFBUyxVQUFXLE9BQVEsRUFBRSxFQUN6RCxNQUFNLE1BQU9DLEVBQW1CQyxJQUFrQyxDQUMvRCxHQUFJRCxJQUFjLG1CQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxPQUFPSCxFQUFPLENBQUUsUUFBQUUsRUFBUyxVQUFXLE9BQVEsRUFBR0QsQ0FBSSxFQUFFLE1BQU0sQ0FBQ0UsRUFBbUJDLElBQWtDLENBQ2hJLEdBQUcsT0FBTyxrQkFBa0JKLENBQUssS0FBS0ksR0FBVyxNQUFNLE1BQVEsZUFBZSxLQUFLRCxDQUFTLElBQUssQ0FBRSxLQUFNLE9BQVEsQ0FBQyxDQUV0SCxDQUFDLE1BQ0EsQ0FDRCxHQUFHLE9BQU8sNkJBQTZCSCxDQUFLLEtBQUtJLEdBQVcsTUFBTSxNQUFRLGVBQWUsS0FBS0QsQ0FBUyxJQUFLLENBQUUsS0FBTSxPQUFRLENBQUMsRUFDN0gsTUFDSixDQUNKLENBQUMsQ0FDVCxDQUNKLENBQUMsQ0FDTCxDQUFDIiwKICAibmFtZXMiOiBbInJlcG9Pd25lciIsICJyZXBvTmFtZSIsICJldmVudCIsICJsYXRlc3RDb21taXRIYXNoUmVzcG9uc2UiLCAibGF0ZXN0Q29tbWl0SGFzaCIsICJzY3JpcHREYXRhUmVzcG9uc2UiLCAic2NyaXB0RGF0YSIsICJzY3JpcHQiLCAic3VicGFnZU5hbWUiLCAic3VicGFnZVRhbGtOYW1lIiwgInNjcmlwdE5hbWUiLCAic3R5bGVOYW1lIiwgImZ1bGxTdWJwYWdlSW5mbyIsICJhdXRob3IiLCAiZGF0ZSIsICJkZXNjcmlwdGlvbiIsICJza2luIiwgInN0YXR1cyIsICJzY3JpcHRDb250ZW50IiwgInNjcmlwdENvbnRlbnRSZXNwb25zZSIsICJzdHlsZUNvbnRlbnQiLCAic3R5bGVDb250ZW50UmVzcG9uc2UiLCAiZWRpdE9yQ3JlYXRlIiwgIm1hcFNjcmlwdHMiLCAic2NyaXB0cyIsICJ0aXRsZSIsICJ0ZXh0IiwgInN1bW1hcnkiLCAiZXJyb3JDb2RlIiwgImVycm9ySW5mbyJdCn0KLmVycm9yLmluZm8gPz8gJ1Vua25vd24gZXJyb3InfSAoJHtlcnJvckNvZGV9KWAsIHsgdHlwZTogJ2Vycm9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICJhQW9CQSxHQUFHLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFHLElBQU0sQ0FDdEMsR0FBSSxHQUFHLE9BQU8sSUFBSSxZQUFZLElBQU0sV0FBYSxHQUFHLE9BQU8sSUFBSSxZQUFZLElBQU0sZUFBZ0IsT0FFakcsTUFBTUEsRUFBWSxVQUNaQyxFQUFXLG9CQUVKLEdBQUcsS0FBSyxlQUFlLEdBQUcsT0FBTyxJQUFJLE1BQU0sSUFBTSxVQUFZLE9BQVMsYUFBYyxJQUFLLGdDQUFpQyxjQUFjLEVBRWhKLGlCQUFpQixRQUFTLE1BQU9DLEdBQVUsQ0FDNUNBLEVBQU0sZUFBZSxFQUVyQixNQUFNQyxFQUEyQixNQUFNLE1BQU0sZ0NBQWdDSCxDQUFTLElBQUlDLENBQVEsVUFBVSxFQUM1RyxHQUFJLENBQUNFLEVBQXlCLEdBQzFCLE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MsS0FBSztBQUFBLENBQUksQ0FDbEIsQ0FRQSxlQUFlZSxFQUFhRyxFQUFlQyxFQUFjQyxFQUFnQyxDQUNyRkEsR0FBVywyREFDWCxNQUFNLElBQUksR0FBRyxJQUFJLEVBQ1osS0FBS0YsRUFBTyxLQUFPLENBQUUsS0FBQUMsRUFBTSxRQUFBQyxFQUFTLFVBQVcsT0FBUSxFQUFFLEVBQ3pELE1BQU0sTUFBT0MsRUFBbUJDLElBQWtDLENBQy9ELEdBQUlELElBQWMsbUJBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLE9BQU9ILEVBQU8sQ0FBRSxRQUFBRSxFQUFTLFVBQVcsT0FBUSxFQUFHRCxDQUFJLEVBQUUsTUFBTSxDQUFDRSxFQUFtQkMsSUFBa0MsQ0FDaEksR0FBRyxPQUFPLGtCQUFrQkosQ0FBSyxLQUFLSSxHQUFXLE1BQU0sTUFBUSxlQUFlLEtBQUtELENBQVMsSUFBSyxDQUFFLEtBQU0sT0FBUSxDQUFDLENBRXRILENBQUMsTUFDQSxDQUNELEdBQUcsT0FBTyw2QkFBNkJILENBQUssS0FBS0ksR0FBVyxNQUFNLE1BQVEsZUFBZSxLQUFLRCxDQUFTLElBQUssQ0FBRSxLQUFNLE9BQVEsQ0FBQyxFQUM3SCxNQUNKLENBQ0osQ0FBQyxDQUNULENBQ0osQ0FBQyxDQUNMLENBQUMiLAogICJuYW1lcyI6IFsicmVwb093bmVyIiwgInJlcG9OYW1lIiwgImV2ZW50IiwgImxhdGVzdENvbW1pdEhhc2hSZXNwb25zZSIsICJsYXRlc3RDb21taXRIYXNoIiwgInNjcmlwdERhdGFSZXNwb25zZSIsICJzY3JpcHREYXRhIiwgInNjcmlwdCIsICJzdWJwYWdlTmFtZSIsICJzdWJwYWdlVGFsa05hbWUiLCAic2NyaXB0TmFtZSIsICJzdHlsZU5hbWUiLCAiZnVsbFN1YnBhZ2VJbmZvIiwgImF1dGhvciIsICJkYXRlIiwgImRlc2NyaXB0aW9uIiwgInNraW4iLCAic3RhdHVzIiwgInNjcmlwdENvbnRlbnQiLCAic2NyaXB0Q29udGVudFJlc3BvbnNlIiwgInN0eWxlQ29udGVudCIsICJzdHlsZUNvbnRlbnRSZXNwb25zZSIsICJlZGl0T3JDcmVhdGUiLCAibWFwU2NyaXB0cyIsICJzY3JpcHRzIiwgInRpdGxlIiwgInRleHQiLCAic3VtbWFyeSIsICJlcnJvckNvZGUiLCAiZXJyb3JJbmZvIl0KfQo=
 
// </nowiki>