javascript:(async()=>{function y(e,t){return e.reduce((a,n,i)=>a+n+(t[i]??""),"").replace(/>%5Cs+<").replace(/%5Cs+/g," ").trim()}var h=(e,...t)=>y(e,t),b=(e,...t)=>y(e,t);var S="__NICE_PROXY_SERVER_URL__",E="__NICE_PROXY_USER__",I="__NICE_PROXY_TOKEN__";(async function(){"use strict";let e="https://uber.nicecloudsvc.com/wfm/webstation/my-schedule";if(!location.href.startsWith(e)){location.href=e;return}let t=document.querySelector("iframe");if(!t){alert("No schedule iframe found. Make sure you're on the NICE schedule page.");return}let a=C(t),n=a?x(a):new Date,i=await $(n);if(!i)return;let{events:s,coveredEnd:r}=await F(t,i);console.log(`[NICE Upload] Total events: ${s.length}`);let{wfhDaysSet:c}=N(s),{wfoDays:o,wfhDays:l}=k(s,c,{start:i.start,end:r}),d=Object.keys(o).length,u=Object.keys(l).length;console.log(`[NICE Upload] Redirecting with ${d} WFO days, ${u} WFH days`);let g={user:E,token:I,wfo:o,wfh:l};window.location.href=`${S}/upload%23${encodeURIComponent(JSON.stringify(g))}`})();function k(e,t,a){let n=o=>`${o.getFullYear()}-${o.getMonth()}-${o.getDate()}`,i=o=>{let l=o.getFullYear(),d=String(o.getMonth()+1).padStart(2,"0"),u=String(o.getDate()).padStart(2,"0");return`${l}-${d}-${u}`},s={},r={};for(let o=new Date(a.start.getFullYear(),a.start.getMonth(),a.start.getDate());o<=a.end;o.setDate(o.getDate()+1)){let l=i(o);s[l]=[],r[l]=[]}let c={};for(let o of e){let l=n(o.start),d=i(o.start),u=c[d]??0;c[d]=u+1;let g={key:`${d}%23${u}`,summary:o.summary,start:o.start.toISOString(),end:o.end.toISOString(),status:"CONFIRMED"};t.has(l)?r[d].push(g):s[d].push(g)}return{wfoDays:s,wfhDays:r}}function N(e){let t=r=>`${r.getFullYear()}-${r.getMonth()}-${r.getDate()}`,a=new Map;for(let r of e){let c=t(r.start);a.has(c)||a.set(c,[]),a.get(c).push(r)}let n=new Set;for(let[r,c]of a)c.some(o=>o.summary.trimEnd().endsWith("WFH"))&&n.add(r);let i=[],s=[];for(let r of e)n.has(t(r.start))?i.push(r):s.push(r);return{wfh:i,wfo:s,wfhDaysSet:n}}function $(e){return new Promise(t=>{let a=L(e),n=document.createElement("dialog");n.innerHTML=h`
`,n.classList.add("date-range");let i=!1,s=r=>{i||(i=!0,n.close(),n.remove(),t(r))};document.body.appendChild(n),n.showModal(),n.querySelector(".btn-start").addEventListener("click",()=>{let r=n.querySelector("%23dr-start"),c=n.querySelector("%23dr-end");if(!r.value){r.focus();return}let[o,l,d]=r.value.split("-").map(Number),u=new Date(o,l-1,d),g=null;if(c.value){let[p,f,m]=c.value.split("-").map(Number);g=new Date(p,f-1,m)}s({start:u,end:g})}),n.querySelector(".btn-cancel").addEventListener("click",()=>s(null)),n.querySelector(".btn-close").addEventListener("click",()=>s(null)),n.addEventListener("cancel",()=>s(null))})}function x(e){let t=parseInt(e.slice(1,3),10),a=parseInt(e.slice(3,5),10),n=parseInt(e.slice(5,7),10);return new Date(2e3+t,a-1,n)}function C(e){return(e.contentWindow?.location.href??e.src??"").match(/startDay=(%5Cd+)/)?.[1]??null}function T(e){let t=String(e.getFullYear()%25100).padStart(2,"0"),a=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return`1${t}${a}${n}`}function R(e){return`https://uber.nicecloudsvc.com/agent/displayMyScheduleAction.mvc?startDay=${e}&viewFormat=weekly`}async function M(e,t,a=2e4){return new Promise(n=>{let i=setTimeout(()=>{console.log(`[NICE Upload] Navigation timed out after ${a}ms`),n(!1)},a);e.addEventListener("load",()=>{clearTimeout(i),n(!0)},{once:!0}),e.contentWindow.location.href=t})}async function F(e,t){let a=[],n=t.end?1/0:52,i=new Date(t.start);console.log(`[NICE Upload] Starting from: ${t.start.toDateString()}`+(t.end?`, ending at week containing: ${t.end.toDateString()}`:` (go until done, cap ${n})`));for(let o=0;ot.end)break;let d=new Date(l);d.setDate(d.getDate()+6),i=d;let u=R(T(l));if(console.log(`[NICE Upload] Page ${o+1}: navigating to ${u}`),!await M(e,u)){console.log("[NICE Upload] Navigation timed out, stopping");break}let p=e.contentDocument;if(!p){console.log("[NICE Upload] No iframe document, stopping");break}let f=_(p);if(f.length===0){if(t.end){console.log(`[NICE Upload] Page ${o+1}: no rows, continuing (end date set)`);continue}console.log(`[NICE Upload] Page ${o+1}: no rows, stopping`);break}let m=U(f);console.log(`[NICE Upload] Page ${o+1}: ${m.length} events`),a.push(...m)}let s=new Date(t.start.getFullYear(),t.start.getMonth(),t.start.getDate()),r=t.end?new Date(t.end.getFullYear(),t.end.getMonth(),t.end.getDate(),23,59,59,999):null;return{events:a.filter(o=>!(o.startr)),coveredEnd:t.end??i}}function _(e){return Array.from(e.querySelectorAll("%23scheduleDetailTableDiv > table tr")).filter(t=>{let a=t.textContent.trim();return!(t.className==="schedTableHdr"||a===""||a==="Add an activity"||a.endsWith("OFF")||a.endsWith("No data available")||t.children.length===1)}).map(t=>Array.from(t.children))}function U(e){let t=[],a,n,i;for(let s of e){if(s[0]?.querySelector('[title="Trade schedule"]')){let w=s[1]?.textContent?.trim(),[,v]=w?.split(" ")??["",""];[n,i,a]=v.split("/").map(Number)}let c=s[s.length-6]?.textContent?.trim()??"",o=s[s.length-5]?.textContent?.trim()??"12:00 AM",l=s[s.length-4]?.textContent?.trim()??"12:00 AM",[d,u]=D(o),[g,p]=D(l),f=new Date(2e3+a,n-1,i,d,u,0,0),m=new Date(2e3+a,n-1,i,g,p,0,0);isNaN(f.getTime())||isNaN(m.getTime())||(m