pup-recorder 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.cjs +5 -5
- package/dist/chunk-EOEJXYJR.js +4 -0
- package/dist/cli.js +2 -2
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-VSWL7XBT.js +0 -4
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import'source-map-support/register.js';import {Log}from'node-av';import {AV_LOG_ERROR,AV_LOG_WARNING}from'node-av/constants';import {createRequire}from'module';import {dirname,join}from'path';import c from'zod';import {existsSync,rmSync}from'fs';import {mkdtemp}from'fs/promises';import {tmpdir,platform}from'os';import {HardwareContext}from'node-av/api';import {spawn}from'child_process';import We from'tree-kill';import {fileURLToPath}from'url';import {EventEmitter}from'events';var ke=Object.create;var N=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var I=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),y=t=>{throw TypeError(t)};var X=(t,e,r)=>e in t?N(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var Z=t=>[,,,ke(null)],ee=["class","method","getter","setter","accessor","field","value","get","set"],A=t=>t!==void 0&&typeof t!="function"?y("Function expected"):t,Te=(t,e,r,o,n)=>({kind:ee[t],name:e,metadata:o,addInitializer:s=>r._?y("Already initialized"):n.push(A(s||null))}),U=(t,e)=>X(e,I("metadata"),t[3]),re=(t,e,r,o)=>{for(var n=0,s=t[e>>1],a=s&&s.length;n<a;n++)s[n].call(r);return o},C=(t,e,r,o,n,s)=>{var i,p,d,k,l=e&7,E=false,b=false,P=2,T=ee[l+5],xe=t[P]||(t[P]=[]),w=((n=n.prototype),Pe(n,r));for(var $=o.length-1;$>=0;$--)d=Te(l,r,p={},t[3],xe),(d.static=E,d.private=b,k=d.access={has:g=>r in g},(k.get=g=>g[r]),l>2),i=(0, o[$])(w[T],d),p._=1,A(i)&&(w[T]=i);return w&&N(n,r,w),n},te=(t,e,r)=>X(t,e+"",r);var oe=(t,e,r)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&y("Object expected");var o,n;o===void 0&&(o=e[I("dispose")],r),typeof o!="function"&&y("Object not disposable"),n&&(o=function(){try{n.call(this);}catch(s){return Promise.reject(s)}}),t.push([r,o,e]);}return e},ne=(t,e,r)=>{var o=typeof SuppressedError=="function"?SuppressedError:function(a,i,p,d){return d=Error(p),d.name="SuppressedError",d.error=a,d.suppressed=i,d},n=a=>e=r?new o(a,e,"An error was suppressed during disposal"):(r=true,a),s=a=>{for(;a=t.pop();)try{var i=a[1]&&a[1].call(a[2]);if(a[0])return Promise.resolve(i).then(s,p=>(n(p),s()))}catch(p){n(p);}if(r)throw e};return s()};var se=class{_written=0;_shown=false;_total;_out;_tty;_showCount;constructor(e){this._total=e.total,this._out=e.out,this._tty=!!e.out.isTTY,this._showCount=e.showCount??false;}get total(){return this._total}update(e){this._written=Math.min(this._total,Math.max(0,e)),this.render();}updatePercent(e){this.update(Math.round(e/100*this._total));}clear(){this._tty&&this._shown&&this._out.write("\r\x1B[2K");}redraw(){this.render();}log(e){this.clear(),this._out.write(`${e}
|
|
2
|
+
`),this.redraw();}finish(e){this.clear(),this._out.write(`${e}
|
|
3
|
+
`),this._shown=false;}render(){if(!this._tty||this._written===0&&!this._shown)return;let e=this._total>0?this._written/this._total:0,r=Math.round(e*40),o="#".repeat(r)+"-".repeat(40-r),n=Math.round(e*100),s=this._showCount?`${this._written}/${this._total} (${n}%)`:`${n}%`;this._out.write(`\r[${o}] ${s}`),this._shown=true;}};function rr(t){let e=r=>(...o)=>{t.clear(),r(...o),t.redraw();};return {debug:e(console.debug),info:e(console.info),warn:e(console.warn),error:e(console.error)}}function ie(t,e,r){try{return e(process.env[t])}catch{return r}}function ae(t){if(typeof t=="number")return t;let e=Number(t);if(Number.isNaN(e))throw new Error(`Value ${t} is not a valid number`);return e}function ir(t){return typeof t=="string"?t:String(t)}function ar(t){return e=>typeof e!="string"||e.trim()===""?[]:e.split(",").map(r=>t(r.trim()))}var Re=createRequire(import.meta.url),L=ie("PUP_LOG_LEVEL",ae,2),D=dirname(Re.resolve("pup-recorder/package.json")),le=join(D,"dist","app.cjs");join(D,"dist","runtime","audio_preload.cjs");join(D,"dist","runtime","shoot_preload.cjs");join(D,"dist","runtime","render_preload.cjs");var j="<pup@debug>",H="<pup@info>",W="<pup@warn>",V="<pup@error>",B="<pup@fatal>";function R(t,e){return function(...r){let o=r.map(n=>n instanceof Error?n.stack??String(n):n);return t.call(this,...o)}}var pe,ce,ue,de,me,x;me=[R],de=[R],ue=[R],ce=[R],pe=[R];var v=class{constructor(e=L){this._level=e;re(x,5,this);te(this,"_impl");this.impl=console;}_level;get level(){return this._level}set level(e){this._level=e,this.impl=this._impl??console;}get impl(){return this._impl}set impl(e){let r=e.debug??console.debug,o=e.info??console.info,n=e.warn??console.warn,s=e.error??console.error,a=this._level;this._impl={debug:a>=3?r:void 0,info:a>=2?o:void 0,warn:a>=1?n:void 0,error:a>=0?s:void 0};}debug(...e){this.impl?.debug?.(j,...e);}info(...e){this.impl?.info?.(H,...e);}warn(...e){this.impl?.warn?.(W,...e);}error(...e){this.impl?.error?.(V,...e);}fatal(...e){this.impl?.error?.(B,...e),process.exit(1);}dispatch(e){let r=e.trimEnd();r.startsWith(j)?this.debug(r.slice(j.length+1)):r.startsWith(H)?this.info(r.slice(H.length+1)):r.startsWith(W)?this.warn(r.slice(W.length+1)):r.startsWith(V)?this.error(r.slice(V.length+1)):this.info(r);}attach(e,r){return new Promise((o,n)=>{this.debug(`${r}.attach`);let s="",a=i=>{let p=i.toString();p.startsWith(B)?s+=p.slice(B.length+1):this.dispatch(p);};e.stderr?.on("data",a),e.stdout?.on("data",a),e.on("error",i=>{s+=i.message,e.kill();}).once("close",(i,p)=>{i||p||s?(s||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${r}.close`,{code:i,signal:p,fatal:s}),n(new Error(s))):(this.debug(`${r}.close`),o());}).on("unhandledRejection",i=>{this.error(`${r}.unhandled`,i);}).on("uncaughtExceptionMonitor",i=>{this.error(`${r}.unhandled`,i);});})}};x=Z(),C(x,1,"debug",me,v),C(x,1,"info",de,v),C(x,1,"warn",ue,v),C(x,1,"error",ce,v),C(x,1,"fatal",pe,v),U(x,v);var u=new v;Log.setCallback((t,e)=>{let r=e.trimEnd();r&&(t<=AV_LOG_ERROR?u.error(r):t<=AV_LOG_WARNING&&u.warn(r));});function _r(t,e){return (...r)=>{try{let o=t(...r);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var De=1920,Se=1080,Me=30,$e=5,Ge=10,Ne=["out/html.mp4","out/html.webm"],Rr=c.object({duration:c.number().describe("Duration in seconds"),width:c.number().describe("Video width"),height:c.number().describe("Video height"),fps:c.number().describe("Frames per second"),withAudio:c.boolean().describe("Capture and encode audio"),outFiles:c.array(c.string()).describe("Output paths; extension (.mp4/.webm) selects encoder"),useInnerProxy:c.boolean().describe("Use bilibili inner proxy for resource access"),deterministic:c.boolean().describe("Render by frame rather than recording"),disableGpu:c.boolean().describe("Disable GPU rendering, may reduce performance but increase stability"),disableHwCodec:c.boolean().describe("Disable hardware video encoder (NVENC/VideoToolbox), use software x265"),windowTolerant:c.boolean().describe("Fall back to dom-ready if warmup load times out"),windowTimeout:c.number().describe("Window load timeout in seconds"),screenshots:c.array(c.number()).describe("Second marks to dump frame bitmaps as PNG")}),he={width:De,height:Se,fps:Me,duration:$e,outFiles:Ne,withAudio:false,useInnerProxy:false,deterministic:false,disableGpu:false,disableHwCodec:false,windowTolerant:false,windowTimeout:Ge,screenshots:[]};var S=class{constructor(e){this.makeValue=e;}makeValue;get value(){return this._initialized||(this._value=this.makeValue(),this._initialized=true),this._value}get initialized(){return this._initialized}_initialized=false;_value};var Fe="[HWAccel]",ge=new S(()=>{var r=[];try{let t=oe(r,HardwareContext.auto());let e=t!==null;u.debug(Fe,"gpu:",e);return e}catch(o){var n=o,s=true;}finally{ne(r,n,s);}});async function fe(t){let e=["no-sandbox","disable-dev-shm-usage","disable-web-security","disable-site-isolation-trials","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","autoplay-policy=no-user-gesture-required","disable-extensions","deny-permission-prompts","use-mock-keychain","force-device-scale-factor=1","force-color-profile=srgb","ignore-gpu-blocklist","use-gl=angle","deterministic-mode","enable-begin-frame-control","disable-new-content-rendering-timeout","run-all-compositor-stages-before-draw","disable-threaded-animation","disable-threaded-scrolling","disable-checker-imaging","disable-image-animation-resync","enable-surface-synchronization","font-render-hinting=none","disable-background-networking","js-flags=--max-old-space-size=512","renderer-process-limit=1","num-raster-threads=2","disable-background-timer-throttling","disable-renderer-backgrounding","disable-backgrounding-occluded-windows","enable-logging=stderr"];L>=3?e.push("log-level=0","v=1"):e.push("log-level=3");let r=["FontationBackend"];if(!(!t&&ge.value))e.push("use-angle=swiftshader","enable-unsafe-swiftshader");else {e.push("disable-gpu-sandbox","enable-unsafe-webgpu");let n=platform();n==="darwin"?e.push("use-angle=metal"):n==="win32"?e.push("use-angle=d3d11"):(e.push("use-angle=vulkan","disable-vulkan-surface"),r.push("Vulkan"));}return e.push(`enable-features=${r.join(",")}`),e}var z="--pup-priv-args";function Kr(){let t=process.argv,e=t.find(o=>o.startsWith(z));if(!e)return u.debug("procargv",t),process.argv;let r=["exec",...t.slice(-1)];return e=Buffer.from(e.split("=")[1],"base64").toString(),r.push(...JSON.parse(e)),u.debug("pupargs",r),r}function be(t,e){let r=t.split(" ").filter(i=>i.length),[o,...n]=r;if(!o)throw new Error("empty command");let s=spawn(o,n,{stdio:"inherit",...e}),a=false;return {process:s,wait:u.attach(s,o),get killed(){return a},kill(){if(a)return;a=true;let i=s.pid;i?We(i,"SIGKILL"):s.kill("SIGKILL");}}}async function Ke(t){return [...await fe(t),"headless=new"]}var we="[Electron]";async function ve({args:t}){let{default:e}=await import('electron'),r=await Ke(t.includes("--disable-gpu")),o=await mkdtemp(join(tmpdir(),"pup-profile-")),n=r.map(p=>`--${p}`);n.push(`--user-data-dir=${o}`),n.push(`${z}=${Buffer.from(JSON.stringify(t)).toString("base64")}`);let s=[e,...n,le].join(" ");u.debug(we,s);let a={...process.env,RUST_BACKTRACE:"full"},i=be(s,{stdio:["ignore","pipe","pipe","ipc"],env:a});return i.process.once("exit",()=>{try{rmSync(o,{recursive:!0,force:!0});}catch(p){u.warn(we,"profile cleanup failed:",p);}}),i}var J=["file:","http:","https:","data:"],Qe=/^(file:|https?:|data:)/;function ye(t){if(!Qe.test(t)){let e=`${t.split(":")[0]}:`,r=J.includes(e)?`unsupported protocol: ${e}, expected ${J.join(", ")}`:`invalid source format, expected ${J.join(", ")}`;throw new Error(r)}if(t.startsWith("file:")&&!existsSync(fileURLToPath(t)))throw new Error(`source file not found: ${t}`)}var M=class extends EventEmitter{constructor(e){super(),e.on("message",r=>{let o=r;switch(o.type){case "console":{this.emit("console",o.level,o.message);break}case "progress":{this.emit("progress",o.value);break}case "done":{this.emit("done",o.payload);break}case "error":{this.emit("error",new Error(o.error));break}}}),e.once("exit",r=>this.emit("close",r));}};var K="[pup]";async function Ze(t,e){u.debug(K,"runPupApp",t,e);let r=[t,"--width",`${e.width}`,"--height",`${e.height}`,"--fps",`${e.fps}`,"--duration",`${e.duration}`,"--window-timeout",`${e.windowTimeout}`,"--out-file",e.outFiles.join(",")];return e.withAudio&&r.push("--with-audio"),e.useInnerProxy&&r.push("--use-inner-proxy"),e.deterministic&&r.push("--deterministic"),e.disableGpu&&r.push("--disable-gpu"),e.disableHwCodec&&r.push("--disable-hw-codec"),e.windowTolerant&&r.push("--window-tolerant"),e.screenshots.length>0&&r.push("--screenshots",e.screenshots.join(",")),ve({args:r})}var f=he;async function yt(t,e){u.debug(K,"pup",t,e);let{signal:r}=e;r?.throwIfAborted(),ye(t);let o=e.outFiles??f.outFiles,n={width:e.width??f.width,height:e.height??f.height,fps:e.fps??f.fps,duration:e.duration??f.duration,withAudio:e.withAudio??f.withAudio,useInnerProxy:e.useInnerProxy??f.useInnerProxy,deterministic:e.deterministic??f.deterministic,disableGpu:e.disableGpu??f.disableGpu,disableHwCodec:e.disableHwCodec??f.disableHwCodec,windowTolerant:e.windowTolerant??f.windowTolerant,windowTimeout:e.windowTimeout??f.windowTimeout,screenshots:e.screenshots??f.screenshots,outFiles:o},s=performance.now(),a=0,i=l=>{a=l,e.onProgress?.(l);},p=await Ze(t,n),d,k=()=>{p.process.send?.({type:"cancel",reason:String(r?.reason??"abort")}),d=setTimeout(()=>p.kill(),5e3);};r?.addEventListener("abort",k,{once:true});try{let l=new Promise((b,P)=>{new M(p.process).on("close",T=>{let _=JSON.stringify({source:t,progress:a,code:T,killed:p.killed});P(new Error(`crashed: ${_}`));}).on("progress",i).on("console",(T,_)=>e.onConsole?.(T,_)).on("done",b).on("error",P);});i(0);let[E]=await Promise.all([l,p.wait]);return i(100),u.debug(K,`done ${o.join(",")} in ${Math.round(performance.now()-s)}ms`),{...E,options:n}}catch(l){throw p.kill(),r?.throwIfAborted(),l}finally{clearTimeout(d),r?.removeEventListener("abort",k);}}export{se as a,rr as b,ie as c,ae as d,ir as e,ar as f,v as g,u as h,_r as i,Kr as j,De as k,Se as l,Me as m,$e as n,Ge as o,Rr as p,he as q,S as r,yt as s};//# sourceMappingURL=chunk-EOEJXYJR.js.map
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2NsaV91aS50cyIsIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9yZW5kZXJlci9zY2hlbWEudHMiLCIuLi9zcmMvYmFzZS9sYXp5LnRzIiwiLi4vc3JjL2Jhc2UvaHdhY2NlbC50cyIsIi4uL3NyYy9iYXNlL2Nocm9taXVtLnRzIiwiLi4vc3JjL2Jhc2UvcHJvY2Vzcy50cyIsIi4uL3NyYy9yZW5kZXJlci9lbGVjdHJvbi50cyIsIi4uL3NyYy9yZW5kZXJlci9odG1sX2NoZWNrLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2lwYy50cyIsIi4uL3NyYy9wdXAudHMiXSwibmFtZXMiOlsiUHJvZ3Jlc3NCYXIiLCJvcHRzIiwid3JpdHRlbiIsInBjdCIsImxpbmUiLCJyYXRpbyIsImZpbGxlZCIsImJhciIsInN1ZmZpeCIsImJhckxvZ2dlciIsIndyYXAiLCJmbiIsImFyZ3MiLCJwZW52IiwibmFtZSIsInBhcnNlciIsImRlZmF1bHRWYWx1ZSIsInBhcnNlTnVtYmVyIiwieCIsIm51bSIsInBhcnNlU3RyaW5nIiwicGFyc2VBcnJheSIsIml0ZW0iLCJzIiwicmVxdWlyZSIsImNyZWF0ZVJlcXVpcmUiLCJwdXBMb2dMZXZlbCIsInB1cFBrZ1Jvb3QiLCJkaXJuYW1lIiwicHVwQXBwIiwiam9pbiIsIkRFQlVHIiwiSU5GTyIsIldBUk4iLCJFUlJPUiIsIkZBVEFMIiwic3RhY2tIb29rIiwidGFyZ2V0IiwiX2NvbnRleHQiLCJtZXNzYWdlcyIsInByb2Nlc3NlZCIsIm1zZyIsIl9mYXRhbF9kZWMiLCJfZXJyb3JfZGVjIiwiX3dhcm5fZGVjIiwiX2luZm9fZGVjIiwiX2RlYnVnX2RlYyIsIl9pbml0IiwiTG9nZ2VyIiwiX2xldmVsIiwiX19ydW5Jbml0aWFsaXplcnMiLCJfX3B1YmxpY0ZpZWxkIiwidmFsdWUiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJsdiIsIm1lc3NhZ2UiLCJwcm9jIiwicmVzb2x2ZSIsInJlamVjdCIsImZhdGFsIiwiZGlzcGF0Y2giLCJkYXRhIiwiZXJyIiwiY29kZSIsInNpZ25hbCIsInJlYXNvbiIsIl9fZGVjb3JhdG9yU3RhcnQiLCJfX2RlY29yYXRlRWxlbWVudCIsIl9fZGVjb3JhdG9yTWV0YWRhdGEiLCJsb2dnZXIiLCJMb2ciLCJsZXZlbCIsIkFWX0xPR19FUlJPUiIsIkFWX0xPR19XQVJOSU5HIiwibm9lcnIiLCJyZXQiLCJERUZBVUxUX1dJRFRIIiwiREVGQVVMVF9IRUlHSFQiLCJERUZBVUxUX0ZQUyIsIkRFRkFVTFRfRFVSQVRJT04iLCJERUZBVUxUX1dJTkRPV19USU1FT1VUIiwiREVGQVVMVF9PVVRfRklMRVMiLCJyZW5kZXJTY2hlbWEiLCJ6IiwiZGVmYXVsdFJlbmRlck9wdGlvbnMiLCJMYXp5IiwibWFrZVZhbHVlIiwiVEFHIiwiY2FuSVVzZUdQVSIsIl9zdGFjayIsImh3IiwiX191c2luZyIsIkhhcmR3YXJlQ29udGV4dCIsInJlc3VsdCIsIl8iLCJfZXJyb3IiLCJfaGFzRXJyb3IiLCJfX2NhbGxEaXNwb3NlIiwiY2hyb21pdW1PcHRpb25zIiwiZGlzYWJsZUdwdSIsImZlYXR1cmVzIiwicGxhdCIsInBsYXRmb3JtIiwiUFVQX0FSR1NfS0VZIiwicGFyZ3MiLCJhcmd2IiwicHJpdiIsImFyZyIsImV4ZWMiLCJjbWQiLCJvcHRpb25zIiwicGFydHMiLCJjb21tYW5kIiwic3Bhd24iLCJraWxsZWQiLCJwaWQiLCJ0cmVlS2lsbCIsImVsZWN0cm9uT3B0cyIsInJ1bkVsZWN0cm9uQXBwIiwiZWxlY3Ryb24iLCJwcm9maWxlRGlyIiwibWtkdGVtcCIsInRtcGRpciIsImVsZWN0cm9uQXJncyIsImEiLCJlbnYiLCJoYW5kbGUiLCJybVN5bmMiLCJlIiwiU1VQUE9SVEVEX1BST1RPQ09MUyIsIlNPVVJDRV9QQVRURVJOIiwiY2hlY2tIVE1MIiwic291cmNlIiwicHJvdG9jb2wiLCJleGlzdHNTeW5jIiwiZmlsZVVSTFRvUGF0aCIsIklwY1JlYWRlciIsIkV2ZW50RW1pdHRlciIsImNoaWxkIiwicmF3IiwiYyIsInJ1blB1cEFwcCIsInJlbmRlciIsImQiLCJwdXAiLCJvdXRGaWxlcyIsInJlbmRlck9wdHMiLCJ0MCIsInByb2dyZXNzIiwidGljayIsInAiLCJraWxsVGltZXIiLCJvbkFib3J0IiwibCIsIm0iLCJzdW1tYXJ5Il0sIm1hcHBpbmdzIjoiK2tFQVlPLElBQU1BLEVBQUFBLENBQU4sS0FBa0IsQ0FDZixRQUFBLENBQVcsRUFDWCxNQUFBLENBQVMsS0FBQSxDQUNBLE1BQUEsQ0FDQSxJQUFBLENBQ0EsSUFBQSxDQUNBLFVBQUEsQ0FFakIsWUFBWUMsQ0FBQUEsQ0FBa0IsQ0FDNUIsS0FBSyxNQUFBLENBQVNBLENBQUFBLENBQUssTUFDbkIsSUFBQSxDQUFLLElBQUEsQ0FBT0EsQ0FBQUEsQ0FBSyxHQUFBLENBQ2pCLElBQUEsQ0FBSyxJQUFBLENBQU8sQ0FBQyxDQUFDQSxDQUFBQSxDQUFLLElBQUksS0FBQSxDQUN2QixJQUFBLENBQUssV0FBYUEsQ0FBQUEsQ0FBSyxTQUFBLEVBQWEsTUFDdEMsQ0FFQSxJQUFJLEtBQUEsRUFBZ0IsQ0FDbEIsT0FBTyxJQUFBLENBQUssTUFDZCxDQUVBLE1BQUEsQ0FBT0MsQ0FBQUEsQ0FBdUIsQ0FDNUIsSUFBQSxDQUFLLFFBQUEsQ0FBVyxJQUFBLENBQUssR0FBQSxDQUFJLElBQUEsQ0FBSyxNQUFBLENBQVEsS0FBSyxHQUFBLENBQUksQ0FBQSxDQUFHQSxDQUFPLENBQUMsQ0FBQSxDQUMxRCxLQUFLLE1BQUEsR0FDUCxDQUVBLGFBQUEsQ0FBY0MsQ0FBQUEsQ0FBbUIsQ0FDL0IsS0FBSyxNQUFBLENBQU8sSUFBQSxDQUFLLEtBQUEsQ0FBT0EsQ0FBQUEsQ0FBTSxHQUFBLENBQU8sSUFBQSxDQUFLLE1BQU0sQ0FBQyxFQUNuRCxDQUVBLEtBQUEsRUFBYyxDQUNSLElBQUEsQ0FBSyxNQUFRLElBQUEsQ0FBSyxNQUFBLEVBQ3BCLEtBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxXQUFXLEVBRS9CLENBRUEsTUFBQSxFQUFlLENBQ2IsSUFBQSxDQUFLLE1BQUEsR0FDUCxDQUVBLEdBQUEsQ0FBSUMsQ0FBQUEsQ0FBb0IsQ0FDdEIsSUFBQSxDQUFLLEtBQUEsR0FDTCxJQUFBLENBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxDQUFBLEVBQUdBLENBQUk7QUFBQSxDQUFJLENBQUEsQ0FDM0IsSUFBQSxDQUFLLE1BQUEsR0FDUCxDQUVBLE1BQUEsQ0FBT0EsQ0FBQUEsQ0FBb0IsQ0FDekIsSUFBQSxDQUFLLE9BQU0sQ0FDWCxJQUFBLENBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxHQUFHQSxDQUFJO0FBQUEsQ0FBSSxDQUFBLENBQzNCLElBQUEsQ0FBSyxNQUFBLENBQVMsTUFDaEIsQ0FFUSxNQUFBLEVBQWUsQ0FJckIsR0FISSxDQUFDLElBQUEsQ0FBSyxJQUFBLEVBR04sSUFBQSxDQUFLLFFBQUEsR0FBYSxDQUFBLEVBQUssQ0FBQyxJQUFBLENBQUssTUFBQSxDQUMvQixPQUVGLElBQU1DLENBQUFBLENBQVEsSUFBQSxDQUFLLE1BQUEsQ0FBUyxDQUFBLENBQUksSUFBQSxDQUFLLFFBQUEsQ0FBVyxJQUFBLENBQUssTUFBQSxDQUFTLENBQUEsQ0FDeERDLENBQUFBLENBQVMsSUFBQSxDQUFLLEtBQUEsQ0FBTUQsQ0FBQUEsQ0FBUSxFQUFTLENBQUEsQ0FDckNFLENBQUFBLENBQU0sR0FBQSxDQUFJLE1BQUEsQ0FBT0QsQ0FBTSxDQUFBLENBQUksR0FBQSxDQUFJLE1BQUEsQ0FBTyxFQUFBLENBQVlBLENBQU0sQ0FBQSxDQUN4REgsQ0FBQUEsQ0FBTSxJQUFBLENBQUssS0FBQSxDQUFNRSxDQUFBQSxDQUFRLEdBQUcsQ0FBQSxDQUM1QkcsQ0FBQUEsQ0FBUyxJQUFBLENBQUssVUFBQSxDQUFhLENBQUEsRUFBRyxJQUFBLENBQUssUUFBUSxDQUFBLENBQUEsRUFBSSxJQUFBLENBQUssTUFBTSxDQUFBLEVBQUEsRUFBS0wsQ0FBRyxDQUFBLEVBQUEsQ0FBQSxDQUFPLENBQUEsRUFBR0EsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUNyRixJQUFBLENBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxDQUFBLEdBQUEsRUFBTUksQ0FBRyxDQUFBLEVBQUEsRUFBS0MsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUN0QyxJQUFBLENBQUssTUFBQSxDQUFTLEtBQ2hCLENBQ0YsRUFHTyxTQUFTQyxFQUFBQSxDQUFVRixDQUFBQSxDQUE4QixDQUN0RCxJQUFNRyxDQUFBQSxDQUNrQ0MsQ0FBQUEsRUFDdEMsQ0FBQSxHQUFJQyxDQUFBQSxHQUFvQixDQUN0QkwsQ0FBQUEsQ0FBSSxLQUFBLEVBQU0sQ0FDVkksQ0FBQUEsQ0FBRyxHQUFHQyxDQUFJLENBQUEsQ0FDVkwsQ0FBQUEsQ0FBSSxNQUFBLEdBQ04sQ0FBQSxDQUNGLE9BQU8sQ0FDTCxLQUFBLENBQU9HLENBQUFBLENBQUssT0FBQSxDQUFRLEtBQUssQ0FBQSxDQUN6QixJQUFBLENBQU1BLENBQUFBLENBQUssT0FBQSxDQUFRLElBQUksQ0FBQSxDQUN2QixJQUFBLENBQU1BLENBQUFBLENBQUssT0FBQSxDQUFRLElBQUksQ0FBQSxDQUN2QixLQUFBLENBQU9BLENBQUFBLENBQUssT0FBQSxDQUFRLEtBQUssQ0FDM0IsQ0FDRixDQ3hGTyxTQUFTRyxFQUFBQSxDQUFRQyxDQUFBQSxDQUFjQyxDQUFBQSxDQUFzQkMsQ0FBQUEsQ0FBaUMsQ0FDM0YsR0FBSSxDQUNGLE9BQU9ELENBQUFBLENBQU8sT0FBQSxDQUFRLEdBQUEsQ0FBSUQsQ0FBSSxDQUFDLENBQ2pDLENBQUEsS0FBUSxDQUNOLE9BQU9FLENBQ1QsQ0FDRixDQ1ZPLFNBQVNDLEVBQUFBLENBQVlDLENBQUFBLENBQW9CLENBQzlDLEdBQUksT0FBT0EsQ0FBQUEsRUFBTSxRQUFBLENBQ2YsT0FBT0EsQ0FBQUEsQ0FFVCxJQUFNQyxDQUFBQSxDQUFNLE1BQUEsQ0FBT0QsQ0FBQyxDQUFBLENBQ3BCLEdBQUksTUFBQSxDQUFPLEtBQUEsQ0FBTUMsQ0FBRyxDQUFBLENBQ2xCLE1BQU0sSUFBSSxLQUFBLENBQU0sQ0FBQSxNQUFBLEVBQVNELENBQUMsQ0FBQSxzQkFBQSxDQUF3QixDQUFBLENBRXBELE9BQU9DLENBQ1QsQ0FFTyxTQUFTQyxFQUFBQSxDQUFZRixDQUFBQSxDQUFvQixDQUM5QyxPQUFJLE9BQU9BLENBQUFBLEVBQU0sUUFBQSxDQUNSQSxDQUFBQSxDQUVGLE1BQUEsQ0FBT0EsQ0FBQyxDQUNqQixDQUdPLFNBQVNHLEVBQUFBLENBQWNDLENBQUFBLENBQThDLENBQzFFLE9BQVFKLENBQUFBLEVBQ0YsT0FBT0EsQ0FBQUEsRUFBTSxRQUFBLEVBQVlBLENBQUFBLENBQUUsSUFBQSxFQUFLLEdBQU0sRUFBQSxDQUNqQyxFQUFDLENBRUhBLENBQUFBLENBQUUsS0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFFLEdBQUEsQ0FBS0ssQ0FBQUEsRUFBTUQsQ0FBQUEsQ0FBS0MsQ0FBQUEsQ0FBRSxJQUFBLEVBQU0sQ0FBQyxDQUVqRCxDQ3JCQSxJQUFNQyxFQUFBQSxDQUFVQyxhQUFBQSxDQUFjLE1BQUEsQ0FBQSxJQUFBLENBQVksR0FBRyxDQUFBLENBRWhDQyxDQUFBQSxDQUFjYixFQUFBQSxDQUFLLGVBQUEsQ0FBaUJJLEVBQUFBLENBQWEsQ0FBQyxDQUFBLENBRWxEVSxDQUFBQSxDQUFhQyxPQUFBQSxDQUFRSixFQUFBQSxDQUFRLE9BQUEsQ0FBUSwyQkFBMkIsQ0FBQyxDQUFBLENBQ2pFSyxFQUFBQSxDQUFTQyxJQUFBQSxDQUFLSCxDQUFBQSxDQUFZLE1BQUEsQ0FBUSxTQUFTLENBQUEsQ0FDekJHLElBQUFBLENBQUtILENBQUFBLENBQVksTUFBQSxDQUFRLFNBQUEsQ0FBVyxtQkFBbUIsQ0FBQSxDQUN2REcsSUFBQUEsQ0FBS0gsQ0FBQUEsQ0FBWSxNQUFBLENBQVEsU0FBQSxDQUFXLG1CQUFtQixDQUFBLENBQ3RERyxJQUFBQSxDQUFLSCxDQUFBQSxDQUFZLE1BQUEsQ0FBUSxTQUFBLENBQVcsb0JBQW9CLEVDRXhGLElBQU1JLENBQUFBLENBQVEsYUFBQSxDQUNSQyxDQUFBQSxDQUFPLFlBQUEsQ0FDUEMsQ0FBQUEsQ0FBTyxZQUFBLENBQ1BDLENBQUFBLENBQVEsYUFBQSxDQUNSQyxDQUFBQSxDQUFRLGFBQUEsQ0FFZCxTQUFTQyxDQUFBQSxDQUFVQyxDQUFBQSxDQUE2Q0MsQ0FBQUEsQ0FBdUMsQ0FDckcsT0FBTyxTQUFBLEdBQTJCQyxDQUFBQSxDQUFxQixDQUNyRCxJQUFNQyxDQUFBQSxDQUFZRCxDQUFBQSxDQUFTLEdBQUEsQ0FBS0UsQ0FBQUEsRUFDdkJBLENBQUFBLFlBQWUsS0FBQSxDQUFTQSxDQUFBQSxDQUFJLEtBQUEsRUFBUyxNQUFBLENBQU9BLENBQUcsQ0FBQSxDQUFLQSxDQUM1RCxDQUFBLENBQ0QsT0FBT0osQ0FBQUEsQ0FBTyxJQUFBLENBQUssSUFBQSxDQUFNLEdBQUdHLENBQVMsQ0FDdkMsQ0FDRixDQTlCQSxJQUFBRSxFQUFBQSxDQUFBQyxFQUFBQSxDQUFBQyxFQUFBQSxDQUFBQyxFQUFBQSxDQUFBQyxFQUFBQSxDQUFBQyxDQUFBQSxDQWtFRUQsRUFBQUEsQ0FBQSxDQUFDVixDQUFBQSxDQUFBQSxDQUtEUyxFQUFBQSxDQUFBLENBQUNULENBQUFBLENBQUFBLENBS0RRLEVBQUFBLENBQUEsQ0FBQ1IsQ0FBQUEsQ0FBQUEsQ0FLRE8sRUFBQUEsQ0FBQSxDQUFDUCxDQUFBQSxDQUFBQSxDQUtETSxFQUFBQSxDQUFBLENBQUNOLENBQUFBLENBQUFBLENBdERJLElBQU1ZLENBQUFBLENBQU4sS0FBbUMsQ0E4QnhDLFdBQUEsQ0FBb0JDLENBQUFBLENBQWlCdkIsQ0FBQUEsQ0FBYSxDQUE5QixJQUFBLENBQUEsTUFBQSxDQUFBdUIsQ0FBQUEsQ0E5QmZDLEVBQUFBLENBQUFILENBQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxDQUNMSSxFQUFBQSxDQUFBLElBQUEsQ0FBUSxPQUFBLENBQUEsQ0E4Qk4sSUFBQSxDQUFLLElBQUEsQ0FBTyxRQUNkLENBRm9CLE1BQUEsQ0EzQnBCLElBQUksS0FBQSxFQUFnQixDQUNsQixPQUFPLElBQUEsQ0FBSyxNQUNkLENBRUEsSUFBSSxLQUFBLENBQU1DLENBQUFBLENBQWUsQ0FDdkIsSUFBQSxDQUFLLE1BQUEsQ0FBU0EsQ0FBQUEsQ0FDZCxLQUFLLElBQUEsQ0FBTyxJQUFBLENBQUssS0FBQSxFQUFTLFFBQzVCLENBRUEsSUFBSSxJQUFBLEVBQStCLENBQ2pDLE9BQU8sSUFBQSxDQUFLLEtBQ2QsQ0FFQSxJQUFJLElBQUEsQ0FBS0EsQ0FBQUEsQ0FBbUIsQ0FDMUIsSUFBTUMsQ0FBQUEsQ0FBUUQsQ0FBQUEsQ0FBTSxLQUFBLEVBQVMsT0FBQSxDQUFRLEtBQUEsQ0FDL0JFLENBQUFBLENBQU9GLENBQUFBLENBQU0sSUFBQSxFQUFRLE9BQUEsQ0FBUSxJQUFBLENBQzdCRyxDQUFBQSxDQUFPSCxDQUFBQSxDQUFNLElBQUEsRUFBUSxPQUFBLENBQVEsSUFBQSxDQUM3QkksQ0FBQUEsQ0FBUUosQ0FBQUEsQ0FBTSxLQUFBLEVBQVMsT0FBQSxDQUFRLEtBQUEsQ0FDL0JLLENBQUFBLENBQUssSUFBQSxDQUFLLE1BQUEsQ0FDaEIsSUFBQSxDQUFLLEtBQUEsQ0FBUSxDQUNYLEtBQUEsQ0FBT0EsQ0FBQUEsRUFBTSxDQUFBLENBQUlKLENBQUFBLENBQVEsTUFBQSxDQUN6QixJQUFBLENBQU1JLENBQUFBLEVBQU0sQ0FBQSxDQUFJSCxDQUFBQSxDQUFPLE1BQUEsQ0FDdkIsSUFBQSxDQUFNRyxDQUFBQSxFQUFNLENBQUEsQ0FBSUYsQ0FBQUEsQ0FBTyxNQUFBLENBQ3ZCLEtBQUEsQ0FBT0UsQ0FBQUEsRUFBTSxDQUFBLENBQUlELENBQUFBLENBQVEsTUFDM0IsRUFDRixDQU9BLEtBQUEsQ0FBQSxHQUFTakIsQ0FBQUEsQ0FBMkIsQ0FDbEMsSUFBQSxDQUFLLElBQUEsRUFBTSxLQUFBLEdBQVFSLENBQUFBLENBQU8sR0FBR1EsQ0FBUSxFQUN2QyxDQUdBLElBQUEsQ0FBQSxHQUFRQSxDQUFBQSxDQUEyQixDQUNqQyxJQUFBLENBQUssSUFBQSxFQUFNLElBQUEsR0FBT1AsQ0FBQUEsQ0FBTSxHQUFHTyxDQUFRLEVBQ3JDLENBR0EsSUFBQSxDQUFBLEdBQVFBLENBQUFBLENBQTJCLENBQ2pDLElBQUEsQ0FBSyxJQUFBLEVBQU0sSUFBQSxHQUFPTixDQUFBQSxDQUFNLEdBQUdNLENBQVEsRUFDckMsQ0FHQSxLQUFBLENBQUEsR0FBU0EsQ0FBQUEsQ0FBMkIsQ0FDbEMsSUFBQSxDQUFLLElBQUEsRUFBTSxLQUFBLEdBQVFMLENBQUFBLENBQU8sR0FBR0ssQ0FBUSxFQUN2QyxDQUdBLEtBQUEsQ0FBQSxHQUFTQSxDQUFBQSxDQUEyQixDQUNsQyxJQUFBLENBQUssSUFBQSxFQUFNLEtBQUEsR0FBUUosQ0FBQUEsQ0FBTyxHQUFHSSxDQUFRLENBQUEsQ0FDckMsT0FBQSxDQUFRLElBQUEsQ0FBSyxDQUFDLEVBQ2hCLENBRVEsUUFBQSxDQUFTbUIsQ0FBQUEsQ0FBaUIsQ0FDaEMsSUFBTWpCLEVBQU1pQixDQUFBQSxDQUFRLE9BQUEsRUFBUSxDQUN4QmpCLENBQUFBLENBQUksVUFBQSxDQUFXVixDQUFLLENBQUEsQ0FDdEIsSUFBQSxDQUFLLEtBQUEsQ0FBTVUsQ0FBQUEsQ0FBSSxLQUFBLENBQU1WLENBQUFBLENBQU0sTUFBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQzdCVSxDQUFBQSxDQUFJLFVBQUEsQ0FBV1QsQ0FBSSxDQUFBLENBQzVCLElBQUEsQ0FBSyxJQUFBLENBQUtTLENBQUFBLENBQUksS0FBQSxDQUFNVCxDQUFBQSxDQUFLLE1BQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUMzQlMsQ0FBQUEsQ0FBSSxVQUFBLENBQVdSLENBQUksQ0FBQSxDQUM1QixJQUFBLENBQUssSUFBQSxDQUFLUSxDQUFBQSxDQUFJLEtBQUEsQ0FBTVIsQ0FBQUEsQ0FBSyxNQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FDM0JRLENBQUFBLENBQUksVUFBQSxDQUFXUCxDQUFLLENBQUEsQ0FDN0IsSUFBQSxDQUFLLEtBQUEsQ0FBTU8sQ0FBQUEsQ0FBSSxLQUFBLENBQU1QLENBQUFBLENBQU0sTUFBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBRXRDLElBQUEsQ0FBSyxJQUFBLENBQUtPLENBQUcsRUFFakIsQ0FFQSxNQUFBLENBQU9rQixDQUFBQSxDQUFvQjdDLENBQUFBLENBQWMsQ0FDdkMsT0FBTyxJQUFJLE9BQUEsQ0FBYyxDQUFDOEMsQ0FBQUEsQ0FBU0MsQ0FBQUEsR0FBVyxDQUM1QyxJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBRy9DLENBQUksQ0FBQSxPQUFBLENBQVMsQ0FBQSxDQUMzQixJQUFJZ0QsQ0FBQUEsQ0FBZ0IsRUFBQSxDQUNkQyxDQUFBQSxDQUFZQyxDQUFBQSxFQUFpQixDQUNqQyxJQUFNTixDQUFBQSxDQUFVTSxDQUFBQSxDQUFLLFFBQUEsRUFBUyxDQUMxQk4sQ0FBQUEsQ0FBUSxVQUFBLENBQVd2QixDQUFLLENBQUEsQ0FDMUIyQixDQUFBQSxFQUFTSixDQUFBQSxDQUFRLEtBQUEsQ0FBTXZCLENBQUFBLENBQU0sTUFBQSxDQUFTLENBQUMsQ0FBQSxDQUV2QyxJQUFBLENBQUssUUFBQSxDQUFTdUIsQ0FBTyxFQUV6QixDQUFBLENBQ0FDLENBQUFBLENBQUssTUFBQSxFQUFRLEVBQUEsQ0FBRyxNQUFBLENBQVFJLENBQVEsQ0FBQSxDQUNoQ0osQ0FBQUEsQ0FBSyxNQUFBLEVBQVEsRUFBQSxDQUFHLE1BQUEsQ0FBUUksQ0FBUSxDQUFBLENBQ2hDSixDQUFBQSxDQUNHLEVBQUEsQ0FBRyxPQUFBLENBQVVNLENBQUFBLEVBQVEsQ0FDcEJILENBQUFBLEVBQVNHLENBQUFBLENBQUksT0FBQSxDQUNiTixDQUFBQSxDQUFLLElBQUEsR0FDUCxDQUFDLEVBQ0EsSUFBQSxDQUFLLE9BQUEsQ0FBUyxDQUFDTyxDQUFBQSxDQUFNQyxDQUFBQSxHQUFXLENBQzNCRCxDQUFBQSxFQUFRQyxDQUFBQSxFQUFVTCxDQUFBQSxFQUNwQkEsQ0FBQUEsR0FBVSxDQUFBLGdCQUFBLEVBQW1CSCxDQUFBQSxDQUFLLFNBQUEsQ0FBVSxJQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUNyRCxJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBRzdDLENBQUksQ0FBQSxNQUFBLENBQUEsQ0FBVSxDQUFFLElBQUEsQ0FBQW9ELENBQUFBLENBQU0sTUFBQSxDQUFBQyxDQUFBQSxDQUFRLEtBQUEsQ0FBQUwsQ0FBTSxDQUFDLENBQUEsQ0FDbkRELENBQUFBLENBQU8sSUFBSSxLQUFBLENBQU1DLENBQUssQ0FBQyxDQUFBLEdBRXZCLElBQUEsQ0FBSyxLQUFBLENBQU0sQ0FBQSxFQUFHaEQsQ0FBSSxDQUFBLE1BQUEsQ0FBUSxDQUFBLENBQzFCOEMsQ0FBQUEsRUFBUSxFQUVaLENBQUMsQ0FBQSxDQUNBLEVBQUEsQ0FBRyxvQkFBQSxDQUF1QlEsQ0FBQUEsRUFBVyxDQUNwQyxJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBR3RELENBQUksQ0FBQSxVQUFBLENBQUEsQ0FBY3NELENBQU0sRUFDeEMsQ0FBQyxDQUFBLENBQ0EsRUFBQSxDQUFHLDBCQUFBLENBQTZCSCxDQUFBQSxFQUFRLENBQ3ZDLElBQUEsQ0FBSyxLQUFBLENBQU0sQ0FBQSxFQUFHbkQsQ0FBSSxDQUFBLFVBQUEsQ0FBQSxDQUFjbUQsQ0FBRyxFQUNyQyxDQUFDLEVBQ0wsQ0FBQyxDQUNILENBQ0YsRUFoSE9sQixDQUFBQSxDQUFBc0IsQ0FBQUEsQ0FBQSxDQUFBLENBbUNMQyxDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQURBRCxFQUFBQSxDQWxDV0UsQ0FBQUEsQ0FBQUEsQ0F3Q1hzQixDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQURBRixFQUFBQSxDQXZDV0csQ0FBQUEsQ0FBQUEsQ0E2Q1hzQixDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsTUFBQSxDQURBSCxFQUFBQSxDQTVDV0ksQ0FBQUEsQ0FBQUEsQ0FrRFhzQixDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQURBSixFQUFBQSxDQWpEV0ssQ0FBQUEsQ0FBQUEsQ0F1RFhzQixDQUFBQSxDQUFBdkIsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQURBTCxFQUFBQSxDQXREV00sQ0FBQUEsQ0FBQUEsQ0FBTnVCLENBQUFBLENBQUF4QixDQUFBQSxDQUFNQyxDQUFBQSxDQUFBQSxDQWtIYixJQUFNd0IsQ0FBQUEsQ0FBUyxJQUFJeEIsRUFHbkJ5QixHQUFBQSxDQUFJLFdBQUEsQ0FBWSxDQUFDQyxDQUFBQSxDQUFPaEIsQ0FBQUEsR0FBWSxDQUNsQyxJQUFNakIsQ0FBQUEsQ0FBTWlCLENBQUFBLENBQVEsT0FBQSxFQUFRLENBQ3ZCakIsQ0FBQUEsR0FHRGlDLENBQUFBLEVBQVNDLFlBQUFBLENBQ1hILENBQUFBLENBQU8sS0FBQSxDQUFNL0IsQ0FBRyxDQUFBLENBQ1BpQyxDQUFBQSxFQUFTRSxjQUFBQSxFQUNsQkosQ0FBQUEsQ0FBTyxJQUFBLENBQUsvQixDQUFHLENBQUEsRUFFbkIsQ0FBQyxDQUFBLENDN0pNLFNBQVNvQyxFQUFBQSxDQUFpQ2xFLENBQUFBLENBQXVCSyxDQUFBQSxDQUF3QyxDQUM5RyxPQUFPLENBQUEsR0FBSUosQ0FBQUEsR0FBUyxDQUNsQixHQUFJLENBQ0YsSUFBTWtFLENBQUFBLENBQU1uRSxDQUFBQSxDQUFHLEdBQUdDLENBQUksQ0FBQSxDQUN0QixPQUFJa0UsQ0FBQUEsWUFBZSxPQUFBLENBQ1ZBLENBQUFBLENBQUksS0FBQSxDQUFNLElBQU05RCxDQUFZLENBQUEsQ0FFOUI4RCxDQUNULENBQUEsS0FBUSxDQUNOLE9BQU85RCxDQUNULENBQ0YsQ0FDRixDQ1ZPLElBQU0rRCxFQUFBQSxDQUFnQixJQUFBLENBQ2hCQyxFQUFBQSxDQUFpQixJQUFBLENBQ2pCQyxFQUFBQSxDQUFjLEVBQUEsQ0FDZEMsRUFBQUEsQ0FBbUIsQ0FBQSxDQUNuQkMsRUFBQUEsQ0FBeUIsRUFBQSxDQUN6QkMsRUFBQUEsQ0FBb0IsQ0FBQyxjQUFBLENBQWdCLGVBQWUsQ0FBQSxDQUVwREMsRUFBQUEsQ0FBZUMsQ0FBQUEsQ0FBRSxNQUFBLENBQU8sQ0FDbkMsUUFBQSxDQUFVQSxDQUFBQSxDQUFFLE1BQUEsRUFBTyxDQUFFLFFBQUEsQ0FBUyxxQkFBcUIsQ0FBQSxDQUNuRCxLQUFBLENBQU9BLENBQUFBLENBQUUsTUFBQSxFQUFPLENBQUUsUUFBQSxDQUFTLGFBQWEsQ0FBQSxDQUN4QyxNQUFBLENBQVFBLENBQUFBLENBQUUsTUFBQSxFQUFPLENBQUUsUUFBQSxDQUFTLGNBQWMsQ0FBQSxDQUMxQyxHQUFBLENBQUtBLENBQUFBLENBQUUsTUFBQSxFQUFPLENBQUUsUUFBQSxDQUFTLG1CQUFtQixDQUFBLENBQzVDLFNBQUEsQ0FBV0EsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsMEJBQTBCLENBQUEsQ0FDMUQsUUFBQSxDQUFVQSxDQUFBQSxDQUFFLEtBQUEsQ0FBTUEsQ0FBQUEsQ0FBRSxNQUFBLEVBQVEsQ0FBQSxDQUFFLFFBQUEsQ0FBUyxzREFBc0QsQ0FBQSxDQUM3RixhQUFBLENBQWVBLENBQUFBLENBQUUsT0FBQSxFQUFRLENBQUUsUUFBQSxDQUFTLDhDQUE4QyxDQUFBLENBQ2xGLGFBQUEsQ0FBZUEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsdUNBQXVDLENBQUEsQ0FDM0UsVUFBQSxDQUFZQSxDQUFBQSxDQUFFLE9BQUEsRUFBUSxDQUFFLFNBQVMsc0VBQXNFLENBQUEsQ0FDdkcsY0FBQSxDQUFnQkEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsd0VBQXdFLENBQUEsQ0FDN0csY0FBQSxDQUFnQkEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsaURBQWlELENBQUEsQ0FDdEYsYUFBQSxDQUFlQSxDQUFBQSxDQUFFLE1BQUEsRUFBTyxDQUFFLFFBQUEsQ0FBUyxnQ0FBZ0MsQ0FBQSxDQUNuRSxXQUFBLENBQWFBLENBQUFBLENBQUUsS0FBQSxDQUFNQSxDQUFBQSxDQUFFLE1BQUEsRUFBUSxDQUFBLENBQUUsUUFBQSxDQUFTLDJDQUEyQyxDQUN2RixDQUFDLENBQUEsQ0F3QllDLEVBQUFBLENBQXNDLENBQ2pELEtBQUEsQ0FBT1IsRUFBQUEsQ0FDUCxNQUFBLENBQVFDLEVBQUFBLENBQ1IsR0FBQSxDQUFLQyxFQUFBQSxDQUNMLFFBQUEsQ0FBVUMsRUFBQUEsQ0FDVixRQUFBLENBQVVFLEVBQUFBLENBQ1YsU0FBQSxDQUFXLEtBQUEsQ0FDWCxhQUFBLENBQWUsS0FBQSxDQUNmLGFBQUEsQ0FBZSxLQUFBLENBQ2YsVUFBQSxDQUFZLEtBQUEsQ0FDWixjQUFBLENBQWdCLEtBQUEsQ0FDaEIsY0FBQSxDQUFnQixLQUFBLENBQ2hCLGFBQUEsQ0FBZUQsRUFBQUEsQ0FDZixXQUFBLENBQWEsRUFDZixFQzdETyxJQUFNSyxDQUFBQSxDQUFOLEtBQWMsQ0FDbkIsV0FBQSxDQUFxQkMsQ0FBQUEsQ0FBb0IsQ0FBcEIsSUFBQSxDQUFBLFNBQUEsQ0FBQUEsRUFBcUIsQ0FBckIsU0FBQSxDQUVyQixJQUFJLEtBQUEsRUFBVyxDQUNiLE9BQUssSUFBQSxDQUFLLFlBQUEsR0FDUixJQUFBLENBQUssTUFBQSxDQUFTLElBQUEsQ0FBSyxTQUFBLEVBQVUsQ0FDN0IsSUFBQSxDQUFLLFlBQUEsQ0FBZSxJQUFBLENBQUEsQ0FFZixJQUFBLENBQUssTUFDZCxDQUVBLElBQUksV0FBQSxFQUF1QixDQUN6QixPQUFPLElBQUEsQ0FBSyxZQUNkLENBRVEsWUFBQSxDQUFlLEtBQUEsQ0FDZixNQUNWLEVDYkEsSUFBTUMsR0FBTSxXQUFBLENBR0NDLEVBQUFBLENBQWEsSUFBSUgsQ0FBQUEsQ0FBSyxJQUFNLENBQ3ZDLElBQUFJLENBQUFBLENBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQSxJQUFNQyxDQUFBQSxDQUFLQyxFQUFBQSxDQUFBRixDQUFBQSxDQUFBRyxlQUFBQSxDQUFnQixJQUFBLEVBQUssQ0FBQSxDQUNoQyxJQUFNQyxDQUFBQSxDQUFTSCxDQUFBQSxHQUFPLElBQUEsQ0FDdEJyQixDQUFBQSxDQUFPLEtBQUEsQ0FBTWtCLEVBQUFBLENBQUssTUFBQSxDQUFRTSxDQUFNLENBQUEsQ0FDaEMsT0FBT0EsQ0FBQUEsQ0FBQUEsTUFIUEMsQ0FBQUEsQ0FBQSxDQUFBLElBQUFDLENBQUFBLENBQUFELENBQUFBLENBQUFFLENBQUFBLENBQUEsS0FBQSxDQUFBLE9BQUEsQ0FBQUMsRUFBQUEsQ0FBQVIsQ0FBQUEsQ0FBQU0sQ0FBQUEsQ0FBQUMsQ0FBQUEsRUFBQUEsQ0FJRixDQUFDLENBQUEsQ0NSRCxlQUFzQkUsRUFBQUEsQ0FBZ0JDLENBQUFBLENBQXFCLENBQ3pELElBQU1yRyxDQUFBQSxDQUFPLENBRVgsWUFBQSxDQUNBLHVCQUFBLENBRUEsc0JBQUEsQ0FDQSwrQkFBQSxDQUNBLDJCQUFBLENBRUEsNkNBQUEsQ0FDQSxZQUFBLENBQ0EsMENBQUEsQ0FDQSxvQkFBQSxDQUNBLHlCQUFBLENBQ0EsbUJBQUEsQ0FFQSw2QkFBQSxDQUNBLDBCQUFBLENBQ0Esc0JBQUEsQ0FDQSxjQUFBLENBQ0Esb0JBQUEsQ0FDQSw0QkFBQSxDQUNBLHVDQUFBLENBQ0EsdUNBQUEsQ0FDQSw0QkFBQSxDQUNBLDRCQUFBLENBQ0EseUJBQUEsQ0FDQSxnQ0FBQSxDQUNBLGdDQUFBLENBRUEsMEJBQUEsQ0FFQSwrQkFBQSxDQUNBLG1DQUFBLENBQ0EsMEJBQUEsQ0FDQSxzQkFBQSxDQUNBLHFDQUFBLENBQ0EsZ0NBQUEsQ0FDQSx3Q0FBQSxDQUVBLHVCQUNGLENBQUEsQ0FFSXlCLENBQUFBLEVBQWUsQ0FBQSxDQUNqQnpCLENBQUFBLENBQUssSUFBQSxDQUFLLGFBQUEsQ0FBZSxLQUFLLENBQUEsQ0FFOUJBLENBQUFBLENBQUssSUFBQSxDQUFLLGFBQWEsQ0FBQSxDQUd6QixJQUFNc0csQ0FBQUEsQ0FBVyxDQUFDLGtCQUFrQixDQUFBLENBR3BDLEdBQUksRUFEYyxDQUFDRCxDQUFBQSxFQUFjWCxFQUFBQSxDQUFXLEtBQUEsQ0FBQSxDQUUxQzFGLENBQUFBLENBQUssSUFBQSxDQUFLLHVCQUFBLENBQXlCLDJCQUEyQixDQUFBLENBQUEsS0FDekQsQ0FDTEEsQ0FBQUEsQ0FBSyxJQUFBLENBQUsscUJBQUEsQ0FBdUIsc0JBQXNCLENBQUEsQ0FDdkQsSUFBTXVHLENBQUFBLENBQU9DLFFBQUFBLEVBQVMsQ0FDbEJELENBQUFBLEdBQVMsUUFBQSxDQUNYdkcsQ0FBQUEsQ0FBSyxJQUFBLENBQUssaUJBQWlCLENBQUEsQ0FDbEJ1RyxDQUFBQSxHQUFTLE9BQUEsQ0FDbEJ2RyxDQUFBQSxDQUFLLElBQUEsQ0FBSyxpQkFBaUIsR0FFM0JBLENBQUFBLENBQUssSUFBQSxDQUFLLGtCQUFBLENBQW9CLHdCQUF3QixDQUFBLENBQ3REc0csQ0FBQUEsQ0FBUyxJQUFBLENBQUssUUFBUSxDQUFBLEVBRTFCLENBRUEsT0FBQXRHLENBQUFBLENBQUssSUFBQSxDQUFLLENBQUEsZ0JBQUEsRUFBbUJzRyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FDMUN0RyxDQUNULENDdEVPLElBQU15RyxDQUFBQSxDQUFlLGlCQUFBLENBRXJCLFNBQVNDLEVBQUFBLEVBQVEsQ0FDdEIsSUFBTUMsQ0FBQUEsQ0FBTyxPQUFBLENBQVEsSUFBQSxDQUNqQkMsQ0FBQUEsQ0FBT0QsQ0FBQUEsQ0FBSyxJQUFBLENBQU1FLENBQUFBLEVBQVFBLENBQUFBLENBQUksVUFBQSxDQUFXSixDQUFZLENBQUMsQ0FBQSxDQUMxRCxHQUFJLENBQUNHLENBQUFBLENBQ0gsT0FBQXJDLENBQUFBLENBQU8sS0FBQSxDQUFNLFVBQUEsQ0FBWW9DLENBQUksQ0FBQSxDQUN0QixPQUFBLENBQVEsSUFBQSxDQUVqQixJQUFNaEcsQ0FBQUEsQ0FBTyxDQUFDLE1BQUEsQ0FBUSxHQUFHZ0csQ0FBQUEsQ0FBSyxLQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FDdkMsT0FBQUMsQ0FBQUEsQ0FBTyxNQUFBLENBQU8sSUFBQSxDQUFLQSxDQUFBQSxDQUFLLEtBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRSxRQUFBLEVBQVMsQ0FDM0RqRyxDQUFBQSxDQUFLLElBQUEsQ0FBSyxHQUFHLElBQUEsQ0FBSyxLQUFBLENBQU1pRyxDQUFJLENBQUMsQ0FBQSxDQUM3QnJDLENBQUFBLENBQU8sS0FBQSxDQUFNLFNBQUEsQ0FBVzVELENBQUksQ0FBQSxDQUNyQkEsQ0FDVCxDQVNPLFNBQVNtRyxFQUFBQSxDQUFLQyxDQUFBQSxDQUFhQyxDQUFBQSxDQUF1QyxDQUN2RSxJQUFNQyxDQUFBQSxDQUFRRixDQUFBQSxDQUFJLEtBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBRSxNQUFBLENBQVF6RixDQUFBQSxFQUFNQSxDQUFBQSxDQUFFLE1BQU0sQ0FBQSxDQUM3QyxDQUFDNEYsQ0FBQUEsQ0FBUyxHQUFHdkcsQ0FBSSxDQUFBLENBQUlzRyxDQUFBQSxDQUMzQixHQUFJLENBQUNDLENBQUFBLENBQ0gsTUFBTSxJQUFJLEtBQUEsQ0FBTSxlQUFlLENBQUEsQ0FFakMsSUFBTXhELENBQUFBLENBQU95RCxLQUFBQSxDQUFNRCxDQUFBQSxDQUFTdkcsQ0FBQUEsQ0FBTSxDQUNoQyxLQUFBLENBQU8sU0FBQSxDQUNQLEdBQUdxRyxDQUNMLENBQUMsQ0FBQSxDQUNHSSxDQUFBQSxDQUFTLEtBQUEsQ0FDYixPQUFPLENBQ0wsT0FBQSxDQUFTMUQsQ0FBQUEsQ0FDVCxJQUFBLENBQU1hLENBQUFBLENBQU8sTUFBQSxDQUFPYixDQUFBQSxDQUFNd0QsQ0FBTyxDQUFBLENBQ2pDLElBQUksTUFBQSxFQUFTLENBQ1gsT0FBT0UsQ0FDVCxDQUFBLENBQ0EsSUFBQSxFQUFPLENBQ0wsR0FBSUEsQ0FBQUEsQ0FDRixPQUVGQSxDQUFBQSxDQUFTLElBQUEsQ0FDVCxJQUFNQyxDQUFBQSxDQUFNM0QsQ0FBQUEsQ0FBSyxHQUFBLENBQ2IyRCxDQUFBQSxDQUNGQyxFQUFBQSxDQUFTRCxDQUFBQSxDQUFLLFNBQVMsQ0FBQSxDQUV2QjNELENBQUFBLENBQUssSUFBQSxDQUFLLFNBQVMsRUFFdkIsQ0FDRixDQUNGLENDaERBLGVBQXNCNkQsRUFBQUEsQ0FBYWxCLENBQUFBLENBQXFCLENBQ3RELE9BQU8sQ0FBQyxHQUFJLE1BQU1ELEVBQUFBLENBQWdCQyxDQUFVLENBQUEsQ0FBSSxjQUFjLENBQ2hFLENBRUEsSUFBTVosRUFBQUEsQ0FBTSxZQUFBLENBTVosZUFBc0IrQixFQUFBQSxDQUFlLENBQUUsSUFBQSxDQUFBN0csQ0FBSyxDQUFBLENBQTBCLENBRXBFLEdBQU0sQ0FBRSxPQUFBLENBQVM4RyxDQUFTLENBQUEsQ0FBSSxNQUFNLE9BQU8sVUFBVSxDQUFBLENBQy9DekgsQ0FBQUEsQ0FBTyxNQUFNdUgsRUFBQUEsQ0FBYTVHLENBQUFBLENBQUssUUFBQSxDQUFTLGVBQWUsQ0FBQyxDQUFBLENBRXhEK0csQ0FBQUEsQ0FBYSxNQUFNQyxPQUFBQSxDQUFROUYsSUFBQUEsQ0FBSytGLE1BQUFBLEVBQU8sQ0FBRyxjQUFjLENBQUMsQ0FBQSxDQUN6REMsQ0FBQUEsQ0FBZTdILENBQUFBLENBQUssR0FBQSxDQUFLOEgsQ0FBQUEsRUFBTSxDQUFBLEVBQUEsRUFBS0EsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUM3Q0QsQ0FBQUEsQ0FBYSxJQUFBLENBQUssQ0FBQSxnQkFBQSxFQUFtQkgsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUNqREcsQ0FBQUEsQ0FBYSxJQUFBLENBQUssQ0FBQSxFQUFHcEIsQ0FBWSxDQUFBLENBQUEsRUFBSSxNQUFBLENBQU8sSUFBQSxDQUFLLElBQUEsQ0FBSyxTQUFBLENBQVU5RixDQUFJLENBQUMsQ0FBQSxDQUFFLFNBQVMsUUFBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQzNGLElBQU1vRyxDQUFBQSxDQUFNLENBQUNVLENBQUFBLENBQVUsR0FBR0ksQ0FBQUEsQ0FBY2pHLEVBQU0sQ0FBQSxDQUFFLElBQUEsQ0FBSyxHQUFHLENBQUEsQ0FDeEQyQyxDQUFBQSxDQUFPLEtBQUEsQ0FBTWtCLEVBQUFBLENBQUtzQixDQUFHLENBQUEsQ0FFckIsSUFBTWdCLENBQUFBLENBQXlCLENBQUUsR0FBRyxPQUFBLENBQVEsR0FBQSxDQUFLLGNBQUEsQ0FBZ0IsTUFBTyxDQUFBLENBQ2xFQyxDQUFBQSxDQUFTbEIsRUFBQUEsQ0FBS0MsQ0FBQUEsQ0FBSyxDQUFFLEtBQUEsQ0FBTyxDQUFDLFFBQUEsQ0FBVSxNQUFBLENBQVEsTUFBQSxDQUFRLEtBQUssQ0FBQSxDQUFHLEdBQUEsQ0FBQWdCLENBQUksQ0FBQyxDQUFBLENBQzFFLE9BQUFDLENBQUFBLENBQU8sT0FBQSxDQUFRLElBQUEsQ0FBSyxNQUFBLENBQVEsSUFBTSxDQUNoQyxHQUFJLENBQ0ZDLE1BQUFBLENBQU9QLENBQUFBLENBQVksQ0FBRSxTQUFBLENBQVcsQ0FBQSxDQUFBLENBQU0sS0FBQSxDQUFPLENBQUEsQ0FBSyxDQUFDLEVBQ3JELENBQUEsTUFBU1EsQ0FBQUEsQ0FBRyxDQUNWM0QsQ0FBQUEsQ0FBTyxJQUFBLENBQUtrQixFQUFBQSxDQUFLLHlCQUFBLENBQTJCeUMsQ0FBQyxFQUMvQyxDQUNGLENBQUMsQ0FBQSxDQUNNRixDQUNULENDdENBLElBQU1HLENBQUFBLENBQXNCLENBQUMsT0FBQSxDQUFTLE9BQUEsQ0FBUyxRQUFBLENBQVUsT0FBTyxDQUFBLENBQzFEQyxFQUFBQSxDQUFpQix3QkFBQSxDQUVoQixTQUFTQyxFQUFBQSxDQUFVQyxDQUFBQSxDQUFzQixDQUM5QyxHQUFJLENBQUNGLEVBQUFBLENBQWUsSUFBQSxDQUFLRSxDQUFNLENBQUEsQ0FBRyxDQUNoQyxJQUFNQyxDQUFBQSxDQUFXLENBQUEsRUFBR0QsQ0FBQUEsQ0FBTyxLQUFBLENBQU0sR0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQ2xDN0UsQ0FBQUEsQ0FBVTBFLENBQUFBLENBQW9CLFFBQUEsQ0FBU0ksQ0FBUSxDQUFBLENBQ2pELENBQUEsc0JBQUEsRUFBeUJBLENBQVEsQ0FBQSxXQUFBLEVBQWNKLENBQUFBLENBQW9CLElBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQzdFLENBQUEsZ0NBQUEsRUFBbUNBLEVBQW9CLElBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQ3JFLE1BQU0sSUFBSSxLQUFBLENBQU0xRSxDQUFPLENBQ3pCLENBR0EsR0FBSTZFLENBQUFBLENBQU8sVUFBQSxDQUFXLE9BQU8sQ0FBQSxFQUFLLENBQUNFLFVBQUFBLENBQVdDLGFBQUFBLENBQWNILENBQU0sQ0FBQyxDQUFBLENBQ2pFLE1BQU0sSUFBSSxLQUFBLENBQU0sQ0FBQSx1QkFBQSxFQUEwQkEsQ0FBTSxDQUFBLENBQUUsQ0FFdEQsQ0NpRU8sSUFBTUksQ0FBQUEsQ0FBTixjQUF3QkMsWUFBd0IsQ0FDckQsV0FBQSxDQUFZQyxDQUFBQSxDQUFxQixDQUMvQixLQUFBLEVBQU0sQ0FDTkEsQ0FBQUEsQ0FBTSxFQUFBLENBQUcsU0FBQSxDQUFZQyxDQUFBQSxFQUFRLENBQzNCLElBQU1yRyxDQUFBQSxDQUFNcUcsQ0FBQUEsQ0FDWixPQUFRckcsQ0FBQUEsQ0FBSSxJQUFBLEVBQ1YsS0FBSyxTQUFBLENBQW9CLENBQ3ZCLElBQUEsQ0FBSyxJQUFBLENBQUssU0FBQSxDQUFXQSxDQUFBQSxDQUFJLEtBQUEsQ0FBT0EsQ0FBQUEsQ0FBSSxPQUFPLENBQUEsQ0FDM0MsS0FDRixDQUNBLEtBQUssVUFBQSxDQUFxQixDQUN4QixJQUFBLENBQUssSUFBQSxDQUFLLFVBQUEsQ0FBWUEsQ0FBQUEsQ0FBSSxLQUFLLENBQUEsQ0FDL0IsS0FDRixDQUNBLEtBQUssTUFBQSxDQUFpQixDQUNwQixJQUFBLENBQUssSUFBQSxDQUFLLE1BQUEsQ0FBUUEsQ0FBQUEsQ0FBSSxPQUFPLENBQUEsQ0FDN0IsS0FDRixDQUNBLEtBQUssT0FBQSxDQUFrQixDQUNyQixJQUFBLENBQUssSUFBQSxDQUFLLE9BQUEsQ0FBUyxJQUFJLEtBQUEsQ0FBTUEsQ0FBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUN2QyxLQUNGLENBQ0YsQ0FDRixDQUFDLENBQUEsQ0FDRG9HLENBQUFBLENBQU0sSUFBQSxDQUFLLE1BQUEsQ0FBU0UsQ0FBQUEsRUFBTSxJQUFBLENBQUssSUFBQSxDQUFLLE9BQUEsQ0FBU0EsQ0FBQyxDQUFDLEVBQ2pELENBQ0YsQ0FBQSxDQ2xHQSxJQUFNckQsQ0FBQUEsQ0FBTSxPQUFBLENBVVosZUFBZXNELEVBQUFBLENBQVVULENBQUFBLENBQWdCVSxDQUFBQSxDQUF1QixDQUM5RHpFLENBQUFBLENBQU8sTUFBTWtCLENBQUFBLENBQUssV0FBQSxDQUFhNkMsQ0FBQUEsQ0FBUVUsQ0FBTSxDQUFBLENBRTdDLElBQU1ySSxDQUFBQSxDQUFpQixDQUNyQjJILENBQUFBLENBQ0EsU0FBQSxDQUNBLENBQUEsRUFBR1UsQ0FBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUNmLFVBQUEsQ0FDQSxDQUFBLEVBQUdBLENBQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FDaEIsT0FBQSxDQUNBLENBQUEsRUFBR0EsQ0FBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUNiLFlBQUEsQ0FDQSxDQUFBLEVBQUdBLENBQUFBLENBQU8sUUFBUSxDQUFBLENBQUEsQ0FDbEIsa0JBQUEsQ0FDQSxDQUFBLEVBQUdBLENBQUFBLENBQU8sYUFBYSxDQUFBLENBQUEsQ0FDdkIsWUFBQSxDQUNBQSxDQUFBQSxDQUFPLFFBQUEsQ0FBUyxJQUFBLENBQUssR0FBRyxDQUMxQixDQUFBLENBQ0EsT0FBSUEsQ0FBQUEsQ0FBTyxTQUFBLEVBQ1RySSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxjQUFjLENBQUEsQ0FFdEJxSSxDQUFBQSxDQUFPLGFBQUEsRUFDVHJJLENBQUFBLENBQUssSUFBQSxDQUFLLG1CQUFtQixDQUFBLENBRTNCcUksQ0FBQUEsQ0FBTyxhQUFBLEVBQ1RySSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxpQkFBaUIsQ0FBQSxDQUV6QnFJLENBQUFBLENBQU8sVUFBQSxFQUNUckksQ0FBQUEsQ0FBSyxJQUFBLENBQUssZUFBZSxDQUFBLENBRXZCcUksQ0FBQUEsQ0FBTyxjQUFBLEVBQ1RySSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxvQkFBb0IsQ0FBQSxDQUU1QnFJLENBQUFBLENBQU8sY0FBQSxFQUNUckksQ0FBQUEsQ0FBSyxJQUFBLENBQUssbUJBQW1CLENBQUEsQ0FFM0JxSSxDQUFBQSxDQUFPLFdBQUEsQ0FBWSxNQUFBLENBQVMsQ0FBQSxFQUM5QnJJLENBQUFBLENBQUssSUFBQSxDQUFLLGVBQUEsQ0FBaUJxSSxDQUFBQSxDQUFPLFdBQUEsQ0FBWSxJQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FHbER4QixFQUFBQSxDQUFlLENBQUUsSUFBQSxDQUFBN0csQ0FBSyxDQUFDLENBQ2hDLENBRUEsSUFBTXNJLENBQUFBLENBQUkzRCxFQUFBQSxDQUVWLGVBQXNCNEQsRUFBQUEsQ0FBSVosQ0FBQUEsQ0FBZ0J0QixDQUFBQSxDQUFrRCxDQUMxRnpDLENBQUFBLENBQU8sS0FBQSxDQUFNa0IsQ0FBQUEsQ0FBSyxLQUFBLENBQU82QyxDQUFBQSxDQUFRdEIsQ0FBTyxDQUFBLENBRXhDLEdBQU0sQ0FBRSxNQUFBLENBQUE5QyxDQUFPLENBQUEsQ0FBSThDLENBQUFBLENBQ25COUMsQ0FBQUEsRUFBUSxjQUFBLEVBQWUsQ0FDdkJtRSxFQUFBQSxDQUFVQyxDQUFNLENBQUEsQ0FFaEIsSUFBTWEsQ0FBQUEsQ0FBV25DLENBQUFBLENBQVEsVUFBWWlDLENBQUFBLENBQUUsUUFBQSxDQUNqQ0csQ0FBQUEsQ0FBNEIsQ0FDaEMsS0FBQSxDQUFPcEMsQ0FBQUEsQ0FBUSxLQUFBLEVBQVNpQyxDQUFBQSxDQUFFLEtBQUEsQ0FDMUIsTUFBQSxDQUFRakMsQ0FBQUEsQ0FBUSxNQUFBLEVBQVVpQyxDQUFBQSxDQUFFLE1BQUEsQ0FDNUIsR0FBQSxDQUFLakMsQ0FBQUEsQ0FBUSxHQUFBLEVBQU9pQyxDQUFBQSxDQUFFLEdBQUEsQ0FDdEIsUUFBQSxDQUFVakMsQ0FBQUEsQ0FBUSxRQUFBLEVBQVlpQyxDQUFBQSxDQUFFLFFBQUEsQ0FDaEMsU0FBQSxDQUFXakMsQ0FBQUEsQ0FBUSxTQUFBLEVBQWFpQyxDQUFBQSxDQUFFLFNBQUEsQ0FDbEMsYUFBQSxDQUFlakMsQ0FBQUEsQ0FBUSxhQUFBLEVBQWlCaUMsQ0FBQUEsQ0FBRSxhQUFBLENBQzFDLGFBQUEsQ0FBZWpDLENBQUFBLENBQVEsYUFBQSxFQUFpQmlDLENBQUFBLENBQUUsYUFBQSxDQUMxQyxVQUFBLENBQVlqQyxDQUFBQSxDQUFRLFVBQUEsRUFBY2lDLENBQUFBLENBQUUsVUFBQSxDQUNwQyxjQUFBLENBQWdCakMsQ0FBQUEsQ0FBUSxjQUFBLEVBQWtCaUMsQ0FBQUEsQ0FBRSxjQUFBLENBQzVDLGNBQUEsQ0FBZ0JqQyxDQUFBQSxDQUFRLGNBQUEsRUFBa0JpQyxDQUFBQSxDQUFFLGNBQUEsQ0FDNUMsYUFBQSxDQUFlakMsQ0FBQUEsQ0FBUSxhQUFBLEVBQWlCaUMsQ0FBQUEsQ0FBRSxhQUFBLENBQzFDLFdBQUEsQ0FBYWpDLENBQUFBLENBQVEsV0FBQSxFQUFlaUMsQ0FBQUEsQ0FBRSxXQUFBLENBQ3RDLFFBQUEsQ0FBQUUsQ0FDRixDQUFBLENBRU1FLENBQUFBLENBQUssV0FBQSxDQUFZLEdBQUEsRUFBSSxDQUN2QkMsQ0FBQUEsQ0FBVyxDQUFBLENBQ1RDLENBQUFBLENBQVFDLENBQUFBLEVBQWMsQ0FDMUJGLENBQUFBLENBQVdFLENBQUFBLENBQ1h4QyxDQUFBQSxDQUFRLFVBQUEsR0FBYXdDLENBQUMsRUFDeEIsQ0FBQSxDQUVNeEIsQ0FBQUEsQ0FBUyxNQUFNZSxFQUFBQSxDQUFVVCxDQUFBQSxDQUFRYyxDQUFVLENBQUEsQ0FFN0NLLENBQUFBLENBQ0VDLENBQUFBLENBQVUsSUFBTSxDQUNwQjFCLENBQUFBLENBQU8sT0FBQSxDQUFRLElBQUEsR0FBTyxDQUFFLElBQUEsQ0FBQSxRQUFBLENBQXlCLE1BQUEsQ0FBUSxNQUFBLENBQU85RCxDQUFBQSxFQUFRLE1BQUEsRUFBVSxPQUFPLENBQUUsQ0FBQyxDQUFBLENBQzVGdUYsQ0FBQUEsQ0FBWSxVQUFBLENBQVcsSUFBTXpCLENBQUFBLENBQU8sSUFBQSxFQUFLLENBQUcsR0FBSyxFQUNuRCxDQUFBLENBQ0E5RCxDQUFBQSxFQUFRLGdCQUFBLENBQWlCLE9BQUEsQ0FBU3dGLENBQUFBLENBQVMsQ0FBRSxJQUFBLENBQU0sSUFBSyxDQUFDLENBQUEsQ0FFekQsR0FBSSxDQUNGLElBQU0zRCxDQUFBQSxDQUFTLElBQUksT0FBQSxDQUF3QixDQUFDcEMsQ0FBQUEsQ0FBU0MsQ0FBQUEsR0FBVyxDQUM5RCxJQUFJOEUsQ0FBQUEsQ0FBVVYsQ0FBQUEsQ0FBTyxPQUFPLENBQUEsQ0FDekIsRUFBQSxDQUFHLE9BQUEsQ0FBVS9ELENBQUFBLEVBQVMsQ0FDckIsSUFBTXpCLENBQUFBLENBQU0sSUFBQSxDQUFLLFNBQUEsQ0FBVSxDQUFFLE1BQUEsQ0FBQThGLENBQUFBLENBQVEsUUFBQSxDQUFBZ0IsQ0FBQUEsQ0FBVSxJQUFBLENBQUFyRixDQUFBQSxDQUFNLE1BQUEsQ0FBUStELENBQUFBLENBQU8sTUFBTyxDQUFDLENBQUEsQ0FDNUVwRSxDQUFBQSxDQUFPLElBQUksS0FBQSxDQUFNLENBQUEsU0FBQSxFQUFZcEIsQ0FBRyxDQUFBLENBQUUsQ0FBQyxFQUNyQyxDQUFDLENBQUEsQ0FDQSxFQUFBLENBQUcsVUFBQSxDQUFZK0csQ0FBSSxDQUFBLENBQ25CLEVBQUEsQ0FBRyxTQUFBLENBQVcsQ0FBQ0ksQ0FBQUEsQ0FBR0MsQ0FBQUEsR0FBTTVDLENBQUFBLENBQVEsU0FBQSxHQUFZMkMsQ0FBQUEsQ0FBR0MsQ0FBQyxDQUFDLENBQUEsQ0FDakQsRUFBQSxDQUFHLE1BQUEsQ0FBUWpHLENBQU8sQ0FBQSxDQUNsQixFQUFBLENBQUcsT0FBQSxDQUFTQyxDQUFNLEVBQ3ZCLENBQUMsRUFDRDJGLENBQUFBLENBQUssQ0FBQyxDQUFBLENBQ04sR0FBTSxDQUFDTSxDQUFPLENBQUEsQ0FBSSxNQUFNLE9BQUEsQ0FBUSxHQUFBLENBQUksQ0FBQzlELENBQUFBLENBQVFpQyxDQUFBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQ3pELE9BQUF1QixDQUFBQSxDQUFLLEdBQUcsQ0FBQSxDQUNSaEYsQ0FBQUEsQ0FBTyxLQUFBLENBQU1rQixDQUFBQSxDQUFLLENBQUEsS0FBQSxFQUFRMEQsQ0FBQUEsQ0FBUyxJQUFBLENBQUssR0FBRyxDQUFDLENBQUEsSUFBQSxFQUFPLElBQUEsQ0FBSyxLQUFBLENBQU0sV0FBQSxDQUFZLEdBQUEsRUFBSSxDQUFJRSxDQUFFLENBQUMsQ0FBQSxFQUFBLENBQUksQ0FBQSxDQUNsRixDQUFFLEdBQUdRLENBQUFBLENBQVMsT0FBQSxDQUFTVCxDQUFXLENBQzNDLENBQUEsTUFBU2xCLENBQUFBLENBQUcsQ0FDVixNQUFBRixDQUFBQSxDQUFPLElBQUEsRUFBSyxDQUNaOUQsQ0FBQUEsRUFBUSxjQUFBLEVBQWUsQ0FDakJnRSxDQUNSLENBQUEsT0FBRSxDQUNBLFlBQUEsQ0FBYXVCLENBQVMsQ0FBQSxDQUN0QnZGLENBQUFBLEVBQVEsbUJBQUEsQ0FBb0IsT0FBQSxDQUFTd0YsQ0FBTyxFQUM5QyxDQUNGIiwiZmlsZSI6ImNodW5rLUVPRUpYWUpSLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNS8yNi5cblxuaW1wb3J0IHR5cGUgeyBMb2dnZXJMaWtlIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5jb25zdCBCQVJfV0lEVEggPSA0MDtcblxuaW50ZXJmYWNlIEJhck9wdGlvbnMge1xuICB0b3RhbDogbnVtYmVyO1xuICBvdXQ6IE5vZGVKUy5Xcml0ZVN0cmVhbTtcbiAgc2hvd0NvdW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQmFyIHtcbiAgcHJpdmF0ZSBfd3JpdHRlbiA9IDA7XG4gIHByaXZhdGUgX3Nob3duID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RvdGFsOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX291dDogTm9kZUpTLldyaXRlU3RyZWFtO1xuICBwcml2YXRlIHJlYWRvbmx5IF90dHk6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3dDb3VudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRzOiBCYXJPcHRpb25zKSB7XG4gICAgdGhpcy5fdG90YWwgPSBvcHRzLnRvdGFsO1xuICAgIHRoaXMuX291dCA9IG9wdHMub3V0O1xuICAgIHRoaXMuX3R0eSA9ICEhb3B0cy5vdXQuaXNUVFk7XG4gICAgdGhpcy5fc2hvd0NvdW50ID0gb3B0cy5zaG93Q291bnQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgdG90YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWw7XG4gIH1cblxuICB1cGRhdGUod3JpdHRlbjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fd3JpdHRlbiA9IE1hdGgubWluKHRoaXMuX3RvdGFsLCBNYXRoLm1heCgwLCB3cml0dGVuKSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHVwZGF0ZVBlcmNlbnQocGN0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZShNYXRoLnJvdW5kKChwY3QgLyAxMDApICogdGhpcy5fdG90YWwpKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90dHkgJiYgdGhpcy5fc2hvd24pIHtcbiAgICAgIHRoaXMuX291dC53cml0ZShcIlxcclxceDFiWzJLXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJlZHJhdygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbG9nKGxpbmU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLl9vdXQud3JpdGUoYCR7bGluZX1cXG5gKTtcbiAgICB0aGlzLnJlZHJhdygpO1xuICB9XG5cbiAgZmluaXNoKGxpbmU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLl9vdXQud3JpdGUoYCR7bGluZX1cXG5gKTtcbiAgICB0aGlzLl9zaG93biA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90dHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dyaXR0ZW4gPT09IDAgJiYgIXRoaXMuX3Nob3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJhdGlvID0gdGhpcy5fdG90YWwgPiAwID8gdGhpcy5fd3JpdHRlbiAvIHRoaXMuX3RvdGFsIDogMDtcbiAgICBjb25zdCBmaWxsZWQgPSBNYXRoLnJvdW5kKHJhdGlvICogQkFSX1dJRFRIKTtcbiAgICBjb25zdCBiYXIgPSBcIiNcIi5yZXBlYXQoZmlsbGVkKSArIFwiLVwiLnJlcGVhdChCQVJfV0lEVEggLSBmaWxsZWQpO1xuICAgIGNvbnN0IHBjdCA9IE1hdGgucm91bmQocmF0aW8gKiAxMDApO1xuICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuX3Nob3dDb3VudCA/IGAke3RoaXMuX3dyaXR0ZW59LyR7dGhpcy5fdG90YWx9ICgke3BjdH0lKWAgOiBgJHtwY3R9JWA7XG4gICAgdGhpcy5fb3V0LndyaXRlKGBcXHJbJHtiYXJ9XSAke3N1ZmZpeH1gKTtcbiAgICB0aGlzLl9zaG93biA9IHRydWU7XG4gIH1cbn1cblxuLy8gQXJvdW5kIGVhY2ggY29uc29sZS4qIGNhbGwsIGNsZWFyIHRoZSBiYXIgbGluZSB0aGVuIHJlZHJhdyDigJQga2VlcHMgbmF0aXZlIGNvbnNvbGUgY29sb3JpbmcgaW50YWN0LlxuZXhwb3J0IGZ1bmN0aW9uIGJhckxvZ2dlcihiYXI6IFByb2dyZXNzQmFyKTogTG9nZ2VyTGlrZSB7XG4gIGNvbnN0IHdyYXAgPVxuICAgIDxUIGV4dGVuZHMgKC4uLmE6IHVua25vd25bXSkgPT4gdm9pZD4oZm46IFQpID0+XG4gICAgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgYmFyLmNsZWFyKCk7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICAgIGJhci5yZWRyYXcoKTtcbiAgICB9O1xuICByZXR1cm4ge1xuICAgIGRlYnVnOiB3cmFwKGNvbnNvbGUuZGVidWcpLFxuICAgIGluZm86IHdyYXAoY29uc29sZS5pbmZvKSxcbiAgICB3YXJuOiB3cmFwKGNvbnNvbGUud2FybiksXG4gICAgZXJyb3I6IHdyYXAoY29uc29sZS5lcnJvciksXG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI1LlxuXG5leHBvcnQgdHlwZSBFbnZQYXJzZXI8VD4gPSAodmFsdWU6IHVua25vd24pID0+IFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZTogVCk6IFQ7XG5leHBvcnQgZnVuY3Rpb24gcGVudjxUPihuYW1lOiBzdHJpbmcsIHBhcnNlcjogRW52UGFyc2VyPFQ+LCBkZWZhdWx0VmFsdWU/OiBUKTogVCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VyKHByb2Nlc3MuZW52W25hbWVdKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtYmVyKHg6IHVua25vd24pOiBudW1iZXIge1xuICBpZiAodHlwZW9mIHggPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4geDtcbiAgfVxuICBjb25zdCBudW0gPSBOdW1iZXIoeCk7XG4gIGlmIChOdW1iZXIuaXNOYU4obnVtKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgJHt4fSBpcyBub3QgYSB2YWxpZCBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gbnVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdHJpbmcoeDogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB4O1xuICB9XG4gIHJldHVybiBTdHJpbmcoeCk7XG59XG5cbi8vIENvbW1hLXNlcGFyYXRlZCBzdHJpbmcg4oaSIGFycmF5IHZpYSBhIHBlci1pdGVtIHBhcnNlcjsgZW1wdHkvYmxhbmsg4oaSIFtdLlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJyYXk8VD4oaXRlbTogKHg6IHVua25vd24pID0+IFQpOiAoeDogdW5rbm93bikgPT4gVFtdIHtcbiAgcmV0dXJuICh4KSA9PiB7XG4gICAgaWYgKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiIHx8IHgudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB4LnNwbGl0KFwiLFwiKS5tYXAoKHMpID0+IGl0ZW0ocy50cmltKCkpKTtcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwZW52IH0gZnJvbSBcIi4vZW52XCI7XG5pbXBvcnQgeyBwYXJzZU51bWJlciB9IGZyb20gXCIuL3BhcnNlclwiO1xuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG5leHBvcnQgY29uc3QgcHVwTG9nTGV2ZWwgPSBwZW52KFwiUFVQX0xPR19MRVZFTFwiLCBwYXJzZU51bWJlciwgMik7XG5cbmV4cG9ydCBjb25zdCBwdXBQa2dSb290ID0gZGlybmFtZShyZXF1aXJlLnJlc29sdmUoXCJwdXAtcmVjb3JkZXIvcGFja2FnZS5qc29uXCIpKTtcbmV4cG9ydCBjb25zdCBwdXBBcHAgPSBqb2luKHB1cFBrZ1Jvb3QsIFwiZGlzdFwiLCBcImFwcC5janNcIik7XG5leHBvcnQgY29uc3QgcHVwQXVkaW9QcmVsb2FkID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJydW50aW1lXCIsIFwiYXVkaW9fcHJlbG9hZC5janNcIik7XG5leHBvcnQgY29uc3QgcHVwU2hvb3RQcmVsb2FkID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJydW50aW1lXCIsIFwic2hvb3RfcHJlbG9hZC5janNcIik7XG5leHBvcnQgY29uc3QgcHVwUmVuZGVyUHJlbG9hZCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwicnVudGltZVwiLCBcInJlbmRlcl9wcmVsb2FkLmNqc1wiKTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgTG9nIH0gZnJvbSBcIm5vZGUtYXZcIjtcbmltcG9ydCB7IEFWX0xPR19FUlJPUiwgQVZfTE9HX1dBUk5JTkcgfSBmcm9tIFwibm9kZS1hdi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHB1cExvZ0xldmVsIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyTGlrZSB7XG4gIGRlYnVnPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBpbmZvPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICB3YXJuPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBlcnJvcj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG59XG5cbmNvbnN0IERFQlVHID0gXCI8cHVwQGRlYnVnPlwiO1xuY29uc3QgSU5GTyA9IFwiPHB1cEBpbmZvPlwiO1xuY29uc3QgV0FSTiA9IFwiPHB1cEB3YXJuPlwiO1xuY29uc3QgRVJST1IgPSBcIjxwdXBAZXJyb3I+XCI7XG5jb25zdCBGQVRBTCA9IFwiPHB1cEBmYXRhbD5cIjtcblxuZnVuY3Rpb24gc3RhY2tIb29rKHRhcmdldDogKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pID0+IHVua25vd24sIF9jb250ZXh0OiBDbGFzc01ldGhvZERlY29yYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBMb2dnZXIsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBtZXNzYWdlcy5tYXAoKG1zZykgPT4ge1xuICAgICAgcmV0dXJuIG1zZyBpbnN0YW5jZW9mIEVycm9yID8gKG1zZy5zdGFjayA/PyBTdHJpbmcobXNnKSkgOiBtc2c7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhcmdldC5jYWxsKHRoaXMsIC4uLnByb2Nlc3NlZCk7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXJMaWtlIHtcbiAgcHJpdmF0ZSBfaW1wbD86IExvZ2dlckxpa2U7XG5cbiAgZ2V0IGxldmVsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xldmVsO1xuICB9XG5cbiAgc2V0IGxldmVsKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sZXZlbCA9IHZhbHVlO1xuICAgIHRoaXMuaW1wbCA9IHRoaXMuX2ltcGwgPz8gY29uc29sZTtcbiAgfVxuXG4gIGdldCBpbXBsKCk6IExvZ2dlckxpa2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbXBsO1xuICB9XG5cbiAgc2V0IGltcGwodmFsdWU6IExvZ2dlckxpa2UpIHtcbiAgICBjb25zdCBkZWJ1ZyA9IHZhbHVlLmRlYnVnID8/IGNvbnNvbGUuZGVidWc7XG4gICAgY29uc3QgaW5mbyA9IHZhbHVlLmluZm8gPz8gY29uc29sZS5pbmZvO1xuICAgIGNvbnN0IHdhcm4gPSB2YWx1ZS53YXJuID8/IGNvbnNvbGUud2FybjtcbiAgICBjb25zdCBlcnJvciA9IHZhbHVlLmVycm9yID8/IGNvbnNvbGUuZXJyb3I7XG4gICAgY29uc3QgbHYgPSB0aGlzLl9sZXZlbDtcbiAgICB0aGlzLl9pbXBsID0ge1xuICAgICAgZGVidWc6IGx2ID49IDMgPyBkZWJ1ZyA6IHVuZGVmaW5lZCxcbiAgICAgIGluZm86IGx2ID49IDIgPyBpbmZvIDogdW5kZWZpbmVkLFxuICAgICAgd2FybjogbHYgPj0gMSA/IHdhcm4gOiB1bmRlZmluZWQsXG4gICAgICBlcnJvcjogbHYgPj0gMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sZXZlbDogbnVtYmVyID0gcHVwTG9nTGV2ZWwpIHtcbiAgICB0aGlzLmltcGwgPSBjb25zb2xlO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBkZWJ1ZyguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5kZWJ1Zz8uKERFQlVHLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGluZm8oLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uaW5mbz8uKElORk8sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgd2FybiguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy53YXJuPy4oV0FSTiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBlcnJvciguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5lcnJvcj8uKEVSUk9SLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGZhdGFsKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmVycm9yPy4oRkFUQUwsIC4uLm1lc3NhZ2VzKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IG1zZyA9IG1lc3NhZ2UudHJpbUVuZCgpO1xuICAgIGlmIChtc2cuc3RhcnRzV2l0aChERUJVRykpIHtcbiAgICAgIHRoaXMuZGVidWcobXNnLnNsaWNlKERFQlVHLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1zZy5zdGFydHNXaXRoKElORk8pKSB7XG4gICAgICB0aGlzLmluZm8obXNnLnNsaWNlKElORk8ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobXNnLnN0YXJ0c1dpdGgoV0FSTikpIHtcbiAgICAgIHRoaXMud2Fybihtc2cuc2xpY2UoV0FSTi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtc2cuc3RhcnRzV2l0aChFUlJPUikpIHtcbiAgICAgIHRoaXMuZXJyb3IobXNnLnNsaWNlKEVSUk9SLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmZvKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoKHByb2M6IENoaWxkUHJvY2VzcywgbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uYXR0YWNoYCk7XG4gICAgICBsZXQgZmF0YWw6IHN0cmluZyA9IFwiXCI7XG4gICAgICBjb25zdCBkaXNwYXRjaCA9IChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChGQVRBTCkpIHtcbiAgICAgICAgICBmYXRhbCArPSBtZXNzYWdlLnNsaWNlKEZBVEFMLmxlbmd0aCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBwcm9jLnN0ZGVycj8ub24oXCJkYXRhXCIsIGRpc3BhdGNoKTtcbiAgICAgIHByb2Muc3Rkb3V0Py5vbihcImRhdGFcIiwgZGlzcGF0Y2gpO1xuICAgICAgcHJvY1xuICAgICAgICAub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgZmF0YWwgKz0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgcHJvYy5raWxsKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbmNlKFwiY2xvc2VcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgIGlmIChjb2RlIHx8IHNpZ25hbCB8fCBmYXRhbCkge1xuICAgICAgICAgICAgZmF0YWwgfHw9IGBjb21tYW5kIGZhaWxlZDogJHtwcm9jLnNwYXduYXJncy5qb2luKFwiIFwiKX1gO1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWAsIHsgY29kZSwgc2lnbmFsLCBmYXRhbCB9KTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZmF0YWwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWApO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIChyZWFzb24pID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKGAke25hbWV9LnVuaGFuZGxlZGAsIHJlYXNvbik7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcihgJHtuYW1lfS51bmhhbmRsZWRgLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbi8vIFJvdXRlIGZmbXBlZyBuYXRpdmUgbG9ncyB0aHJvdWdoIHB1cCdzIGxvZ2dlci5cbkxvZy5zZXRDYWxsYmFjaygobGV2ZWwsIG1lc3NhZ2UpID0+IHtcbiAgY29uc3QgbXNnID0gbWVzc2FnZS50cmltRW5kKCk7XG4gIGlmICghbXNnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChsZXZlbCA8PSBBVl9MT0dfRVJST1IpIHtcbiAgICBsb2dnZXIuZXJyb3IobXNnKTtcbiAgfSBlbHNlIGlmIChsZXZlbCA8PSBBVl9MT0dfV0FSTklORykge1xuICAgIGxvZ2dlci53YXJuKG1zZyk7XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBsb2dnZXIgfTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjQuXG5cbmV4cG9ydCBmdW5jdGlvbiBub2VycjxBIGV4dGVuZHMgdW5rbm93bltdLCBSLCBEPihmbjogKC4uLmFyZ3M6IEEpID0+IFIsIGRlZmF1bHRWYWx1ZTogRCk6ICguLi5hcmdzOiBBKSA9PiBSIHwgRCB7XG4gIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBmbiguLi5hcmdzKTtcbiAgICAgIGlmIChyZXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiByZXQuY2F0Y2goKCkgPT4gZGVmYXVsdFZhbHVlKSBhcyBSIHwgRDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB6IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lEVEggPSAxOTIwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSEVJR0hUID0gMTA4MDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZQUyA9IDMwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRFVSQVRJT04gPSA1O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lORE9XX1RJTUVPVVQgPSAxMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVF9GSUxFUyA9IFtcIm91dC9odG1sLm1wNFwiLCBcIm91dC9odG1sLndlYm1cIl07XG5cbmV4cG9ydCBjb25zdCByZW5kZXJTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGR1cmF0aW9uOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiRHVyYXRpb24gaW4gc2Vjb25kc1wiKSxcbiAgd2lkdGg6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJWaWRlbyB3aWR0aFwiKSxcbiAgaGVpZ2h0OiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiVmlkZW8gaGVpZ2h0XCIpLFxuICBmcHM6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJGcmFtZXMgcGVyIHNlY29uZFwiKSxcbiAgd2l0aEF1ZGlvOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkNhcHR1cmUgYW5kIGVuY29kZSBhdWRpb1wiKSxcbiAgb3V0RmlsZXM6IHouYXJyYXkoei5zdHJpbmcoKSkuZGVzY3JpYmUoXCJPdXRwdXQgcGF0aHM7IGV4dGVuc2lvbiAoLm1wNC8ud2VibSkgc2VsZWN0cyBlbmNvZGVyXCIpLFxuICB1c2VJbm5lclByb3h5OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlVzZSBiaWxpYmlsaSBpbm5lciBwcm94eSBmb3IgcmVzb3VyY2UgYWNjZXNzXCIpLFxuICBkZXRlcm1pbmlzdGljOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlJlbmRlciBieSBmcmFtZSByYXRoZXIgdGhhbiByZWNvcmRpbmdcIiksXG4gIGRpc2FibGVHcHU6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRGlzYWJsZSBHUFUgcmVuZGVyaW5nLCBtYXkgcmVkdWNlIHBlcmZvcm1hbmNlIGJ1dCBpbmNyZWFzZSBzdGFiaWxpdHlcIiksXG4gIGRpc2FibGVId0NvZGVjOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkRpc2FibGUgaGFyZHdhcmUgdmlkZW8gZW5jb2RlciAoTlZFTkMvVmlkZW9Ub29sYm94KSwgdXNlIHNvZnR3YXJlIHgyNjVcIiksXG4gIHdpbmRvd1RvbGVyYW50OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkZhbGwgYmFjayB0byBkb20tcmVhZHkgaWYgd2FybXVwIGxvYWQgdGltZXMgb3V0XCIpLFxuICB3aW5kb3dUaW1lb3V0OiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiV2luZG93IGxvYWQgdGltZW91dCBpbiBzZWNvbmRzXCIpLFxuICBzY3JlZW5zaG90czogei5hcnJheSh6Lm51bWJlcigpKS5kZXNjcmliZShcIlNlY29uZCBtYXJrcyB0byBkdW1wIGZyYW1lIGJpdG1hcHMgYXMgUE5HXCIpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFJlbmRlck9wdGlvbnMgPSB6LmluZmVyPHR5cGVvZiByZW5kZXJTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBDb25zb2xlQ2FsbGJhY2sgPSAobGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBDUmVuZGVyT3B0aW9ucyBleHRlbmRzIFJlbmRlck9wdGlvbnMge1xuICBzb3VyY2U6IHN0cmluZztcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgb25Qcm9ncmVzczogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgb25Db25zb2xlOiBDb25zb2xlQ2FsbGJhY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IHtcbiAgb3B0aW9uczogUmVuZGVyT3B0aW9ucztcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBvdXRGaWxlczogc3RyaW5nW107XG4gIGJsYW5rOiBudW1iZXI7XG4gIGphbms6IG51bWJlcjtcbiAgc2NyZWVuc2hvdHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFJlbmRlck9wdGlvbnM6IFJlbmRlck9wdGlvbnMgPSB7XG4gIHdpZHRoOiBERUZBVUxUX1dJRFRILFxuICBoZWlnaHQ6IERFRkFVTFRfSEVJR0hULFxuICBmcHM6IERFRkFVTFRfRlBTLFxuICBkdXJhdGlvbjogREVGQVVMVF9EVVJBVElPTixcbiAgb3V0RmlsZXM6IERFRkFVTFRfT1VUX0ZJTEVTLFxuICB3aXRoQXVkaW86IGZhbHNlLFxuICB1c2VJbm5lclByb3h5OiBmYWxzZSxcbiAgZGV0ZXJtaW5pc3RpYzogZmFsc2UsXG4gIGRpc2FibGVHcHU6IGZhbHNlLFxuICBkaXNhYmxlSHdDb2RlYzogZmFsc2UsXG4gIHdpbmRvd1RvbGVyYW50OiBmYWxzZSxcbiAgd2luZG93VGltZW91dDogREVGQVVMVF9XSU5ET1dfVElNRU9VVCxcbiAgc2NyZWVuc2hvdHM6IFtdLFxufTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBjbGFzcyBMYXp5PFQ+IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbWFrZVZhbHVlOiAoKSA9PiBUKSB7fVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMubWFrZVZhbHVlKCk7XG4gICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl92YWx1ZSE7XG4gIH1cblxuICBnZXQgaW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCB1bmRlZmluZWQ7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI3LlxuXG5pbXBvcnQgeyBIYXJkd2FyZUNvbnRleHQgfSBmcm9tIFwibm9kZS1hdi9hcGlcIjtcbmltcG9ydCB7IExhenkgfSBmcm9tIFwiLi9sYXp5XCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmNvbnN0IFRBRyA9IFwiW0hXQWNjZWxdXCI7XG5cbi8vIExhenk6IGVhZ2VyIGF1dG8oKSBkbG9wZW5zIGxpYmN1ZGEgYXQgaW1wb3J0LCB3aG9zZSBpbml0IHRocmVhZCBjYW4gU0VHViBHUFUtbGVzcyBwb2RzICgyMDI2LTA3LTI0IGV4aXQtMTMyIHN0b3JtKS5cbmV4cG9ydCBjb25zdCBjYW5JVXNlR1BVID0gbmV3IExhenkoKCkgPT4ge1xuICB1c2luZyBodyA9IEhhcmR3YXJlQ29udGV4dC5hdXRvKCk7XG4gIGNvbnN0IHJlc3VsdCA9IGh3ICE9PSBudWxsO1xuICBsb2dnZXIuZGVidWcoVEFHLCBcImdwdTpcIiwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNC8wMy5cblxuaW1wb3J0IHsgcGxhdGZvcm0gfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgcHVwTG9nTGV2ZWwgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbklVc2VHUFUgfSBmcm9tIFwiLi9od2FjY2VsXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICBjb25zdCBvcHRzID0gW1xuICAgIC8vIOWuueWZqOaymeeusVxuICAgIFwibm8tc2FuZGJveFwiLFxuICAgIFwiZGlzYWJsZS1kZXYtc2htLXVzYWdlXCIsXG4gICAgLy8g6Leo5Z+fL+WuieWFqFxuICAgIFwiZGlzYWJsZS13ZWItc2VjdXJpdHlcIixcbiAgICBcImRpc2FibGUtc2l0ZS1pc29sYXRpb24tdHJpYWxzXCIsXG4gICAgXCJpZ25vcmUtY2VydGlmaWNhdGUtZXJyb3JzXCIsXG4gICAgLy8g5b2V5Yi26KGM5Li6XG4gICAgXCJkaXNhYmxlLWJsaW5rLWZlYXR1cmVzPUF1dG9tYXRpb25Db250cm9sbGVkXCIsXG4gICAgXCJtdXRlLWF1ZGlvXCIsXG4gICAgXCJhdXRvcGxheS1wb2xpY3k9bm8tdXNlci1nZXN0dXJlLXJlcXVpcmVkXCIsXG4gICAgXCJkaXNhYmxlLWV4dGVuc2lvbnNcIixcbiAgICBcImRlbnktcGVybWlzc2lvbi1wcm9tcHRzXCIsXG4gICAgXCJ1c2UtbW9jay1rZXljaGFpblwiLFxuICAgIC8vIOa4suafk1xuICAgIFwiZm9yY2UtZGV2aWNlLXNjYWxlLWZhY3Rvcj0xXCIsXG4gICAgXCJmb3JjZS1jb2xvci1wcm9maWxlPXNyZ2JcIixcbiAgICBcImlnbm9yZS1ncHUtYmxvY2tsaXN0XCIsXG4gICAgXCJ1c2UtZ2w9YW5nbGVcIixcbiAgICBcImRldGVybWluaXN0aWMtbW9kZVwiLFxuICAgIFwiZW5hYmxlLWJlZ2luLWZyYW1lLWNvbnRyb2xcIixcbiAgICBcImRpc2FibGUtbmV3LWNvbnRlbnQtcmVuZGVyaW5nLXRpbWVvdXRcIixcbiAgICBcInJ1bi1hbGwtY29tcG9zaXRvci1zdGFnZXMtYmVmb3JlLWRyYXdcIixcbiAgICBcImRpc2FibGUtdGhyZWFkZWQtYW5pbWF0aW9uXCIsXG4gICAgXCJkaXNhYmxlLXRocmVhZGVkLXNjcm9sbGluZ1wiLFxuICAgIFwiZGlzYWJsZS1jaGVja2VyLWltYWdpbmdcIixcbiAgICBcImRpc2FibGUtaW1hZ2UtYW5pbWF0aW9uLXJlc3luY1wiLFxuICAgIFwiZW5hYmxlLXN1cmZhY2Utc3luY2hyb25pemF0aW9uXCIsXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3B1cHBldGVlci9wdXBwZXRlZXIvaXNzdWVzLzI0MTBcbiAgICBcImZvbnQtcmVuZGVyLWhpbnRpbmc9bm9uZVwiLFxuICAgIC8vIOi1hOa6kOaOp+WItlxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLW5ldHdvcmtpbmdcIixcbiAgICBcImpzLWZsYWdzPS0tbWF4LW9sZC1zcGFjZS1zaXplPTUxMlwiLFxuICAgIFwicmVuZGVyZXItcHJvY2Vzcy1saW1pdD0xXCIsXG4gICAgXCJudW0tcmFzdGVyLXRocmVhZHM9MlwiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLXRpbWVyLXRocm90dGxpbmdcIixcbiAgICBcImRpc2FibGUtcmVuZGVyZXItYmFja2dyb3VuZGluZ1wiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kaW5nLW9jY2x1ZGVkLXdpbmRvd3NcIixcbiAgICAvLyDml6Xlv5fov73ouKpcbiAgICBcImVuYWJsZS1sb2dnaW5nPXN0ZGVyclwiLFxuICBdO1xuXG4gIGlmIChwdXBMb2dMZXZlbCA+PSAzKSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTBcIiwgXCJ2PTFcIik7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTNcIik7XG4gIH1cblxuICBjb25zdCBmZWF0dXJlcyA9IFtcIkZvbnRhdGlvbkJhY2tlbmRcIl07XG4gIC8vIGRpc2FibGVHcHUgZmlyc3Q6IGl0IHNob3J0LWNpcmN1aXRzIHBhc3QgdGhlIGxhenkgcHJvYmUsIHNvIGEgZGlzYWJsZWQgcG9kIG5ldmVyIGRsb3BlbnMgbGliY3VkYS5cbiAgY29uc3QgZW5hYmxlR3B1ID0gIWRpc2FibGVHcHUgJiYgY2FuSVVzZUdQVS52YWx1ZTtcbiAgaWYgKCFlbmFibGVHcHUpIHtcbiAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9c3dpZnRzaGFkZXJcIiwgXCJlbmFibGUtdW5zYWZlLXN3aWZ0c2hhZGVyXCIpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMucHVzaChcImRpc2FibGUtZ3B1LXNhbmRib3hcIiwgXCJlbmFibGUtdW5zYWZlLXdlYmdwdVwiKTtcbiAgICBjb25zdCBwbGF0ID0gcGxhdGZvcm0oKTtcbiAgICBpZiAocGxhdCA9PT0gXCJkYXJ3aW5cIikge1xuICAgICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPW1ldGFsXCIpO1xuICAgIH0gZWxzZSBpZiAocGxhdCA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9ZDNkMTFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT12dWxrYW5cIiwgXCJkaXNhYmxlLXZ1bGthbi1zdXJmYWNlXCIpO1xuICAgICAgZmVhdHVyZXMucHVzaChcIlZ1bGthblwiKTtcbiAgICB9XG4gIH1cblxuICBvcHRzLnB1c2goYGVuYWJsZS1mZWF0dXJlcz0ke2ZlYXR1cmVzLmpvaW4oXCIsXCIpfWApO1xuICByZXR1cm4gb3B0cztcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmltcG9ydCB7IHR5cGUgQ2hpbGRQcm9jZXNzLCB0eXBlIFNwYXduT3B0aW9ucywgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgdHJlZUtpbGwgZnJvbSBcInRyZWUta2lsbFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5leHBvcnQgY29uc3QgUFVQX0FSR1NfS0VZID0gXCItLXB1cC1wcml2LWFyZ3NcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmdzKCkge1xuICBjb25zdCBhcmd2ID0gcHJvY2Vzcy5hcmd2O1xuICBsZXQgcHJpdiA9IGFyZ3YuZmluZCgoYXJnKSA9PiBhcmcuc3RhcnRzV2l0aChQVVBfQVJHU19LRVkpKTtcbiAgaWYgKCFwcml2KSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwicHJvY2FyZ3ZcIiwgYXJndik7XG4gICAgcmV0dXJuIHByb2Nlc3MuYXJndjtcbiAgfVxuICBjb25zdCBhcmdzID0gW1wiZXhlY1wiLCAuLi5hcmd2LnNsaWNlKC0xKV07XG4gIHByaXYgPSBCdWZmZXIuZnJvbShwcml2LnNwbGl0KFwiPVwiKVsxXSEsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKCk7XG4gIGFyZ3MucHVzaCguLi5KU09OLnBhcnNlKHByaXYpKTtcbiAgbG9nZ2VyLmRlYnVnKFwicHVwYXJnc1wiLCBhcmdzKTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0hhbmRsZSB7XG4gIHByb2Nlc3M6IENoaWxkUHJvY2VzcztcbiAgd2FpdDogUHJvbWlzZTx2b2lkPjtcbiAgZ2V0IGtpbGxlZCgpOiBib29sZWFuO1xuICBraWxsKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNtZDogc3RyaW5nLCBvcHRpb25zPzogU3Bhd25PcHRpb25zKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IHBhcnRzID0gY21kLnNwbGl0KFwiIFwiKS5maWx0ZXIoKHMpID0+IHMubGVuZ3RoKTtcbiAgY29uc3QgW2NvbW1hbmQsIC4uLmFyZ3NdID0gcGFydHM7XG4gIGlmICghY29tbWFuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImVtcHR5IGNvbW1hbmRcIik7XG4gIH1cbiAgY29uc3QgcHJvYyA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHtcbiAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG4gIGxldCBraWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzOiBwcm9jLFxuICAgIHdhaXQ6IGxvZ2dlci5hdHRhY2gocHJvYywgY29tbWFuZCksXG4gICAgZ2V0IGtpbGxlZCgpIHtcbiAgICAgIHJldHVybiBraWxsZWQ7XG4gICAgfSxcbiAgICBraWxsKCkge1xuICAgICAgaWYgKGtpbGxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBraWxsZWQgPSB0cnVlO1xuICAgICAgY29uc3QgcGlkID0gcHJvYy5waWQ7XG4gICAgICBpZiAocGlkKSB7XG4gICAgICAgIHRyZWVLaWxsKHBpZCwgXCJTSUdLSUxMXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvYy5raWxsKFwiU0lHS0lMTFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgcm1TeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IG1rZHRlbXAgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBjaHJvbWl1bU9wdGlvbnMgfSBmcm9tIFwiLi4vYmFzZS9jaHJvbWl1bVwiO1xuaW1wb3J0IHsgcHVwQXBwIH0gZnJvbSBcIi4uL2Jhc2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjLCBQVVBfQVJHU19LRVkgfSBmcm9tIFwiLi4vYmFzZS9wcm9jZXNzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbGVjdHJvbk9wdHMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICByZXR1cm4gWy4uLihhd2FpdCBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdSkpLCBcImhlYWRsZXNzPW5ld1wiXTtcbn1cblxuY29uc3QgVEFHID0gXCJbRWxlY3Ryb25dXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuRWxlY3Ryb25BcHBPcHRpb25zIHtcbiAgYXJnczogdW5rbm93bltdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRWxlY3Ryb25BcHAoeyBhcmdzIH06IFJ1bkVsZWN0cm9uQXBwT3B0aW9ucykge1xuICAvLyBMYXp5OiBlbGVjdHJvbidzIGVudHJ5IHRocm93cyBpZiB0aGUgYmluYXJ5IGlzIGFic2VudCwgc28gdXRpbC1vbmx5IGNvbnN1bWVycyBtdXN0IG5vdCBsb2FkIGl0IGF0IGltcG9ydCB0aW1lLlxuICBjb25zdCB7IGRlZmF1bHQ6IGVsZWN0cm9uIH0gPSBhd2FpdCBpbXBvcnQoXCJlbGVjdHJvblwiKTtcbiAgY29uc3Qgb3B0cyA9IGF3YWl0IGVsZWN0cm9uT3B0cyhhcmdzLmluY2x1ZGVzKFwiLS1kaXNhYmxlLWdwdVwiKSk7XG4gIC8vIFBlci1wcm9jZXNzIHByb2ZpbGU6IGlzb2xhdGVzIHRoaXMgY2FsbCdzIENocm9taXVtIGNhY2hlICh3YXJtdXAgd2luZG93cyBzaGFyZSBpdCB2aWEgZGVmYXVsdFNlc3Npb24pLCB3aXBlZCBvbiBleGl0LlxuICBjb25zdCBwcm9maWxlRGlyID0gYXdhaXQgbWtkdGVtcChqb2luKHRtcGRpcigpLCBcInB1cC1wcm9maWxlLVwiKSk7XG4gIGNvbnN0IGVsZWN0cm9uQXJncyA9IG9wdHMubWFwKChhKSA9PiBgLS0ke2F9YCk7XG4gIGVsZWN0cm9uQXJncy5wdXNoKGAtLXVzZXItZGF0YS1kaXI9JHtwcm9maWxlRGlyfWApO1xuICBlbGVjdHJvbkFyZ3MucHVzaChgJHtQVVBfQVJHU19LRVl9PSR7QnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoYXJncykpLnRvU3RyaW5nKFwiYmFzZTY0XCIpfWApO1xuICBjb25zdCBjbWQgPSBbZWxlY3Ryb24sIC4uLmVsZWN0cm9uQXJncywgcHVwQXBwXS5qb2luKFwiIFwiKTtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgY21kKTtcblxuICBjb25zdCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0geyAuLi5wcm9jZXNzLmVudiwgUlVTVF9CQUNLVFJBQ0U6IFwiZnVsbFwiIH07XG4gIGNvbnN0IGhhbmRsZSA9IGV4ZWMoY21kLCB7IHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiLCBcImlwY1wiXSwgZW52IH0pO1xuICBoYW5kbGUucHJvY2Vzcy5vbmNlKFwiZXhpdFwiLCAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJtU3luYyhwcm9maWxlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLndhcm4oVEFHLCBcInByb2ZpbGUgY2xlYW51cCBmYWlsZWQ6XCIsIGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBoYW5kbGU7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuY29uc3QgU1VQUE9SVEVEX1BST1RPQ09MUyA9IFtcImZpbGU6XCIsIFwiaHR0cDpcIiwgXCJodHRwczpcIiwgXCJkYXRhOlwiXTtcbmNvbnN0IFNPVVJDRV9QQVRURVJOID0gL14oZmlsZTp8aHR0cHM/OnxkYXRhOikvO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tIVE1MKHNvdXJjZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghU09VUkNFX1BBVFRFUk4udGVzdChzb3VyY2UpKSB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBgJHtzb3VyY2Uuc3BsaXQoXCI6XCIpWzBdfTpgO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBTVVBQT1JURURfUFJPVE9DT0xTLmluY2x1ZGVzKHByb3RvY29sKVxuICAgICAgPyBgdW5zdXBwb3J0ZWQgcHJvdG9jb2w6ICR7cHJvdG9jb2x9LCBleHBlY3RlZCAke1NVUFBPUlRFRF9QUk9UT0NPTFMuam9pbihcIiwgXCIpfWBcbiAgICAgIDogYGludmFsaWQgc291cmNlIGZvcm1hdCwgZXhwZWN0ZWQgJHtTVVBQT1JURURfUFJPVE9DT0xTLmpvaW4oXCIsIFwiKX1gO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxuXG4gIC8vIGZpbGU6IHNvdXJjZXMgYXJlIGNoZWFwIHRvIHN0YXQgaGVyZTsgRWxlY3Ryb24gd291bGQgb25seSBzdXJmYWNlIGEgbWlzc2luZyBvbmUgYXMgZGlkLWZhaWwtbG9hZCBhZnRlciBzcGF3bit3YXJtdXAuXG4gIGlmIChzb3VyY2Uuc3RhcnRzV2l0aChcImZpbGU6XCIpICYmICFleGlzdHNTeW5jKGZpbGVVUkxUb1BhdGgoc291cmNlKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNvdXJjZSBmaWxlIG5vdCBmb3VuZDogJHtzb3VyY2V9YCk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDQvMDEuXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIm5vZGU6ZXZlbnRzXCI7XG5cbmV4cG9ydCBlbnVtIElwY01zZ1R5cGUge1xuICAvLyBjaGlsZCDihpIgcGFyZW50XG4gIENvbnNvbGUgPSBcImNvbnNvbGVcIixcbiAgUHJvZ3Jlc3MgPSBcInByb2dyZXNzXCIsXG4gIERvbmUgPSBcImRvbmVcIixcbiAgRXJyb3IgPSBcImVycm9yXCIsXG4gIC8vIHBhcmVudCDihpIgY2hpbGRcbiAgQ2FuY2VsID0gXCJjYW5jZWxcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25zb2xlTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5Db25zb2xlO1xuICBsZXZlbDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5DYW5jZWw7XG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJcGNEb25lUGF5bG9hZCB7XG4gIHdyaXR0ZW46IG51bWJlcjtcbiAgb3V0RmlsZXM6IHN0cmluZ1tdO1xuICBibGFuazogbnVtYmVyO1xuICBqYW5rOiBudW1iZXI7XG4gIHNjcmVlbnNob3RzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc01zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuUHJvZ3Jlc3M7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9uZU1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuRG9uZTtcbiAgcGF5bG9hZDogSXBjRG9uZVBheWxvYWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkVycm9yO1xuICBlcnJvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBJcGNNc2cgPSBDb25zb2xlTXNnIHwgUHJvZ3Jlc3NNc2cgfCBEb25lTXNnIHwgRXJyb3JNc2cgfCBDYW5jZWxNc2c7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXBjRXZlbnRzIHtcbiAgcHJvZ3Jlc3M6IFt2YWx1ZTogbnVtYmVyXTtcbiAgY29uc29sZTogW2xldmVsOiBzdHJpbmcsIG1zZzogc3RyaW5nXTtcbiAgZG9uZTogW3BheWxvYWQ6IElwY0RvbmVQYXlsb2FkXTtcbiAgZXJyb3I6IFtlcnJvcjogRXJyb3JdO1xuICBjbG9zZTogW2NvZGU6IG51bWJlciB8IG51bGxdO1xufVxuXG5leHBvcnQgY2xhc3MgSXBjV3JpdGVyIHtcbiAgd3JpdGVDb25zb2xlKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuc2VuZCh7IHR5cGU6IElwY01zZ1R5cGUuQ29uc29sZSwgbGV2ZWwsIG1lc3NhZ2UgfSk7XG4gIH1cblxuICB3cml0ZVByb2dyZXNzKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLlByb2dyZXNzLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHdyaXRlRXJyb3IoZXJyb3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkVycm9yLCBlcnJvciB9KTtcbiAgfVxuXG4gIHdyaXRlRG9uZShwYXlsb2FkOiBJcGNEb25lUGF5bG9hZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkRvbmUsIHBheWxvYWQgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlbmQobXNnOiBJcGNNc2cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGlmICghcHJvY2Vzcy5zZW5kKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLnNlbmQobXNnLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJcGNSZWFkZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXI8SXBjRXZlbnRzPiB7XG4gIGNvbnN0cnVjdG9yKGNoaWxkOiBDaGlsZFByb2Nlc3MpIHtcbiAgICBzdXBlcigpO1xuICAgIGNoaWxkLm9uKFwibWVzc2FnZVwiLCAocmF3KSA9PiB7XG4gICAgICBjb25zdCBtc2cgPSByYXcgYXMgSXBjTXNnO1xuICAgICAgc3dpdGNoIChtc2cudHlwZSkge1xuICAgICAgICBjYXNlIElwY01zZ1R5cGUuQ29uc29sZToge1xuICAgICAgICAgIHRoaXMuZW1pdChcImNvbnNvbGVcIiwgbXNnLmxldmVsLCBtc2cubWVzc2FnZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLlByb2dyZXNzOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwicHJvZ3Jlc3NcIiwgbXNnLnZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIElwY01zZ1R5cGUuRG9uZToge1xuICAgICAgICAgIHRoaXMuZW1pdChcImRvbmVcIiwgbXNnLnBheWxvYWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5FcnJvcjoge1xuICAgICAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIG5ldyBFcnJvcihtc2cuZXJyb3IpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNoaWxkLm9uY2UoXCJleGl0XCIsIChjKSA9PiB0aGlzLmVtaXQoXCJjbG9zZVwiLCBjKSk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2Jhc2UvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgcnVuRWxlY3Ryb25BcHAgfSBmcm9tIFwiLi9yZW5kZXJlci9lbGVjdHJvblwiO1xuaW1wb3J0IHsgY2hlY2tIVE1MIH0gZnJvbSBcIi4vcmVuZGVyZXIvaHRtbF9jaGVja1wiO1xuaW1wb3J0IHsgdHlwZSBJcGNEb25lUGF5bG9hZCwgSXBjTXNnVHlwZSwgSXBjUmVhZGVyIH0gZnJvbSBcIi4vcmVuZGVyZXIvaXBjXCI7XG5pbXBvcnQge1xuICB0eXBlIENvbnNvbGVDYWxsYmFjayxcbiAgZGVmYXVsdFJlbmRlck9wdGlvbnMsXG4gIHR5cGUgUHJvZ3Jlc3NDYWxsYmFjayxcbiAgdHlwZSBSZW5kZXJPcHRpb25zLFxuICB0eXBlIFJlbmRlclJlc3VsdCxcbn0gZnJvbSBcIi4vcmVuZGVyZXIvc2NoZW1hXCI7XG5cbmNvbnN0IFRBRyA9IFwiW3B1cF1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBQdXBPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxSZW5kZXJPcHRpb25zPiB7XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICBvblByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgb25Db25zb2xlPzogQ29uc29sZUNhbGxiYWNrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cFJlc3VsdCBleHRlbmRzIFJlbmRlclJlc3VsdCB7fVxuXG5hc3luYyBmdW5jdGlvbiBydW5QdXBBcHAoc291cmNlOiBzdHJpbmcsIHJlbmRlcjogUmVuZGVyT3B0aW9ucykge1xuICBsb2dnZXIuZGVidWcoVEFHLCBgcnVuUHVwQXBwYCwgc291cmNlLCByZW5kZXIpO1xuXG4gIGNvbnN0IGFyZ3M6IHN0cmluZ1tdID0gW1xuICAgIHNvdXJjZSxcbiAgICBgLS13aWR0aGAsXG4gICAgYCR7cmVuZGVyLndpZHRofWAsXG4gICAgYC0taGVpZ2h0YCxcbiAgICBgJHtyZW5kZXIuaGVpZ2h0fWAsXG4gICAgYC0tZnBzYCxcbiAgICBgJHtyZW5kZXIuZnBzfWAsXG4gICAgYC0tZHVyYXRpb25gLFxuICAgIGAke3JlbmRlci5kdXJhdGlvbn1gLFxuICAgIGAtLXdpbmRvdy10aW1lb3V0YCxcbiAgICBgJHtyZW5kZXIud2luZG93VGltZW91dH1gLFxuICAgIGAtLW91dC1maWxlYCxcbiAgICByZW5kZXIub3V0RmlsZXMuam9pbihcIixcIiksXG4gIF07XG4gIGlmIChyZW5kZXIud2l0aEF1ZGlvKSB7XG4gICAgYXJncy5wdXNoKGAtLXdpdGgtYXVkaW9gKTtcbiAgfVxuICBpZiAocmVuZGVyLnVzZUlubmVyUHJveHkpIHtcbiAgICBhcmdzLnB1c2goYC0tdXNlLWlubmVyLXByb3h5YCk7XG4gIH1cbiAgaWYgKHJlbmRlci5kZXRlcm1pbmlzdGljKSB7XG4gICAgYXJncy5wdXNoKGAtLWRldGVybWluaXN0aWNgKTtcbiAgfVxuICBpZiAocmVuZGVyLmRpc2FibGVHcHUpIHtcbiAgICBhcmdzLnB1c2goYC0tZGlzYWJsZS1ncHVgKTtcbiAgfVxuICBpZiAocmVuZGVyLmRpc2FibGVId0NvZGVjKSB7XG4gICAgYXJncy5wdXNoKGAtLWRpc2FibGUtaHctY29kZWNgKTtcbiAgfVxuICBpZiAocmVuZGVyLndpbmRvd1RvbGVyYW50KSB7XG4gICAgYXJncy5wdXNoKGAtLXdpbmRvdy10b2xlcmFudGApO1xuICB9XG4gIGlmIChyZW5kZXIuc2NyZWVuc2hvdHMubGVuZ3RoID4gMCkge1xuICAgIGFyZ3MucHVzaChgLS1zY3JlZW5zaG90c2AsIHJlbmRlci5zY3JlZW5zaG90cy5qb2luKFwiLFwiKSk7XG4gIH1cblxuICByZXR1cm4gcnVuRWxlY3Ryb25BcHAoeyBhcmdzIH0pO1xufVxuXG5jb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdXAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFBhcnRpYWw8UHVwT3B0aW9ucz4pOiBQcm9taXNlPFB1cFJlc3VsdD4ge1xuICBsb2dnZXIuZGVidWcoVEFHLCBgcHVwYCwgc291cmNlLCBvcHRpb25zKTtcblxuICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0aW9ucztcbiAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICBjaGVja0hUTUwoc291cmNlKTtcblxuICBjb25zdCBvdXRGaWxlcyA9IG9wdGlvbnMub3V0RmlsZXMgPz8gZC5vdXRGaWxlcztcbiAgY29uc3QgcmVuZGVyT3B0czogUmVuZGVyT3B0aW9ucyA9IHtcbiAgICB3aWR0aDogb3B0aW9ucy53aWR0aCA/PyBkLndpZHRoLFxuICAgIGhlaWdodDogb3B0aW9ucy5oZWlnaHQgPz8gZC5oZWlnaHQsXG4gICAgZnBzOiBvcHRpb25zLmZwcyA/PyBkLmZwcyxcbiAgICBkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiA/PyBkLmR1cmF0aW9uLFxuICAgIHdpdGhBdWRpbzogb3B0aW9ucy53aXRoQXVkaW8gPz8gZC53aXRoQXVkaW8sXG4gICAgdXNlSW5uZXJQcm94eTogb3B0aW9ucy51c2VJbm5lclByb3h5ID8/IGQudXNlSW5uZXJQcm94eSxcbiAgICBkZXRlcm1pbmlzdGljOiBvcHRpb25zLmRldGVybWluaXN0aWMgPz8gZC5kZXRlcm1pbmlzdGljLFxuICAgIGRpc2FibGVHcHU6IG9wdGlvbnMuZGlzYWJsZUdwdSA/PyBkLmRpc2FibGVHcHUsXG4gICAgZGlzYWJsZUh3Q29kZWM6IG9wdGlvbnMuZGlzYWJsZUh3Q29kZWMgPz8gZC5kaXNhYmxlSHdDb2RlYyxcbiAgICB3aW5kb3dUb2xlcmFudDogb3B0aW9ucy53aW5kb3dUb2xlcmFudCA/PyBkLndpbmRvd1RvbGVyYW50LFxuICAgIHdpbmRvd1RpbWVvdXQ6IG9wdGlvbnMud2luZG93VGltZW91dCA/PyBkLndpbmRvd1RpbWVvdXQsXG4gICAgc2NyZWVuc2hvdHM6IG9wdGlvbnMuc2NyZWVuc2hvdHMgPz8gZC5zY3JlZW5zaG90cyxcbiAgICBvdXRGaWxlcyxcbiAgfTtcblxuICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBsZXQgcHJvZ3Jlc3MgPSAwO1xuICBjb25zdCB0aWNrID0gKHA6IG51bWJlcikgPT4ge1xuICAgIHByb2dyZXNzID0gcDtcbiAgICBvcHRpb25zLm9uUHJvZ3Jlc3M/LihwKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGUgPSBhd2FpdCBydW5QdXBBcHAoc291cmNlLCByZW5kZXJPcHRzKTtcblxuICBsZXQga2lsbFRpbWVyOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICBoYW5kbGUucHJvY2Vzcy5zZW5kPy4oeyB0eXBlOiBJcGNNc2dUeXBlLkNhbmNlbCwgcmVhc29uOiBTdHJpbmcoc2lnbmFsPy5yZWFzb24gPz8gXCJhYm9ydFwiKSB9KTtcbiAgICBraWxsVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGhhbmRsZS5raWxsKCksIDVfMDAwKTtcbiAgfTtcbiAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFByb21pc2U8SXBjRG9uZVBheWxvYWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5ldyBJcGNSZWFkZXIoaGFuZGxlLnByb2Nlc3MpXG4gICAgICAgIC5vbihcImNsb3NlXCIsIChjb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoeyBzb3VyY2UsIHByb2dyZXNzLCBjb2RlLCBraWxsZWQ6IGhhbmRsZS5raWxsZWQgfSk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgY3Jhc2hlZDogJHttc2d9YCkpO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJwcm9ncmVzc1wiLCB0aWNrKVxuICAgICAgICAub24oXCJjb25zb2xlXCIsIChsLCBtKSA9PiBvcHRpb25zLm9uQ29uc29sZT8uKGwsIG0pKVxuICAgICAgICAub24oXCJkb25lXCIsIHJlc29sdmUpXG4gICAgICAgIC5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgfSk7XG4gICAgdGljaygwKTtcbiAgICBjb25zdCBbc3VtbWFyeV0gPSBhd2FpdCBQcm9taXNlLmFsbChbcmVzdWx0LCBoYW5kbGUud2FpdF0pO1xuICAgIHRpY2soMTAwKTtcbiAgICBsb2dnZXIuZGVidWcoVEFHLCBgZG9uZSAke291dEZpbGVzLmpvaW4oXCIsXCIpfSBpbiAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MCl9bXNgKTtcbiAgICByZXR1cm4geyAuLi5zdW1tYXJ5LCBvcHRpb25zOiByZW5kZXJPcHRzIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGUua2lsbCgpO1xuICAgIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgICB0aHJvdyBlO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dChraWxsVGltZXIpO1xuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpO1xuICB9XG59XG4iXX0=
|
package/dist/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'source-map-support/register.js';import {p,q,f,d,i,e,h,j,a,b,
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsInJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsInBhcnNlQXJyYXkiLCJwYXJzZVN0cmluZyIsImUiLCJsb2dnZXIiLCJwYXJncyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJ0b3RhbCIsImJhciIsIlByb2dyZXNzQmFyIiwiYmFyTG9nZ2VyIiwidDAiLCJzY3JlZW5zaG90cyIsIm91dEZpbGVzIiwicHVwIiwicCIsInNlYyJdLCJtYXBwaW5ncyI6IndMQVlBLFNBQVNBLENBQUFBLENBQWdCQyxDQUFBQSxDQUFtQixDQUMxQyxHQUFJQSxDQUFBQSxDQUFFLFFBQUEsQ0FBUyxLQUFLLENBQUEsRUFBS0EsQ0FBQUEsQ0FBRSxVQUFBLENBQVcsT0FBTyxDQUFBLENBQzNDLE9BQU9BLENBQUFBLENBRVQsSUFBSUMsQ0FBQUEsQ0FDSixHQUFJLENBQ0ZBLENBQUFBLENBQU1DLFlBQUFBLENBQWFGLENBQUMsRUFDdEIsQ0FBQSxLQUFRLENBQ05DLENBQUFBLENBQU1FLE9BQUFBLENBQVFILENBQUMsRUFDakIsQ0FDQSxPQUFPLENBQUEsT0FBQSxFQUFVQyxDQUFHLENBQUEsQ0FDdEIsQ0FPQSxlQUFzQkcsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBcUIsQ0FDakQsSUFBTUMsR0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBYSxLQUFBLENBQ3JCQyxHQUFBQSxDQUFJQyxDQUFBQSxDQUNWQyxPQUFBQSxDQUNHLElBQUEsQ0FBS0wsQ0FBQUEsQ0FBUSxJQUFJLEVBQ2pCLFFBQUEsQ0FBUyxVQUFBLENBQVksb0RBQW9ELENBQUEsQ0FDekUsTUFBQSxD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QUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUU5Q0MsQ0FBQUEsQ0FBUyxNQUFBLEVBQ1hMLENBQUFBLENBQUksR0FBQSxDQUFJLENBQUEsY0FBQSxFQUFZSyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FFMUNMLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsZUFBQSxFQUFhRCxDQUFLLENBQUEsU0FBQSxFQUFZbEIsQ0FBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxFQUFJQSxDQUFBQSxDQUFRLE1BQU0sQ0FBQSxHQUFBLEVBQU1BLENBQUFBLENBQVEsR0FBRyxDQUFBLE9BQUEsRUFBVTJCLENBQUcsQ0FBQSxDQUFBLENBQUcsRUFDM0csQ0FBQSxNQUFTZixDQUFBQSxDQUFHLENBQ1ZPLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsT0FBQSxFQUFVUCxDQUFBQSxZQUFhLEtBQUEsQ0FBUUEsQ0FBQUEsQ0FBRSxPQUFBLENBQVUsTUFBQSxDQUFPQSxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQ25FLENBQUEsT0FBRSxDQUNBLE9BQUEsQ0FBUSxJQUFBLENBQUtJLEdBQVEsRUFDdkIsQ0FDRixDQUNGLENBQUMsQ0FBQSIsImZpbGUiOiJjbGkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG5vZXJyIH0gZnJvbSBcIi4vYmFzZS9ub2VyclwiO1xuaW1wb3J0IHsgcGFyc2VBcnJheSwgcGFyc2VOdW1iZXIsIHBhcnNlU3RyaW5nIH0gZnJvbSBcIi4vYmFzZS9wYXJzZXJcIjtcbmltcG9ydCB7IHBhcmdzIH0gZnJvbSBcIi4vYmFzZS9wcm9jZXNzXCI7XG5pbXBvcnQgeyBkZWZhdWx0UmVuZGVyT3B0aW9ucywgdHlwZSBSZW5kZXJPcHRpb25zLCByZW5kZXJTY2hlbWEgfSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuLy8gU2NoZW1lZCBVUklzIHBhc3MgdGhyb3VnaDsgYmFyZSBwYXRocyBnZXQgY2Fub25pY2FsaXplZCBhbmQgd3JhcHBlZCBhcyBmaWxlOi8vLlxuZnVuY3Rpb24gbm9ybWFsaXplU291cmNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzLmluY2x1ZGVzKFwiOi8vXCIpIHx8IHMuc3RhcnRzV2l0aChcImRhdGE6XCIpKSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbiAgbGV0IGFiczogc3RyaW5nO1xuICB0cnkge1xuICAgIGFicyA9IHJlYWxwYXRoU3luYyhzKTtcbiAgfSBjYXRjaCB7XG4gICAgYWJzID0gcmVzb2x2ZShzKTtcbiAgfVxuICByZXR1cm4gYGZpbGU6Ly8ke2Fic31gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENMSU9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJ1bjogKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBSZW5kZXJPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUNMSShvcHRpb25zOiBDTElPcHRpb25zKSB7XG4gIGNvbnN0IHNoYXBlID0gcmVuZGVyU2NoZW1hLnNoYXBlO1xuICBjb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gIHByb2dyYW1cbiAgICAubmFtZShvcHRpb25zLm5hbWUpXG4gICAgLmFyZ3VtZW50KFwiPHNvdXJjZT5cIiwgXCJmaWxlOi8vLCBodHRwKHMpOi8vLCBkYXRhOiBVUkksIG9yIGZpbGVzeXN0ZW0gcGF0aFwiKVxuICAgIC5vcHRpb24oXCItVywgLS13aWR0aCA8bnVtYmVyPlwiLCBzaGFwZS53aWR0aC5kZXNjcmlwdGlvbiwgYCR7ZC53aWR0aH1gKVxuICAgIC5vcHRpb24oXCItSCwgLS1oZWlnaHQgPG51bWJlcj5cIiwgc2hhcGUuaGVpZ2h0LmRlc2NyaXB0aW9uLCBgJHtkLmhlaWdodH1gKVxuICAgIC5vcHRpb24oXCItUywgLS1zY3JlZW5zaG90cyA8c2Vjb25kcz5cIiwgc2hhcGUuc2NyZWVuc2hvdHMuZGVzY3JpcHRpb24sIFwiXCIpXG4gICAgLm9wdGlvbihcIi1mLCAtLWZwcyA8bnVtYmVyPlwiLCBzaGFwZS5mcHMuZGVzY3JpcHRpb24sIGAke2QuZnBzfWApXG4gICAgLm9wdGlvbihcIi10LCAtLWR1cmF0aW9uIDxudW1iZXI+XCIsIHNoYXBlLmR1cmF0aW9uLmRlc2NyaXB0aW9uLCBgJHtkLmR1cmF0aW9ufWApXG4gICAgLm9wdGlvbihcIi1vLCAtLW91dC1maWxlIDxwYXRocz5cIiwgc2hhcGUub3V0RmlsZXMuZGVzY3JpcHRpb24sIGQub3V0RmlsZXMuam9pbihcIixcIikpXG4gICAgLm9wdGlvbihcIi1hLCAtLXdpdGgtYXVkaW9cIiwgc2hhcGUud2l0aEF1ZGlvLmRlc2NyaXB0aW9uLCBkLndpdGhBdWRpbylcbiAgICAub3B0aW9uKFwiLWQsIC0tZGV0ZXJtaW5pc3RpY1wiLCBzaGFwZS5kZXRlcm1pbmlzdGljLmRlc2NyaXB0aW9uLCBkLmRldGVybWluaXN0aWMpXG4gICAgLm9wdGlvbihcIi0tdXNlLWlubmVyLXByb3h5XCIsIHNoYXBlLnVzZUlubmVyUHJveHkuZGVzY3JpcHRpb24sIGQudXNlSW5uZXJQcm94eSlcbiAgICAub3B0aW9uKFwiLS1kaXNhYmxlLWdwdVwiLCBzaGFwZS5kaXNhYmxlR3B1LmRlc2NyaXB0aW9uLCBkLmRpc2FibGVHcHUpXG4gICAgLm9wdGlvbihcIi0tZGlzYWJsZS1ody1jb2RlY1wiLCBzaGFwZS5kaXNhYmxlSHdDb2RlYy5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlSHdDb2RlYylcbiAgICAub3B0aW9uKFwiLS13aW5kb3ctdG9sZXJhbnRcIiwgc2hhcGUud2luZG93VG9sZXJhbnQuZGVzY3JpcHRpb24sIGQud2luZG93VG9sZXJhbnQpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRpbWVvdXQgPG51bWJlcj5cIiwgc2hhcGUud2luZG93VGltZW91dC5kZXNjcmlwdGlvbiwgYCR7ZC53aW5kb3dUaW1lb3V0fWApXG4gICAgLmFjdGlvbihhc3luYyAoc291cmNlOiBzdHJpbmcsIG9wdHMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG9wdGlvbnMucnVuKG5vcm1hbGl6ZVNvdXJjZShzb3VyY2UpLCB7XG4gICAgICAgICAgd2lkdGg6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLndpZHRoKShvcHRzLndpZHRoKSxcbiAgICAgICAgICBoZWlnaHQ6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmhlaWdodCkob3B0cy5oZWlnaHQpLFxuICAgICAgICAgIGZwczogbm9lcnIocGFyc2VOdW1iZXIsIGQuZnBzKShvcHRzLmZwcyksXG4gICAgICAgICAgZHVyYXRpb246IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmR1cmF0aW9uKShvcHRzLmR1cmF0aW9uKSxcbiAgICAgICAgICBvdXRGaWxlczogcGFyc2VBcnJheShwYXJzZVN0cmluZykob3B0cy5vdXRGaWxlKSxcbiAgICAgICAgICB3aXRoQXVkaW86IG9wdHMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgICAgICAgIHVzZUlubmVyUHJveHk6IG9wdHMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgICAgICAgZGV0ZXJtaW5pc3RpYzogb3B0cy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICAgICAgICBkaXNhYmxlR3B1OiBvcHRzLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgICAgICAgIGRpc2FibGVId0NvZGVjOiBvcHRzLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgICAgICAgd2luZG93VG9sZXJhbnQ6IG9wdHMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICAgICAgICB3aW5kb3dUaW1lb3V0OiBub2VycihwYXJzZU51bWJlciwgZC53aW5kb3dUaW1lb3V0KShvcHRzLndpbmRvd1RpbWVvdXQpLFxuICAgICAgICAgIHNjcmVlbnNob3RzOiBwYXJzZUFycmF5KHBhcnNlTnVtYmVyKShvcHRzLnNjcmVlbnNob3RzKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgYXdhaXQgcHJvZ3JhbS5wYXJzZUFzeW5jKHBhcmdzKCkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgYmFyTG9nZ2VyLCBQcm9ncmVzc0JhciB9IGZyb20gXCIuL2Jhc2UvY2xpX3VpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG1ha2VDTEkgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuL3B1cFwiO1xuXG5tYWtlQ0xJKHtcbiAgbmFtZTogXCJwdXBcIixcbiAgcnVuOiBhc3luYyAoc291cmNlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR1RFUk1cIiwgKCkgPT4ge1xuICAgICAgZXhpdENvZGUgPSAxNDM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR1RFUk1cIikpO1xuICAgIH0pO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR0lOVFwiLCAoKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IDEzMDtcbiAgICAgIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHSU5UXCIpKTtcbiAgICB9KTtcbiAgICBwcm9jZXNzLm9uY2UoXCJleGl0XCIsIChjKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IGM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR0tJTExcIikpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWwgPSBNYXRoLmNlaWwob3B0aW9ucy5mcHMgKiBvcHRpb25zLmR1cmF0aW9uKTtcbiAgICBjb25zdCBiYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoeyB0b3RhbCwgb3V0OiBwcm9jZXNzLnN0ZGVyciwgc2hvd0NvdW50OiB0cnVlIH0pO1xuICAgIGxvZ2dlci5pbXBsID0gYmFyTG9nZ2VyKGJhcik7XG5cbiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHNjcmVlbnNob3RzLCBvdXRGaWxlcyB9ID0gYXdhaXQgcHVwKHNvdXJjZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzaWduYWw6IGN0cmwuc2lnbmFsLFxuICAgICAgICBvblByb2dyZXNzOiAocCkgPT4gYmFyLnVwZGF0ZVBlcmNlbnQocCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlYyA9ICgocGVyZm9ybWFuY2Uubm93KCkgLSB0MCkgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgYmFyLnVwZGF0ZSh0b3RhbCk7XG4gICAgICBpZiAoc2NyZWVuc2hvdHMubGVuZ3RoKSB7XG4gICAgICAgIGJhci5sb2coYHNjcmVlbnNob3RzIOKGkiAke3NjcmVlbnNob3RzLmpvaW4oXCIsXCIpfWApO1xuICAgICAgfVxuICAgICAgaWYgKG91dEZpbGVzLmxlbmd0aCkge1xuICAgICAgICBiYXIubG9nKGB2aWRlb3Mg4oaSICR7b3V0RmlsZXMuam9pbihcIixcIil9YCk7XG4gICAgICB9XG4gICAgICBiYXIuZmluaXNoKGBzdW1tYXJ5IOKGkiAke3RvdGFsfSBmcmFtZXMsICR7b3B0aW9ucy53aWR0aH14JHtvcHRpb25zLmhlaWdodH0gQCAke29wdGlvbnMuZnBzfWZwcyBpbiAke3NlY31zYCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYmFyLmZpbmlzaChgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
|
|
1
|
+
import'source-map-support/register.js';import {p,q,f,d,i,e,h,j,a,b,s}from'./chunk-EOEJXYJR.js';import {realpathSync}from'fs';import {resolve}from'path';import {program}from'commander';function A(r){if(r.includes("://")||r.startsWith("data:"))return r;let i;try{i=realpathSync(r);}catch{i=resolve(r);}return `file://${i}`}async function I(r){let i$1=p.shape,e$1=q;program.name(r.name).argument("<source>","file://, http(s)://, data: URI, or filesystem path").option("-W, --width <number>",i$1.width.description,`${e$1.width}`).option("-H, --height <number>",i$1.height.description,`${e$1.height}`).option("-S, --screenshots <seconds>",i$1.screenshots.description,"").option("-f, --fps <number>",i$1.fps.description,`${e$1.fps}`).option("-t, --duration <number>",i$1.duration.description,`${e$1.duration}`).option("-o, --out-file <paths>",i$1.outFiles.description,e$1.outFiles.join(",")).option("-a, --with-audio",i$1.withAudio.description,e$1.withAudio).option("-d, --deterministic",i$1.deterministic.description,e$1.deterministic).option("--use-inner-proxy",i$1.useInnerProxy.description,e$1.useInnerProxy).option("--disable-gpu",i$1.disableGpu.description,e$1.disableGpu).option("--disable-hw-codec",i$1.disableHwCodec.description,e$1.disableHwCodec).option("--window-tolerant",i$1.windowTolerant.description,e$1.windowTolerant).option("--window-timeout <number>",i$1.windowTimeout.description,`${e$1.windowTimeout}`).action(async(a,o)=>{try{await r.run(A(a),{width:i(d,e$1.width)(o.width),height:i(d,e$1.height)(o.height),fps:i(d,e$1.fps)(o.fps),duration:i(d,e$1.duration)(o.duration),outFiles:f(e)(o.outFile),withAudio:o.withAudio??e$1.withAudio,useInnerProxy:o.useInnerProxy??e$1.useInnerProxy,deterministic:o.deterministic??e$1.deterministic,disableGpu:o.disableGpu??e$1.disableGpu,disableHwCodec:o.disableHwCodec??e$1.disableHwCodec,windowTolerant:o.windowTolerant??e$1.windowTolerant,windowTimeout:i(d,e$1.windowTimeout)(o.windowTimeout),screenshots:f(d)(o.screenshots)});}catch(t){h.fatal(t);}}),await program.parseAsync(j());}I({name:"pup",run:async(r,i)=>{let e=new AbortController,a$1=0;process.once("SIGTERM",()=>{a$1=143,e.abort(new Error("SIGTERM"));}),process.once("SIGINT",()=>{a$1=130,e.abort(new Error("SIGINT"));}),process.once("exit",n=>{a$1=n,e.abort(new Error("SIGKILL"));});let o=Math.ceil(i.fps*i.duration),t=new a({total:o,out:process.stderr,showCount:true});h.impl=b(t);let T=performance.now();try{let{screenshots:n,outFiles:u}=await s(r,{...i,signal:e.signal,onProgress:x=>t.updatePercent(x)}),$=((performance.now()-T)/1e3).toFixed(2);t.update(o),n.length&&t.log(`screenshots \u2192 ${n.join(",")}`),u.length&&t.log(`videos \u2192 ${u.join(",")}`),t.finish(`summary \u2192 ${o} frames, ${i.width}x${i.height} @ ${i.fps}fps in ${$}s`);}catch(n){t.finish(`error: ${n instanceof Error?n.message:String(n)}`);}finally{process.exit(a$1);}}});//# sourceMappingURL=cli.js.map
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsInJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsInBhcnNlQXJyYXkiLCJwYXJzZVN0cmluZyIsImUiLCJsb2dnZXIiLCJwYXJncyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJ0b3RhbCIsImJhciIsIlByb2dyZXNzQmFyIiwiYmFyTG9nZ2VyIiwidDAiLCJzY3JlZW5zaG90cyIsIm91dEZpbGVzIiwicHVwIiwicCIsInNlYyJdLCJtYXBwaW5ncyI6IndMQVlBLFNBQVNBLENBQUFBLENBQWdCQyxDQUFBQSxDQUFtQixDQUMxQyxHQUFJQSxDQUFBQSxDQUFFLFFBQUEsQ0FBUyxLQUFLLENBQUEsRUFBS0EsQ0FBQUEsQ0FBRSxVQUFBLENBQVcsT0FBTyxDQUFBLENBQzNDLE9BQU9BLENBQUFBLENBRVQsSUFBSUMsQ0FBQUEsQ0FDSixHQUFJLENBQ0ZBLENBQUFBLENBQU1DLFlBQUFBLENBQWFGLENBQUMsRUFDdEIsQ0FBQSxLQUFRLENBQ05DLENBQUFBLENBQU1FLE9BQUFBLENBQVFILENBQUMsRUFDakIsQ0FDQSxPQUFPLENBQUEsT0FBQSxFQUFVQyxDQUFHLENBQUEsQ0FDdEIsQ0FPQSxlQUFzQkcsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBcUIsQ0FDakQsSUFBTUMsR0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBYSxLQUFBLENBQ3JCQyxHQUFBQSxDQUFJQyxDQUFBQSxDQUNWQyxPQUFBQSxDQUNHLElBQUEsQ0FBS0wsQ0FBQUEsQ0FBUSxJQUFJLEVBQ2pCLFFBQUEsQ0FBUyxVQUFBLENBQVksb0RBQW9ELENBQUEsQ0FDekUsTUFBQSxD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QUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUU5Q0MsQ0FBQUEsQ0FBUyxNQUFBLEVBQ1hMLENBQUFBLENBQUksR0FBQSxDQUFJLENBQUEsY0FBQSxFQUFZSyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FFMUNMLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsZUFBQSxFQUFhRCxDQUFLLENBQUEsU0FBQSxFQUFZbEIsQ0FBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxFQUFJQSxDQUFBQSxDQUFRLE1BQU0sQ0FBQSxHQUFBLEVBQU1BLENBQUFBLENBQVEsR0FBRyxDQUFBLE9BQUEsRUFBVTJCLENBQUcsQ0FBQSxDQUFBLENBQUcsRUFDM0csQ0FBQSxNQUFTZixDQUFBQSxDQUFHLENBQ1ZPLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsT0FBQSxFQUFVUCxDQUFBQSxZQUFhLEtBQUEsQ0FBUUEsQ0FBQUEsQ0FBRSxPQUFBLENBQVUsTUFBQSxDQUFPQSxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQ25FLENBQUEsT0FBRSxDQUNBLE9BQUEsQ0FBUSxJQUFBLENBQUtJLEdBQVEsRUFDdkIsQ0FDRixDQUNGLENBQUMsQ0FBQSIsImZpbGUiOiJjbGkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG5vZXJyIH0gZnJvbSBcIi4vYmFzZS9ub2VyclwiO1xuaW1wb3J0IHsgcGFyc2VBcnJheSwgcGFyc2VOdW1iZXIsIHBhcnNlU3RyaW5nIH0gZnJvbSBcIi4vYmFzZS9wYXJzZXJcIjtcbmltcG9ydCB7IHBhcmdzIH0gZnJvbSBcIi4vYmFzZS9wcm9jZXNzXCI7XG5pbXBvcnQgeyBkZWZhdWx0UmVuZGVyT3B0aW9ucywgdHlwZSBSZW5kZXJPcHRpb25zLCByZW5kZXJTY2hlbWEgfSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuLy8gU2NoZW1lZCBVUklzIHBhc3MgdGhyb3VnaDsgYmFyZSBwYXRocyBnZXQgY2Fub25pY2FsaXplZCBhbmQgd3JhcHBlZCBhcyBmaWxlOi8vLlxuZnVuY3Rpb24gbm9ybWFsaXplU291cmNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzLmluY2x1ZGVzKFwiOi8vXCIpIHx8IHMuc3RhcnRzV2l0aChcImRhdGE6XCIpKSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbiAgbGV0IGFiczogc3RyaW5nO1xuICB0cnkge1xuICAgIGFicyA9IHJlYWxwYXRoU3luYyhzKTtcbiAgfSBjYXRjaCB7XG4gICAgYWJzID0gcmVzb2x2ZShzKTtcbiAgfVxuICByZXR1cm4gYGZpbGU6Ly8ke2Fic31gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENMSU9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJ1bjogKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBSZW5kZXJPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUNMSShvcHRpb25zOiBDTElPcHRpb25zKSB7XG4gIGNvbnN0IHNoYXBlID0gcmVuZGVyU2NoZW1hLnNoYXBlO1xuICBjb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gIHByb2dyYW1cbiAgICAubmFtZShvcHRpb25zLm5hbWUpXG4gICAgLmFyZ3VtZW50KFwiPHNvdXJjZT5cIiwgXCJmaWxlOi8vLCBodHRwKHMpOi8vLCBkYXRhOiBVUkksIG9yIGZpbGVzeXN0ZW0gcGF0aFwiKVxuICAgIC5vcHRpb24oXCItVywgLS13aWR0aCA8bnVtYmVyPlwiLCBzaGFwZS53aWR0aC5kZXNjcmlwdGlvbiwgYCR7ZC53aWR0aH1gKVxuICAgIC5vcHRpb24oXCItSCwgLS1oZWlnaHQgPG51bWJlcj5cIiwgc2hhcGUuaGVpZ2h0LmRlc2NyaXB0aW9uLCBgJHtkLmhlaWdodH1gKVxuICAgIC5vcHRpb24oXCItUywgLS1zY3JlZW5zaG90cyA8c2Vjb25kcz5cIiwgc2hhcGUuc2NyZWVuc2hvdHMuZGVzY3JpcHRpb24sIFwiXCIpXG4gICAgLm9wdGlvbihcIi1mLCAtLWZwcyA8bnVtYmVyPlwiLCBzaGFwZS5mcHMuZGVzY3JpcHRpb24sIGAke2QuZnBzfWApXG4gICAgLm9wdGlvbihcIi10LCAtLWR1cmF0aW9uIDxudW1iZXI+XCIsIHNoYXBlLmR1cmF0aW9uLmRlc2NyaXB0aW9uLCBgJHtkLmR1cmF0aW9ufWApXG4gICAgLm9wdGlvbihcIi1vLCAtLW91dC1maWxlIDxwYXRocz5cIiwgc2hhcGUub3V0RmlsZXMuZGVzY3JpcHRpb24sIGQub3V0RmlsZXMuam9pbihcIixcIikpXG4gICAgLm9wdGlvbihcIi1hLCAtLXdpdGgtYXVkaW9cIiwgc2hhcGUud2l0aEF1ZGlvLmRlc2NyaXB0aW9uLCBkLndpdGhBdWRpbylcbiAgICAub3B0aW9uKFwiLWQsIC0tZGV0ZXJtaW5pc3RpY1wiLCBzaGFwZS5kZXRlcm1pbmlzdGljLmRlc2NyaXB0aW9uLCBkLmRldGVybWluaXN0aWMpXG4gICAgLm9wdGlvbihcIi0tdXNlLWlubmVyLXByb3h5XCIsIHNoYXBlLnVzZUlubmVyUHJveHkuZGVzY3JpcHRpb24sIGQudXNlSW5uZXJQcm94eSlcbiAgICAub3B0aW9uKFwiLS1kaXNhYmxlLWdwdVwiLCBzaGFwZS5kaXNhYmxlR3B1LmRlc2NyaXB0aW9uLCBkLmRpc2FibGVHcHUpXG4gICAgLm9wdGlvbihcIi0tZGlzYWJsZS1ody1jb2RlY1wiLCBzaGFwZS5kaXNhYmxlSHdDb2RlYy5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlSHdDb2RlYylcbiAgICAub3B0aW9uKFwiLS13aW5kb3ctdG9sZXJhbnRcIiwgc2hhcGUud2luZG93VG9sZXJhbnQuZGVzY3JpcHRpb24sIGQud2luZG93VG9sZXJhbnQpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRpbWVvdXQgPG51bWJlcj5cIiwgc2hhcGUud2luZG93VGltZW91dC5kZXNjcmlwdGlvbiwgYCR7ZC53aW5kb3dUaW1lb3V0fWApXG4gICAgLmFjdGlvbihhc3luYyAoc291cmNlOiBzdHJpbmcsIG9wdHMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG9wdGlvbnMucnVuKG5vcm1hbGl6ZVNvdXJjZShzb3VyY2UpLCB7XG4gICAgICAgICAgd2lkdGg6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLndpZHRoKShvcHRzLndpZHRoKSxcbiAgICAgICAgICBoZWlnaHQ6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmhlaWdodCkob3B0cy5oZWlnaHQpLFxuICAgICAgICAgIGZwczogbm9lcnIocGFyc2VOdW1iZXIsIGQuZnBzKShvcHRzLmZwcyksXG4gICAgICAgICAgZHVyYXRpb246IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmR1cmF0aW9uKShvcHRzLmR1cmF0aW9uKSxcbiAgICAgICAgICBvdXRGaWxlczogcGFyc2VBcnJheShwYXJzZVN0cmluZykob3B0cy5vdXRGaWxlKSxcbiAgICAgICAgICB3aXRoQXVkaW86IG9wdHMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgICAgICAgIHVzZUlubmVyUHJveHk6IG9wdHMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgICAgICAgZGV0ZXJtaW5pc3RpYzogb3B0cy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICAgICAgICBkaXNhYmxlR3B1OiBvcHRzLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgICAgICAgIGRpc2FibGVId0NvZGVjOiBvcHRzLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgICAgICAgd2luZG93VG9sZXJhbnQ6IG9wdHMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICAgICAgICB3aW5kb3dUaW1lb3V0OiBub2VycihwYXJzZU51bWJlciwgZC53aW5kb3dUaW1lb3V0KShvcHRzLndpbmRvd1RpbWVvdXQpLFxuICAgICAgICAgIHNjcmVlbnNob3RzOiBwYXJzZUFycmF5KHBhcnNlTnVtYmVyKShvcHRzLnNjcmVlbnNob3RzKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgYXdhaXQgcHJvZ3JhbS5wYXJzZUFzeW5jKHBhcmdzKCkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgYmFyTG9nZ2VyLCBQcm9ncmVzc0JhciB9IGZyb20gXCIuL2Jhc2UvY2xpX3VpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG1ha2VDTEkgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuL3B1cFwiO1xuXG5tYWtlQ0xJKHtcbiAgbmFtZTogXCJwdXBcIixcbiAgcnVuOiBhc3luYyAoc291cmNlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR1RFUk1cIiwgKCkgPT4ge1xuICAgICAgZXhpdENvZGUgPSAxNDM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR1RFUk1cIikpO1xuICAgIH0pO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR0lOVFwiLCAoKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IDEzMDtcbiAgICAgIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHSU5UXCIpKTtcbiAgICB9KTtcbiAgICBwcm9jZXNzLm9uY2UoXCJleGl0XCIsIChjKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IGM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR0tJTExcIikpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWwgPSBNYXRoLmNlaWwob3B0aW9ucy5mcHMgKiBvcHRpb25zLmR1cmF0aW9uKTtcbiAgICBjb25zdCBiYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoeyB0b3RhbCwgb3V0OiBwcm9jZXNzLnN0ZGVyciwgc2hvd0NvdW50OiB0cnVlIH0pO1xuICAgIGxvZ2dlci5pbXBsID0gYmFyTG9nZ2VyKGJhcik7XG5cbiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHNjcmVlbnNob3RzLCBvdXRGaWxlcyB9ID0gYXdhaXQgcHVwKHNvdXJjZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzaWduYWw6IGN0cmwuc2lnbmFsLFxuICAgICAgICBvblByb2dyZXNzOiAocCkgPT4gYmFyLnVwZGF0ZVBlcmNlbnQocCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlYyA9ICgocGVyZm9ybWFuY2Uubm93KCkgLSB0MCkgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgYmFyLnVwZGF0ZSh0b3RhbCk7XG4gICAgICBpZiAoc2NyZWVuc2hvdHMubGVuZ3RoKSB7XG4gICAgICAgIGJhci5sb2coYHNjcmVlbnNob3RzIOKGkiAke3NjcmVlbnNob3RzLmpvaW4oXCIsXCIpfWApO1xuICAgICAgfVxuICAgICAgaWYgKG91dEZpbGVzLmxlbmd0aCkge1xuICAgICAgICBiYXIubG9nKGB2aWRlb3Mg4oaSICR7b3V0RmlsZXMuam9pbihcIixcIil9YCk7XG4gICAgICB9XG4gICAgICBiYXIuZmluaXNoKGBzdW1tYXJ5IOKGkiAke3RvdGFsfSBmcmFtZXMsICR7b3B0aW9ucy53aWR0aH14JHtvcHRpb25zLmhlaWdodH0gQCAke29wdGlvbnMuZnBzfWZwcyBpbiAke3NlY31zYCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYmFyLmZpbmlzaChgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'source-map-support/register.js';export{n as DEFAULT_DURATION,m as DEFAULT_FPS,l as DEFAULT_HEIGHT,k as DEFAULT_WIDTH,o as DEFAULT_WINDOW_TIMEOUT,g as Logger,a as ProgressBar,b as barLogger,h as logger,i as noerr,d as parseNumber,c as penv,
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import'source-map-support/register.js';export{n as DEFAULT_DURATION,m as DEFAULT_FPS,l as DEFAULT_HEIGHT,k as DEFAULT_WIDTH,o as DEFAULT_WINDOW_TIMEOUT,r as Lazy,g as Logger,a as ProgressBar,b as barLogger,h as logger,i as noerr,d as parseNumber,c as penv,s as pup}from'./chunk-EOEJXYJR.js';import {setTimeout as setTimeout$1}from'timers/promises';function u(t){return new Promise(r=>setTimeout(r,t))}function E(t,r){let e,o=false;async function i(s){let n=await t(s);o||(e=setTimeout(()=>i(s+1),n??r));}return e=setTimeout(()=>i(0),r),()=>{o=true,clearTimeout(e);}}function D({fn:t,maxAttempts:r=3,timeout:e,signal:o}){let i=new Error(`timeout over ${e}ms`);return async(...s)=>{let n=0;for(;;){o?.throwIfAborted();try{let m=[t(...s)];return e&&m.push(setTimeout$1(e).then(()=>{throw i})),await Promise.race(m)}catch(m){if(o?.throwIfAborted(),n++,n>=r)throw m;await u(2**n*100+Math.random()*100);}}}}export{E as periodical,u as sleep,D as useRetry};//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL3RpbWluZy50cyIsIi4uL3NyYy9iYXNlL3JldHJ5LnRzIl0sIm5hbWVzIjpbInNsZWVwIiwibXMiLCJyZXNvbHZlIiwicGVyaW9kaWNhbCIsImNhbGxiYWNrIiwidG9rZW4iLCJjbG9zZWQiLCJ0aWNrIiwiY291bnQiLCJuZXh0IiwidXNlUmV0cnkiLCJmbiIsIm1heEF0dGVtcHRzIiwidGltZW91dCIsInNpZ25hbCIsInRpbWVvdXRFcnJvciIsImFyZ3MiLCJhdHRlbXB0IiwicHJvbWlzZXMiLCJzZXRUaW1lb3V0IiwiZSJdLCJtYXBwaW5ncyI6IjRWQUVPLFNBQVNBLEVBQU1DLENBQUFBLENBQVksQ0FDaEMsT0FBTyxJQUFJLFFBQWVDLENBQUFBLEVBQVksVUFBQSxDQUFXQSxDQUFBQSxDQUFTRCxDQUFFLENBQUMsQ0FDL0QsQ0FzQk8sU0FBU0UsQ0FBQUEsQ0FBV0MsRUFBc0VILENBQUFBLENBQVksQ0FDM0csSUFBSUksQ0FBQUEsQ0FDQUMsRUFBUyxLQUFBLENBQ2IsZUFBZUMsQ0FBQUEsQ0FBS0MsQ0FBQUEsQ0FBZSxDQUNqQyxJQUFNQyxDQUFBQSxDQUFPLE1BQU1MLENBQUFBLENBQVNJLENBQUssQ0FBQSxDQUM3QkYsQ0FBQUEsR0FHSkQsQ0FBQUEsQ0FBUSxVQUFBLENBQVcsSUFBTUUsQ0FBQUEsQ0FBS0MsQ0FBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBR0MsR0FBUVIsQ0FBRSxDQUFBLEVBQ3RELENBQ0EsT0FBQUksRUFBUSxVQUFBLENBQVcsSUFBTUUsQ0FBQUEsQ0FBSyxDQUFDLEVBQUdOLENBQUUsQ0FBQSxDQUM3QixJQUFNLENBQ1hLLEVBQVMsSUFBQSxDQUNULFlBQUEsQ0FBYUQsQ0FBSyxFQUNwQixDQUNGLENDNUJPLFNBQVNLLENBQUFBLENBQXNDLENBQ3BELEdBQUFDLENBQUFBLENBQ0EsV0FBQSxDQUFBQyxDQUFBQSxDQUFjLENBQUEsQ0FDZCxRQUFBQyxDQUFBQSxDQUNBLE1BQUEsQ0FBQUMsQ0FDRixDQUFBLENBQTRCLENBQzFCLElBQU1DLENBQUFBLENBQWUsSUFBSSxNQUFNLENBQUEsYUFBQSxFQUFnQkYsQ0FBTyxDQUFBLEVBQUEsQ0FBSSxDQUFBLENBQzFELE9BQU8sTUFBQSxHQUFVRyxDQUFBQSxHQUFlLENBQzlCLElBQUlDLEVBQVUsQ0FBQSxDQUNkLE9BQWEsQ0FDWEgsQ0FBQUEsRUFBUSxnQkFBZSxDQUN2QixHQUFJLENBQ0YsSUFBTUksRUFBVyxDQUFDUCxDQUFBQSxDQUFHLEdBQUdLLENBQUksQ0FBQyxDQUFBLENBQzdCLE9BQUlILENBQUFBLEVBQ0ZLLENBQUFBLENBQVMsS0FDUEMsWUFBQUEsQ0FBV04sQ0FBTyxDQUFBLENBQUUsSUFBQSxDQUFLLElBQU0sQ0FDN0IsTUFBTUUsQ0FDUixDQUFDLENBQ0gsQ0FBQSxDQUVLLE1BQU0sT0FBQSxDQUFRLElBQUEsQ0FBS0csQ0FBUSxDQUNwQyxDQUFBLE1BQVNFLENBQUFBLENBQUcsQ0FHVixHQUZBTixDQUFBQSxFQUFRLGNBQUEsRUFBZSxDQUN2QkcsQ0FBQUEsRUFBQUEsQ0FDSUEsR0FBV0wsQ0FBQUEsQ0FDYixNQUFNUSxDQUFBQSxDQUVSLE1BQU1wQixFQUFNLENBQUEsRUFBS2lCLENBQUFBLENBQVUsR0FBQSxDQUFNLElBQUEsQ0FBSyxRQUFPLENBQUksR0FBRyxFQUN0RCxDQUNGLENBQ0YsQ0FDRiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFRpbWVvdXQ8VD4ocDogUHJvbWlzZTxUPiwgbXM6IG51bWJlciwgbGFiZWw6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGAke2xhYmVsfSB0aW1lZCBvdXQgYWZ0ZXIgJHttc31tc2ApKSwgbXMpO1xuICAgIHAudGhlbihyZXNvbHZlLCByZWplY3QpLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKSk7XG4gIH0pO1xufVxuXG4vLyBSZWplY3QgYXMgc29vbiBhcyBgc2lnbmFsYCBhYm9ydHMsIGVsc2Ugc2V0dGxlIHdpdGggYHBgOyBuby1vcCBwYXNzdGhyb3VnaCB3aGVuIG5vIHNpZ25hbC5cbmV4cG9ydCBmdW5jdGlvbiBhYm9ydGFibGU8VD4ocDogUHJvbWlzZTxUPiwgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPFQ+IHtcbiAgaWYgKCFzaWduYWwpIHtcbiAgICByZXR1cm4gcDtcbiAgfVxuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiByZWplY3Qoc2lnbmFsLnJlYXNvbik7XG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG4gICAgcC50aGVuKHJlc29sdmUsIHJlamVjdCkuZmluYWxseSgoKSA9PiBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpKTtcbiAgfSk7XG59XG5cbi8vIENhbGxiYWNrIG1heSByZXR1cm4gdGhlIG5leHQgaW50ZXJ2YWwgKG1zKSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBmb3IgdGhlIGZvbGxvd2luZyB0aWNrLlxuZXhwb3J0IGZ1bmN0aW9uIHBlcmlvZGljYWwoY2FsbGJhY2s6IChjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQsIG1zOiBudW1iZXIpIHtcbiAgbGV0IHRva2VuOiBOb2RlSlMuVGltZW91dDtcbiAgbGV0IGNsb3NlZCA9IGZhbHNlO1xuICBhc3luYyBmdW5jdGlvbiB0aWNrKGNvdW50OiBudW1iZXIpIHtcbiAgICBjb25zdCBuZXh0ID0gYXdhaXQgY2FsbGJhY2soY291bnQpO1xuICAgIGlmIChjbG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdG9rZW4gPSBzZXRUaW1lb3V0KCgpID0+IHRpY2soY291bnQgKyAxKSwgbmV4dCA/PyBtcyk7XG4gIH1cbiAgdG9rZW4gPSBzZXRUaW1lb3V0KCgpID0+IHRpY2soMCksIG1zKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICAgIGNsZWFyVGltZW91dCh0b2tlbik7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA1LlxuXG5pbXBvcnQgeyBzZXRUaW1lb3V0IH0gZnJvbSBcIm5vZGU6dGltZXJzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gXCIuL3RpbWluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9uczxBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBSZXQ+IHtcbiAgZm46ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFJldD47XG4gIG1heEF0dGVtcHRzPzogbnVtYmVyO1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvLyBBYm9ydCBiYWlscyBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIHJldHJ5aW5nOyBzaWduYWwgaXMgbm90IGF1dG8tdGhyZWFkZWQgaW50byBmbiDigJQgY2FsbGVyIHdpcmVzIGl0IChmZXRjaCwgUzMgc2VuZCkuXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUmV0cnk8QXJncyBleHRlbmRzIHVua25vd25bXSwgUmV0Pih7XG4gIGZuLFxuICBtYXhBdHRlbXB0cyA9IDMsXG4gIHRpbWVvdXQsXG4gIHNpZ25hbCxcbn06IFJldHJ5T3B0aW9uczxBcmdzLCBSZXQ+KSB7XG4gIGNvbnN0IHRpbWVvdXRFcnJvciA9IG5ldyBFcnJvcihgdGltZW91dCBvdmVyICR7dGltZW91dH1tc2ApO1xuICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IEFyZ3MpID0+IHtcbiAgICBsZXQgYXR0ZW1wdCA9IDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW2ZuKC4uLmFyZ3MpXTtcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgc2V0VGltZW91dCh0aW1lb3V0KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgdGltZW91dEVycm9yO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yYWNlKHByb21pc2VzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICBhdHRlbXB0Kys7XG4gICAgICAgIGlmIChhdHRlbXB0ID49IG1heEF0dGVtcHRzKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzbGVlcCgyICoqIGF0dGVtcHQgKiAxMDAgKyBNYXRoLnJhbmRvbSgpICogMTAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXX0=
|
package/package.json
CHANGED
package/dist/chunk-VSWL7XBT.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import'source-map-support/register.js';import {Log}from'node-av';import {AV_LOG_ERROR,AV_LOG_WARNING}from'node-av/constants';import {createRequire}from'module';import {dirname,join}from'path';import c from'zod';import {existsSync,rmSync}from'fs';import {mkdtemp}from'fs/promises';import {tmpdir,platform}from'os';import {HardwareContext}from'node-av/api';import {spawn}from'child_process';import je from'tree-kill';import {fileURLToPath}from'url';import {EventEmitter}from'events';var ye=Object.create;var $=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var Y=(r,e)=>(e=Symbol[r])?e:Symbol.for("Symbol."+r),A=r=>{throw TypeError(r)};var Q=(r,e,t)=>e in r?$(r,e,{enumerable:true,configurable:true,writable:true,value:t}):r[e]=t;var X=r=>[,,,ye(null)],Z=["class","method","getter","setter","accessor","field","value","get","set"],E=r=>r!==void 0&&typeof r!="function"?A("Function expected"):r,xe=(r,e,t,o,n)=>({kind:Z[r],name:e,metadata:o,addInitializer:s=>t._?A("Already initialized"):n.push(E(s||null))}),G=(r,e)=>Q(e,Y("metadata"),r[3]),ee=(r,e,t,o)=>{for(var n=0,s=r[e>>1],l=s&&s.length;n<l;n++)s[n].call(t);return o},_=(r,e,t,o,n,s)=>{var i,p,y,x,a=e&7,C=false,f=false,k=2,P=Z[a+5],we=r[k]||(r[k]=[]),b=((n=n.prototype),ve(n,t));for(var S=o.length-1;S>=0;S--)y=xe(a,t,p={},r[3],we),(y.static=C,y.private=f,x=y.access={has:d=>t in d},(x.get=d=>d[t]),a>2),i=(0, o[S])(b[P],y),p._=1,E(i)&&(b[P]=i);return b&&$(n,t,b),n},re=(r,e,t)=>Q(r,e+"",t);var te=class{_written=0;_shown=false;_total;_out;_tty;_showCount;constructor(e){this._total=e.total,this._out=e.out,this._tty=!!e.out.isTTY,this._showCount=e.showCount??false;}get total(){return this._total}update(e){this._written=Math.min(this._total,Math.max(0,e)),this.render();}updatePercent(e){this.update(Math.round(e/100*this._total));}clear(){this._tty&&this._shown&&this._out.write("\r\x1B[2K");}redraw(){this.render();}log(e){this.clear(),this._out.write(`${e}
|
|
2
|
-
`),this.redraw();}finish(e){this.clear(),this._out.write(`${e}
|
|
3
|
-
`),this._shown=false;}render(){if(!this._tty||this._written===0&&!this._shown)return;let e=this._total>0?this._written/this._total:0,t=Math.round(e*40),o="#".repeat(t)+"-".repeat(40-t),n=Math.round(e*100),s=this._showCount?`${this._written}/${this._total} (${n}%)`:`${n}%`;this._out.write(`\r[${o}] ${s}`),this._shown=true;}};function Ze(r){let e=t=>(...o)=>{r.clear(),t(...o),r.redraw();};return {debug:e(console.debug),info:e(console.info),warn:e(console.warn),error:e(console.error)}}function oe(r,e,t){try{return e(process.env[r])}catch{return t}}function ne(r){if(typeof r=="number")return r;let e=Number(r);if(Number.isNaN(e))throw new Error(`Value ${r} is not a valid number`);return e}function nr(r){return typeof r=="string"?r:String(r)}function sr(r){return e=>typeof e!="string"||e.trim()===""?[]:e.split(",").map(t=>r(t.trim()))}var Ce=createRequire(import.meta.url),O=oe("PUP_LOG_LEVEL",ne,2),L=dirname(Ce.resolve("pup-recorder/package.json")),se=join(L,"dist","app.cjs");join(L,"dist","runtime","audio_preload.cjs");join(L,"dist","runtime","shoot_preload.cjs");join(L,"dist","runtime","render_preload.cjs");var N="<pup@debug>",F="<pup@info>",j="<pup@warn>",H="<pup@error>",W="<pup@fatal>";function R(r,e){return function(...t){let o=t.map(n=>n instanceof Error?n.stack??String(n):n);return r.call(this,...o)}}var ie,ae,le,pe,ce,v;ce=[R],pe=[R],le=[R],ae=[R],ie=[R];var w=class{constructor(e=O){this._level=e;ee(v,5,this);re(this,"_impl");this.impl=console;}_level;get level(){return this._level}set level(e){this._level=e,this.impl=this._impl??console;}get impl(){return this._impl}set impl(e){let t=e.debug??console.debug,o=e.info??console.info,n=e.warn??console.warn,s=e.error??console.error,l=this._level;this._impl={debug:l>=3?t:void 0,info:l>=2?o:void 0,warn:l>=1?n:void 0,error:l>=0?s:void 0};}debug(...e){this.impl?.debug?.(N,...e);}info(...e){this.impl?.info?.(F,...e);}warn(...e){this.impl?.warn?.(j,...e);}error(...e){this.impl?.error?.(H,...e);}fatal(...e){this.impl?.error?.(W,...e),process.exit(1);}dispatch(e){let t=e.trimEnd();t.startsWith(N)?this.debug(t.slice(N.length+1)):t.startsWith(F)?this.info(t.slice(F.length+1)):t.startsWith(j)?this.warn(t.slice(j.length+1)):t.startsWith(H)?this.error(t.slice(H.length+1)):this.info(t);}attach(e,t){return new Promise((o,n)=>{this.debug(`${t}.attach`);let s="",l=i=>{let p=i.toString();p.startsWith(W)?s+=p.slice(W.length+1):this.dispatch(p);};e.stderr?.on("data",l),e.stdout?.on("data",l),e.on("error",i=>{s+=i.message,e.kill();}).once("close",(i,p)=>{i||p||s?(s||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${t}.close`,{code:i,signal:p,fatal:s}),n(new Error(s))):(this.debug(`${t}.close`),o());}).on("unhandledRejection",i=>{this.error(`${t}.unhandled`,i);}).on("uncaughtExceptionMonitor",i=>{this.error(`${t}.unhandled`,i);});})}};v=X(),_(v,1,"debug",ce,w),_(v,1,"info",pe,w),_(v,1,"warn",le,w),_(v,1,"error",ae,w),_(v,1,"fatal",ie,w),G(v,w);var u=new w;Log.setCallback((r,e)=>{let t=e.trimEnd();t&&(r<=AV_LOG_ERROR?u.error(t):r<=AV_LOG_WARNING&&u.warn(t));});function Pr(r,e){return (...t)=>{try{let o=r(...t);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var Ie=1920,Oe=1080,Le=30,De=5,Se=10,Me=["out/html.mp4","out/html.webm"],Er=c.object({duration:c.number().describe("Duration in seconds"),width:c.number().describe("Video width"),height:c.number().describe("Video height"),fps:c.number().describe("Frames per second"),withAudio:c.boolean().describe("Capture and encode audio"),outFiles:c.array(c.string()).describe("Output paths; extension (.mp4/.webm) selects encoder"),useInnerProxy:c.boolean().describe("Use bilibili inner proxy for resource access"),deterministic:c.boolean().describe("Render by frame rather than recording"),disableGpu:c.boolean().describe("Disable GPU rendering, may reduce performance but increase stability"),disableHwCodec:c.boolean().describe("Disable hardware video encoder (NVENC/VideoToolbox), use software x265"),windowTolerant:c.boolean().describe("Fall back to dom-ready if warmup load times out"),windowTimeout:c.number().describe("Window load timeout in seconds"),screenshots:c.array(c.number()).describe("Second marks to dump frame bitmaps as PNG")}),ue={width:Ie,height:Oe,fps:Le,duration:De,outFiles:Me,withAudio:false,useInnerProxy:false,deterministic:false,disableGpu:false,disableHwCodec:false,windowTolerant:false,windowTimeout:Se,screenshots:[]};var Ge="[HWAccel]";async function Ue(){let r=HardwareContext.auto(),e=r!==null;return r?.dispose(),e}var de=Ue().then(r=>(u.debug(Ge,"gpu:",r),r));async function me(r){let e=["no-sandbox","disable-dev-shm-usage","disable-web-security","disable-site-isolation-trials","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","autoplay-policy=no-user-gesture-required","disable-extensions","deny-permission-prompts","use-mock-keychain","force-device-scale-factor=1","force-color-profile=srgb","ignore-gpu-blocklist","use-gl=angle","deterministic-mode","enable-begin-frame-control","disable-new-content-rendering-timeout","run-all-compositor-stages-before-draw","disable-threaded-animation","disable-threaded-scrolling","disable-checker-imaging","disable-image-animation-resync","enable-surface-synchronization","font-render-hinting=none","disable-background-networking","js-flags=--max-old-space-size=512","renderer-process-limit=1","num-raster-threads=2","disable-background-timer-throttling","disable-renderer-backgrounding","disable-backgrounding-occluded-windows","enable-logging=stderr"];O>=3?e.push("log-level=0","v=1"):e.push("log-level=3");let t=["FontationBackend"];if(!(await de&&!r))e.push("use-angle=swiftshader","enable-unsafe-swiftshader");else {e.push("disable-gpu-sandbox","enable-unsafe-webgpu");let n=platform();n==="darwin"?e.push("use-angle=metal"):n==="win32"?e.push("use-angle=d3d11"):(e.push("use-angle=vulkan","disable-vulkan-surface"),t.push("Vulkan"));}return e.push(`enable-features=${t.join(",")}`),e}var B="--pup-priv-args";function Hr(){let r=process.argv,e=r.find(o=>o.startsWith(B));if(!e)return u.debug("procargv",r),process.argv;let t=["exec",...r.slice(-1)];return e=Buffer.from(e.split("=")[1],"base64").toString(),t.push(...JSON.parse(e)),u.debug("pupargs",t),t}function he(r,e){let t=r.split(" ").filter(i=>i.length),[o,...n]=t;if(!o)throw new Error("empty command");let s=spawn(o,n,{stdio:"inherit",...e}),l=false;return {process:s,wait:u.attach(s,o),get killed(){return l},kill(){if(l)return;l=true;let i=s.pid;i?je(i,"SIGKILL"):s.kill("SIGKILL");}}}async function Je(r){return [...await me(r),"headless=new"]}var ge="[Electron]";async function fe({args:r}){let{default:e}=await import('electron'),t=await Je(r.includes("--disable-gpu")),o=await mkdtemp(join(tmpdir(),"pup-profile-")),n=t.map(p=>`--${p}`);n.push(`--user-data-dir=${o}`),n.push(`${B}=${Buffer.from(JSON.stringify(r)).toString("base64")}`);let s=[e,...n,se].join(" ");u.debug(ge,s);let l={...process.env,RUST_BACKTRACE:"full"},i=he(s,{stdio:["ignore","pipe","pipe","ipc"],env:l});return i.process.once("exit",()=>{try{rmSync(o,{recursive:!0,force:!0});}catch(p){u.warn(ge,"profile cleanup failed:",p);}}),i}var V=["file:","http:","https:","data:"],qe=/^(file:|https?:|data:)/;function be(r){if(!qe.test(r)){let e=`${r.split(":")[0]}:`,t=V.includes(e)?`unsupported protocol: ${e}, expected ${V.join(", ")}`:`invalid source format, expected ${V.join(", ")}`;throw new Error(t)}if(r.startsWith("file:")&&!existsSync(fileURLToPath(r)))throw new Error(`source file not found: ${r}`)}var D=class extends EventEmitter{constructor(e){super(),e.on("message",t=>{let o=t;switch(o.type){case "console":{this.emit("console",o.level,o.message);break}case "progress":{this.emit("progress",o.value);break}case "done":{this.emit("done",o.payload);break}case "error":{this.emit("error",new Error(o.error));break}}}),e.once("exit",t=>this.emit("close",t));}};var J="[pup]";async function Qe(r,e){u.debug(J,"runPupApp",r,e);let t=[r,"--width",`${e.width}`,"--height",`${e.height}`,"--fps",`${e.fps}`,"--duration",`${e.duration}`,"--window-timeout",`${e.windowTimeout}`,"--out-file",e.outFiles.join(",")];return e.withAudio&&t.push("--with-audio"),e.useInnerProxy&&t.push("--use-inner-proxy"),e.deterministic&&t.push("--deterministic"),e.disableGpu&&t.push("--disable-gpu"),e.disableHwCodec&&t.push("--disable-hw-codec"),e.windowTolerant&&t.push("--window-tolerant"),e.screenshots.length>0&&t.push("--screenshots",e.screenshots.join(",")),fe({args:t})}var g=ue;async function ht(r,e){u.debug(J,"pup",r,e);let{signal:t}=e;t?.throwIfAborted(),be(r);let o=e.outFiles??g.outFiles,n={width:e.width??g.width,height:e.height??g.height,fps:e.fps??g.fps,duration:e.duration??g.duration,withAudio:e.withAudio??g.withAudio,useInnerProxy:e.useInnerProxy??g.useInnerProxy,deterministic:e.deterministic??g.deterministic,disableGpu:e.disableGpu??g.disableGpu,disableHwCodec:e.disableHwCodec??g.disableHwCodec,windowTolerant:e.windowTolerant??g.windowTolerant,windowTimeout:e.windowTimeout??g.windowTimeout,screenshots:e.screenshots??g.screenshots,outFiles:o},s=performance.now(),l=0,i=a=>{l=a,e.onProgress?.(a);},p=await Qe(r,n),y,x=()=>{p.process.send?.({type:"cancel",reason:String(t?.reason??"abort")}),y=setTimeout(()=>p.kill(),5e3);};t?.addEventListener("abort",x,{once:true});try{let a=new Promise((f,k)=>{new D(p.process).on("close",P=>{let T=JSON.stringify({source:r,progress:l,code:P,killed:p.killed});k(new Error(`crashed: ${T}`));}).on("progress",i).on("console",(P,T)=>e.onConsole?.(P,T)).on("done",f).on("error",k);});i(0);let[C]=await Promise.all([a,p.wait]);return i(100),u.debug(J,`done ${o.join(",")} in ${Math.round(performance.now()-s)}ms`),{...C,options:n}}catch(a){throw p.kill(),t?.throwIfAborted(),a}finally{clearTimeout(y),t?.removeEventListener("abort",x);}}export{te as a,Ze as b,oe as c,ne as d,nr as e,sr as f,w as g,u as h,Pr as i,Hr as j,Ie as k,Oe as l,Le as m,De as n,Se as o,Er as p,ue as q,ht as r};//# sourceMappingURL=chunk-VSWL7XBT.js.map
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2NsaV91aS50cyIsIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9yZW5kZXJlci9zY2hlbWEudHMiLCIuLi9zcmMvYmFzZS9od2FjY2VsLnRzIiwiLi4vc3JjL2Jhc2UvY2hyb21pdW0udHMiLCIuLi9zcmMvYmFzZS9wcm9jZXNzLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2VsZWN0cm9uLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2h0bWxfY2hlY2sudHMiLCIuLi9zcmMvcmVuZGVyZXIvaXBjLnRzIiwiLi4vc3JjL3B1cC50cyJdLCJuYW1lcyI6WyJQcm9ncmVzc0JhciIsIm9wdHMiLCJ3cml0dGVuIiwicGN0IiwibGluZSIsInJhdGlvIiwiZmlsbGVkIiwiYmFyIiwic3VmZml4IiwiYmFyTG9nZ2VyIiwid3JhcCIsImZuIiwiYXJncyIsInBlbnYiLCJuYW1lIiwicGFyc2VyIiwiZGVmYXVsdFZhbHVlIiwicGFyc2VOdW1iZXIiLCJ4IiwibnVtIiwicGFyc2VTdHJpbmciLCJwYXJzZUFycmF5IiwiaXRlbSIsInMiLCJyZXF1aXJlIiwiY3JlYXRlUmVxdWlyZSIsInB1cExvZ0xldmVsIiwicHVwUGtnUm9vdCIsImRpcm5hbWUiLCJwdXBBcHAiLCJqb2luIiwiREVCVUciLCJJTkZPIiwiV0FSTiIsIkVSUk9SIiwiRkFUQUwiLCJzdGFja0hvb2siLCJ0YXJnZXQiLCJfY29udGV4dCIsIm1lc3NhZ2VzIiwicHJvY2Vzc2VkIiwibXNnIiwiX2ZhdGFsX2RlYyIsIl9lcnJvcl9kZWMiLCJfd2Fybl9kZWMiLCJfaW5mb19kZWMiLCJfZGVidWdfZGVjIiwiX2luaXQiLCJMb2dnZXIiLCJfbGV2ZWwiLCJfX3J1bkluaXRpYWxpemVycyIsIl9fcHVibGljRmllbGQiLCJ2YWx1ZSIsImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsImx2IiwibWVzc2FnZSIsInByb2MiLCJyZXNvbHZlIiwicmVqZWN0IiwiZmF0YWwiLCJkaXNwYXRjaCIsImRhdGEiLCJlcnIiLCJjb2RlIiwic2lnbmFsIiwicmVhc29uIiwiX19kZWNvcmF0b3JTdGFydCIsIl9fZGVjb3JhdGVFbGVtZW50IiwiX19kZWNvcmF0b3JNZXRhZGF0YSIsImxvZ2dlciIsIkxvZyIsImxldmVsIiwiQVZfTE9HX0VSUk9SIiwiQVZfTE9HX1dBUk5JTkciLCJub2VyciIsInJldCIsIkRFRkFVTFRfV0lEVEgiLCJERUZBVUxUX0hFSUdIVCIsIkRFRkFVTFRfRlBTIiwiREVGQVVMVF9EVVJBVElPTiIsIkRFRkFVTFRfV0lORE9XX1RJTUVPVVQiLCJERUZBVUxUX09VVF9GSUxFUyIsInJlbmRlclNjaGVtYSIsInoiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsIlRBRyIsImRldGVjdEdQVURyaXZlciIsImh3IiwiSGFyZHdhcmVDb250ZXh0IiwicmVzdWx0IiwiY2FuSVVzZUdQVSIsImNocm9taXVtT3B0aW9ucyIsImRpc2FibGVHcHUiLCJmZWF0dXJlcyIsInBsYXQiLCJwbGF0Zm9ybSIsIlBVUF9BUkdTX0tFWSIsInBhcmdzIiwiYXJndiIsInByaXYiLCJhcmciLCJleGVjIiwiY21kIiwib3B0aW9ucyIsInBhcnRzIiwiY29tbWFuZCIsInNwYXduIiwia2lsbGVkIiwicGlkIiwidHJlZUtpbGwiLCJlbGVjdHJvbk9wdHMiLCJydW5FbGVjdHJvbkFwcCIsImVsZWN0cm9uIiwicHJvZmlsZURpciIsIm1rZHRlbXAiLCJ0bXBkaXIiLCJlbGVjdHJvbkFyZ3MiLCJhIiwiZW52IiwiaGFuZGxlIiwicm1TeW5jIiwiZSIsIlNVUFBPUlRFRF9QUk9UT0NPTFMiLCJTT1VSQ0VfUEFUVEVSTiIsImNoZWNrSFRNTCIsInNvdXJjZSIsInByb3RvY29sIiwiZXhpc3RzU3luYyIsImZpbGVVUkxUb1BhdGgiLCJJcGNSZWFkZXIiLCJFdmVudEVtaXR0ZXIiLCJjaGlsZCIsInJhdyIsImMiLCJydW5QdXBBcHAiLCJyZW5kZXIiLCJkIiwicHVwIiwib3V0RmlsZXMiLCJyZW5kZXJPcHRzIiwidDAiLCJwcm9ncmVzcyIsInRpY2siLCJwIiwia2lsbFRpbWVyIiwib25BYm9ydCIsImwiLCJtIiwic3VtbWFyeSJdLCJtYXBwaW5ncyI6Im03Q0FZTyxJQUFNQSxFQUFBQSxDQUFOLEtBQWtCLENBQ2YsUUFBQSxDQUFXLEVBQ1gsTUFBQSxDQUFTLEtBQUEsQ0FDQSxNQUFBLENBQ0EsSUFBQSxDQUNBLElBQUEsQ0FDQSxVQUFBLENBRWpCLFlBQVlDLENBQUFBLENBQWtCLENBQzVCLEtBQUssTUFBQSxDQUFTQSxDQUFBQSxDQUFLLE1BQ25CLElBQUEsQ0FBSyxJQUFBLENBQU9BLENBQUFBLENBQUssR0FBQSxDQUNqQixJQUFBLENBQUssSUFBQSxDQUFPLENBQUMsQ0FBQ0EsQ0FBQUEsQ0FBSyxJQUFJLEtBQUEsQ0FDdkIsSUFBQSxDQUFLLFdBQWFBLENBQUFBLENBQUssU0FBQSxFQUFhLE1BQ3RDLENBRUEsSUFBSSxLQUFBLEVBQWdCLENBQ2xCLE9BQU8sSUFBQSxDQUFLLE1BQ2QsQ0FFQSxNQUFBLENBQU9DLENBQUFBLENBQXVCLENBQzVCLElBQUEsQ0FBSyxRQUFBLENBQVcsSUFBQSxDQUFLLEdBQUEsQ0FBSSxJQUFBLENBQUssTUFBQSxDQUFRLEtBQUssR0FBQSxDQUFJLENBQUEsQ0FBR0EsQ0FBTyxDQUFDLENBQUEsQ0FDMUQsS0FBSyxNQUFBLEdBQ1AsQ0FFQSxhQUFBLENBQWNDLENBQUFBLENBQW1CLENBQy9CLEtBQUssTUFBQSxDQUFPLElBQUEsQ0FBSyxLQUFBLENBQU9BLENBQUFBLENBQU0sR0FBQSxDQUFPLElBQUEsQ0FBSyxNQUFNLENBQUMsRUFDbkQsQ0FFQSxLQUFBLEVBQWMsQ0FDUixJQUFBLENBQUssTUFBUSxJQUFBLENBQUssTUFBQSxFQUNwQixLQUFLLElBQUEsQ0FBSyxLQUFBLENBQU0sV0FBVyxFQUUvQixDQUVBLE1BQUEsRUFB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QUFNLEVBQ3ZCLENBQUMsQ0FBQSxDQUNEb0YsQ0FBQUEsQ0FBSyxDQUFDLENBQUEsQ0FDTixHQUFNLENBQUNNLENBQU8sQ0FBQSxDQUFJLE1BQU0sT0FBQSxDQUFRLEdBQUEsQ0FBSSxDQUFDM0QsQ0FBQUEsQ0FBUThCLENBQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FDekQsT0FBQXVCLENBQUFBLENBQUssR0FBRyxDQUFBLENBQ1J6RSxDQUFBQSxDQUFPLEtBQUEsQ0FBTWdCLENBQUFBLENBQUssQ0FBQSxLQUFBLEVBQVFxRCxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxJQUFBLEVBQU8sSUFBQSxDQUFLLEtBQUEsQ0FBTSxXQUFBLENBQVksR0FBQSxFQUFJLENBQUlFLENBQUUsQ0FBQyxDQUFBLEVBQUEsQ0FBSSxDQUFBLENBQ2xGLENBQUUsR0FBR1EsQ0FBQUEsQ0FBUyxPQUFBLENBQVNULENBQVcsQ0FDM0MsQ0FBQSxNQUFTbEIsQ0FBQUEsQ0FBRyxDQUNWLE1BQUFGLENBQUFBLENBQU8sSUFBQSxFQUFLLENBQ1p2RCxDQUFBQSxFQUFRLGNBQUEsRUFBZSxDQUNqQnlELENBQ1IsQ0FBQSxPQUFFLENBQ0EsWUFBQSxDQUFhdUIsQ0FBUyxDQUFBLENBQ3RCaEYsQ0FBQUEsRUFBUSxtQkFBQSxDQUFvQixPQUFBLENBQVNpRixDQUFPLEVBQzlDLENBQ0YiLCJmaWxlIjoiY2h1bmstVlNXTDdYQlQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA1LzI2LlxuXG5pbXBvcnQgdHlwZSB7IExvZ2dlckxpa2UgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmNvbnN0IEJBUl9XSURUSCA9IDQwO1xuXG5pbnRlcmZhY2UgQmFyT3B0aW9ucyB7XG4gIHRvdGFsOiBudW1iZXI7XG4gIG91dDogTm9kZUpTLldyaXRlU3RyZWFtO1xuICBzaG93Q291bnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NCYXIge1xuICBwcml2YXRlIF93cml0dGVuID0gMDtcbiAgcHJpdmF0ZSBfc2hvd24gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWw6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3V0OiBOb2RlSlMuV3JpdGVTdHJlYW07XG4gIHByaXZhdGUgcmVhZG9ubHkgX3R0eTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hvd0NvdW50OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IEJhck9wdGlvbnMpIHtcbiAgICB0aGlzLl90b3RhbCA9IG9wdHMudG90YWw7XG4gICAgdGhpcy5fb3V0ID0gb3B0cy5vdXQ7XG4gICAgdGhpcy5fdHR5ID0gISFvcHRzLm91dC5pc1RUWTtcbiAgICB0aGlzLl9zaG93Q291bnQgPSBvcHRzLnNob3dDb3VudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCB0b3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbDtcbiAgfVxuXG4gIHVwZGF0ZSh3cml0dGVuOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl93cml0dGVuID0gTWF0aC5taW4odGhpcy5fdG90YWwsIE1hdGgubWF4KDAsIHdyaXR0ZW4pKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgdXBkYXRlUGVyY2VudChwY3Q6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlKE1hdGgucm91bmQoKHBjdCAvIDEwMCkgKiB0aGlzLl90b3RhbCkpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3R0eSAmJiB0aGlzLl9zaG93bikge1xuICAgICAgdGhpcy5fb3V0LndyaXRlKFwiXFxyXFx4MWJbMktcIik7XG4gICAgfVxuICB9XG5cbiAgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsb2cobGluZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuX291dC53cml0ZShgJHtsaW5lfVxcbmApO1xuICAgIHRoaXMucmVkcmF3KCk7XG4gIH1cblxuICBmaW5pc2gobGluZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuX291dC53cml0ZShgJHtsaW5lfVxcbmApO1xuICAgIHRoaXMuX3Nob3duID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3R0eSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5fd3JpdHRlbiA9PT0gMCAmJiAhdGhpcy5fc2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmF0aW8gPSB0aGlzLl90b3RhbCA+IDAgPyB0aGlzLl93cml0dGVuIC8gdGhpcy5fdG90YWwgOiAwO1xuICAgIGNvbnN0IGZpbGxlZCA9IE1hdGgucm91bmQocmF0aW8gKiBCQVJfV0lEVEgpO1xuICAgIGNvbnN0IGJhciA9IFwiI1wiLnJlcGVhdChmaWxsZWQpICsgXCItXCIucmVwZWF0KEJBUl9XSURUSCAtIGZpbGxlZCk7XG4gICAgY29uc3QgcGN0ID0gTWF0aC5yb3VuZChyYXRpbyAqIDEwMCk7XG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5fc2hvd0NvdW50ID8gYCR7dGhpcy5fd3JpdHRlbn0vJHt0aGlzLl90b3RhbH0gKCR7cGN0fSUpYCA6IGAke3BjdH0lYDtcbiAgICB0aGlzLl9vdXQud3JpdGUoYFxcclske2Jhcn1dICR7c3VmZml4fWApO1xuICAgIHRoaXMuX3Nob3duID0gdHJ1ZTtcbiAgfVxufVxuXG4vLyBBcm91bmQgZWFjaCBjb25zb2xlLiogY2FsbCwgY2xlYXIgdGhlIGJhciBsaW5lIHRoZW4gcmVkcmF3IOKAlCBrZWVwcyBuYXRpdmUgY29uc29sZSBjb2xvcmluZyBpbnRhY3QuXG5leHBvcnQgZnVuY3Rpb24gYmFyTG9nZ2VyKGJhcjogUHJvZ3Jlc3NCYXIpOiBMb2dnZXJMaWtlIHtcbiAgY29uc3Qgd3JhcCA9XG4gICAgPFQgZXh0ZW5kcyAoLi4uYTogdW5rbm93bltdKSA9PiB2b2lkPihmbjogVCkgPT5cbiAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICBiYXIuY2xlYXIoKTtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgYmFyLnJlZHJhdygpO1xuICAgIH07XG4gIHJldHVybiB7XG4gICAgZGVidWc6IHdyYXAoY29uc29sZS5kZWJ1ZyksXG4gICAgaW5mbzogd3JhcChjb25zb2xlLmluZm8pLFxuICAgIHdhcm46IHdyYXAoY29uc29sZS53YXJuKSxcbiAgICBlcnJvcjogd3JhcChjb25zb2xlLmVycm9yKSxcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmV4cG9ydCB0eXBlIEVudlBhcnNlcjxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlOiBUKTogVDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlPzogVCk6IFQgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZXIocHJvY2Vzcy5lbnZbbmFtZV0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXIoeDogdW5rbm93bik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgeCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB4O1xuICB9XG4gIGNvbnN0IG51bSA9IE51bWJlcih4KTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSAke3h9IGlzIG5vdCBhIHZhbGlkIG51bWJlcmApO1xuICB9XG4gIHJldHVybiBudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0cmluZyh4OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh4KTtcbn1cblxuLy8gQ29tbWEtc2VwYXJhdGVkIHN0cmluZyDihpIgYXJyYXkgdmlhIGEgcGVyLWl0ZW0gcGFyc2VyOyBlbXB0eS9ibGFuayDihpIgW10uXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcnJheTxUPihpdGVtOiAoeDogdW5rbm93bikgPT4gVCk6ICh4OiB1bmtub3duKSA9PiBUW10ge1xuICByZXR1cm4gKHgpID0+IHtcbiAgICBpZiAodHlwZW9mIHggIT09IFwic3RyaW5nXCIgfHwgeC50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHguc3BsaXQoXCIsXCIpLm1hcCgocykgPT4gaXRlbShzLnRyaW0oKSkpO1xuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHBlbnYgfSBmcm9tIFwiLi9lbnZcIjtcbmltcG9ydCB7IHBhcnNlTnVtYmVyIH0gZnJvbSBcIi4vcGFyc2VyXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmV4cG9ydCBjb25zdCBwdXBMb2dMZXZlbCA9IHBlbnYoXCJQVVBfTE9HX0xFVkVMXCIsIHBhcnNlTnVtYmVyLCAyKTtcblxuZXhwb3J0IGNvbnN0IHB1cFBrZ1Jvb3QgPSBkaXJuYW1lKHJlcXVpcmUucmVzb2x2ZShcInB1cC1yZWNvcmRlci9wYWNrYWdlLmpzb25cIikpO1xuZXhwb3J0IGNvbnN0IHB1cEFwcCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwiYXBwLmNqc1wiKTtcbmV4cG9ydCBjb25zdCBwdXBBdWRpb1ByZWxvYWQgPSBqb2luKHB1cFBrZ1Jvb3QsIFwiZGlzdFwiLCBcInJ1bnRpbWVcIiwgXCJhdWRpb19wcmVsb2FkLmNqc1wiKTtcbmV4cG9ydCBjb25zdCBwdXBTaG9vdFByZWxvYWQgPSBqb2luKHB1cFBrZ1Jvb3QsIFwiZGlzdFwiLCBcInJ1bnRpbWVcIiwgXCJzaG9vdF9wcmVsb2FkLmNqc1wiKTtcbmV4cG9ydCBjb25zdCBwdXBSZW5kZXJQcmVsb2FkID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJydW50aW1lXCIsIFwicmVuZGVyX3ByZWxvYWQuY2pzXCIpO1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNi5cblxuaW1wb3J0IHR5cGUgeyBDaGlsZFByb2Nlc3MgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBMb2cgfSBmcm9tIFwibm9kZS1hdlwiO1xuaW1wb3J0IHsgQVZfTE9HX0VSUk9SLCBBVl9MT0dfV0FSTklORyB9IGZyb20gXCJub2RlLWF2L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgcHVwTG9nTGV2ZWwgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJMaWtlIHtcbiAgZGVidWc/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xuXG4gIGluZm8/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xuXG4gIHdhcm4/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xuXG4gIGVycm9yPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcbn1cblxuY29uc3QgREVCVUcgPSBcIjxwdXBAZGVidWc+XCI7XG5jb25zdCBJTkZPID0gXCI8cHVwQGluZm8+XCI7XG5jb25zdCBXQVJOID0gXCI8cHVwQHdhcm4+XCI7XG5jb25zdCBFUlJPUiA9IFwiPHB1cEBlcnJvcj5cIjtcbmNvbnN0IEZBVEFMID0gXCI8cHVwQGZhdGFsPlwiO1xuXG5mdW5jdGlvbiBzdGFja0hvb2sodGFyZ2V0OiAoLi4ubWVzc2FnZXM6IHVua25vd25bXSkgPT4gdW5rbm93biwgX2NvbnRleHQ6IENsYXNzTWV0aG9kRGVjb3JhdG9yQ29udGV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IExvZ2dlciwgLi4ubWVzc2FnZXM6IHVua25vd25bXSkge1xuICAgIGNvbnN0IHByb2Nlc3NlZCA9IG1lc3NhZ2VzLm1hcCgobXNnKSA9PiB7XG4gICAgICByZXR1cm4gbXNnIGluc3RhbmNlb2YgRXJyb3IgPyAobXNnLnN0YWNrID8/IFN0cmluZyhtc2cpKSA6IG1zZztcbiAgICB9KTtcbiAgICByZXR1cm4gdGFyZ2V0LmNhbGwodGhpcywgLi4ucHJvY2Vzc2VkKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIExvZ2dlciBpbXBsZW1lbnRzIExvZ2dlckxpa2Uge1xuICBwcml2YXRlIF9pbXBsPzogTG9nZ2VyTGlrZTtcblxuICBnZXQgbGV2ZWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbGV2ZWw7XG4gIH1cblxuICBzZXQgbGV2ZWwodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2xldmVsID0gdmFsdWU7XG4gICAgdGhpcy5pbXBsID0gdGhpcy5faW1wbCA/PyBjb25zb2xlO1xuICB9XG5cbiAgZ2V0IGltcGwoKTogTG9nZ2VyTGlrZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ltcGw7XG4gIH1cblxuICBzZXQgaW1wbCh2YWx1ZTogTG9nZ2VyTGlrZSkge1xuICAgIGNvbnN0IGRlYnVnID0gdmFsdWUuZGVidWcgPz8gY29uc29sZS5kZWJ1ZztcbiAgICBjb25zdCBpbmZvID0gdmFsdWUuaW5mbyA/PyBjb25zb2xlLmluZm87XG4gICAgY29uc3Qgd2FybiA9IHZhbHVlLndhcm4gPz8gY29uc29sZS53YXJuO1xuICAgIGNvbnN0IGVycm9yID0gdmFsdWUuZXJyb3IgPz8gY29uc29sZS5lcnJvcjtcbiAgICBjb25zdCBsdiA9IHRoaXMuX2xldmVsO1xuICAgIHRoaXMuX2ltcGwgPSB7XG4gICAgICBkZWJ1ZzogbHYgPj0gMyA/IGRlYnVnIDogdW5kZWZpbmVkLFxuICAgICAgaW5mbzogbHYgPj0gMiA/IGluZm8gOiB1bmRlZmluZWQsXG4gICAgICB3YXJuOiBsdiA+PSAxID8gd2FybiA6IHVuZGVmaW5lZCxcbiAgICAgIGVycm9yOiBsdiA+PSAwID8gZXJyb3IgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xldmVsOiBudW1iZXIgPSBwdXBMb2dMZXZlbCkge1xuICAgIHRoaXMuaW1wbCA9IGNvbnNvbGU7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGRlYnVnKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmRlYnVnPy4oREVCVUcsIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgaW5mbyguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5pbmZvPy4oSU5GTywgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICB3YXJuKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/Lndhcm4/LihXQVJOLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGVycm9yKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmVycm9yPy4oRVJST1IsIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZmF0YWwoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZXJyb3I/LihGQVRBTCwgLi4ubWVzc2FnZXMpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2gobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbXNnID0gbWVzc2FnZS50cmltRW5kKCk7XG4gICAgaWYgKG1zZy5zdGFydHNXaXRoKERFQlVHKSkge1xuICAgICAgdGhpcy5kZWJ1Zyhtc2cuc2xpY2UoREVCVUcubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobXNnLnN0YXJ0c1dpdGgoSU5GTykpIHtcbiAgICAgIHRoaXMuaW5mbyhtc2cuc2xpY2UoSU5GTy5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtc2cuc3RhcnRzV2l0aChXQVJOKSkge1xuICAgICAgdGhpcy53YXJuKG1zZy5zbGljZShXQVJOLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1zZy5zdGFydHNXaXRoKEVSUk9SKSkge1xuICAgICAgdGhpcy5lcnJvcihtc2cuc2xpY2UoRVJST1IubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluZm8obXNnKTtcbiAgICB9XG4gIH1cblxuICBhdHRhY2gocHJvYzogQ2hpbGRQcm9jZXNzLCBuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5hdHRhY2hgKTtcbiAgICAgIGxldCBmYXRhbDogc3RyaW5nID0gXCJcIjtcbiAgICAgIGNvbnN0IGRpc3BhdGNoID0gKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICBpZiAobWVzc2FnZS5zdGFydHNXaXRoKEZBVEFMKSkge1xuICAgICAgICAgIGZhdGFsICs9IG1lc3NhZ2Uuc2xpY2UoRkFUQUwubGVuZ3RoICsgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHByb2Muc3RkZXJyPy5vbihcImRhdGFcIiwgZGlzcGF0Y2gpO1xuICAgICAgcHJvYy5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCBkaXNwYXRjaCk7XG4gICAgICBwcm9jXG4gICAgICAgIC5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICBmYXRhbCArPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBwcm9jLmtpbGwoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uY2UoXCJjbG9zZVwiLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgICAgaWYgKGNvZGUgfHwgc2lnbmFsIHx8IGZhdGFsKSB7XG4gICAgICAgICAgICBmYXRhbCB8fD0gYGNvbW1hbmQgZmFpbGVkOiAke3Byb2Muc3Bhd25hcmdzLmpvaW4oXCIgXCIpfWA7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmNsb3NlYCwgeyBjb2RlLCBzaWduYWwsIGZhdGFsIH0pO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihmYXRhbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmNsb3NlYCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIiwgKHJlYXNvbikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3IoYCR7bmFtZX0udW5oYW5kbGVkYCwgcmVhc29uKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwidW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKGAke25hbWV9LnVuaGFuZGxlZGAsIGVycik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcblxuLy8gUm91dGUgZmZtcGVnIG5hdGl2ZSBsb2dzIHRocm91Z2ggcHVwJ3MgbG9nZ2VyLlxuTG9nLnNldENhbGxiYWNrKChsZXZlbCwgbWVzc2FnZSkgPT4ge1xuICBjb25zdCBtc2cgPSBtZXNzYWdlLnRyaW1FbmQoKTtcbiAgaWYgKCFtc2cpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGxldmVsIDw9IEFWX0xPR19FUlJPUikge1xuICAgIGxvZ2dlci5lcnJvcihtc2cpO1xuICB9IGVsc2UgaWYgKGxldmVsIDw9IEFWX0xPR19XQVJOSU5HKSB7XG4gICAgbG9nZ2VyLndhcm4obXNnKTtcbiAgfVxufSk7XG5cbmV4cG9ydCB7IGxvZ2dlciB9O1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNC5cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZXJyPEEgZXh0ZW5kcyB1bmtub3duW10sIFIsIEQ+KGZuOiAoLi4uYXJnczogQSkgPT4gUiwgZGVmYXVsdFZhbHVlOiBEKTogKC4uLmFyZ3M6IEEpID0+IFIgfCBEIHtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldCA9IGZuKC4uLmFyZ3MpO1xuICAgICAgaWYgKHJldCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmV0dXJuIHJldC5jYXRjaCgoKSA9PiBkZWZhdWx0VmFsdWUpIGFzIFIgfCBEO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNi5cblxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9XSURUSCA9IDE5MjA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9IRUlHSFQgPSAxMDgwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRlBTID0gMzA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9EVVJBVElPTiA9IDU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9XSU5ET1dfVElNRU9VVCA9IDEwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUX0ZJTEVTID0gW1wib3V0L2h0bWwubXA0XCIsIFwib3V0L2h0bWwud2VibVwiXTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZHVyYXRpb246IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJEdXJhdGlvbiBpbiBzZWNvbmRzXCIpLFxuICB3aWR0aDogei5udW1iZXIoKS5kZXNjcmliZShcIlZpZGVvIHdpZHRoXCIpLFxuICBoZWlnaHQ6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJWaWRlbyBoZWlnaHRcIiksXG4gIGZwczogei5udW1iZXIoKS5kZXNjcmliZShcIkZyYW1lcyBwZXIgc2Vjb25kXCIpLFxuICB3aXRoQXVkaW86IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiQ2FwdHVyZSBhbmQgZW5jb2RlIGF1ZGlvXCIpLFxuICBvdXRGaWxlczogei5hcnJheSh6LnN0cmluZygpKS5kZXNjcmliZShcIk91dHB1dCBwYXRoczsgZXh0ZW5zaW9uICgubXA0Ly53ZWJtKSBzZWxlY3RzIGVuY29kZXJcIiksXG4gIHVzZUlubmVyUHJveHk6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiVXNlIGJpbGliaWxpIGlubmVyIHByb3h5IGZvciByZXNvdXJjZSBhY2Nlc3NcIiksXG4gIGRldGVybWluaXN0aWM6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiUmVuZGVyIGJ5IGZyYW1lIHJhdGhlciB0aGFuIHJlY29yZGluZ1wiKSxcbiAgZGlzYWJsZUdwdTogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJEaXNhYmxlIEdQVSByZW5kZXJpbmcsIG1heSByZWR1Y2UgcGVyZm9ybWFuY2UgYnV0IGluY3JlYXNlIHN0YWJpbGl0eVwiKSxcbiAgZGlzYWJsZUh3Q29kZWM6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRGlzYWJsZSBoYXJkd2FyZSB2aWRlbyBlbmNvZGVyIChOVkVOQy9WaWRlb1Rvb2xib3gpLCB1c2Ugc29mdHdhcmUgeDI2NVwiKSxcbiAgd2luZG93VG9sZXJhbnQ6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRmFsbCBiYWNrIHRvIGRvbS1yZWFkeSBpZiB3YXJtdXAgbG9hZCB0aW1lcyBvdXRcIiksXG4gIHdpbmRvd1RpbWVvdXQ6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJXaW5kb3cgbG9hZCB0aW1lb3V0IGluIHNlY29uZHNcIiksXG4gIHNjcmVlbnNob3RzOiB6LmFycmF5KHoubnVtYmVyKCkpLmRlc2NyaWJlKFwiU2Vjb25kIG1hcmtzIHRvIGR1bXAgZnJhbWUgYml0bWFwcyBhcyBQTkdcIiksXG59KTtcblxuZXhwb3J0IHR5cGUgUmVuZGVyT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIHJlbmRlclNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIENvbnNvbGVDYWxsYmFjayA9IChsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzQ2FsbGJhY2sgPSAocHJvZ3Jlc3M6IG51bWJlcikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBJUENSZW5kZXJPcHRpb25zIGV4dGVuZHMgUmVuZGVyT3B0aW9ucyB7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBzaWduYWw6IEFib3J0U2lnbmFsO1xuICBvblByb2dyZXNzOiBQcm9ncmVzc0NhbGxiYWNrO1xuICBvbkNvbnNvbGU6IENvbnNvbGVDYWxsYmFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQge1xuICBvcHRpb25zOiBSZW5kZXJPcHRpb25zO1xuICB3cml0dGVuOiBudW1iZXI7XG4gIG91dEZpbGVzOiBzdHJpbmdbXTtcbiAgYmxhbms6IG51bWJlcjtcbiAgamFuazogbnVtYmVyO1xuICBzY3JlZW5zaG90czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UmVuZGVyT3B0aW9uczogUmVuZGVyT3B0aW9ucyA9IHtcbiAgd2lkdGg6IERFRkFVTFRfV0lEVEgsXG4gIGhlaWdodDogREVGQVVMVF9IRUlHSFQsXG4gIGZwczogREVGQVVMVF9GUFMsXG4gIGR1cmF0aW9uOiBERUZBVUxUX0RVUkFUSU9OLFxuICBvdXRGaWxlczogREVGQVVMVF9PVVRfRklMRVMsXG4gIHdpdGhBdWRpbzogZmFsc2UsXG4gIHVzZUlubmVyUHJveHk6IGZhbHNlLFxuICBkZXRlcm1pbmlzdGljOiBmYWxzZSxcbiAgZGlzYWJsZUdwdTogZmFsc2UsXG4gIGRpc2FibGVId0NvZGVjOiBmYWxzZSxcbiAgd2luZG93VG9sZXJhbnQ6IGZhbHNlLFxuICB3aW5kb3dUaW1lb3V0OiBERUZBVUxUX1dJTkRPV19USU1FT1VULFxuICBzY3JlZW5zaG90czogW10sXG59O1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNy5cblxuaW1wb3J0IHsgSGFyZHdhcmVDb250ZXh0IH0gZnJvbSBcIm5vZGUtYXYvYXBpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmNvbnN0IFRBRyA9IFwiW0hXQWNjZWxdXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdEdQVURyaXZlcigpIHtcbiAgY29uc3QgaHcgPSBIYXJkd2FyZUNvbnRleHQuYXV0bygpO1xuICBjb25zdCByZXN1bHQgPSBodyAhPT0gbnVsbDtcbiAgaHc/LmRpc3Bvc2UoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGNvbnN0IGNhbklVc2VHUFUgPSBkZXRlY3RHUFVEcml2ZXIoKS50aGVuKChyZXN1bHQpID0+IHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgXCJncHU6XCIsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDQvMDMuXG5cbmltcG9ydCB7IHBsYXRmb3JtIH0gZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCB7IHB1cExvZ0xldmVsIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBjYW5JVXNlR1BVIH0gZnJvbSBcIi4vaHdhY2NlbFwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hyb21pdW1PcHRpb25zKGRpc2FibGVHcHU6IGJvb2xlYW4pIHtcbiAgY29uc3Qgb3B0cyA9IFtcbiAgICAvLyDlrrnlmajmspnnrrFcbiAgICBcIm5vLXNhbmRib3hcIixcbiAgICBcImRpc2FibGUtZGV2LXNobS11c2FnZVwiLFxuICAgIC8vIOi3qOWfny/lronlhahcbiAgICBcImRpc2FibGUtd2ViLXNlY3VyaXR5XCIsXG4gICAgXCJkaXNhYmxlLXNpdGUtaXNvbGF0aW9uLXRyaWFsc1wiLFxuICAgIFwiaWdub3JlLWNlcnRpZmljYXRlLWVycm9yc1wiLFxuICAgIC8vIOW9leWItuihjOS4ulxuICAgIFwiZGlzYWJsZS1ibGluay1mZWF0dXJlcz1BdXRvbWF0aW9uQ29udHJvbGxlZFwiLFxuICAgIFwibXV0ZS1hdWRpb1wiLFxuICAgIFwiYXV0b3BsYXktcG9saWN5PW5vLXVzZXItZ2VzdHVyZS1yZXF1aXJlZFwiLFxuICAgIFwiZGlzYWJsZS1leHRlbnNpb25zXCIsXG4gICAgXCJkZW55LXBlcm1pc3Npb24tcHJvbXB0c1wiLFxuICAgIFwidXNlLW1vY2sta2V5Y2hhaW5cIixcbiAgICAvLyDmuLLmn5NcbiAgICBcImZvcmNlLWRldmljZS1zY2FsZS1mYWN0b3I9MVwiLFxuICAgIFwiZm9yY2UtY29sb3ItcHJvZmlsZT1zcmdiXCIsXG4gICAgXCJpZ25vcmUtZ3B1LWJsb2NrbGlzdFwiLFxuICAgIFwidXNlLWdsPWFuZ2xlXCIsXG4gICAgXCJkZXRlcm1pbmlzdGljLW1vZGVcIixcbiAgICBcImVuYWJsZS1iZWdpbi1mcmFtZS1jb250cm9sXCIsXG4gICAgXCJkaXNhYmxlLW5ldy1jb250ZW50LXJlbmRlcmluZy10aW1lb3V0XCIsXG4gICAgXCJydW4tYWxsLWNvbXBvc2l0b3Itc3RhZ2VzLWJlZm9yZS1kcmF3XCIsXG4gICAgXCJkaXNhYmxlLXRocmVhZGVkLWFuaW1hdGlvblwiLFxuICAgIFwiZGlzYWJsZS10aHJlYWRlZC1zY3JvbGxpbmdcIixcbiAgICBcImRpc2FibGUtY2hlY2tlci1pbWFnaW5nXCIsXG4gICAgXCJkaXNhYmxlLWltYWdlLWFuaW1hdGlvbi1yZXN5bmNcIixcbiAgICBcImVuYWJsZS1zdXJmYWNlLXN5bmNocm9uaXphdGlvblwiLFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wdXBwZXRlZXIvcHVwcGV0ZWVyL2lzc3Vlcy8yNDEwXG4gICAgXCJmb250LXJlbmRlci1oaW50aW5nPW5vbmVcIixcbiAgICAvLyDotYTmupDmjqfliLZcbiAgICBcImRpc2FibGUtYmFja2dyb3VuZC1uZXR3b3JraW5nXCIsXG4gICAgXCJqcy1mbGFncz0tLW1heC1vbGQtc3BhY2Utc2l6ZT01MTJcIixcbiAgICBcInJlbmRlcmVyLXByb2Nlc3MtbGltaXQ9MVwiLFxuICAgIFwibnVtLXJhc3Rlci10aHJlYWRzPTJcIixcbiAgICBcImRpc2FibGUtYmFja2dyb3VuZC10aW1lci10aHJvdHRsaW5nXCIsXG4gICAgXCJkaXNhYmxlLXJlbmRlcmVyLWJhY2tncm91bmRpbmdcIixcbiAgICBcImRpc2FibGUtYmFja2dyb3VuZGluZy1vY2NsdWRlZC13aW5kb3dzXCIsXG4gICAgLy8g5pel5b+X6L+96LiqXG4gICAgXCJlbmFibGUtbG9nZ2luZz1zdGRlcnJcIixcbiAgXTtcblxuICBpZiAocHVwTG9nTGV2ZWwgPj0gMykge1xuICAgIG9wdHMucHVzaChcImxvZy1sZXZlbD0wXCIsIFwidj0xXCIpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMucHVzaChcImxvZy1sZXZlbD0zXCIpO1xuICB9XG5cbiAgY29uc3QgZmVhdHVyZXMgPSBbXCJGb250YXRpb25CYWNrZW5kXCJdO1xuICBjb25zdCBlbmFibGVHcHUgPSAoYXdhaXQgY2FuSVVzZUdQVSkgJiYgIWRpc2FibGVHcHU7XG4gIGlmICghZW5hYmxlR3B1KSB7XG4gICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPXN3aWZ0c2hhZGVyXCIsIFwiZW5hYmxlLXVuc2FmZS1zd2lmdHNoYWRlclwiKTtcbiAgfSBlbHNlIHtcbiAgICBvcHRzLnB1c2goXCJkaXNhYmxlLWdwdS1zYW5kYm94XCIsIFwiZW5hYmxlLXVuc2FmZS13ZWJncHVcIik7XG4gICAgY29uc3QgcGxhdCA9IHBsYXRmb3JtKCk7XG4gICAgaWYgKHBsYXQgPT09IFwiZGFyd2luXCIpIHtcbiAgICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT1tZXRhbFwiKTtcbiAgICB9IGVsc2UgaWYgKHBsYXQgPT09IFwid2luMzJcIikge1xuICAgICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPWQzZDExXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9dnVsa2FuXCIsIFwiZGlzYWJsZS12dWxrYW4tc3VyZmFjZVwiKTtcbiAgICAgIGZlYXR1cmVzLnB1c2goXCJWdWxrYW5cIik7XG4gICAgfVxuICB9XG5cbiAgb3B0cy5wdXNoKGBlbmFibGUtZmVhdHVyZXM9JHtmZWF0dXJlcy5qb2luKFwiLFwiKX1gKTtcbiAgcmV0dXJuIG9wdHM7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5pbXBvcnQgeyB0eXBlIENoaWxkUHJvY2VzcywgdHlwZSBTcGF3bk9wdGlvbnMsIHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHRyZWVLaWxsIGZyb20gXCJ0cmVlLWtpbGxcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuZXhwb3J0IGNvbnN0IFBVUF9BUkdTX0tFWSA9IFwiLS1wdXAtcHJpdi1hcmdzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJncygpIHtcbiAgY29uc3QgYXJndiA9IHByb2Nlc3MuYXJndjtcbiAgbGV0IHByaXYgPSBhcmd2LmZpbmQoKGFyZykgPT4gYXJnLnN0YXJ0c1dpdGgoUFVQX0FSR1NfS0VZKSk7XG4gIGlmICghcHJpdikge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInByb2Nhcmd2XCIsIGFyZ3YpO1xuICAgIHJldHVybiBwcm9jZXNzLmFyZ3Y7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtcImV4ZWNcIiwgLi4uYXJndi5zbGljZSgtMSldO1xuICBwcml2ID0gQnVmZmVyLmZyb20ocHJpdi5zcGxpdChcIj1cIilbMV0hLCBcImJhc2U2NFwiKS50b1N0cmluZygpO1xuICBhcmdzLnB1c2goLi4uSlNPTi5wYXJzZShwcml2KSk7XG4gIGxvZ2dlci5kZWJ1ZyhcInB1cGFyZ3NcIiwgYXJncyk7XG4gIHJldHVybiBhcmdzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NIYW5kbGUge1xuICBwcm9jZXNzOiBDaGlsZFByb2Nlc3M7XG4gIHdhaXQ6IFByb21pc2U8dm9pZD47XG4gIGdldCBraWxsZWQoKTogYm9vbGVhbjtcbiAga2lsbCgpOiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjbWQ6IHN0cmluZywgb3B0aW9ucz86IFNwYXduT3B0aW9ucyk6IFByb2Nlc3NIYW5kbGUge1xuICBjb25zdCBwYXJ0cyA9IGNtZC5zcGxpdChcIiBcIikuZmlsdGVyKChzKSA9PiBzLmxlbmd0aCk7XG4gIGNvbnN0IFtjb21tYW5kLCAuLi5hcmdzXSA9IHBhcnRzO1xuICBpZiAoIWNvbW1hbmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbXB0eSBjb21tYW5kXCIpO1xuICB9XG4gIGNvbnN0IHByb2MgPSBzcGF3bihjb21tYW5kLCBhcmdzLCB7XG4gICAgc3RkaW86IFwiaW5oZXJpdFwiLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xuICBsZXQga2lsbGVkID0gZmFsc2U7XG4gIHJldHVybiB7XG4gICAgcHJvY2VzczogcHJvYyxcbiAgICB3YWl0OiBsb2dnZXIuYXR0YWNoKHByb2MsIGNvbW1hbmQpLFxuICAgIGdldCBraWxsZWQoKSB7XG4gICAgICByZXR1cm4ga2lsbGVkO1xuICAgIH0sXG4gICAga2lsbCgpIHtcbiAgICAgIGlmIChraWxsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAga2lsbGVkID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHBpZCA9IHByb2MucGlkO1xuICAgICAgaWYgKHBpZCkge1xuICAgICAgICB0cmVlS2lsbChwaWQsIFwiU0lHS0lMTFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Mua2lsbChcIlNJR0tJTExcIik7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmltcG9ydCB7IHJtU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBta2R0ZW1wIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgY2hyb21pdW1PcHRpb25zIH0gZnJvbSBcIi4uL2Jhc2UvY2hyb21pdW1cIjtcbmltcG9ydCB7IHB1cEFwcCB9IGZyb20gXCIuLi9iYXNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4uL2Jhc2UvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgZXhlYywgUFVQX0FSR1NfS0VZIH0gZnJvbSBcIi4uL2Jhc2UvcHJvY2Vzc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWxlY3Ryb25PcHRzKGRpc2FibGVHcHU6IGJvb2xlYW4pIHtcbiAgcmV0dXJuIFsuLi4oYXdhaXQgY2hyb21pdW1PcHRpb25zKGRpc2FibGVHcHUpKSwgXCJoZWFkbGVzcz1uZXdcIl07XG59XG5cbmNvbnN0IFRBRyA9IFwiW0VsZWN0cm9uXVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bkVsZWN0cm9uQXBwT3B0aW9ucyB7XG4gIGFyZ3M6IHVua25vd25bXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkVsZWN0cm9uQXBwKHsgYXJncyB9OiBSdW5FbGVjdHJvbkFwcE9wdGlvbnMpIHtcbiAgLy8gTGF6eTogZWxlY3Ryb24ncyBlbnRyeSB0aHJvd3MgaWYgdGhlIGJpbmFyeSBpcyBhYnNlbnQsIHNvIHV0aWwtb25seSBjb25zdW1lcnMgbXVzdCBub3QgbG9hZCBpdCBhdCBpbXBvcnQgdGltZS5cbiAgY29uc3QgeyBkZWZhdWx0OiBlbGVjdHJvbiB9ID0gYXdhaXQgaW1wb3J0KFwiZWxlY3Ryb25cIik7XG4gIGNvbnN0IG9wdHMgPSBhd2FpdCBlbGVjdHJvbk9wdHMoYXJncy5pbmNsdWRlcyhcIi0tZGlzYWJsZS1ncHVcIikpO1xuICAvLyBQZXItcHJvY2VzcyBwcm9maWxlOiBpc29sYXRlcyB0aGlzIGNhbGwncyBDaHJvbWl1bSBjYWNoZSAod2FybXVwIHdpbmRvd3Mgc2hhcmUgaXQgdmlhIGRlZmF1bHRTZXNzaW9uKSwgd2lwZWQgb24gZXhpdC5cbiAgY29uc3QgcHJvZmlsZURpciA9IGF3YWl0IG1rZHRlbXAoam9pbih0bXBkaXIoKSwgXCJwdXAtcHJvZmlsZS1cIikpO1xuICBjb25zdCBlbGVjdHJvbkFyZ3MgPSBvcHRzLm1hcCgoYSkgPT4gYC0tJHthfWApO1xuICBlbGVjdHJvbkFyZ3MucHVzaChgLS11c2VyLWRhdGEtZGlyPSR7cHJvZmlsZURpcn1gKTtcbiAgZWxlY3Ryb25BcmdzLnB1c2goYCR7UFVQX0FSR1NfS0VZfT0ke0J1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGFyZ3MpKS50b1N0cmluZyhcImJhc2U2NFwiKX1gKTtcbiAgY29uc3QgY21kID0gW2VsZWN0cm9uLCAuLi5lbGVjdHJvbkFyZ3MsIHB1cEFwcF0uam9pbihcIiBcIik7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIGNtZCk7XG5cbiAgY29uc3QgZW52OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHsgLi4ucHJvY2Vzcy5lbnYsIFJVU1RfQkFDS1RSQUNFOiBcImZ1bGxcIiB9O1xuICBjb25zdCBoYW5kbGUgPSBleGVjKGNtZCwgeyBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIiwgXCJpcGNcIl0sIGVudiB9KTtcbiAgaGFuZGxlLnByb2Nlc3Mub25jZShcImV4aXRcIiwgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBybVN5bmMocHJvZmlsZURpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci53YXJuKFRBRywgXCJwcm9maWxlIGNsZWFudXAgZmFpbGVkOlwiLCBlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gaGFuZGxlO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5cbmNvbnN0IFNVUFBPUlRFRF9QUk9UT0NPTFMgPSBbXCJmaWxlOlwiLCBcImh0dHA6XCIsIFwiaHR0cHM6XCIsIFwiZGF0YTpcIl07XG5jb25zdCBTT1VSQ0VfUEFUVEVSTiA9IC9eKGZpbGU6fGh0dHBzPzp8ZGF0YTopLztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSFRNTChzb3VyY2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIVNPVVJDRV9QQVRURVJOLnRlc3Qoc291cmNlKSkge1xuICAgIGNvbnN0IHByb3RvY29sID0gYCR7c291cmNlLnNwbGl0KFwiOlwiKVswXX06YDtcbiAgICBjb25zdCBtZXNzYWdlID0gU1VQUE9SVEVEX1BST1RPQ09MUy5pbmNsdWRlcyhwcm90b2NvbClcbiAgICAgID8gYHVuc3VwcG9ydGVkIHByb3RvY29sOiAke3Byb3RvY29sfSwgZXhwZWN0ZWQgJHtTVVBQT1JURURfUFJPVE9DT0xTLmpvaW4oXCIsIFwiKX1gXG4gICAgICA6IGBpbnZhbGlkIHNvdXJjZSBmb3JtYXQsIGV4cGVjdGVkICR7U1VQUE9SVEVEX1BST1RPQ09MUy5qb2luKFwiLCBcIil9YDtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cblxuICAvLyBmaWxlOiBzb3VyY2VzIGFyZSBjaGVhcCB0byBzdGF0IGhlcmU7IEVsZWN0cm9uIHdvdWxkIG9ubHkgc3VyZmFjZSBhIG1pc3Npbmcgb25lIGFzIGRpZC1mYWlsLWxvYWQgYWZ0ZXIgc3Bhd24rd2FybXVwLlxuICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoXCJmaWxlOlwiKSAmJiAhZXhpc3RzU3luYyhmaWxlVVJMVG9QYXRoKHNvdXJjZSkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzb3VyY2UgZmlsZSBub3QgZm91bmQ6ICR7c291cmNlfWApO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA0LzAxLlxuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJub2RlOmV2ZW50c1wiO1xuXG5leHBvcnQgZW51bSBJcGNNc2dUeXBlIHtcbiAgLy8gY2hpbGQg4oaSIHBhcmVudFxuICBDb25zb2xlID0gXCJjb25zb2xlXCIsXG4gIFByb2dyZXNzID0gXCJwcm9ncmVzc1wiLFxuICBEb25lID0gXCJkb25lXCIsXG4gIEVycm9yID0gXCJlcnJvclwiLFxuICAvLyBwYXJlbnQg4oaSIGNoaWxkXG4gIENhbmNlbCA9IFwiY2FuY2VsXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc29sZU1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuQ29uc29sZTtcbiAgbGV2ZWw6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbE1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuQ2FuY2VsO1xuICByZWFzb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXBjRG9uZVBheWxvYWQge1xuICB3cml0dGVuOiBudW1iZXI7XG4gIG91dEZpbGVzOiBzdHJpbmdbXTtcbiAgYmxhbms6IG51bWJlcjtcbiAgamFuazogbnVtYmVyO1xuICBzY3JlZW5zaG90czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLlByb2dyZXNzO1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvbmVNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkRvbmU7XG4gIHBheWxvYWQ6IElwY0RvbmVQYXlsb2FkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5FcnJvcjtcbiAgZXJyb3I6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXBjTXNnID0gQ29uc29sZU1zZyB8IFByb2dyZXNzTXNnIHwgRG9uZU1zZyB8IEVycm9yTXNnIHwgQ2FuY2VsTXNnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElwY0V2ZW50cyB7XG4gIHByb2dyZXNzOiBbdmFsdWU6IG51bWJlcl07XG4gIGNvbnNvbGU6IFtsZXZlbDogc3RyaW5nLCBtc2c6IHN0cmluZ107XG4gIGRvbmU6IFtwYXlsb2FkOiBJcGNEb25lUGF5bG9hZF07XG4gIGVycm9yOiBbZXJyb3I6IEVycm9yXTtcbiAgY2xvc2U6IFtjb2RlOiBudW1iZXIgfCBudWxsXTtcbn1cblxuZXhwb3J0IGNsYXNzIElwY1dyaXRlciB7XG4gIHdyaXRlQ29uc29sZShsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkNvbnNvbGUsIGxldmVsLCBtZXNzYWdlIH0pO1xuICB9XG5cbiAgd3JpdGVQcm9ncmVzcyh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5Qcm9ncmVzcywgdmFsdWUgfSk7XG4gIH1cblxuICB3cml0ZUVycm9yKGVycm9yOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5FcnJvciwgZXJyb3IgfSk7XG4gIH1cblxuICB3cml0ZURvbmUocGF5bG9hZDogSXBjRG9uZVBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5Eb25lLCBwYXlsb2FkIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kKG1zZzogSXBjTXNnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoIXByb2Nlc3Muc2VuZCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5zZW5kKG1zZywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSXBjUmVhZGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyPElwY0V2ZW50cz4ge1xuICBjb25zdHJ1Y3RvcihjaGlsZDogQ2hpbGRQcm9jZXNzKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjaGlsZC5vbihcIm1lc3NhZ2VcIiwgKHJhdykgPT4ge1xuICAgICAgY29uc3QgbXNnID0gcmF3IGFzIElwY01zZztcbiAgICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkNvbnNvbGU6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJjb25zb2xlXCIsIG1zZy5sZXZlbCwgbXNnLm1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5Qcm9ncmVzczoge1xuICAgICAgICAgIHRoaXMuZW1pdChcInByb2dyZXNzXCIsIG1zZy52YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkRvbmU6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJkb25lXCIsIG1zZy5wYXlsb2FkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIElwY01zZ1R5cGUuRXJyb3I6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBuZXcgRXJyb3IobXNnLmVycm9yKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjaGlsZC5vbmNlKFwiZXhpdFwiLCAoYykgPT4gdGhpcy5lbWl0KFwiY2xvc2VcIiwgYykpO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IHJ1bkVsZWN0cm9uQXBwIH0gZnJvbSBcIi4vcmVuZGVyZXIvZWxlY3Ryb25cIjtcbmltcG9ydCB7IGNoZWNrSFRNTCB9IGZyb20gXCIuL3JlbmRlcmVyL2h0bWxfY2hlY2tcIjtcbmltcG9ydCB7IHR5cGUgSXBjRG9uZVBheWxvYWQsIElwY01zZ1R5cGUsIElwY1JlYWRlciB9IGZyb20gXCIuL3JlbmRlcmVyL2lwY1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb25zb2xlQ2FsbGJhY2ssXG4gIGRlZmF1bHRSZW5kZXJPcHRpb25zLFxuICB0eXBlIFByb2dyZXNzQ2FsbGJhY2ssXG4gIHR5cGUgUmVuZGVyT3B0aW9ucyxcbiAgdHlwZSBSZW5kZXJSZXN1bHQsXG59IGZyb20gXCIuL3JlbmRlcmVyL3NjaGVtYVwiO1xuXG5jb25zdCBUQUcgPSBcIltwdXBdXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVwT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8UmVuZGVyT3B0aW9ucz4ge1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgb25Qcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2s7XG4gIG9uQ29uc29sZT86IENvbnNvbGVDYWxsYmFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXBSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHQge31cblxuYXN5bmMgZnVuY3Rpb24gcnVuUHVwQXBwKHNvdXJjZTogc3RyaW5nLCByZW5kZXI6IFJlbmRlck9wdGlvbnMpIHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHJ1blB1cEFwcGAsIHNvdXJjZSwgcmVuZGVyKTtcblxuICBjb25zdCBhcmdzOiBzdHJpbmdbXSA9IFtcbiAgICBzb3VyY2UsXG4gICAgYC0td2lkdGhgLFxuICAgIGAke3JlbmRlci53aWR0aH1gLFxuICAgIGAtLWhlaWdodGAsXG4gICAgYCR7cmVuZGVyLmhlaWdodH1gLFxuICAgIGAtLWZwc2AsXG4gICAgYCR7cmVuZGVyLmZwc31gLFxuICAgIGAtLWR1cmF0aW9uYCxcbiAgICBgJHtyZW5kZXIuZHVyYXRpb259YCxcbiAgICBgLS13aW5kb3ctdGltZW91dGAsXG4gICAgYCR7cmVuZGVyLndpbmRvd1RpbWVvdXR9YCxcbiAgICBgLS1vdXQtZmlsZWAsXG4gICAgcmVuZGVyLm91dEZpbGVzLmpvaW4oXCIsXCIpLFxuICBdO1xuICBpZiAocmVuZGVyLndpdGhBdWRpbykge1xuICAgIGFyZ3MucHVzaChgLS13aXRoLWF1ZGlvYCk7XG4gIH1cbiAgaWYgKHJlbmRlci51c2VJbm5lclByb3h5KSB7XG4gICAgYXJncy5wdXNoKGAtLXVzZS1pbm5lci1wcm94eWApO1xuICB9XG4gIGlmIChyZW5kZXIuZGV0ZXJtaW5pc3RpYykge1xuICAgIGFyZ3MucHVzaChgLS1kZXRlcm1pbmlzdGljYCk7XG4gIH1cbiAgaWYgKHJlbmRlci5kaXNhYmxlR3B1KSB7XG4gICAgYXJncy5wdXNoKGAtLWRpc2FibGUtZ3B1YCk7XG4gIH1cbiAgaWYgKHJlbmRlci5kaXNhYmxlSHdDb2RlYykge1xuICAgIGFyZ3MucHVzaChgLS1kaXNhYmxlLWh3LWNvZGVjYCk7XG4gIH1cbiAgaWYgKHJlbmRlci53aW5kb3dUb2xlcmFudCkge1xuICAgIGFyZ3MucHVzaChgLS13aW5kb3ctdG9sZXJhbnRgKTtcbiAgfVxuICBpZiAocmVuZGVyLnNjcmVlbnNob3RzLmxlbmd0aCA+IDApIHtcbiAgICBhcmdzLnB1c2goYC0tc2NyZWVuc2hvdHNgLCByZW5kZXIuc2NyZWVuc2hvdHMuam9pbihcIixcIikpO1xuICB9XG5cbiAgcmV0dXJuIHJ1bkVsZWN0cm9uQXBwKHsgYXJncyB9KTtcbn1cblxuY29uc3QgZCA9IGRlZmF1bHRSZW5kZXJPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVwKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBQYXJ0aWFsPFB1cE9wdGlvbnM+KTogUHJvbWlzZTxQdXBSZXN1bHQ+IHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHB1cGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgeyBzaWduYWwgfSA9IG9wdGlvbnM7XG4gIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgY2hlY2tIVE1MKHNvdXJjZSk7XG5cbiAgY29uc3Qgb3V0RmlsZXMgPSBvcHRpb25zLm91dEZpbGVzID8/IGQub3V0RmlsZXM7XG4gIGNvbnN0IHJlbmRlck9wdHM6IFJlbmRlck9wdGlvbnMgPSB7XG4gICAgd2lkdGg6IG9wdGlvbnMud2lkdGggPz8gZC53aWR0aCxcbiAgICBoZWlnaHQ6IG9wdGlvbnMuaGVpZ2h0ID8/IGQuaGVpZ2h0LFxuICAgIGZwczogb3B0aW9ucy5mcHMgPz8gZC5mcHMsXG4gICAgZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24gPz8gZC5kdXJhdGlvbixcbiAgICB3aXRoQXVkaW86IG9wdGlvbnMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgIHVzZUlubmVyUHJveHk6IG9wdGlvbnMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgZGV0ZXJtaW5pc3RpYzogb3B0aW9ucy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICBkaXNhYmxlR3B1OiBvcHRpb25zLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgIGRpc2FibGVId0NvZGVjOiBvcHRpb25zLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgd2luZG93VG9sZXJhbnQ6IG9wdGlvbnMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICB3aW5kb3dUaW1lb3V0OiBvcHRpb25zLndpbmRvd1RpbWVvdXQgPz8gZC53aW5kb3dUaW1lb3V0LFxuICAgIHNjcmVlbnNob3RzOiBvcHRpb25zLnNjcmVlbnNob3RzID8/IGQuc2NyZWVuc2hvdHMsXG4gICAgb3V0RmlsZXMsXG4gIH07XG5cbiAgY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgbGV0IHByb2dyZXNzID0gMDtcbiAgY29uc3QgdGljayA9IChwOiBudW1iZXIpID0+IHtcbiAgICBwcm9ncmVzcyA9IHA7XG4gICAgb3B0aW9ucy5vblByb2dyZXNzPy4ocCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlID0gYXdhaXQgcnVuUHVwQXBwKHNvdXJjZSwgcmVuZGVyT3B0cyk7XG5cbiAgbGV0IGtpbGxUaW1lcjogTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgaGFuZGxlLnByb2Nlc3Muc2VuZD8uKHsgdHlwZTogSXBjTXNnVHlwZS5DYW5jZWwsIHJlYXNvbjogU3RyaW5nKHNpZ25hbD8ucmVhc29uID8/IFwiYWJvcnRcIikgfSk7XG4gICAga2lsbFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBoYW5kbGUua2lsbCgpLCA1XzAwMCk7XG4gIH07XG4gIHNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBQcm9taXNlPElwY0RvbmVQYXlsb2FkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBuZXcgSXBjUmVhZGVyKGhhbmRsZS5wcm9jZXNzKVxuICAgICAgICAub24oXCJjbG9zZVwiLCAoY29kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IEpTT04uc3RyaW5naWZ5KHsgc291cmNlLCBwcm9ncmVzcywgY29kZSwga2lsbGVkOiBoYW5kbGUua2lsbGVkIH0pO1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYGNyYXNoZWQ6ICR7bXNnfWApKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwicHJvZ3Jlc3NcIiwgdGljaylcbiAgICAgICAgLm9uKFwiY29uc29sZVwiLCAobCwgbSkgPT4gb3B0aW9ucy5vbkNvbnNvbGU/LihsLCBtKSlcbiAgICAgICAgLm9uKFwiZG9uZVwiLCByZXNvbHZlKVxuICAgICAgICAub24oXCJlcnJvclwiLCByZWplY3QpO1xuICAgIH0pO1xuICAgIHRpY2soMCk7XG4gICAgY29uc3QgW3N1bW1hcnldID0gYXdhaXQgUHJvbWlzZS5hbGwoW3Jlc3VsdCwgaGFuZGxlLndhaXRdKTtcbiAgICB0aWNrKDEwMCk7XG4gICAgbG9nZ2VyLmRlYnVnKFRBRywgYGRvbmUgJHtvdXRGaWxlcy5qb2luKFwiLFwiKX0gaW4gJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpIC0gdDApfW1zYCk7XG4gICAgcmV0dXJuIHsgLi4uc3VtbWFyeSwgb3B0aW9uczogcmVuZGVyT3B0cyB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlLmtpbGwoKTtcbiAgICBzaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG4gICAgdGhyb3cgZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjbGVhclRpbWVvdXQoa2lsbFRpbWVyKTtcbiAgICBzaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0KTtcbiAgfVxufVxuIl19
|