UNPKG

earlgrey

Version:

Programming language compiling to JavaScript, featuring macros, dynamic typing annotations and pattern matching.

2 lines (1 loc) 53.9 kB
'use strict';require('earlgrey-runtime/6');let accum$0;let $targ$1;let accum$1;let $targ$2;let accum$2;let accum$3;let $targ$3;let accum$4;let $targ$4;let accum$5;let $targ$30;let accum$6;let $targ$31;let accum$7;let $targ$36;let accum$8;let $targ$37;let accum$9;let $targ$43;let $targ$44;let $0$0;let __lt____lt____colon__$0;let util$0;let GenSym$0;let gensym$0;let classify$0;let classify_contiguous$0;let identity$0;let Body$0;let camelCase$0;let checker_db$0;let PatternInfo$0;let PatternCompiler$0;let PatternProcessor$0;let $targ$0;let assemble_conditions$0;let assemble_pattern$0;let inject_below_uses$0;let checkall$0;let same_block$0;let parse_clauses$0;let opt_clauses$0;let weave_clauses$0;$0$0=require("./location");__lt____lt____colon__$0=getProperty($0$0,"<<:","./location");util$0=require("./util");GenSym$0=getProperty(util$0,"GenSym","util");gensym$0=getProperty(util$0,"gensym","util");classify$0=getProperty(util$0,"classify","util");classify_contiguous$0=getProperty(util$0,"classify_contiguous","util");identity$0=getProperty(util$0,"identity","util");Body$0=getProperty(util$0,"Body","util");camelCase$0=getProperty(util$0,"camelCase","util");checker_db$0=getProperty(util$0,"checker_db","util");PatternInfo$0=(function PatternInfo(){let t0$0;let m$0$0;let __at___$0;if((!getChecker(PatternInfo$0)(this))){__at___$0=Object.create(PatternInfo$0.prototype);}else{__at___$0=this;}m$0$0=arguments;t0$0=m$0$0.length;if(((t0$0>=0)&&(t0$0<=3))){(__at___$0["handlers"]=((0>=t0$0)?[]:m$0$0[0]));(__at___$0["vars"]=((1>=t0$0)?[]:m$0$0[1]));(__at___$0["arguments"]=((2>=t0$0)?[]:m$0$0[2]));undefined;}else{___match_error(m$0$0,"{@handlers = {}, @vars = {}, @arguments = {}}");}return __at___$0;});__amp____colon__(((accum$0=({})),(accum$0["mergeAll"]=(function mergeAll(pinfos$0){let f$0;let rval$0;rval$0=PatternInfo$0();f$0=(function f(acc$0,pinfo$0){return acc$0.merge((pinfo$0.pinfo||pinfo$0));});return pinfos$0.reduce(f$0,rval$0);})),accum$0),__amp____colon__((($targ$1="PatternInfo"),(accum$1=({})),(accum$1["::name"]=$targ$1),accum$1),(($targ$2=true),(accum$2=({})),(accum$2["::egclass"]=$targ$2),accum$2)));(PatternInfo$0.prototype["merge"]=(function merge(pinfo$1){let __at___$1;let self$0;__at___$1=this;self$0=this;(__at___$1["handlers"]=__at___$1.handlers.concat(pinfo$1.handlers));(__at___$1["vars"]=__at___$1.vars.concat(pinfo$1.vars));(__at___$1["arguments"]=__at___$1.arguments.concat(pinfo$1.arguments));return __at___$1;}));__amp____colon__(PatternInfo$0,__amp____colon__(((accum$3=({})),(accum$3["mergeAll"]=(function mergeAll(pinfos$1){let f$1;let rval$1;rval$1=PatternInfo$0();f$1=(function f(acc$1,pinfo$2){return acc$1.merge((pinfo$2.pinfo||pinfo$2));});return pinfos$1.reduce(f$1,rval$1);})),accum$3),__amp____colon__((($targ$3="PatternInfo"),(accum$4=({})),(accum$4["::name"]=$targ$3),accum$4),(($targ$4=true),(accum$5=({})),(accum$5["::egclass"]=$targ$4),accum$5))));PatternCompiler$0=(function PatternCompiler(temp$0$0,temp$1$0,temp$2$0){let __at___$2;if((!getChecker(PatternCompiler$0)(this))){__at___$2=Object.create(PatternCompiler$0.prototype);}else{__at___$2=this;}(__at___$2["pattern"]=temp$0$0);(__at___$2["info"]=temp$1$0);(__at___$2["opt"]=temp$2$0);return __at___$2;});(PatternCompiler$0.prototype["compile"]=(function compile(){let tags$0;let $targ$5;let $targ$6;let $targ$7;let $targ$8;let $targ$9;let $targ$10;let __at___$3;let self$1;__at___$3=this;self$1=this;if(__at___$3.compiled){return __at___$3.compiled;}tags$0=clone((__at___$3.opt.tags||({})));(tags$0["group_id"]=(tags$0.group_id||gensym$0("group")));$targ$5=__at___$3.expand(__at___$3.pattern,tags$0,true,__at___$3.opt.indexable);(__at___$3["compiled"]=$targ$5);$targ$6=__at___$3.info;(__at___$3.compiled.pinfo["info"]=$targ$6);$targ$7=__at___$3.opt;(__at___$3.compiled.pinfo["opt"]=$targ$7);$targ$8=__at___$3.compiled.pinfo.vars;(__at___$3["vars"]=$targ$8);$targ$9=__at___$3.compiled.pinfo.handlers;(__at___$3["handlers"]=$targ$9);$targ$10=__at___$3.compiled.pinfo.arguments;(__at___$3["arguments"]=$targ$10);return __at___$3.compiled;}));(PatternCompiler$0.prototype["fork"]=(function fork(pattern$0){let pc$0;let $targ$11;let $targ$12;let $targ$13;let $targ$14;let __at___$4;let self$2;__at___$4=this;self$2=this;pc$0=PatternCompiler$0(null,__at___$4.info,__at___$4.opt);$targ$11=pattern$0;(pc$0["compiled"]=$targ$11);$targ$12=__at___$4.vars;(pc$0["vars"]=$targ$12);$targ$13=__at___$4.arguments;(pc$0["arguments"]=$targ$13);$targ$14=__at___$4.handlers;(pc$0["handlers"]=$targ$14);__amp____colon__(pc$0,pattern$0.pinfo);return pc$0;}));(PatternCompiler$0.prototype["parse_specs"]=(function parse_specs(specs$0,tags$1){let m$2;let acc$2;let temp$3;let rest$0;let has_defaults$0;let curidx$0;let insidx$0;let setInsidx$0;let rval$2;let $targ$15;let $targ$16;let __at___$5;let self$3;__at___$5=this;self$3=this;rest$0=undefined;has_defaults$0=false;curidx$0=0;insidx$0=null;setInsidx$0=(function setInsidx(spec$0){let msg$0;let x$0;let m$1$0;if(equal(insidx$0,null)){m$1$0=curidx$0;if((m$1$0===null)){msg$0="Object patterns cannot be after rest/default arguments.";throw ErrorFactory(["syntax","pattern"]).create(msg$0,({"expr":spec$0}));}else{x$0=m$1$0;insidx$0=x$0;return insidx$0;}}});rval$2=classify$0("fw","bw","keys","defaults",((acc$2=[]),(temp$3=null),(m$2=null),(function(){$2:for(m$2 of __at___$5.info.step_all(["pattern"],specs$0)){let t0$3;let t0$4;let msg$1;let res$0;let v$0;let t0$11;let t1$5;let t2$1;let m$5$0;let m$3$0;let esubp$0;let wrap$0;let finalize$0;let v$2;let v$1;let variable$1;let value$2;let key$0;let subp$0;let variable$0;let t0$2;let t1$0;let bridge$$22584$0;let spec$1;let ph$0$0;let t0$1;t0$1=m$2;spec$1=t0$1;ph$0$0=t0$1;t0$2=ph$0$0;if((Array.isArray(t0$2)&&((t1$0=t0$2.length),((t1$0===2)&&(t0$2[0]==="dynsplice"))))){variable$0=t0$2[1];curidx$0=null;rest$0=__at___$5.expand(variable$0,tags$1);temp$3=["ignore"];}else{bridge$$22584$0=ph$0$0;if(((Array.isArray(bridge$$22584$0)&&((t0$3=bridge$$22584$0.length),((t0$3===3)&&((bridge$$22584$0[0]==="assoc")&&((key$0=bridge$$22584$0[1]),(subp$0=bridge$$22584$0[2]),true)))))||(Array.isArray(bridge$$22584$0)&&((t0$4=bridge$$22584$0.length),((t0$4===2)&&((bridge$$22584$0[0]==="assoc")&&((subp$0=bridge$$22584$0[1]),(key$0=null),true))))))){setInsidx$0(spec$1);esubp$0=__at___$5.expand(subp$0,tags$1);wrap$0=(function wrap(){let p2$0;let t0$7;let t1$3;let t0$8;let field$0;let x$1;let y$0;let kexpr$0;let $$22678$0;let $$22679$0;let $$22680$0;let $$22681$0;let t0$6;let t1$2;let t2$0;let t3$0;let t4$0;let t5$0;let t6$0;let t7$0;let bridge$$22676$0;let key$1;let ph$2$0;let value$0;let default$1;let t0$5;let t1$1;let m$4$0;m$4$0=arguments;t0$5=m$4$0.length;if(((t0$5>=2)&&(t0$5<=3))){t1$1=m$4$0[0];key$1=t1$1;ph$2$0=t1$1;value$0=m$4$0[1];if((2>=t0$5)){default$1=[];}else{default$1=m$4$0[2];}t0$6=ph$2$0;t1$2=t0$6.length;if((($$22680$0=(t1$2===3))&&(($$22681$0=(t0$6[0]==="send"))&&((t2$0=t0$6[1]),(Array.isArray(t2$0)&&((t3$0=t2$0.length),((t3$0===2)&&((t2$0[0]==="symbol")&&((t2$0[1]==="^")&&((t4$0=t0$6[2]),(Array.isArray(t4$0)&&((t5$0=t4$0.length),((t5$0===3)&&((t4$0[0]==="data")&&((t6$0=t4$0[1]),(Array.isArray(t6$0)&&((t7$0=t6$0.length),((t7$0===1)&&(t6$0[0]==="void"))))))))))))))))))){kexpr$0=t4$0[2];return [kexpr$0,value$0].concat(default$1);}else{if($$22681$0){x$1=t0$6[1];y$0=t0$6[2];p2$0=__amp____colon__(["object_pattern",[y$0,value$0].concat(default$1)],({"pinfo":value$0.pinfo,"::objinsert":2}));return wrap$0(x$1,p2$0,default$1);}else{bridge$$22676$0=ph$2$0;if(((Array.isArray(bridge$$22676$0)&&((t0$7=bridge$$22676$0.length),((t0$7===2)&&((bridge$$22676$0[0]==="symbol")&&((t1$3=getProjector(camelCase$0)(bridge$$22676$0[1])),(t1$3[0]&&((field$0=t1$3[1]),true)))))))||(Array.isArray(bridge$$22676$0)&&((t0$8=bridge$$22676$0.length),((t0$8===2)&&((bridge$$22676$0[0]==="value")&&((field$0=bridge$$22676$0[1]),true))))))){return [__lt____lt____colon__$0(["value",field$0],key$1),value$0].concat(default$1);}else{throw send(send(ErrorFactory(["syntax","invalid_key"]),"create", true),__amp____colon__(["Invalid key."],({"expr":key$1,"::objinsert":1})));}}}}else{return ___match_error(m$4$0,"{match key, value, default = {}}");}});finalize$0=(function finalize(key$2,temp$4$0){let t0$9;let pattern$1;let default$2;let t0$10;let t1$4;let value$1;let ph$3$0;t0$9=temp$4$0;value$1=t0$9;ph$3$0=t0$9;t0$10=ph$3$0;t1$4=t0$10.length;if(((t1$4===3)&&(t0$10[0]==="default"))){pattern$1=t0$10[1];default$2=t0$10[2];return ["keys",wrap$0(key$2,pattern$1,[default$2])];}else{return ["keys",wrap$0(key$2,value$1)];}});m$3$0=key$0;if((m$3$0===null)){m$5$0=esubp$0;res$0=m$5$0;if((___hasprop(m$5$0,"pinfo")&&((t0$11=m$5$0.pinfo),(___hasprop(t0$11,"vars")&&((t1$5=t0$11.vars),(Array.isArray(t1$5)&&((t2$1=t1$5.length),(t2$1===1)))))))){v$0=t1$5[0];temp$3=finalize$0(v$0,esubp$0);}else{msg$1="Could not identify the name of the field to extract";throw send(send(ErrorFactory(["syntax","no_field"]),"create", true),__amp____colon__([msg$1],({"expr":spec$1,"::objinsert":1})));}}else{temp$3=finalize$0(key$0,esubp$0);}}else{t0$2=ph$0$0;if((Array.isArray(t0$2)&&((t1$0=t0$2.length),((t1$0===3)&&(t0$2[0]==="default"))))){variable$1=t0$2[1];value$2=t0$2[2];curidx$0=null;has_defaults$0=true;if(rest$0){throw ErrorFactory(["syntax","pattern"]).create("No default arguments after rest arg.");}else{temp$3=["defaults",[__at___$5.expand(variable$1,tags$1),value$2]];}}else{v$1=ph$0$0;if(((rest$0===undefined)&&(!has_defaults$0))){curidx$0=(curidx$0+1);temp$3=["fw",__at___$5.expand(v$1,tags$1)];}else{v$2=ph$0$0;curidx$0=null;temp$3=["bw",__at___$5.expand(v$2,tags$1)];}}}}acc$2.push(temp$3);}})(),acc$2));$targ$15=rest$0;(rval$2["rest"]=$targ$15);$targ$16=insidx$0;(rval$2["insertion_index"]=$targ$16);return rval$2;}));(PatternCompiler$0.prototype["expand"]=(function expand(){let x$2;let x$3;let p$0;let variable$2;let $targ$17;let x$4;let x$5;let variable$3;let variable$4;let csubp$0;let csubp$1;let csubp$2;let csubp$3;let x$8;let fn$0;let $targ$18;let msg$2;let msg$3;let cx$0;let m$8;let acc$3;let temp$5;let cxs$0;let m$13;let acc$6;let temp$8;let ps$0;let vs$0;let v$6;let t0$16;let m$12$0;let p$1;let r$0;let m$15;let acc$7;let temp$9;let m$16;let acc$8;let temp$10;let m$17;let acc$9;let temp$11;let m$18;let acc$10;let temp$12;let patt$0;let keys$1;let fw$1;let bw$1;let defaults$1;let rest$2;let keys$0;let fw$0;let bw$0;let defaults$0;let rest$1;let $$23377$0;let t0$21;let t1$11;let t2$4;let t3$1;let t4$1;let t5$1;let m$14$0;let specs$1;let pinfos$2;let pinfo$3;let r$1;let other$0;let subp$6;let expr$1;let mode$0;let subp$5;let args$1;let pattern$3;let default$3;let cond$0;let t$0;let f$4;let xs$2;let make__minus__any$0;let xs$0;let x$9;let f$3;let arg$0;let f$2;let args$0;let checker$0;let subp$4;let projector$0;let subp$3;let unconditional$0;let condition$0;let subp$2;let before$0;let subp$1;let value$3;let x$7;let x$6;let v$4;let v$3;let s$0;let handler$0;let $$22960$0;let $$22961$0;let $$22962$0;let $$22963$0;let $$22964$0;let $$22965$0;let $$22966$0;let t0$13;let bridge$$22939$0;let t1$6;let m$7$0;let $targ$19;let expr$0;let rval$3;let pattern$2;let tags$2;let toplevel$0;let checked$0;let t0$12;let m$6$0;let __at___$6;let self$4;__at___$6=this;self$4=this;m$6$0=arguments;t0$12=m$6$0.length;if(((t0$12>=2)&&(t0$12<=4))){pattern$2=m$6$0[0];tags$2=m$6$0[1];if((2>=t0$12)){toplevel$0=false;}else{toplevel$0=m$6$0[2];}if((3>=t0$12)){checked$0=false;}else{checked$0=m$6$0[3];}expr$0=__at___$6.info.step(["pattern"],pattern$2);m$7$0=expr$0;if(((x$2=m$7$0),((x$2 instanceof Array)&&(x$2[0]==="void")))){rval$3=["ignore"];}else{if(((x$3=m$7$0),((x$3 instanceof Array)&&(x$3[0]==="ignore")))){rval$3=expr$0;}else{if((($$22960$0=Array.isArray(m$7$0))&&((t0$13=m$7$0.length),(($$22962$0=(t0$13===2))&&(m$7$0[0]==="special"))))){handler$0=m$7$0[1];p$0=__at___$6.expand(handler$0.expand(__at___$6.info),tags$2,toplevel$0,false);p$0.pinfo.handlers.push(handler$0);rval$3=p$0;}else{if(($$22962$0&&(m$7$0[0]==="raw-symbol"))){s$0=m$7$0[1];variable$2=__amp__(__lt____lt____colon__$0(["symbol",s$0],expr$0),tags$2);$targ$17=expr$0.env;(variable$2["env"]=$targ$17);rval$3=__amp____colon__(["assign",variable$2],({"pinfo":PatternInfo$0([],[variable$2])}));}else{bridge$$22939$0=m$7$0;if((((x$4=bridge$$22939$0),((x$4 instanceof Array)&&(x$4[0]==="symbol")))||((x$5=bridge$$22939$0),((x$5 instanceof Array)&&(x$5[0]==="variable"))))){variable$3=__amp__(expr$0,tags$2);rval$3=__amp____colon__(["assign",variable$3],({"pinfo":PatternInfo$0([],[variable$3])}));}else{if((($$22960$0=Array.isArray(m$7$0))&&((t0$13=m$7$0.length),(($$22962$0=(t0$13===2))&&(($$22963$0=(m$7$0[0]==="value"))&&((v$3=m$7$0[1]),__at___$6.opt.strings_as_variables)))))){variable$4=__lt____lt____colon__$0(__amp__(["value",v$3],tags$2),expr$0);rval$3=__amp____colon__(["assign",variable$4],({"pinfo":PatternInfo$0([],[variable$4])}));}else{if($$22963$0){v$4=m$7$0[1];rval$3=["check",checker_db$0(v$4),["ignore"]];}else{if(($$22962$0&&(($$22963$0=(m$7$0[0]==="calc"))&&((x$6=m$7$0[1]),__at___$6.opt.strings_as_variables)))){rval$3=["assign",["multi",x$6]];}else{if($$22963$0){x$7=m$7$0[1];throw send(send(ErrorFactory(["syntax","pattern"]),"create", true),__amp____colon__(["Computed properties are not allowed here"],({"expr":expr$0,"::objinsert":1})));}else{if(($$22960$0&&((t0$13===3)&&(m$7$0[0]==="replace")))){subp$1=m$7$0[1];value$3=m$7$0[2];csubp$0=__at___$6.expand(subp$1,tags$2,toplevel$0,false);rval$3=__amp____colon__(["replace",csubp$0,value$3],({"pinfo":csubp$0.pinfo}));}else{if(($$22960$0&&(($$22962$0=((t0$13>=3)&&(t0$13<=4)))&&(m$7$0[0]==="test")))){condition$0=m$7$0[1];subp$2=m$7$0[2];if((3>=t0$13)){before$0=false;}else{before$0=m$7$0[3];}csubp$1=__at___$6.expand(subp$2,tags$2,toplevel$0,false);rval$3=__amp____colon__(["test",condition$0,csubp$1,before$0],({"pinfo":csubp$1.pinfo}));}else{if(($$22962$0&&(m$7$0[0]==="project"))){projector$0=m$7$0[1];subp$3=m$7$0[2];if((3>=t0$13)){unconditional$0=false;}else{unconditional$0=m$7$0[3];}csubp$2=__at___$6.expand(subp$3,tags$2,toplevel$0,true);rval$3=__amp____colon__(["project",projector$0,csubp$2,unconditional$0],({"pinfo":csubp$2.pinfo}));}else{if(($$22960$0&&(($$22962$0=(t0$13===3))&&(m$7$0[0]==="check")))){checker$0=m$7$0[1];subp$4=m$7$0[2];csubp$3=__at___$6.expand(subp$4,tags$2,toplevel$0,true);rval$3=__amp____colon__(["check",checker$0,csubp$3],({"pinfo":csubp$3.pinfo}));}else{if(($$22962$0&&(($$22963$0=(m$7$0[0]==="send"))&&((f$2=m$7$0[1]),(t1$6=m$7$0[2]),(x$8=t1$6),((x$8 instanceof Array)&&(x$8[0]==="data")))))){args$0=t1$6;if(toplevel$0){fn$0=__at___$6.expand(f$2,tags$2,true,false);$targ$18=PatternInfo$0.mergeAll([fn$0.pinfo,PatternInfo$0([],[],[args$0])]);(fn$0["pinfo"]=$targ$18);rval$3=fn$0;}else{msg$2="Function arguments can only be declared as a top level pattern.";throw ErrorFactory(["syntax","pattern"]).create(msg$2,({"node":expr$0,"arg":args$0}));}}else{if($$22963$0){f$3=m$7$0[1];arg$0=m$7$0[2];rval$3=["assign",expr$0];}else{if((!__at___$6.opt.allow_nested)){msg$3="Nested patterns are not allowed here.";throw ErrorFactory(["syntax","pattern"]).create(msg$3,({"node":expr$0}));}else{if((($$22960$0=Array.isArray(m$7$0))&&((t0$13=m$7$0.length),((t0$13===2)&&(m$7$0[0]==="neg"))))){x$9=m$7$0[1];cx$0=__at___$6.expand(x$9,tags$2);rval$3=__amp____colon__(["neg",cx$0],({"pinfo":cx$0.pinfo}));}else{if(($$22960$0&&((t0$13>=1)&&(m$7$0[0]==="all")))){xs$0=Array.prototype.slice.call(m$7$0,1);acc$3=[];temp$5=null;m$8=null;$3:for(m$8 of xs$0){let x$10;x$10=m$8;temp$5=__at___$6.expand(x$10,tags$2);acc$3.push(temp$5);}cxs$0=acc$3;rval$3=__amp____colon__(["all"].concat(cxs$0),({"pinfo":PatternInfo$0.mergeAll(cxs$0)}));}else{make__minus__any$0=(function makeAny(xs$1){let m$10;let acc$5;let temp$7;let m$11;let canon$0;let normalize$0;let pps$0;canon$0=(function canon(all$0){return all$0.sort().join(",");});normalize$0=(function normalize(vars$0){let m$9;let acc$4;let temp$6;return canon$0(((acc$4=[]),(temp$6=null),(m$9=null),(function(){$5:for(m$9 of vars$0){let v$5;let t0$14;let t1$7;t0$14=m$9;if((Array.isArray(t0$14)&&((t1$7=t0$14.length),((t1$7===2)&&(t0$14[0]==="symbol"))))){v$5=t0$14[1];temp$6=v$5;acc$4.push(temp$6);}else{___match_error(m$9);}}})(),acc$4));});acc$5=[];temp$7=null;m$10=null;$6:for(m$10 of xs$1){let x$11;x$11=m$10;temp$7=__at___$6.expand(x$11,tags$2);acc$5.push(temp$7);}pps$0=acc$5;m$11=null;$4:for(m$11 of neighbours(pps$0)){let v1$0;let v2$0;let pp1$0;let pp2$0;let t0$15;let t1$8;t0$15=m$11;if((Array.isArray(t0$15)&&((t1$8=t0$15.length),(t1$8===2)))){pp1$0=t0$15[0];pp2$0=t0$15[1];v1$0=pp1$0.pinfo.vars;v2$0=pp2$0.pinfo.vars;if((normalize$0(v1$0)!==normalize$0(v2$0))){throw ErrorFactory(["syntax","pattern"]).create("Both branches of 'or' must contain the same variables",({"vars1":__lt____lt____colon__$0(v1$0.sort(),pp1$0),"vars2":__lt____lt____colon__$0(v2$0.sort(),pp2$0)}));}}else{___match_error(m$11);}}return __amp____colon__(["any"].concat(pps$0),({"pinfo":(pps$0[0]&&pps$0[0].pinfo)}));});if((($$22964$0=Array.isArray(m$7$0))&&((t0$13=m$7$0.length),((t0$13>=1)&&(m$7$0[0]==="any"))))){xs$2=Array.prototype.slice.call(m$7$0,1);rval$3=make__minus__any$0(xs$2);}else{if(($$22964$0&&((t0$13===4)&&(m$7$0[0]==="if")))){cond$0=m$7$0[1];t$0=m$7$0[2];f$4=m$7$0[3];rval$3=make__minus__any$0([["test",cond$0,t$0,true],f$4]);}else{if(($$22964$0&&(((t0$13>=2)&&(t0$13<=3))&&(m$7$0[0]==="maybe")))){pattern$3=m$7$0[1];if((2>=t0$13)){default$3=null;}else{default$3=m$7$0[2];}p$1=__at___$6.expand(pattern$3,tags$2);m$12$0=p$1.pinfo.vars;if((Array.isArray(m$12$0)&&((t0$16=m$12$0.length),(t0$16===1)))){v$6=m$12$0[0];r$0=["any",p$1,["check",checker_db$0(default$3),["assign",v$6]]];}else{vs$0=m$12$0;acc$6=[];temp$8=null;m$13=null;$7:for(m$13 of vs$0){let v$7;v$7=m$13;temp$8=["check",checker_db$0(default$3),["assign",v$7]];acc$6.push(temp$8);}ps$0=acc$6;r$0=["any",p$1,["all"].concat(ps$0)];}rval$3=__amp____colon__(r$0,({"pinfo":p$1.pinfo}));}else{if(($$22964$0&&((t0$13>=1)&&(m$7$0[0]==="data")))){args$1=Array.prototype.slice.call(m$7$0,1);specs$1=__at___$6.parse_specs(args$1,tags$2);pinfos$2=[];pinfos$2=pinfos$2.concat(((acc$7=[]),(temp$9=null),(m$15=null),(function(){$8:for(m$15 of specs$1.keys){let pinfo$4;let t0$17;let t1$9;let t2$2;t0$17=m$15;if((Array.isArray(t0$17)&&((t1$9=t0$17.length),(((t1$9>=2)&&(t1$9<=3))&&(t0$17[0],(t2$2=t0$17[1]),___hasprop(t2$2,"pinfo")))))){pinfo$4=t2$2.pinfo;if((2>=t1$9)){null;}else{t0$17[2];}temp$9=pinfo$4;acc$7.push(temp$9);}else{___match_error(m$15);}}})(),acc$7));pinfos$2=pinfos$2.concat(((acc$8=[]),(temp$10=null),(m$16=null),(function(){$9:for(m$16 of specs$1.fw){let pinfo$5;let t0$18;t0$18=m$16;if(___hasprop(t0$18,"pinfo")){pinfo$5=t0$18.pinfo;temp$10=pinfo$5;acc$8.push(temp$10);}else{___match_error(m$16);}}})(),acc$8));pinfos$2=pinfos$2.concat(((acc$9=[]),(temp$11=null),(m$17=null),(function(){$10:for(m$17 of specs$1.bw){let pinfo$6;let t0$19;t0$19=m$17;if(___hasprop(t0$19,"pinfo")){pinfo$6=t0$19.pinfo;temp$11=pinfo$6;acc$9.push(temp$11);}else{___match_error(m$17);}}})(),acc$9));pinfos$2=pinfos$2.concat(((acc$10=[]),(temp$12=null),(m$18=null),(function(){$11:for(m$18 of specs$1.defaults){let pinfo$7;let t0$20;let t1$10;let t2$3;t0$20=m$18;if((Array.isArray(t0$20)&&((t1$10=t0$20.length),((t1$10===2)&&((t2$3=t0$20[0]),___hasprop(t2$3,"pinfo")))))){pinfo$7=t2$3.pinfo;t0$20[1];temp$12=pinfo$7;acc$10.push(temp$12);}else{___match_error(m$18);}}})(),acc$10));if(specs$1.rest){pinfos$2.push(specs$1.rest.pinfo);}pinfo$3=PatternInfo$0.mergeAll(pinfos$2);m$14$0=specs$1;if((($$23377$0=___hasprop(m$14$0,"keys"))&&((t0$21=m$14$0.keys),(Array.isArray(t0$21)&&((t1$11=t0$21.length),((t1$11===0)&&(___hasprop(m$14$0,"fw")&&((fw$0=m$14$0.fw),(___hasprop(m$14$0,"bw")&&((bw$0=m$14$0.bw),(___hasprop(m$14$0,"defaults")&&((defaults$0=m$14$0.defaults),___hasprop(m$14$0,"rest"))))))))))))){rest$1=m$14$0.rest;patt$0=__amp____colon__(__lt____lt____colon__$0(["array_pattern",fw$0,bw$0,defaults$0,rest$1],pattern$2),({"pinfo":pinfo$3}));if(checked$0){rval$3=patt$0;}else{rval$3=__amp____colon__(["check",checker_db$0.Array,patt$0],({"pinfo":pinfo$3}));}}else{if(($$23377$0&&((keys$0=m$14$0.keys),(___hasprop(m$14$0,"fw")&&((t0$21=m$14$0.fw),(Array.isArray(t0$21)&&((t1$11=t0$21.length),((t1$11===0)&&(___hasprop(m$14$0,"bw")&&((t2$4=m$14$0.bw),(Array.isArray(t2$4)&&((t3$1=t2$4.length),((t3$1===0)&&(___hasprop(m$14$0,"defaults")&&((t4$1=m$14$0.defaults),(Array.isArray(t4$1)&&((t5$1=t4$1.length),((t5$1===0)&&(___hasprop(m$14$0,"rest")&&(m$14$0.rest===(void 0))))))))))))))))))))){rval$3=__amp____colon__(["object_pattern"].concat(keys$0),({"pinfo":pinfo$3}));}else{if(($$23377$0&&((keys$1=m$14$0.keys),(___hasprop(m$14$0,"fw")&&((fw$1=m$14$0.fw),(___hasprop(m$14$0,"bw")&&((bw$1=m$14$0.bw),(___hasprop(m$14$0,"defaults")&&((defaults$1=m$14$0.defaults),___hasprop(m$14$0,"rest")))))))))){rest$2=m$14$0.rest;rval$3=__amp____colon__(["all",["array_pattern",fw$1,bw$1,defaults$1,rest$2],["object_pattern"].concat(keys$1)],({"pinfo":pinfo$3,"insertion_index":specs$1.insertion_index}));}else{rval$3=___match_error(m$14$0,"{=> keys, => fw, => bw, => defaults, => rest}");}}}}else{if(($$22964$0&&(($$22966$0=(t0$13===3))&&(m$7$0[0]==="mode")))){mode$0=m$7$0[1];subp$5=m$7$0[2];rval$3=__at___$6.expand(subp$5,__amp__(tags$2,({"declare_mode":mode$0})),toplevel$0,checked$0);}else{if(($$22966$0&&(m$7$0[0]==="default"))){subp$6=m$7$0[1];expr$1=m$7$0[2];r$1=__at___$6.expand(subp$6,tags$2,toplevel$0,checked$0);rval$3=__amp____colon__(["default",r$1,expr$1],({"pinfo":r$1.pinfo,"::objinsert":3}));}else{other$0=m$7$0;throw ErrorFactory(["syntax","pattern"]).create(("Illegal pattern: "+other$0),({"node":other$0}));}}}}}}}}}}}}}}}}}}}}}}}}if((!rval$3.pinfo)){$targ$19=PatternInfo$0();(rval$3["pinfo"]=$targ$19);(void 0);}return (__at___$6.opt.wrap_pattern||identity$0)(__lt____lt____colon__$0(rval$3,pattern$2),toplevel$0);}else{return ___match_error(m$6$0,"{pattern, tags, toplevel = false, checked = false}");}}));(PatternCompiler$0.prototype["shift_rhs"]=(function shift_rhs(temp$13$0,rhs$0){let t0$22;let projector$1;let subp$7;let t0$23;let t1$12;let pattern$4;let ph$4$0;let __at___$7;let self$5;__at___$7=this;self$5=this;t0$22=temp$13$0;pattern$4=t0$22;ph$4$0=t0$22;t0$23=ph$4$0;t1$12=t0$23.length;if(((t1$12===4)&&((t0$23[0]==="project")&&((projector$1=t0$23[1]),(subp$7=t0$23[2]),(t0$23[3]===true))))){return __at___$7.shift_rhs(subp$7,["send",projector$1,["data",rhs$0]]);}else{return [pattern$4,rhs$0];}}));(PatternCompiler$0.prototype["process_for_rhs"]=(function process_for_rhs(rhs$1){let t0$24;let t0$25;let t1$13;let x$13;let x$14;let t0$27;let t0$28;let $targ$26;let t0$29;let t1$15;let $targ$27;let name$0;let t0$26;let t1$14;let bridge$$23687$0;let ph$5$0;let bridge$$23684$0;let m$19$0;let t0$30;let $targ$20;let real_rhs$0;let $targ$21;let cpattern$0;let target$0;let expr$2;let proc$0;let $targ$22;let $targ$23;let $targ$24;let $targ$25;let __at___$8;let self$6;__at___$8=this;self$6=this;if((!__at___$8.compiled)){__at___$8.compile();}if(((!__at___$8.opt.allow_arguments)&&__at___$8.arguments.length)){throw ErrorFactory(["syntax","pattern","arguments"]).create("Arguments cannot be declared in this pattern",({"args":__at___$8.arguments[0],"rhs":rhs$1}));}if(__at___$8.arguments.length){$targ$20=inject_below_uses$0(rhs$1,(function(x$12){return util$0.construct(__at___$8.arguments.concat([x$12]),(function(args$2,rest$3){return ["send",["symbol","->"],["data",args$2,rest$3]];}));}));}else{$targ$20=rhs$1;}t0$24=getProjector((__at___$8.opt.wrap_target||identity$0))($targ$20);if(t0$24[0]){real_rhs$0=t0$24[1];}else{___match_error($targ$20,"[@opt.wrap_target or identity]! real_rhs");}$targ$21=__at___$8.shift_rhs(__at___$8.compiled,real_rhs$0);t0$25=$targ$21;if((Array.isArray(t0$25)&&((t1$13=t0$25.length),(t1$13===2)))){cpattern$0=t0$25[0];target$0=t0$25[1];}else{___match_error($targ$21,"{cpattern, var target}");}[cpattern$0,target$0];__lt____lt____colon__$0(target$0,rhs$1);expr$2=null;m$19$0=target$0;bridge$$23684$0=m$19$0;if((((x$13=bridge$$23684$0),((x$13 instanceof Array)&&(x$13[0]==="symbol")))||((x$14=bridge$$23684$0),((x$14 instanceof Array)&&(x$14[0]==="variable"))))){undefined;}else{ph$5$0=cpattern$0;t0$26=ph$5$0;if((Array.isArray(t0$26)&&((t1$14=t0$26.length),((t1$14===2)&&((t0$26[0]==="assign")&&((bridge$$23687$0=t0$26[1]),((Array.isArray(bridge$$23687$0)&&((t0$27=bridge$$23687$0.length),((t0$27===2)&&((bridge$$23687$0[0]==="symbol")&&((name$0=bridge$$23687$0[1]),true)))))||(Array.isArray(bridge$$23687$0)&&((t0$28=bridge$$23687$0.length),((t0$28===2)&&((bridge$$23687$0[0]==="variable")&&((name$0=bridge$$23687$0[1]),true)))))))))))){$targ$26=name$0;(target$0["name"]=$targ$26);(void 0);}else{$targ$27=[__lt____lt____colon__$0(["variable",__at___$8.info.gensym("$targ")],target$0),target$0];t0$29=$targ$27;if((Array.isArray(t0$29)&&((t1$15=t0$29.length),(t1$15===2)))){target$0=t0$29[0];expr$2=t0$29[1];}else{___match_error($targ$27,"{target, expr}");}[target$0,expr$2];}}proc$0=PatternProcessor$0();proc$0.process(cpattern$0,target$0,__at___$8.opt);$targ$22=proc$0;t0$30=$targ$22;if((___hasprop(t0$30,"temps")&&((__at___$8["temps"]=t0$30.temps),___hasprop(t0$30,"parts")))){(__at___$8["parts"]=t0$30.parts);}else{___match_error($targ$22,"{temps => @temps, parts => @parts}");}$targ$23=true;(__at___$8["processed"]=$targ$23);$targ$24=target$0;(__at___$8["target"]=$targ$24);$targ$25=expr$2;(__at___$8["expr"]=$targ$25);return [__at___$8.temps,__at___$8.parts];}));(PatternCompiler$0.prototype["extract_from_rhs"]=(function extract_from_rhs(rhs$2){let m$20;let acc$11;let temp$14;let succ$0;let fail$0;let assembly$0;let __at___$9;let self$7;__at___$9=this;self$7=this;if((!__at___$9.processed)){__at___$9.process_for_rhs(rhs$2);}succ$0=__at___$9.opt.success(__at___$9.target);fail$0=__at___$9.opt.failure(__at___$9.target,__at___$9.pattern);assembly$0=assemble_pattern$0(__at___$9.parts,succ$0,fail$0);return ["splice",((__at___$9.expr===null)?["splice"]:["splice",["declare",__at___$9.target],["assign",__at___$9.target,__at___$9.expr]])].concat(__at___$9.opt.declare(__at___$9.info,__at___$9.vars)).concat([["multi"].concat(((acc$11=[]),(temp$14=null),(m$20=null),(function(){$12:for(m$20 of __at___$9.temps){let t$1;t$1=m$20;temp$14=["declare",t$1];acc$11.push(temp$14);}})(),acc$11)).concat([assembly$0])]);}));(PatternCompiler$0.prototype["wrapBody"]=(function wrapBody(body$0){let m$21;let m$22;let x$15;let __at___$10;let self$8;__at___$10=this;self$8=this;m$21=null;$13:for(m$21 of enumerate(__at___$10.handlers)){let $targ$28;let i$0;let h$0;let t0$31;let t1$16;t0$31=m$21;if((Array.isArray(t0$31)&&((t1$16=t0$31.length),(t1$16===2)))){i$0=t0$31[0];h$0=t0$31[1];$targ$28=(h$0.wrapOrder+(i$0/1000000));(h$0["__ord"]=$targ$28);(void 0);}else{___match_error(m$21);}}__at___$10.handlers.sort((function(x$16,y$1){return (x$16.__ord<y$1.__ord);}));x$15=body$0;m$22=null;$14:for(m$22 of __at___$10.handlers){let handler$1;handler$1=m$22;x$15=handler$1.wrap(x$15,__at___$10.info,__at___$10.opt);x$15;}return x$15;}));(PatternCompiler$0.prototype["wrapAssignment"]=(function wrapAssignment(expr$3){let m$23;let m$24;let x$17;let __at___$11;let self$9;__at___$11=this;self$9=this;m$23=null;$15:for(m$23 of enumerate(__at___$11.handlers)){let $targ$29;let i$1;let h$1;let t0$32;let t1$17;t0$32=m$23;if((Array.isArray(t0$32)&&((t1$17=t0$32.length),(t1$17===2)))){i$1=t0$32[0];h$1=t0$32[1];$targ$29=(h$1.wrapBodyOrder+(i$1/1000000));(h$1["__ord"]=$targ$29);(void 0);}else{___match_error(m$23);}}__at___$11.handlers.sort((function(x$18,y$2){return (x$18.__ord<y$2.__ord);}));x$17=expr$3;m$24=null;$16:for(m$24 of __at___$11.handlers){let handler$2;handler$2=m$24;x$17=handler$2.wrapAssignment(x$17,__at___$11.info,__at___$11.opt);x$17;}return x$17;}));__amp____colon__(PatternCompiler$0,__amp____colon__((($targ$30="PatternCompiler"),(accum$6=({})),(accum$6["::name"]=$targ$30),accum$6),(($targ$31=true),(accum$7=({})),(accum$7["::egclass"]=$targ$31),accum$7)));PatternProcessor$0=(function PatternProcessor(){let $targ$32;let $targ$33;let $targ$34;let __at___$12;if((!getChecker(PatternProcessor$0)(this))){__at___$12=Object.create(PatternProcessor$0.prototype);}else{__at___$12=this;}$targ$32=[];(__at___$12["temps"]=$targ$32);$targ$33=[];(__at___$12["parts"]=$targ$33);$targ$34=GenSym$0("t");(__at___$12["gen"]=$targ$34);return __at___$12;});$targ$0=(function(part$0){let __at___$13;let self$10;__at___$13=this;self$10=this;return __at___$13.parts.push(["do",part$0]);});(PatternProcessor$0.prototype["do"]=$targ$0);(PatternProcessor$0.prototype["check"]=(function check(){let part$1;let tags$3;let t0$33;let m$25$0;let __at___$14;let self$11;__at___$14=this;self$11=this;m$25$0=arguments;t0$33=m$25$0.length;if(((t0$33>=1)&&(t0$33<=2))){part$1=m$25$0[0];if((1>=t0$33)){tags$3=({});}else{tags$3=m$25$0[1];}return __at___$14.parts.push(__amp__(["check",part$1],tags$3));}else{return ___match_error(m$25$0,"{part, tags = {=}}");}}));(PatternProcessor$0.prototype["temp"]=(function temp(){let x$20;let x$21;let x$22;let $targ$35;let init$0;let t0$35;let bridge$$24088$0;let x$19;let ph$7$0;let v$8;let t0$34;let t1$18;let m$26$0;let __at___$15;let self$12;__at___$15=this;self$12=this;m$26$0=arguments;t0$34=m$26$0.length;if(((t0$34>=1)&&(t0$34<=2))){t1$18=m$26$0[0];x$19=t1$18;ph$7$0=t1$18;if((1>=t0$34)){v$8=null;}else{v$8=m$26$0[1];}t0$35=ph$7$0;bridge$$24088$0=t0$35;if(((((x$20=bridge$$24088$0),((x$20 instanceof Array)&&(x$20[0]==="variable")))||((x$21=bridge$$24088$0),((x$21 instanceof Array)&&(x$21[0]==="symbol"))))&&(___hasprop(t0$35,"single_assignment")&&((t0$35.single_assignment?true:false)&&(!v$8))))){return x$19;}else{if(((x$22=ph$7$0),((x$22 instanceof Array)&&(x$22[0]==="value")))){return x$19;}else{init$0=ph$7$0;v$8=(v$8||["symbol",__at___$15.gen()]);$targ$35=true;(v$8["single_assignment"]=$targ$35);__at___$15.temps.push(v$8);__at___$15.do(["send",["symbol","="],["data",["send",["symbol","set-var"],v$8],init$0]]);return v$8;}}}else{return ___match_error(m$26$0,"{match x, var v = null}");}}));(PatternProcessor$0.prototype["process"]=(function process(pattern$5,rhs$3,fns$0){let x$23;let x$24;let t$2;let t$3;let t$4;let pp$0;let x$25;let m$28;let t$5;let m$29;let acc$12;let temp$15;let fn$1;let parts$0;let t$6;let m$30;let acc$13;let temp$16;let t$7;let otherwise$0;let m$31$0;let m$32;let m$34;let end$0;let pos$0;let m$35;let acc$14;let temp$17;let nfw$0;let nbw$0;let ndflt$0;let extract_length$0;let check_length$0;let lo$0;let hi$0;let t$8;let len$0;let x$29;let fw$2;let bw$2;let dflt$0;let rest$5;let subp$12;let xs$4;let xs$3;let patt$1;let projector$2;let subp$11;let unconditional$1;let ph$8$0;let checker$2;let subp$10;let checker$1;let condition$1;let subp$9;let before$1;let subp$8;let value$4;let sym$0;let $$24192$0;let $$24193$0;let $$24194$0;let $$24195$0;let t0$36;let t1$19;let m$27$0;let rval$4;let __at___$16;let self$13;__at___$16=this;self$13=this;m$27$0=pattern$5;if(((x$23=m$27$0),((x$23 instanceof Array)&&(x$23[0]==="ignore")))){rval$4=__at___$16.do(rhs$3);}else{if((($$24192$0=Array.isArray(m$27$0))&&((t0$36=m$27$0.length),((t0$36===2)&&(m$27$0[0]==="assign"))))){sym$0=m$27$0[1];rval$4=__at___$16.parts.push(fns$0.assign(sym$0,rhs$3));}else{if(($$24192$0&&((t0$36===3)&&(m$27$0[0]==="replace")))){subp$8=m$27$0[1];value$4=m$27$0[2];rval$4=__at___$16.process(subp$8,value$4,fns$0);}else{if(($$24192$0&&(((t0$36>=3)&&(t0$36<=4))&&(m$27$0[0]==="test")))){condition$1=m$27$0[1];subp$9=m$27$0[2];if((3>=t0$36)){before$1=false;}else{before$1=m$27$0[3];}if(before$1){__at___$16.check(condition$1,({"test":true}));rval$4=__at___$16.process(subp$9,rhs$3,fns$0);}else{__at___$16.process(subp$9,rhs$3,fns$0);rval$4=__at___$16.check(condition$1,({"test":true}));}}else{if(($$24192$0&&(($$24194$0=(t0$36===3))&&(($$24195$0=(m$27$0[0]==="check"))&&((checker$1=m$27$0[1]),(x$24=m$27$0[2]),((x$24 instanceof Array)&&(x$24[0]==="ignore"))))))){rval$4=__at___$16.check(["send",checker$1,["data",rhs$3]]);}else{if($$24195$0){checker$2=m$27$0[1];subp$10=m$27$0[2];t$2=__at___$16.temp(rhs$3);__at___$16.check(["send",checker$2,["data",t$2]]);rval$4=__at___$16.process(subp$10,t$2,fns$0);}else{if(($$24192$0&&((t0$36===4)&&(m$27$0[0]==="project")))){projector$2=m$27$0[1];subp$11=m$27$0[2];t1$19=m$27$0[3];unconditional$1=t1$19;ph$8$0=t1$19;if((ph$8$0?true:false)){t$3=__at___$16.temp(["send",projector$2,["data",rhs$3]]);rval$4=__at___$16.process(subp$11,t$3,fns$0);}else{t$4=__at___$16.temp(["send",projector$2,["data",rhs$3]]);__at___$16.check(["send",t$4,["value",0]]);rval$4=__at___$16.process(subp$11,["send",t$4,["value",1]],fns$0);}}else{if(($$24192$0&&((t0$36===2)&&(m$27$0[0]==="neg")))){patt$1=m$27$0[1];pp$0=PatternProcessor$0();pp$0.process(patt$1,rhs$3,fns$0);x$25=assemble_conditions$0(pp$0);rval$4=__at___$16.check(["send",["symbol","not"],["data",["void"],x$25]]);}else{if(($$24192$0&&(($$24194$0=(t0$36>=1))&&(m$27$0[0]==="all")))){xs$3=Array.prototype.slice.call(m$27$0,1);t$5=__at___$16.temp(rhs$3);m$28=null;$17:for(m$28 of xs$3){let x$26;x$26=m$28;__at___$16.process(x$26,t$5,fns$0);}rval$4=null;}else{if(($$24194$0&&(m$27$0[0]==="any"))){xs$4=Array.prototype.slice.call(m$27$0,1);t$6=__at___$16.temp(rhs$3,["symbol",gensym$0("bridge")]);rval$4=__at___$16.check(((fn$1=(function fn(x$27,rest$4){return ["send",["symbol","or"],["data",x$27,rest$4]];})),(parts$0=((acc$12=[]),(temp$15=null),(m$29=null),(function(){$18:for(m$29 of xs$4){let pp$1;let x$28;x$28=m$29;pp$1=PatternProcessor$0();pp$1.process(x$28,t$6,fns$0);temp$15=assemble_conditions$0(pp$1);acc$12.push(temp$15);}})(),acc$12)),util$0.construct(parts$0,fn$1,["symbol","false"])));}else{if(($$24194$0&&(m$27$0[0]==="object_pattern"))){subp$12=Array.prototype.slice.call(m$27$0,1);t$7=__at___$16.temp(rhs$3);acc$13=[];temp$16=null;m$30=null;$19:for(m$30 of subp$12){let t2$5;let t2$6;let k$1;let v$10;let default$4;let k$0;let v$9;let $$24357$0;let $$24358$0;let $$24359$0;let t0$37;let t1$20;t0$37=m$30;if((($$24358$0=Array.isArray(t0$37))&&((t1$20=t0$37.length),(t1$20===2)))){k$0=t0$37[0];v$9=t0$37[1];t2$5=__at___$16.temp(k$0);__at___$16.check(["send",["symbol","___hasprop"],["data",t$7,t2$5]]);temp$16=__at___$16.process(v$9,["send",t$7,t2$5],fns$0);acc$13.push(temp$16);}else{if(($$24358$0&&(t1$20===3))){k$1=t0$37[0];v$10=t0$37[1];default$4=t0$37[2];t2$6=__at___$16.temp(k$1);temp$16=__at___$16.process(v$10,["send",["symbol","if"],["data",["send",["symbol","___hasprop"],["data",t$7,t2$6]],["send",t$7,t2$6],default$4]],fns$0);acc$13.push(temp$16);}else{___match_error(m$30);}}}rval$4=acc$13;}else{if(($$24192$0&&((t0$36===5)&&(m$27$0[0]==="array_pattern")))){fw$2=m$27$0[1];bw$2=m$27$0[2];dflt$0=m$27$0[3];rest$5=m$27$0[4];nfw$0=fw$2.length;nbw$0=bw$2.length;ndflt$0=dflt$0.length;extract_length$0=true;check_length$0=true;lo$0=(nfw$0+nbw$0);hi$0=(lo$0+ndflt$0);t$8=__at___$16.temp(rhs$3);len$0=__at___$16.temp(["send",t$8,["send",["symbol","."],["data",["void"],["symbol","length"]]]]);__at___$16.check(((m$31$0=rest$5),((m$31$0?true:false)?["send",["symbol",">="],["data",len$0,["value",lo$0]]]:((lo$0===hi$0)?["send",["symbol","==="],["data",len$0,["value",lo$0]]]:((otherwise$0=m$31$0),["send",["symbol","and"],["data",["send",["symbol",">="],["data",len$0,["value",lo$0]]],["send",["symbol","<="],["data",len$0,["value",hi$0]]]]])))));m$32=null;$20:for(m$32 of enumerate(fw$2)){let i$2;let m$33;let t0$38;let t1$21;t0$38=m$32;if((Array.isArray(t0$38)&&((t1$21=t0$38.length),(t1$21===2)))){i$2=t0$38[0];m$33=t0$38[1];__at___$16.process(m$33,["send",t$8,["value",i$2]],fns$0);}else{___match_error(m$32);}}m$34=null;$21:for(m$34 of enumerate(dflt$0)){let idx$0;let i$3;let patt$2;let value$5;let t0$39;let t1$22;let t2$7;let t3$2;t0$39=m$34;if((Array.isArray(t0$39)&&((t1$22=t0$39.length),((t1$22===2)&&((i$3=t0$39[0]),(t2$7=t0$39[1]),(Array.isArray(t2$7)&&((t3$2=t2$7.length),(t3$2===2)))))))){patt$2=t2$7[0];value$5=t2$7[1];idx$0=(i$3+nfw$0);__at___$16.process(patt$2,["send",["symbol","if"],["data",["send",["symbol",">="],["data",["value",(idx$0+nbw$0)],len$0]],value$5,["send",t$8,["value",idx$0]]]],fns$0);}else{___match_error(m$34);}}if((rest$5!==undefined)){pos$0=(nfw$0+ndflt$0);if((nbw$0>0)){end$0=[["value",(-nbw$0)]];}else{end$0=[];}__at___$16.process(rest$5,["send",["send",["send",["send",["symbol","Array"],["send",["symbol","."],["data",["void"],["symbol","prototype"]]]],["send",["symbol","."],["data",["void"],["symbol","slice"]]]],["send",["symbol","."],["data",["void"],["symbol","call"]]]],["data",t$8,["value",pos$0]].concat(end$0)],fns$0);}else{[];}acc$14=[];temp$17=null;m$35=null;$22:for(m$35 of enumerate(bw$2)){let i$4;let m$36;let t0$40;let t1$23;t0$40=m$35;if((Array.isArray(t0$40)&&((t1$23=t0$40.length),(t1$23===2)))){i$4=t0$40[0];m$36=t0$40[1];temp$17=__at___$16.process(m$36,["send",["symbol","___js_fetch"],["data",t$8,["send",["symbol","-"],["data",len$0,["value",(nbw$0-i$4)]]]]],fns$0);acc$14.push(temp$17);}else{___match_error(m$35);}}rval$4=acc$14;}else{if(((x$29=m$27$0),((x$29 instanceof Array)&&(x$29[0]==="default")))){throw send(send(ErrorFactory(["syntax","pattern"]),"create", true),__amp____colon__(["Cannot declare default value here"],({"expr":pattern$5,"::objinsert":1})));}else{rval$4=___match_error(m$27$0,"#default");}}}}}}}}}}}}}return rval$4;}));__amp____colon__(PatternProcessor$0,__amp____colon__((($targ$36="PatternProcessor"),(accum$8=({})),(accum$8["::name"]=$targ$36),accum$8),(($targ$37=true),(accum$9=({})),(accum$9["::egclass"]=$targ$37),accum$9)));assemble_conditions$0=(function assemble_conditions(pp$2){let m$37;let acc$15;let temp$18;let decls$0;let construct$0;construct$0=(function construct(ph$9$0){let x$32;let rest$7;let x$31;let x$30;let rest$6;let $$24613$0;let $$24614$0;let t0$41;let t1$24;let t2$8;let t3$3;t0$41=ph$9$0;t1$24=t0$41.length;if((t1$24===0)){return ["value",true];}else{if(((t1$24>=1)&&((t2$8=t0$41[0]),(Array.isArray(t2$8)&&((t3$3=t2$8.length),((t3$3===2)&&(t2$8[0]==="do"))))))){x$30=t2$8[1];rest$6=Array.prototype.slice.call(t0$41,1);return ["multi",x$30,construct$0(rest$6)];}else{if(((t1$24===1)&&((t2$8=t0$41[0]),(Array.isArray(t2$8)&&((t3$3=t2$8.length),((t3$3===2)&&(t2$8[0]==="check"))))))){x$31=t2$8[1];return x$31;}else{if(((t1$24>=1)&&((t2$8=t0$41[0]),(Array.isArray(t2$8)&&((t3$3=t2$8.length),((t3$3===2)&&(t2$8[0]==="check"))))))){x$32=t2$8[1];rest$7=Array.prototype.slice.call(t0$41,1);return ["send",["symbol","and"],["data",x$32,construct$0(rest$7)]];}else{return ___match_error(ph$9$0,"{#check{x}, *rest}");}}}}});if(pp$2.temps.length){acc$15=[];temp$18=null;m$37=null;$23:for(m$37 of pp$2.temps){let t$9;t$9=m$37;temp$18=["declare",t$9];acc$15.push(temp$18);}decls$0=acc$15;return ["multi"].concat(decls$0).concat([construct$0(pp$2.parts)]);}else{return construct$0(pp$2.parts);}});assemble_pattern$0=(function assemble_pattern(){let m$39;let m$40;let x$40;let test$0;let lead$0;let trail$0;let construct$1;let parts$1;let t$10;let f$5;let t0$42;let m$38$0;m$38$0=arguments;t0$42=m$38$0.length;if(((t0$42>=2)&&(t0$42<=3))){parts$1=m$38$0[0];t$10=m$38$0[1];if((2>=t0$42)){f$5=null;}else{f$5=m$38$0[2];}lead$0=[];m$39=null;$24:for(m$39 of parts$1.slice(0)){let x$34;let x$33;let $$24728$0;let $$24729$0;let $$24730$0;let $$24731$0;let t0$43;let t1$25;t0$43=m$39;if((($$24729$0=Array.isArray(t0$43))&&((t1$25=t0$43.length),(($$24731$0=(t1$25===2))&&(t0$43[0]==="do"))))){x$33=t0$43[1];lead$0.push(x$33);parts$1.shift();}else{if(($$24731$0&&(t0$43[0]==="check"))){x$34=t0$43[1];break $24;}else{___match_error(m$39);}}}trail$0=[];m$40=null;$25:for(m$40 of parts$1.slice(0).reverse()){let x$36;let x$35;let $$24735$0;let $$24736$0;let $$24737$0;let $$24738$0;let t0$44;let t1$26;t0$44=m$40;if((($$24736$0=Array.isArray(t0$44))&&((t1$26=t0$44.length),(($$24738$0=(t1$26===2))&&(t0$44[0]==="do"))))){x$35=t0$44[1];trail$0.unshift(x$35);parts$1.pop();}else{if(($$24738$0&&(t0$44[0]==="check"))){x$36=t0$44[1];break $25;}else{___match_error(m$40);}}}construct$1=(function construct(ph$10$0){let other$1;let x$39;let rest$9;let x$38;let x$37;let rest$8;let $$24801$0;let $$24802$0;let t0$45;let t1$27;let t2$9;let t3$4;t0$45=ph$10$0;t1$27=t0$45.length;if((t1$27===0)){return ["value",true];}else{if(((t1$27>=1)&&((t2$9=t0$45[0]),(Array.isArray(t2$9)&&((t3$4=t2$9.length),((t3$4===2)&&(t2$9[0]==="do"))))))){x$37=t2$9[1];rest$8=Array.prototype.slice.call(t0$45,1);return ["multi",x$37,construct$1(rest$8)];}else{if(((t1$27===1)&&((t2$9=t0$45[0]),(Array.isArray(t2$9)&&((t3$4=t2$9.length),((t3$4===2)&&(t2$9[0]==="check"))))))){x$38=t2$9[1];return x$38;}else{if(((t1$27>=1)&&((t2$9=t0$45[0]),(Array.isArray(t2$9)&&((t3$4=t2$9.length),((t3$4===2)&&(t2$9[0]==="check"))))))){x$39=t2$9[1];rest$9=Array.prototype.slice.call(t0$45,1);return ["send",["symbol","and"],["data",x$39,construct$1(rest$9)]];}else{other$1=ph$10$0;throw ErrorFactory(["oops"]).create("?!?",other$1);}}}}});if(parts$1.length){test$0=construct$1(parts$1);if(f$5){x$40=["send",["symbol","if"],["data",test$0,["multi"].concat(trail$0).concat([t$10]),f$5]];}else{x$40=["send",["symbol","if"],["data",test$0,["multi"].concat(trail$0).concat([t$10])]];}return ["multi"].concat(lead$0).concat([x$40]);}else{return ["multi"].concat(lead$0).concat(trail$0).concat([t$10]);}}else{return ___match_error(m$38$0,"{parts, t, f = null}");}});inject_below_uses$0=(function inject_below_uses(ph$11$0,fn$2){let other$2;let scope$0;let x$41;let t0$46;let t1$28;t0$46=ph$11$0;t1$28=t0$46.length;if(((t1$28===3)&&(t0$46[0]==="use"))){scope$0=t0$46[1];x$41=t0$46[2];return ["use",scope$0,inject_below_uses$0(x$41,fn$2)];}else{other$2=ph$11$0;return fn$2(other$2);}});checkall$0=["send","data","multi","assign","void","check","do"];same_block$0=(function same_block(ph$12$0,ban1$0,ban2$0){let m$41;let other$3;let type1$0;let args1$0;let type2$0;let args2$0;let m1$0;let m2$0;let v1$2;let v2$2;let s1$0;let s2$0;let v1$1;let v2$1;let $$24908$0;let $$24909$0;let $$24910$0;let $$24911$0;let $$24912$0;let $$24913$0;let $$24914$0;let t0$47;let t1$29;let t2$10;let t3$5;let t4$2;let t5$2;t0$47=ph$12$0;t1$29=t0$47.length;if((($$24910$0=(t1$29===2))&&((t2$10=t0$47[0]),(($$24912$0=Array.isArray(t2$10))&&((t3$5=t2$10.length),(($$24914$0=(t3$5===2))&&((t2$10[0]==="variable")&&((v1$1=t2$10[1]),(t4$2=t0$47[1]),(Array.isArray(t4$2)&&((t5$2=t4$2.length),((t5$2===2)&&(t4$2[0]==="variable")))))))))))){v2$1=t4$2[1];return (v1$1===v2$1);}else{if(($$24914$0&&((t2$10[0]==="symbol")&&((s1$0=t2$10[1]),(t4$2=t0$47[1]),(Array.isArray(t4$2)&&((t5$2=t4$2.length),((t5$2===2)&&(t4$2[0]==="symbol")))))))){s2$0=t4$2[1];return (((!send(ban1$0,s1$0))&&(!send(ban2$0,s2$0)))&&(s1$0===s2$0));}else{if(($$24914$0&&((t2$10[0]==="value")&&((v1$2=t2$10[1]),(t4$2=t0$47[1]),(Array.isArray(t4$2)&&((t5$2=t4$2.length),((t5$2===2)&&(t4$2[0]==="value")))))))){v2$2=t4$2[1];return (v1$2===v2$2);}else{if(($$24914$0&&((t2$10[0]==="macro")&&((m1$0=t2$10[1]),(t4$2=t0$47[1]),(Array.isArray(t4$2)&&((t5$2=t4$2.length),((t5$2===2)&&(t4$2[0]==="macro")))))))){m2$0=t4$2[1];return (m1$0===m2$0);}else{if((Array.isArray(t0$47)&&((t1$29=t0$47.length),((t1$29===2)&&((t2$10=t0$47[0]),(Array.isArray(t2$10)&&((t3$5=t2$10.length),((t3$5>=1)&&((type1$0=t2$10[0]),(args1$0=Array.prototype.slice.call(t2$10,1)),(t4$2=t0$47[1]),(Array.isArray(t4$2)&&((t5$2=t4$2.length),((t5$2>=1)&&((type2$0=t4$2[0]),(args2$0=Array.prototype.slice.call(t4$2,1)),(checkall$0.indexOf(type1$0)!==-1)))))))))))))){if(((type1$0===type2$0)&&(args1$0.length===args2$0.length))){m$41=null;$26:for(m$41 of zip(args1$0,args2$0)){let pair$0;pair$0=m$41;if((!same_block$0(pair$0,ban1$0,ban2$0))){return false;}}return true;}else{return false;}}else{other$3=ph$12$0;return false;}}}}}});parse_clauses$0=(function parse_clauses(info$0,target$1,stmts$0,opt$0){let m$42;let acc$16;let temp$19;let m$44;let acc$17;let temp$20;let m$45;let acc$18;let temp$21;let decls$1;let all_temps$0;let last_clause$0;let the_parts$0;let unique_temps$0;all_temps$0=[];last_clause$0=null;acc$16=[];temp$19=null;m$42=null;$27:for(m$42 of info$0.step_all(["clause"],stmts$0)){let accum$10;let t0$49;let m$43;let pc$1;let $targ$38;let vars$1;let temps$0;let blocks$0;let vars2$0;let x$42;let other$5;let b$0;let pattern$6;let body$1;let $$25062$0;let t0$48;let t1$30;t0$48=m$42;if((Array.isArray(t0$48)&&((t1$30=t0$48.length),((t1$30===3)&&(t0$48[0]==="clause"))))){pattern$6=t0$48[1];body$1=t0$48[2];last_clause$0=pattern$6;pc$1=PatternCompiler$0(pattern$6,info$0,__amp__(opt$0,__amp____colon__(({"allow_arguments":false,"allow_nested":true}),((accum$10=({})),(accum$10["assign"]=(function assign(v$11,value$6){return ["do",__lt____lt____colon__$0(["assign",v$11,value$6],v$11)];})),accum$10))));pc$1.process_for_rhs(target$1);$targ$38=pc$1;t0$49=$targ$38;if((___hasprop(t0$49,"vars")&&((vars$1=t0$49.vars),(___hasprop(t0$49,"temps")&&((temps$0=t0$49.temps),___hasprop(t0$49,"parts")))))){blocks$0=t0$49.parts;}else{___match_error($targ$38,"{=> vars, => temps, parts => blocks}");}[vars$1,temps$0,blocks$0];all_temps$0=all_temps$0.concat(temps$0);vars2$0=({});m$43=null;$28:for(m$43 of vars$1){let $targ$39;let other$4;let xxx$0;let t0$50;let t1$31;t0$50=m$43;if((Array.isArray(t0$50)&&((t1$31=t0$50.length),((t1$31===2)&&(t0$50[0]==="symbol"))))){xxx$0=t0$50[1];$targ$39=true;(vars2$0[xxx$0]=$targ$39);(void 0);}else{other$4=m$43;throw ErrorFactory(["syntax","unexpected"]).create("Huh",({"expr":other$4}));}}if(opt$0.wrap){pc$1.handlers.push(opt$0);}temp$19=["clause",vars$1,vars2$0,blocks$0,pc$1.wrapBody(body$1)];acc$16.push(temp$19);}else{if(((x$42=t0$48),((x$42 instanceof Array)&&(x$42[0]==="block")))){b$0=t0$48;temp$19=b$0;acc$16.push(temp$19);}else{other$5=m$42;throw ErrorFactory(["syntax","clause"]).create("Illegal clause",({"clause":other$5}));acc$16.push(temp$19);}}}the_parts$0=acc$16;if(opt$0.fallback){the_parts$0.push(["block",opt$0.fallback(target$1,last_clause$0)]);}unique_temps$0=keys(util$0.mkset(((acc$17=[]),(temp$20=null),(m$44=null),(function(){$29:for(m$44 of all_temps$0){let t$11;let t0$51;let t1$32;t0$51=m$44;if((Array.isArray(t0$51)&&((t1$32=t0$51.length),((t1$32===2)&&(t0$51[0]==="symbol"))))){t$11=t0$51[1];temp$20=t$11;acc$17.push(temp$20);}else{___match_error(m$44);}}})(),acc$17)));acc$18=[];temp$21=null;m$45=null;$30:for(m$45 of unique_temps$0){let t$12;t$12=m$45;temp$21=["declare",__amp____colon__(["symbol",t$12],({"mutable":true}))];acc$18.push(temp$21);}decls$1=acc$18;return ["multi"].concat(decls$1).concat([weave_clauses$0(the_parts$0)]);});opt_clauses$0=(function opt_clauses(clauses$0){let m$46;let acc$19;let temp$22;let m$49;let acc$20;let temp$23;let m$50;let acc$21;let temp$24;let m$51;let acc$22;let temp$25;let shares$0;let max$0;let temps$1;let shared_last$0;let idx_last$0;let new_clauses$0;acc$19=[];temp$22=null;m$46=null;$31:for(m$46 of enumerate(clauses$0.slice(1))){let t0$53;let t1$34;let m$47;let $targ$40;let varsd0$0;let blocks0$0;let share$0;let idx$1;let i$5;let vars$2;let varsd$0;let blocks$1;let body$2;let t0$52;let t1$33;let t2$11;let t3$6;t0$52=m$46;if((Array.isArray(t0$52)&&((t1$33=t0$52.length),((t1$33===2)&&((i$5=t0$52[0]),(t2$11=t0$52[1]),(Array.isArray(t2$11)&&((t3$6=t2$11.length),((t3$6===5)&&(t2$11[0]==="clause"))))))))){vars$2=t2$11[1];varsd$0=t2$11[2];blocks$1=t2$11[3];body$2=t2$11[4];$targ$40=send(clauses$0,i$5);t0$53=$targ$40;if((Array.isArray(t0$53)&&((t1$34=t0$53.length),((t1$34===5)&&(t0$53[0]==="clause"))))){t0$53[1];varsd0$0=t0$53[2];blocks0$0=t0$53[3];t0$53[4];}else{___match_error($targ$40,"#clause{_, varsd0, blocks0, _}");}[varsd0$0,blocks0$0];share$0=0;idx$1=0;m$47=null;$32:for(m$47 of blocks$1){let x$43;let x$44;let t$13;let other$6;let m$48$0;let b$1;b$1=m$47;if(same_block$0([send(blocks0$0,share$0),b$1],varsd0$0,varsd$0)){(share$0++);m$48$0=b$1;if(((x$43=m$48$0),((x$43 instanceof Array)&&(x$43[0]==="do")))){null;}else{if(((x$44=m$48$0),((x$44 instanceof Array)&&(x$44[0]==="check")))){idx$1=share$0;idx$1;}else{other$6=m$48$0;t$13=other$6;console.log(t$13);t$13;}}}else{break $32;}}temp$22=[share$0,idx$1];acc$19.push(temp$22);}else{___match_error(m$46);}}shares$0=acc$19;max$0=send(send(Math,"max", true),((acc$20=[]),(temp$23=null),(m$49=null),(function(){$33:for(m$49 of shares$0){let x$45;let t0$54;let t1$35;t0$54=m$49;if((Array.isArray(t0$54)&&((t1$35=t0$54.length),(t1$35===2)))){x$45=t0$54[0];t0$54[1];temp$23=x$45;acc$20.push(temp$23);}else{___match_error(m$49);}}})(),acc$20));shares$0.push([0,0]);acc$21=[];temp$24=null;m$50=null;$34:for(m$50 of range(1,max$0)){temp$24=["symbol",gensym$0()];acc$21.push(temp$24);}temps$1=acc$21;shared_last$0=0;idx_last$0=0;acc$22=[];temp$25=null;m$51=null;$35:for(m$51 of enumerate(clauses$0)){let t0$56;let t1$37;let m$52;let acc$23;let temp$26;let rest$10;let newblocks$0;let $targ$41;let share$1;let idx$2;let shared$0;let n_to_share$0;let to_share$0;let other$7;let i$6;let vars$3;let varsd$1;let blocks$2;let body$3;let t0$55;let t1$36;let t2$12;let t3$7;t0$55=m$51;if((Array.isArray(t0$55)&&((t1$36=t0$55.length),((t1$36===2)&&((i$6=t0$55[0]),(t2$12=t0$55[1]),(Array.isArray(t2$12)&&((t3$7=t2$12.length),((t3$7===5)&&(t2$12[0]==="clause"))))))))){vars$3=t2$12[1];varsd$1=t2$12[2];blocks$2=t2$12[3];body$3=t2$12[4];$targ$41=send(shares$0,i$6);t0$56=$targ$41;if((Array.isArray(t0$56)&&((t1$37=t0$56.length),(t1$37===2)))){share$1=t0$56[0];idx$2=t0$56[1];}else{___match_error($targ$41,"{share, idx}");}[share$1,idx$2];if(idx_last$0){shared$0=[["check",send(temps$1,(idx_last$0-1))]];}else{shared$0=[];}n_to_share$0=Math.max(shared_last$0,share$1);acc$23=[];temp$26=null;m$52=null;$36:for(m$52 of enumerate(blocks$2.slice(shared_last$0,n_to_share$0))){let j$1;let x$47;let j$0;let x$46;let $$25530$0;let $$25531$0;let $$25532$0;let $$25533$0;let t0$57;let t1$38;let t2$13;let t3$8;t0$57=m$52;if((($$25531$0=Array.isArray(t0$57))&&((t1$38=t0$57.length),(($$25533$0=(t1$38===2))&&((j$0=t0$57[0]),(t2$13=t0$57[1]),(Array.isArray(t2$13)&&((t3$8=t2$13.length),((t3$8===2)&&(t2$13[0]==="check"))))))))){x$46=t2$13[1];temp$26=["check",["assign",send(temps$1,(shared_last$0+j$0)),x$46]];acc$23.push(temp$26);}else{if(($$25533$0&&((j$1=t0$57[0]),(t2$13=t0$57[1]),(Array.isArray(t2$13)&&((t3$8=t2$13.length),((t3$8===2)&&(t2$13[0]==="do"))))))){x$47=t2$13[1];temp$26=["do",x$47];acc$